/* 採用使用者提供版型的白色頁首、藍灰配色與左清單右地圖。 */
.view-tabs{flex-wrap:wrap}
@media(max-width:900px){.public-app .view-tabs button{flex:1 0 calc(50% - 4px)}}
.public-app.policy-mode #stats,.public-app.policy-mode #charts-panel,.public-app.policy-mode #toggle-charts,.public-app.policy-mode .mobile-switch,.public-app.policy-mode .list-panel,.public-app.policy-mode .map-panel{display:none!important}
.public-app.policy-mode .workspace{grid-template-columns:minmax(0,1fr);min-height:400px}
.public-app.policy-mode #policy-panel{grid-column:1;grid-row:1}
.policy-controls{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.policy-controls label{flex:1;min-width:180px}
.policy-table{table-layout:fixed}.policy-table th:nth-child(1){width:105px}.policy-table th:nth-child(2){width:140px}.policy-table th:nth-child(4){width:180px}.policy-table th:nth-child(5){width:240px}.policy-table p{margin:4px 0}.policy-table td{overflow-wrap:anywhere}.policy-table .cell-title{min-width:0}
.evidence-symbol.investigation,.evidence-symbol.indicted,.evidence-symbol.case_judgment,.evidence-symbol.acquitted{background:#65558a}.event-marker.investigation,.event-marker.indicted,.event-marker.case_judgment,.event-marker.acquitted{background:#65558a;color:white}
@media(max-width:900px){.policy-table{min-width:880px}.policy-controls input,.policy-controls select{min-height:44px}.view-tabs button{flex:1 0 42%}}
:root{--ink:#1d2321;--muted:#5b6461;--line:#dfe2df;--accent:#1f5f7a;--paper:#f4f5f3}
body{font:14px/1.5 "Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif}header.site-header,body.admin-app header{background:#fdfdfc;color:var(--ink);padding:10px 16px;border-bottom:1px solid var(--line);min-height:64px;flex-wrap:wrap;gap:8px 16px}.site-header h1,body.admin-app h1{font-size:18px;margin:0;letter-spacing:.02em;line-height:1.3}.site-header p{font-size:12px;color:var(--muted);margin:2px 0 0}.site-header nav{display:flex;gap:6px;flex-wrap:wrap}
button,.button{border-radius:4px;min-height:36px;font-size:13px;padding:7px 11px;border-color:#cfd4d0}button:hover,.button:hover{background:#edf3f5;border-color:var(--accent)}.primary{background:var(--accent);color:white}.primary:hover{background:#174b61;color:white}a{color:var(--accent)}input,select,textarea{border-color:#cfd4d0;border-radius:4px;font-size:14px;min-height:38px;padding:7px 8px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.public-main{max-width:none;margin:0;padding:0}.view-toolbar{display:flex;align-items:center;gap:8px 12px;padding:8px 16px;background:#fdfdfc;border-bottom:1px solid var(--line);flex-wrap:wrap}.view-tabs{display:flex;gap:4px}.view-tabs button{white-space:nowrap}.view-tabs button.active{color:var(--accent);background:#eaf1f4;border-color:var(--accent)}.view-toolbar p{flex:1;min-width:220px;margin:0;font-size:12px;color:var(--muted)}#toggle-charts{font-size:12px;min-height:32px;white-space:nowrap}
.public-app .stats{border:0;margin:0;padding:10px 16px;gap:8px;overflow:auto;display:flex}.public-app .stat-card{flex:1 0 160px;border:1px solid #e1e4e0;border-radius:6px;background:#fdfdfc;padding:9px 12px;display:flex;flex-direction:column;align-items:flex-start;gap:2px}.stat-card .stat-label{font-size:12px;color:var(--muted);white-space:nowrap}.stat-card .stat-value{display:flex;align-items:baseline;gap:4px}.stat-card b{font-family:Consolas,monospace;font-size:24px;line-height:1.2;font-weight:600}.stat-card small{font-size:11px}.stat-card.death-total b{color:#93292a}.stat-card.uncertain b{color:#7a5510}
.charts-strip{padding:0 16px 10px;border-bottom:1px solid var(--line);overflow-x:auto}#distribution{display:flex;gap:8px;align-items:stretch}.chart-card{flex:0 0 225px;border:1px solid #e1e4e0;border-radius:6px;background:#fdfdfc;padding:9px 12px;min-height:175px}.chart-card h3{font-size:13px;margin:0 0 6px}.chart-card small{font-size:11px;margin-top:6px}.chart-card.monthly{flex-basis:340px}.chart-rows{max-height:125px;overflow:auto}.chart-row{display:grid;grid-template-columns:minmax(80px,1fr) 65px 25px;align-items:center;gap:5px;width:100%;padding:3px 0;border:0;background:transparent;min-height:24px;text-align:left;font-size:11px}.chart-row progress{width:100%;height:8px;accent-color:var(--accent)}.chart-row .count{font-family:Consolas,monospace;text-align:right}.month-bars{display:flex;align-items:flex-end;height:104px;gap:4px;border-bottom:1px solid #cfd4d0}.month-bar{flex:1;min-width:0;min-height:0;padding:0;border:0;background:transparent;height:100%;display:flex;flex-direction:column;justify-content:flex-end;gap:3px;align-items:center}.month-bar i{background:var(--accent);display:block;width:100%;border-radius:2px 2px 0 0}.month-bar span{font:10px Consolas,monospace}.month-axis{display:flex;gap:4px;font:10px Consolas,monospace;color:var(--muted);margin-top:3px}.month-axis span{flex:1;text-align:center}
.public-app .workspace{grid-template-columns:390px minmax(0,1fr);border:0;border-top:1px solid var(--line);border-radius:0;min-height:650px;align-items:stretch}.public-app .list-panel{grid-column:1;grid-row:1;border:0;border-right:1px solid var(--line);background:#fdfdfc;min-width:0;display:flex;flex-direction:column}.public-app .map-panel{grid-column:2;grid-row:1;position:relative;min-width:0;overflow:hidden}.public-app #map{height:100%;min-height:650px}.search-block{padding:12px 14px 9px;border-bottom:1px solid #e6e8e5}.search-label{font-size:0}.search-label input{min-height:40px;font-size:14px}.public-app #filter-controls>summary{display:block;cursor:pointer;padding:6px 8px;margin-top:7px;font-size:12px;border:1px solid #cfd4d0;border-radius:4px;width:fit-content}.public-app .filters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:9px}.public-app .filters label{min-width:0}.public-app .filters .wide{grid-column:1/-1}.filter-summary{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:var(--muted)}#clear{font-size:11px;padding:3px 7px;min-height:28px}.public-app .panel-head{padding:9px 14px;border-bottom:1px solid #e6e8e5}.public-app #status{margin:0;padding:7px 14px;font-size:11px;background:#f7f8f6;border-bottom:1px solid #e6e8e5}.public-app #list{max-height:560px;min-height:200px;overflow:auto;flex:1}.public-app .event-row{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:2px 8px;padding:10px 14px;border-bottom:1px solid #eceeeb;line-height:1.45;background:#fdfdfc}.public-app .event-row:hover,.public-app .event-row.selected{background:#eaf1f4}.event-row .evidence-symbol{grid-column:1;grid-row:1/3;margin-top:2px}.event-row .row-title{grid-column:2;font-size:13px;font-weight:500;line-height:1.45;margin:0}.event-row .row-date{grid-column:3;font:11px/1.5 Consolas,monospace;white-space:nowrap}.event-row .row-meta{grid-column:2/4;font-size:11px;color:var(--muted);display:flex;flex-wrap:wrap;gap:2px 7px}.evidence-symbol{font-style:normal;display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border-radius:50%;font-size:11px;flex-shrink:0;color:white}.evidence-symbol.suspected{background:#65716b}.evidence-symbol.screening{background:#bd8515}.evidence-symbol.laboratory{background:#1f5f7a}.evidence-symbol.judicial{background:#93292a}.public-app .event-marker{line-height:22px;background:#bd8515}.public-app .event-marker.judicial{background:#93292a}.public-app .event-marker.laboratory{background:#1f5f7a}.public-app .event-marker.suspected{background:#65716b}
.public-app #map-status{position:absolute;top:10px;left:52px;right:10px;z-index:500;margin:0;border:1px solid #cfd4d0;background:rgba(253,253,252,.96);border-radius:4px;padding:7px 10px;font-size:11px;width:fit-content;max-width:calc(100% - 65px);pointer-events:none}.map-legend{position:absolute;left:10px;bottom:30px;z-index:500;background:rgba(253,253,252,.97);border:1px solid #cfd4d0;border-radius:6px;padding:7px 9px;display:flex;flex-direction:column;gap:4px;font-size:11px;max-width:230px;pointer-events:none}.map-legend span{display:flex;gap:6px;align-items:center}.map-legend .evidence-symbol{width:16px;height:16px;font-size:9px}.map-legend small{font-size:10px}
.public-app.table-mode .map-panel,.public-app.news-mode .map-panel{display:none}.public-app.table-mode #list,.public-app.news-mode #list{display:none}.data-panel{grid-column:2;grid-row:1;min-width:0;padding:18px 20px;background:var(--paper)}.data-panel h2{font-size:18px;margin:0 0 12px}.data-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.data-heading label{max-width:210px}.event-table{width:100%;border-collapse:collapse;background:#fdfdfc;font-size:12px}.event-table td,.event-table th{text-align:left;padding:9px 10px;border-bottom:1px solid #e1e4e0;vertical-align:top}.event-table th{background:#eaf1f4;font-size:11px}.event-table button{font-size:12px;text-align:left;background:transparent;border:0;padding:0;min-height:32px;color:var(--accent)}.event-table .cell-title{min-width:190px}.event-table small{font-size:10px}.table-scroll{overflow:auto;border:1px solid var(--line);border-radius:6px}.pager{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:14px;font-size:12px}.news-row{background:#fdfdfc;border:1px solid var(--line);border-radius:4px;padding:10px 12px;margin-top:8px}.news-row h3{font-size:14px;margin:0 0 4px}.news-row .related{display:flex;flex-wrap:wrap;gap:4px;margin-top:7px}.news-row .related button{font-size:11px;padding:4px 7px;min-height:28px}
.site-footer{margin:0;padding:20px max(16px,calc((100% - 1240px)/2));background:#1d2321;color:#edf1ed;display:grid;grid-template-columns:2fr 1fr 1.4fr;gap:25px;font-size:11px}.site-footer p{margin:6px 0;color:#c3ccc5}.site-footer button{border:0;background:transparent;color:#e4edf1;font-size:11px;text-decoration:underline;padding:4px 6px;min-height:28px}.site-footer button:hover{background:#303936}.site-footer strong{color:white}.about-body{padding:12px 20px}.dialog-head,.dialog-actions{background:#fdfdfc}
body.admin-app .eyebrow{color:var(--muted);letter-spacing:.03em}body.admin-app main{max-width:none;padding:0 16px 24px}body.admin-app .admin-layout{grid-template-columns:320px minmax(0,1fr);gap:16px}body.admin-app .editor,body.admin-app .admin-sidebar{border-radius:4px;background:#fdfdfc}body.admin-app h2{font-size:19px}body.admin-app .notice{border-left-color:var(--accent);background:#edf3f5}body.admin-app .editor-actions{position:sticky;bottom:0;background:#fdfdfc;padding:10px;border:1px solid var(--line);z-index:600}
#distribution{flex-wrap:nowrap}
.public-app .stats{flex-wrap:nowrap}
@media(min-width:901px){.public-app .mobile-switch{display:none}}@media(max-width:1000px){.public-app .workspace{grid-template-columns:340px minmax(0,1fr)}.chart-card{flex-basis:210px}}
@media(max-width:900px){.site-header h1{font-size:17px}.site-header nav{width:100%}.site-header nav>*{flex:1;text-align:center}.public-app .stats{display:flex;gap:7px;padding:8px 12px}.public-app .stat-card{flex:0 0 155px}.view-toolbar{padding:8px 12px}.view-tabs{width:100%;display:flex}.view-tabs button{flex:1;padding:6px 5px;font-size:12px}.view-toolbar p{font-size:11px;min-width:180px}.charts-strip{padding:0 12px 8px}.chart-card{min-height:160px}.chart-card.monthly{flex-basis:290px}.public-app .mobile-switch{display:flex;margin:0;padding:8px 12px;gap:7px;background:#fdfdfc;border-bottom:1px solid var(--line)}.mobile-switch button{flex:1}.mobile-switch button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:#eaf1f4}.public-app .workspace{display:block;min-height:440px}.public-app .list-panel{display:none;border:0}.public-app.list-mode .list-panel{display:flex}.public-app.list-mode .map-panel{display:none}.public-app #map{height:540px;min-height:440px}.public-app #list{max-height:65dvh}.map-legend{max-width:210px;font-size:10px}.public-app.table-mode .list-panel,.public-app.news-mode .list-panel{display:flex}.public-app.table-mode .panel-head,.public-app.news-mode .panel-head{display:none}.data-panel{padding:14px 12px}.public-app.table-mode .mobile-switch,.public-app.news-mode .mobile-switch{display:none}.site-footer{grid-template-columns:1fr;gap:12px;padding:18px 16px}.public-app .stat-card b{font-size:24px}body.admin-app .admin-layout{grid-template-columns:1fr}body.admin-app .editor-actions{position:static}body.admin-app main{padding:0 12px 16px}.data-heading{align-items:flex-start}.site-header button,.site-header .button,.view-tabs button,.mobile-switch button,#toggle-charts,#clear,.pager button,.data-heading button,.event-table button,.news-row .related button,.dialog-head button,.dialog-actions button,.site-footer button{min-height:44px}.search-block input,.public-app .filters input,.public-app .filters select,#news-search,.data-heading select{min-height:44px}.public-app #filter-controls>summary{min-height:44px;display:flex;align-items:center}.public-app .event-row{padding:12px 14px}.event-row .row-title{font-size:14px}.event-row .row-date{font-size:12px}.event-row .row-meta{font-size:12px;line-height:1.5}}
@media(max-width:900px) and (max-height:600px){.public-app .workspace{min-height:300px}.public-app #map{height:calc(100dvh - 90px);min-height:300px;max-height:420px}.map-legend{bottom:10px}}

.detection-marker{border-radius:4px!important;border:2px solid #175d78!important}

/* 上方數字卡及分布圖依可用寬度換行，不以橫向捲動承載。 */
.public-app .stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,180px),1fr));overflow:visible;min-width:0}
.public-app .stat-card{min-width:0;max-width:100%}
.public-app .stat-card .stat-label{white-space:normal;overflow-wrap:anywhere}
.public-app .stat-card small{overflow-wrap:anywhere}
.public-app .charts-strip{overflow:visible;min-width:0}
.public-app #distribution{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));min-width:0}
.public-app .chart-card{min-width:0;max-width:100%}
.public-app .chart-row{grid-template-columns:minmax(0,1fr) 65px 25px}
@media(min-width:901px){.public-app .chart-card.monthly{grid-column:span 2}}
@media(max-width:900px){.public-app .stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,140px),1fr))}}
@media(min-width:901px){
  .public-app .stats{grid-template-columns:repeat(10,minmax(0,1fr));gap:6px;padding-inline:12px}
  .public-app .stat-card{padding:8px}
  .public-app .stat-card .stat-label{font-size:11px;line-height:1.35;min-height:2.7em}
  .public-app .stat-card small{font-size:10px;line-height:1.45}
  .public-app .charts-strip{padding-inline:12px}
  .public-app #distribution{grid-template-columns:minmax(0,1.65fr) repeat(7,minmax(0,1fr));gap:6px}
  .public-app .chart-card{padding:8px 6px}
  .public-app .chart-card.monthly{grid-column:auto}
  .public-app .chart-card h3{font-size:11px;line-height:1.35;min-height:2.7em;overflow-wrap:anywhere}
  .public-app .chart-card small{font-size:10px;line-height:1.4;overflow-wrap:anywhere}
  .public-app .chart-row{grid-template-columns:minmax(0,1.2fr) minmax(10px,.8fr) max-content;gap:3px;padding-inline:0;font-size:10px}
  .public-app .chart-row>span:first-child{min-width:0;overflow-wrap:anywhere}
  .public-app .chart-row progress{min-width:0;max-width:100%}
  .public-app .chart-row .count{font-size:10px}
  .public-app .month-bars,.public-app .month-axis{gap:2px}
  .public-app .month-bar span,.public-app .month-axis{font-size:9px}
}
