
:root{
  --bg:#0A0F16; --surface:#111821; --surface2:#182430; --line:#1f2b38; --text:#E6ECF2; --muted:#8d9aa8; --dim:#7f8c99;
  --signal:#5AD8C8; --signal-soft:#8fe8dc; --below:#4CC38A; --above:#F0A83A; --double:#F0564F;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace; --sans:'IBM Plex Sans',system-ui,-apple-system,Segoe UI,sans-serif;
}
*{box-sizing:border-box}
section,[id]{scroll-margin-top:90px}
html,body{margin:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:18px;line-height:1.6}
a{color:var(--signal);text-decoration:none}
a:hover{text-decoration:underline}
.wrap{max-width:1520px;margin:0 auto;padding:0 28px}
.mono{font-family:var(--mono)}
.muted{color:var(--muted)}
.dim{color:var(--dim)}
.label{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
/* header */
header{position:sticky;top:0;z-index:5;background:rgba(10,15,22,.92);backdrop-filter:blur(6px);border-bottom:1px solid var(--line)}
.hd{display:flex;align-items:center;gap:28px;height:76px}
.logo{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-weight:600;font-size:24px;letter-spacing:-.01em}
.logo .pub{color:var(--signal)}
.logo .tld{color:var(--dim);font-weight:400}
nav{display:flex;gap:26px;margin-left:auto;font-size:17px;font-weight:600}
nav a{color:var(--text);opacity:.85;padding:6px 0;border-bottom:2px solid transparent;white-space:nowrap}
nav a:hover{opacity:1;border-bottom-color:var(--signal);text-decoration:none}
nav a:hover{color:var(--text);text-decoration:none}
.pills{display:flex;gap:8px;margin-left:16px}
.pill{font-family:var(--mono);font-size:13px;padding:7px 13px;border:1px solid var(--line);border-radius:999px;color:var(--muted);white-space:nowrap}
.pill.ok{border-color:#1f5a58;color:var(--signal)}
.pill.warn{border-color:#5c2b2e;color:var(--double)}
.mbtn{display:none;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:44px;height:44px;padding:0;border:1px solid var(--line);border-radius:10px;background:var(--surface2);cursor:pointer;flex:0 0 auto}.mbtn span{display:block;width:20px;height:2px;background:var(--text);border-radius:2px;transition:transform .2s,opacity .2s}.hd.open .mbtn span:nth-child(1){transform:translateY(7px) rotate(45deg)}.hd.open .mbtn span:nth-child(2){opacity:0}.hd.open .mbtn span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
@media (max-width:1500px){nav{gap:18px;font-size:16px}.pills{margin-left:12px}}
@media (max-width:1400px){nav{gap:16px;font-size:15px}.pills .pill:nth-child(2){display:none}}
@media (max-width:1200px){.hd{gap:12px;height:64px}.mbtn{display:flex}.pills{margin-left:auto}nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;gap:0;margin:0;background:var(--surface);border-bottom:1px solid var(--line);box-shadow:0 16px 32px rgba(0,0,0,.45);padding:4px 0 8px;font-size:18px}.hd.open nav{display:flex}nav a{padding:14px 28px;border-bottom:1px solid var(--line);opacity:1}nav a:last-child{border-bottom:0}nav a:hover{border-bottom-color:var(--line);background:var(--surface2)}section,[id]{scroll-margin-top:80px}}
@media (max-width:520px){.wrap{padding:0 16px}.logo{font-size:20px;gap:8px}.pill{font-size:11px;padding:5px 8px}.pills{gap:6px;min-width:0}.pills .pill:nth-child(2){display:none}.pill{overflow:hidden;text-overflow:ellipsis;min-width:0}nav a{padding:14px 16px}select.wsel{width:100%;font-size:16px;min-height:44px;letter-spacing:0}#dsel{width:100%;min-height:44px}.hero{padding:26px 0 14px}.hero p{font-size:17px}.kicker{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.wsel{max-width:100%;min-height:40px}.card{padding:18px 16px}.big{font-size:44px}.sh{flex-wrap:wrap}.sh h2{font-size:24px}.sh .hint{flex-basis:100%}.fh{flex-wrap:wrap}.fh .hint{flex-basis:100%}.fh h3{font-size:20px}.cmpbars li{font-size:15px}.cmpbars .badge{font-size:11px;padding:2px 5px}section{padding:34px 0 6px}.tfoot{flex-wrap:wrap;gap:8px}.summary{padding:16px 16px;font-size:17px}.focusbox{padding:14px 12px 16px}.toplist li{font-size:16px}.gloss dt{font-size:16px}.disclaimer{font-size:15px}}
@media (max-width:400px){.logo{font-size:18px}.pill{font-size:10px}}
/* hero */
.hero{padding:52px 0 22px}
.hero h1{font-size:clamp(32px,3.6vw,56px);line-height:1.12;margin:10px 0 14px;font-weight:600;letter-spacing:-.01em}
.hero p{max-width:860px;color:var(--muted);margin:0;font-size:19px}
.kicker{font-family:var(--mono);font-size:15px;color:var(--signal);letter-spacing:.14em}
.wsel{background:var(--surface2);color:var(--signal);border:1px solid #1f5a58;border-radius:8px;padding:8px 12px;font-family:var(--mono);font-size:15px;letter-spacing:.06em;font-weight:600}
/* grids and cards */
.grid{display:grid;gap:18px}
.g4{grid-template-columns:repeat(4,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
@media (max-width:900px){.g4{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:1fr}}
@media (max-width:520px){.g4{grid-template-columns:1fr}}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px 26px}
.card .label{margin-bottom:10px;display:block}
.big{font-family:var(--mono);font-weight:600;font-size:54px;line-height:1;letter-spacing:-.02em}
.big.signal{color:var(--signal)}
.big.double{color:var(--double)}
.sub{font-family:var(--mono);font-size:14px;color:var(--muted);margin-top:10px}
.toplist{list-style:none;margin:0;padding:0}
.toplist li{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--line);font-size:18px}
.toplist li:last-child{border-bottom:0}
.toplist b{font-family:var(--mono);font-weight:600}
section{padding:46px 0 8px}
.sh{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}.sh .hint{min-width:0;max-width:100%}.sh select{max-width:100%}
.sh h2{margin:0;font-size:30px;font-weight:600}
.sh .hint{font-family:var(--mono);font-size:13px;color:var(--muted)}
/* table */
table{width:100%;border-collapse:collapse;font-size:17px}
th{font-family:var(--mono);font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);font-weight:400;text-align:right;padding:8px 10px;border-bottom:1px solid var(--line)}
th:first-child,td:first-child{text-align:left}
td{padding:14px 12px;border-bottom:1px solid var(--line);text-align:right;font-family:var(--mono);white-space:nowrap}
td:first-child{font-family:var(--sans);font-weight:600;white-space:normal}
td.cur{font-weight:600;font-size:19px}
td.oth{color:var(--muted)}
tr.row{cursor:pointer}
tr.row:hover td{background:var(--surface2)}
tr.row.sel td{background:#13212a}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:10px;background:var(--dim);vertical-align:1px}
.dot.above{background:var(--above)}.dot.double{background:var(--double)}.dot.below{background:var(--below)}
.badge{display:inline-block;font-family:var(--mono);font-size:14px;padding:4px 11px;border-radius:7px;background:var(--surface2);color:var(--muted);min-width:76px;text-align:center}
.badge.above{color:var(--above);background:#2a2010}.badge.double{color:var(--double);background:#2a1215}.badge.below{color:var(--below);background:#0f2a1c}
.tfoot{display:flex;justify-content:space-between;align-items:center;padding:14px 12px 4px;font-family:var(--mono);font-size:14px;color:var(--muted)}
button.link{background:none;border:0;color:var(--signal);font-family:var(--mono);font-size:14px;cursor:pointer;padding:0}
.tbl{overflow-x:auto;-webkit-overflow-scrolling:touch}
@media (max-width:700px){table.t-home th:nth-child(3),table.t-home td:nth-child(3),table.t-home th:nth-child(4),table.t-home td:nth-child(4),table.t-week th:nth-child(2),table.t-week td:nth-child(2),table.t-week th:nth-child(4),table.t-week td:nth-child(4),table.t-week th:nth-child(5),table.t-week td:nth-child(5),table.t-county th:nth-child(4),table.t-county td:nth-child(4){display:none}.sh{flex-wrap:wrap}.sh .hint{flex-basis:100%;max-width:100%}}
@media (max-width:520px){table{font-size:15px}th{font-size:11px;letter-spacing:.06em;padding:8px 6px}td{padding:10px 6px}td.cur{font-size:17px}.badge{min-width:0;font-size:12px;padding:3px 6px}.refv{min-width:0;margin-right:4px}}
.refv{display:inline-block;min-width:44px;text-align:right;margin-right:6px}
/* map */
.maprow{display:grid;grid-template-columns:1.5fr 1fr;gap:16px}
@media (max-width:900px){.maprow{grid-template-columns:1fr}}
.mapbox{position:relative}
.mapbox svg{width:100%;height:auto;display:block}
.mapbox path{stroke:var(--bg);stroke-width:1.2;transition:opacity .15s;cursor:default}
.mapbox path:hover{opacity:.8}.mapbox a path{cursor:pointer}
.tip{position:absolute;pointer-events:none;background:#0d141c;border:1px solid var(--line);border-radius:8px;padding:8px 12px;font-family:var(--mono);font-size:14px;display:none;white-space:nowrap}
.legend{display:flex;gap:4px;align-items:center;margin-top:12px;font-family:var(--mono);font-size:13px;color:var(--muted)}
.legend i{display:block;height:8px;flex:1;border-radius:4px}
.legendlbl{display:flex;justify-content:space-between;font-family:var(--mono);font-size:13px;color:var(--muted);margin-top:5px}
.bars{list-style:none;margin:14px 0 0;padding:0}
.bars li{margin:10px 0;font-size:16px}
#side{position:relative;min-height:0}#side .inner{position:absolute;inset:24px 26px;display:flex;flex-direction:column;min-height:0}#side .inner .sub{margin-top:8px}
.bars.all{flex:1;min-height:0;overflow-y:auto;margin-top:12px;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.bars.all::-webkit-scrollbar{width:6px}.bars.all::-webkit-scrollbar-thumb{background:var(--line);border-radius:3px}
.bars.all li{margin:8px 0}.bars.all li:first-child{margin-top:0}.bars.all li.zero .l{color:var(--dim)}.bars.all a{color:inherit}.bars.all a:hover{color:var(--signal);text-decoration:none}
@media (max-width:900px){#side .inner{position:static;inset:auto}.bars.all{max-height:340px}}
.bars .l{display:flex;justify-content:space-between;font-family:var(--mono)}
.bars .b{height:4px;background:var(--surface2);border-radius:2px;margin-top:5px;overflow:hidden}
.bars .b i{display:block;height:100%;background:var(--signal)}
select{background:var(--surface2);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:9px 12px;font-family:var(--sans);font-size:17px;max-width:100%;min-width:0}
.focusbox{background:#0d141c;border:1px solid var(--line);border-radius:18px;padding:22px 22px 24px}.focusbox .card{background:var(--surface)}.fh{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:0 0 12px}.fh h3{margin:0;font-size:22px;font-weight:600}.fh .hint{font-family:var(--mono);font-size:13px;color:var(--muted)}.focusbox .maprow{margin-bottom:26px}
/* trend */
.trend svg{width:100%;height:auto;display:block}
.trend text{font-family:var(--mono);font-size:11px;fill:var(--dim)}
.trend .bar{fill:var(--signal)}
.trend .bar.ghost{fill:none;stroke:var(--line);stroke-dasharray:3 3}
.trend .refline{stroke:var(--above);stroke-width:1;stroke-dasharray:4 4}
.trend .medline{stroke:var(--dim);stroke-width:1;stroke-dasharray:2 4}
.trend .val{fill:var(--text);font-weight:600}
.gloss{margin:0;columns:2;column-gap:32px}.gloss>div{break-inside:avoid;padding:9px 0;border-bottom:1px solid var(--line)}.gloss dt{font-weight:600;font-size:17px}.gloss dt a{color:#f5d46b}.gloss dd{margin:2px 0 0;color:var(--muted);font-size:15px}@media (max-width:760px){.gloss{columns:1}}
.cmpbars .b i{background:var(--surface2);border:1px solid var(--line);box-sizing:border-box}.cmpbars .b i.signal{background:var(--signal);border:0}.cmpbars .b i.med{background:var(--dim);border:0}.cmpbars .b i.up{background:var(--double);border:0}.cmpbars .b i.down{background:var(--below);border:0}.vup{color:var(--double)}.vdown{color:var(--below)}.cmpbars .badge{font-size:12px;min-width:0;padding:2px 7px}.cmpbars li{margin:10px 0}
.summary{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--signal);border-radius:14px;padding:20px 26px;margin:20px 0 0;font-size:18px}.summary p{margin:6px 0}.summary.news{border-left-color:var(--above)}
.tone-bad{color:#f6a9a4}.tone-good{color:#7fd99f}.summary a{color:#f5d46b;text-decoration:none;border-bottom:1px dotted rgba(245,212,107,.5)}.summary a:hover{border-bottom-style:solid}.disclaimer{max-width:960px;color:var(--text);margin:14px 0 0!important;font-size:17px;border-left:3px solid var(--above);padding-left:14px}.disclaimer em{font-style:italic}
/* footer */
footer{margin-top:48px;border-top:1px solid var(--line);padding:36px 0 60px;font-size:16px;color:var(--muted)}
footer .grid{gap:24px}
footer p{margin:6px 0}
footer .mono{font-size:14px}
.status{margin:6px 0 0;font-family:var(--mono);font-size:14px}.status div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}.status div:last-child{border-bottom:0}.status dt{color:var(--muted)}.status dd{margin:0;text-align:right;color:var(--text)}
@media (max-width:520px){.status div{flex-direction:column;gap:2px}.status dd{text-align:left}}
.err{background:#2a1215;border:1px solid #5c2b2e;color:#ff8a80;padding:12px 16px;border-radius:10px;font-family:var(--mono);font-size:13px;margin:16px 0}
.loading{color:var(--dim);font-family:var(--mono);font-size:13px;padding:40px 0}
.mapnote{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%);background:rgba(13,20,28,.94);border:1px solid var(--line);border-radius:10px;padding:12px 16px;font-family:var(--mono);font-size:14px;color:var(--text);max-width:82%;text-align:center;line-height:1.5}.mapnote b{color:var(--signal)}
.spark{width:100%;height:auto;display:block;margin:10px 0 4px}.spark .area{fill:rgba(90,216,200,.12)}.spark .line{fill:none;stroke:var(--signal);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}.spark circle{fill:var(--signal)}.spark circle.hollow{fill:var(--bg);stroke:var(--signal);stroke-width:1.5}.spark circle.up{fill:var(--double)}.spark circle.down{fill:var(--below)}.spark text{font-family:var(--mono);font-size:11px;fill:var(--dim)}.spark text.val{fill:var(--text)}
.about p{margin:0;font-size:19px;line-height:1.65;max-width:960px}.share{margin-top:14px;display:flex;flex-wrap:wrap;align-items:center;gap:6px 8px}.share .label{display:block;width:100%;margin:0 0 2px}.share a,.summary .share a{display:inline-block;font-family:var(--mono);font-size:15px;padding:9px 14px;border:1px solid var(--line);border-radius:8px;margin:0;color:var(--signal);text-decoration:none;background:var(--surface2)}.share a:hover,.summary .share a:hover{border-color:var(--signal);text-decoration:none}.cmpbars .l{gap:10px;align-items:baseline}.cmpbars .l>span:first-child{min-width:0}.cmpbars .l>span:last-child{white-space:nowrap;flex-shrink:0}
.spark rect.gap{fill:var(--double);opacity:.28}.trendsub{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-top:6px;font-family:var(--mono);font-size:14px;color:var(--muted)}.trendsub b{color:var(--text)}.nums{margin-top:8px}.nums summary{cursor:pointer;font-family:var(--mono);font-size:13px;color:var(--signal);list-style:none}.nums summary::before{content:"› ";}.nums[open] summary::before{content:"⌄ ";}.numgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:3px 10px;margin-top:8px;font-family:var(--mono);font-size:13px;color:var(--muted)}.numgrid b{color:var(--text);float:right}.numgrid .na b{color:var(--double)}
.trendcard .l{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.trendcard .l .label{margin:0}.trendcard .l b{font-size:22px}.trendcard .sub{margin-top:4px}

.mapbox a path{cursor:pointer}.mapbox a:hover path{opacity:.8}
.crumbs{font-family:var(--mono);font-size:14px;color:var(--muted);margin-top:24px}.crumbs a{color:var(--muted)}
.summary{background:var(--surface);border:1px solid var(--line);border-left:4px solid var(--signal);border-radius:14px;padding:20px 26px;margin:20px 0 0;font-size:18px}
.summary p{margin:6px 0}.summary.news{border-left-color:var(--above)}
.kv{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.kv .card{padding:14px 16px}
.kv .big{font-size:40px}
.dl a{display:inline-block;font-family:var(--mono);font-size:15px;padding:10px 14px;border:1px solid var(--line);border-radius:8px;margin:4px 6px 4px 0}
.arch{list-style:none;padding:0;margin:0}.arch li{padding:14px 0;border-bottom:1px solid var(--line)}
.arch h3{margin:0 0 8px;font-size:21px}
.og{width:1200px;height:630px;background:#0A0F16;color:#E6ECF2;font-family:'IBM Plex Sans',system-ui,sans-serif;padding:56px 64px;box-sizing:border-box;position:relative;overflow:hidden}
.og .k{font-family:'IBM Plex Mono',monospace;color:#5AD8C8;font-size:22px;letter-spacing:.12em}
.og h1{font-size:54px;margin:14px 0 24px;line-height:1.1;font-weight:600}
.og .row{display:flex;gap:28px}
.og .t{background:#111821;border:1px solid #1f2b38;border-radius:14px;padding:22px 26px;flex:1}
.og .t .l{font-family:'IBM Plex Mono',monospace;font-size:14px;letter-spacing:.12em;color:#8d9aa8;text-transform:uppercase}
.og .t .v{font-family:'IBM Plex Mono',monospace;font-size:52px;font-weight:600;margin-top:8px}
.og .t .s{font-family:'IBM Plex Mono',monospace;font-size:15px;color:#8d9aa8;margin-top:6px}
.og .f{position:absolute;left:64px;right:64px;bottom:40px;display:flex;justify-content:space-between;font-family:'IBM Plex Mono',monospace;font-size:18px;color:#8d9aa8}
.og .f b{color:#E6ECF2}.og .f b i{color:#5AD8C8;font-style:normal}
