
:root {
  --paper:#F5F4F1; --surface:#FFF; --rule:#DCDAD4; --ink:#1A1D21;
  --ink-soft:#5C6169; --ink-faint:#8A9099; --accent:#1F5C4D;
  --accent-dim:#E2EDE9; --good:#2E7D5B; --bad:#A33A2E; --warn:#8A6516;
  --display:"Newsreader",Georgia,serif;
  --body:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,monospace;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --paper:#12161A; --surface:#1A2026; --rule:#2C353D; --ink:#E6EAED;
  --ink-soft:#A3ADB6; --ink-faint:#737E88; --accent:#63B49B;
  --accent-dim:#1B2F2A; --good:#6FBF97; --bad:#E0837A; --warn:#D6A45C;
}}
:root[data-theme="dark"]{
  --paper:#12161A; --surface:#1A2026; --rule:#2C353D; --ink:#E6EAED;
  --ink-soft:#A3ADB6; --ink-faint:#737E88; --accent:#63B49B;
  --accent-dim:#1B2F2A; --good:#6FBF97; --bad:#E0837A; --warn:#D6A45C;
}
*{box-sizing:border-box}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--body);
  font-size:15px;line-height:1.6}
.wrap{max-width:1060px;margin:0 auto;padding-inline:20px;padding-block:0 64px}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
header.top{border-bottom:1px solid var(--rule);padding-block:18px;margin-bottom:34px}
header.top .bar{max-width:1060px;margin:0 auto;padding-inline:20px;display:flex;
  gap:20px;align-items:baseline;flex-wrap:wrap}
header.top .brand{font-family:var(--display);font-size:1.22rem;font-weight:600;
  color:var(--ink);letter-spacing:-.01em}
header.top nav{display:flex;gap:16px;font-size:.88rem;margin-left:auto}
h1{font-family:var(--display);font-weight:500;font-size:clamp(1.9rem,4.6vw,2.7rem);
  line-height:1.12;margin:0 0 10px;letter-spacing:-.015em;text-wrap:balance}
h2{font-family:var(--display);font-weight:500;font-size:1.42rem;margin:40px 0 6px}
h3{font-size:1rem;margin:26px 0 8px}
.lede{font-size:1.04rem;color:var(--ink-soft);max-width:64ch;margin:0 0 6px}
.eyebrow{font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--accent);margin:0 0 12px}
.note{font-size:.86rem;color:var(--ink-soft)}
.tablewrap{overflow-x:auto;border:1px solid var(--rule);border-radius:3px;
  background:var(--surface);margin-top:14px}
table{border-collapse:collapse;width:100%;min-width:560px}
th{font-family:var(--mono);font-size:.68rem;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-soft);text-align:left;
  padding:10px 12px;border-bottom:1px solid var(--rule);white-space:nowrap;
  background:var(--paper)}
td{padding:9px 12px;border-bottom:1px solid var(--rule);font-size:.88rem;
  vertical-align:top}
tr:last-child td{border-bottom:0}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.charts{display:flex;flex-wrap:wrap;gap:30px;margin:22px 0 6px;align-items:flex-start}
.chart{margin:0;flex:1 1 300px;min-width:0}
.chart figcaption{font-family:var(--mono);font-size:.68rem;letter-spacing:.1em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:9px}
.chart svg{overflow:visible}
.sub{font-size:.8rem;color:var(--ink-soft);margin-top:3px}
.pos{color:var(--good);font-weight:500}
.neg{color:var(--bad);font-weight:500}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));
  gap:14px;margin-top:20px}
.card{background:var(--surface);border:1px solid var(--rule);border-radius:3px;
  padding:16px}
.card .n{font-family:var(--display);font-size:1.75rem;line-height:1;display:block;
  font-variant-numeric:tabular-nums}
.card .l{font-size:.8rem;color:var(--ink-soft);margin-top:6px;display:block}
.statelist{display:flex;flex-wrap:wrap;gap:7px;margin-top:14px}
.statelist a{font-family:var(--mono);font-size:.78rem;padding:4px 9px;
  background:var(--surface);border:1px solid var(--rule);border-radius:2px}
.caveat{background:var(--surface);border-left:3px solid var(--warn);
  padding:13px 16px;margin:22px 0;font-size:.88rem;color:var(--ink-soft)}
.caveat b{color:var(--ink)}
footer{margin-top:52px;padding-top:18px;border-top:1px solid var(--rule);
  font-size:.82rem;color:var(--ink-faint)}
footer a{color:var(--ink-soft)}
@media(max-width:620px){header.top nav{margin-left:0;width:100%}}
