:root { color-scheme: light; --bg:#f4f6f8; --surface:#fff; --line:#dce2e7; --text:#17232c; --muted:#60717f; --green:#19764b; --red:#a53e31; --amber:#91610b; --blue:#315f88; font-family:"Microsoft YaHei","PingFang SC",sans-serif; font-synthesis:none; }
* { box-sizing:border-box; }
html,body { min-width:0; margin:0; overflow-x:hidden; background:var(--bg); color:var(--text); font-size:14px; line-height:1.5; letter-spacing:0; }
button,select,table { font:inherit; letter-spacing:0; }
button,select { min-height:44px; border:1px solid #bdc7ce; border-radius:6px; background:#fff; color:var(--text); }
button { padding:0 15px; cursor:pointer; } button:hover { border-color:var(--green); } button:focus-visible,select:focus-visible { outline:3px solid #a9c8b8; outline-offset:2px; }
[hidden] { display:none!important; } h1,h2,p { margin:0; }
.topbar { border-bottom:1px solid var(--line); background:var(--surface); }
.topbar-inner,main { width:min(calc(100% - 48px),1480px); margin-inline:auto; }
.topbar-inner { min-height:74px; display:flex; align-items:center; justify-content:space-between; gap:20px; }
.brand { display:flex; align-items:center; gap:11px; min-width:0; }.brand>span { width:34px;height:34px;display:grid;place-items:center;border-radius:6px;background:var(--green);color:#fff;font-weight:800; }.brand h1 { font-size:20px; }.brand p,.publication { color:var(--muted); font-size:12px; }.publication { display:flex; gap:14px; flex-wrap:wrap; justify-content:flex-end; }
main { padding:18px 0 36px; }.filter-band { display:grid; grid-template-columns:repeat(4,minmax(145px,1fr)) auto; gap:12px; align-items:end; padding:14px 16px; border-block:1px solid var(--line); background:var(--surface); }
.filter-control { min-width:0; display:grid; gap:5px; }.filter-band label { color:var(--muted); font-size:12px; }.filter-band select { width:100%; padding:0 34px 0 11px; }
.scope-row { min-height:45px; display:flex; align-items:center; justify-content:space-between; gap:16px; color:var(--muted); font-size:12px; }.scope-row strong { color:var(--text); font-size:14px; }
.loading,.state-panel { padding:18px; border:1px solid var(--line); background:var(--surface); text-align:center; }.state-panel button { margin-top:10px; }
#dashboard-content { display:grid; gap:14px; }.kpi-grid { display:grid; grid-template-columns:repeat(6,minmax(0,1fr)); border:1px solid var(--line); background:var(--surface); }
[data-kpi] { min-width:0; padding:14px 16px; border-right:1px solid var(--line); }[data-kpi]:last-child { border:0; }[data-kpi] span,[data-kpi] small { display:block;color:var(--muted);font-size:12px; }[data-kpi] strong { display:block;margin:3px 0;font-size:25px;line-height:1.15; }[data-kpi]:first-child strong { color:var(--green); }
.primary-grid,.secondary-grid { display:grid; gap:14px; grid-template-columns:minmax(0,1.45fr) minmax(360px,.75fr); }.secondary-grid { grid-template-columns:minmax(360px,.8fr) minmax(0,1.2fr); }.panel { min-width:0; padding:15px; border:1px solid var(--line); background:var(--surface); }.panel-heading { display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:8px; }.panel-heading h2 { font-size:15px; }.panel-heading span { color:var(--muted);font-size:12px; }
.chart { width:100%; height:310px; min-width:0; }.district-chart { height:265px; }.district-actions { display:flex;flex-wrap:wrap;gap:7px;margin-top:8px; }.district-actions button { min-height:44px;padding:0 11px;font-size:12px; }
.outcome-mobile-legend { display:none; }
.table-scroll { width:100%;overflow-x:auto;overscroll-behavior-inline:contain; }.property-panel table { width:100%;min-width:570px;border-collapse:collapse; }.property-panel th,.property-panel td { padding:10px 8px;border-bottom:1px solid #e8ecef;text-align:right;white-space:nowrap; }.property-panel th:first-child,.property-panel td:first-child,.property-panel th:nth-child(2),.property-panel td:nth-child(2) { text-align:left; }.property-panel tbody th { color:var(--text);font-weight:650; }.property-panel thead th { color:var(--muted);font-size:12px;font-weight:600; }.property-panel strong { color:var(--green); }
.sr-only { position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0; }
@media(max-width:900px){.topbar-inner,main{width:min(calc(100% - 28px),1480px)}.filter-band{grid-template-columns:repeat(2,minmax(0,1fr))}.kpi-grid{grid-template-columns:repeat(3,minmax(0,1fr))}[data-kpi]:nth-child(3){border-right:0}.primary-grid,.secondary-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:520px){.topbar-inner,main{width:min(calc(100% - 20px),1480px)}.topbar-inner{align-items:flex-start;flex-direction:column;padding:12px 0;gap:8px}.publication{justify-content:flex-start}.filter-band{grid-template-columns:minmax(0,1fr);padding:12px}.filter-band button{width:100%}.scope-row{align-items:flex-start;flex-direction:column;justify-content:center;padding:8px 0}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr))}[data-kpi]{padding:12px}[data-kpi]:nth-child(2n){border-right:0}[data-kpi] strong{font-size:22px}.panel{padding:12px}.panel-heading{align-items:flex-start;flex-direction:column;gap:2px}.chart{height:300px}.district-chart{height:250px}.outcome-mobile-legend{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}.outcome-mobile-legend div{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:6px;padding:8px;border:1px solid var(--line);font-size:12px}.outcome-mobile-legend span{min-width:0;overflow-wrap:anywhere}.outcome-mobile-legend strong{flex:0 0 auto;color:var(--green)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
