:root{--bg:#0b1220;--panel:#111b2e;--line:#1f2d45;--ink:#e6edf5;--mut:#8ea2bc;--d:#3b82f6;--d2:#93c5fd;--r:#ef4444;--r2:#fca5a5;--acc:#00d4ff;--gap:#64748b}
body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
*{box-sizing:border-box}
main{max-width:1180px;margin:0 auto;padding:28px 20px 40px}
a{color:var(--acc)}
h1{font-size:clamp(30px,5vw,52px);line-height:1.05;margin:.2em 0;letter-spacing:-.01em}
h2{font-size:clamp(22px,3vw,30px);margin:0 0 16px;display:flex;gap:12px;align-items:center}
h3{font-size:20px;margin:28px 0 10px}
h4{margin:0 0 8px}
.num{font-family:'Source Code Pro',monospace;font-size:14px;color:var(--acc);border:1px solid var(--acc);border-radius:50%;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;flex:none}
section{border-top:1px solid var(--line);padding:40px 0}
.kicker{font-family:'Source Code Pro',monospace;font-size:12px;letter-spacing:.1em;text-transform:uppercase;color:var(--acc)}
.dek{font-size:19px;color:#c6d3e3;max-width:800px;line-height:1.5}
.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:24px 0}
.metric{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:14px}
.metric .v{font-size:32px;font-weight:700;line-height:1.1}
.metric .l{font-size:13px;color:var(--mut);margin-top:4px}
.metric .s{font-size:11px;margin-top:8px;color:var(--mut)}
.lab{font-family:'Source Code Pro',monospace;font-size:10px;font-weight:600;letter-spacing:.06em;padding:1px 5px;border-radius:3px;white-space:nowrap}
.lab.SOURCED{background:#0e3a2e;color:#5eead4}.lab.ANALYST{background:#3b2a0c;color:#fbbf24}.lab.GAP{background:#2a2f3a;color:#cbd5e1}.lab.LIVE{background:#123056;color:#7dd3fc}
.legend-note,.src{font-size:12.5px;color:var(--mut);line-height:1.5}
.grid2{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:28px;align-items:start;margin-bottom:16px}
.explain p{line-height:1.6;color:#cfd9e6;margin:0 0 12px}
.explain.wide{max-width:900px;line-height:1.6;color:#cfd9e6}
.chart{margin:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:12px;min-width:0}
.chart svg{display:block;width:100%;height:auto}
.toggle{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}
.toggle button{background:transparent;color:var(--mut);border:1px solid var(--line);border-radius:999px;padding:6px 12px;font-size:13px;cursor:pointer}
.toggle button.on{background:var(--acc);color:#04121c;border-color:var(--acc)}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--mut);margin-top:8px;align-items:center}
.legend i{display:inline-block;width:14px;height:10px;border-radius:2px;margin-right:4px;vertical-align:middle}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.data{border-collapse:collapse;width:100%;font-size:13px;min-width:640px}
table.data th{text-align:left;color:var(--mut);font-weight:600;border-bottom:1px solid var(--line);padding:8px 6px;font-size:12px;position:sticky;top:0;background:var(--bg)}
table.data td{border-bottom:1px solid #16223a;padding:7px 6px;vertical-align:top}
table.data td.n{text-align:right;font-variant-numeric:tabular-nums}
.pill{display:inline-block;padding:1px 7px;border-radius:999px;font-size:11px;font-weight:600}
.pill.R{background:#4a1416;color:var(--r2)}.pill.D{background:#122a52;color:var(--d2)}.pill.Other{background:#252f40;color:#cbd5e1}
.st-in_effect{color:#5eead4}.st-blocked{color:#fbbf24}.st-failed{color:var(--mut)}
details summary{cursor:pointer;color:var(--acc);margin:16px 0 8px;font-weight:600}
#district-maps{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.pair{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;min-width:0}
.pair h4{font-size:17px}
.pair .two{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.pair .cap{font-size:11.5px;color:var(--mut);margin-top:4px;line-height:1.4}
.pair .cap b{color:var(--ink)}
.gapbox{display:flex;align-items:center;justify-content:center;text-align:center;min-height:160px;border:1px dashed var(--gap);border-radius:8px;color:var(--mut);font-size:12px;padding:10px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.card{background:#0d1626;border:1px solid var(--line);border-radius:8px;padding:10px;font-size:12px;color:var(--mut)}
.card b{display:block;color:var(--ink);font-size:15px;margin-bottom:2px}
.gap-note{font-size:13px;color:var(--mut)!important}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border-radius:8px;padding:8px 10px;font-size:12px;border:1px solid var(--line);background:var(--panel);min-width:104px}
.chip b{font-size:14px;display:block}
.opinion{background:linear-gradient(180deg,rgba(0,212,255,.04),transparent 300px)}
.opinion-banner{border:1px solid #fbbf24;color:#fde68a;background:#2a1f06;border-radius:8px;padding:10px 14px;font-size:14px;margin-bottom:20px}
.plan{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px}
.plan-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:baseline}
.plan-head h4{font-size:18px;margin:0}
.feas{display:flex;gap:3px;align-items:center;font-size:12px;color:var(--mut)}
.feas i{width:16px;height:8px;border-radius:2px;background:#24334d}.feas i.on{background:var(--acc)}
.plan .when{font-size:12.5px;color:var(--mut);margin:6px 0 10px}
.pcr{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.pcr div{background:#0d1626;border-radius:8px;padding:10px;font-size:13px;line-height:1.45}
.pcr h5{margin:0 0 6px;font-size:11px;letter-spacing:.08em;text-transform:uppercase}
.pcr .pro h5{color:#5eead4}.pcr .con h5{color:var(--r2)}.pcr .risk h5{color:#fbbf24}
.pcr ul{margin:0;padding-left:16px}
.risks{background:#1a1010;border:1px solid #4a1d1d;border-radius:12px;padding:16px;margin:16px 0}
.risks li{margin-bottom:6px;line-height:1.5;color:#e5d3d3}
.reco{background:#0c1d2b;border:1px solid var(--acc);border-radius:12px;padding:18px;margin-top:18px}
.reco p{line-height:1.6;color:#d6e4f0}
.tl{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.tl div{border-top:3px solid var(--acc);background:#0d1626;padding:10px;border-radius:0 0 8px 8px;font-size:13px;line-height:1.45}
.tl b{font-family:'Source Code Pro',monospace;color:var(--acc);display:block;margin-bottom:4px}
.tl ul{margin:0;padding-left:16px}
.sources li{font-size:13px;color:var(--mut);margin-bottom:6px;line-height:1.5}
.tip{position:fixed;pointer-events:none;z-index:200;background:#0a1424;border:1px solid var(--acc);border-radius:8px;padding:8px 10px;font-size:12.5px;max-width:280px;line-height:1.45;box-shadow:0 6px 20px rgba(0,0,0,.5)}
.tip b{color:#fff}
.foot{text-align:center;color:var(--mut);font-size:12px;padding:30px 0 50px}
.axis text{fill:var(--mut);font-size:11px}.axis path,.axis line{stroke:#2a3a55}
@media (max-width:860px){
 .grid2{grid-template-columns:1fr}
 .metrics{grid-template-columns:repeat(2,1fr)}
 #district-maps{grid-template-columns:1fr}
 .pcr{grid-template-columns:1fr}
 .tl{grid-template-columns:1fr 1fr}
}
@media (max-width:480px){
 main{padding:20px 14px 30px}
 .metric .v{font-size:26px}
 .cards{grid-template-columns:1fr}
 .tl{grid-template-columns:1fr}
 .dek{font-size:17px}
}
#redraw-table{min-width:980px}#redraw-table td:nth-child(5),#redraw-table td:nth-child(4){min-width:170px}
