:root{--bg:#f7f8fb;--panel:#fff;--panel-2:#f0f2f7;--text:#0f172a;--muted:#64748b;--line:#e2e8f0;--empty:#e5e7eb;--no-race:#f3f4f6;--counting:#cbd5e1;--toss:#a8a29e;--d-1:#84a7f4;--d-2:#5787f0;--d-3:#2563eb;--d-hold:#1e3a8a;--r-1:#eb8484;--r-2:#e45858;--r-3:#dc2626;--r-hold:#7f1d1d;--accent:#6366f1;--map-stroke:#fff;--shadow:0 8px 30px #0f172a14;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0b0f17;--panel:#121826;--panel-2:#1a2132;--text:#e5e9f2;--muted:#8b95a8;--line:#232b3d;--empty:#2a3244;--no-race:#171d2a;--counting:#475569;--map-stroke:#0b0f17;--shadow:0 8px 30px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;font:14px/1.45 ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit;color:inherit;cursor:pointer}.muted{color:var(--muted)}.small{font-size:12px}.d-text{color:var(--d-3)}.r-text{color:var(--r-3)}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--panel);z-index:20;align-items:center;gap:20px;padding:12px 20px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;color:var(--text);align-items:center;gap:10px;font-size:18px;font-weight:800;display:flex}.brand:hover{text-decoration:none}.elections{gap:4px;display:flex}.elections a{color:var(--muted);border-radius:8px;padding:6px 10px;font-weight:600}.elections a.on{background:var(--panel-2);color:var(--text)}.elections a:hover{color:var(--text);text-decoration:none}.status{align-items:center;gap:8px;margin-left:auto;display:flex;position:relative}.pill{background:var(--panel-2);border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:6px 12px;font-size:12px;font-weight:600;display:inline-flex}.pill.sim{color:#92400e;background:#fef3c7;border-color:#fde68a}@media (prefers-color-scheme:dark){.pill.sim{color:#fcd34d;background:#3a2a06;border-color:#5c430b}}.pulse{background:#22c55e;border-radius:50%;width:8px;height:8px;animation:2s infinite pulse;box-shadow:0 0 #22c55e99}.pill.err .pulse{background:#f59e0b}@keyframes pulse{0%{box-shadow:0 0 #22c55e99}70%{box-shadow:0 0 0 8px #22c55e00}to{box-shadow:0 0 #22c55e00}}.sources-pop{background:var(--panel);border:1px solid var(--line);width:340px;box-shadow:var(--shadow);z-index:30;border-radius:12px;padding:14px;position:absolute;top:40px;right:0}.sources-pop ul{gap:6px;margin:10px 0;padding:0;list-style:none;display:grid}.sources-pop li{grid-template-columns:14px 1fr;column-gap:6px;display:grid}.sources-pop li.ok span{color:#22c55e}.sources-pop li.bad span{color:#f59e0b}.sources-pop em{color:var(--muted);grid-column:2;font-size:12px;font-style:normal}.sources-pop small{color:var(--muted)}.controls{flex-wrap:wrap;align-items:center;gap:12px;padding:12px 20px;display:flex}.seg{background:var(--panel);border:1px solid var(--line);border-radius:10px;gap:2px;padding:3px;display:inline-flex}.seg button{color:var(--muted);background:0 0;border:0;border-radius:7px;padding:6px 12px;font-weight:600}.seg button.on{background:var(--text);color:var(--bg)}.seg button:not(.on):hover{color:var(--text);background:var(--panel-2)}.sim-ctl{align-items:center;gap:8px;margin-left:auto;display:flex}.switch{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:8px;font-weight:600;display:inline-flex}.switch input{accent-color:var(--accent);width:16px;height:16px}.sim-ctl input[type=range]{width:160px;accent-color:var(--accent)}.icon-btn{border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:4px 10px;line-height:1.2}.icon-btn:hover{background:var(--panel-2)}.stage{flex:1;grid-template-columns:minmax(0,1fr) 360px;gap:16px;padding:0 20px 20px;display:grid}.map-col{flex-direction:column;gap:12px;min-width:0;display:flex}.balance-wrap,.map-wrap,.key-races,.panel,.house-block{background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px}.balance-wrap{padding:14px 18px}.balance-head{justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:8px;display:flex}.balance .side{align-items:baseline;gap:8px;display:flex}.balance .side .n{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:34px;font-weight:800;line-height:1}.balance .side.d .n{color:var(--d-3)}.balance .side.r .n{color:var(--r-3)}.balance .side .who{color:var(--muted);font-weight:600}.balance .side.win .who:after{content:" ✓"}.balance .mid{text-align:center;flex-direction:column;display:flex}.balance .mid .ttl{font-weight:700}.balance .mid .maj{color:var(--muted);font-size:12px}.bar{background:var(--empty);border-radius:6px;height:18px;display:flex;position:relative;overflow:hidden}.bar span{height:100%;transition:width .6s}.bar .toss{background:var(--empty)}.majline{background:var(--text);width:2px;position:absolute;top:-3px;bottom:-3px;transform:translate(-1px)}.toss-label{text-align:center;color:var(--muted);margin-top:4px;font-size:12px}.control-odds{margin-top:10px;font-size:13px}.map-wrap{padding:8px;position:relative}.usmap{width:100%;height:auto;display:block}.state{stroke:var(--map-stroke);transition:fill .5s,opacity .3s}.state.has-race{cursor:pointer}.state.has-race:hover{filter:brightness(1.06)saturate(1.1)}.state.dim{opacity:.25}.state.selected{stroke:var(--text)}.state.flash{animation:.8s 3 flash}@keyframes flash{50%{filter:brightness(1.6)}}.mesh{fill:none;stroke:var(--map-stroke);stroke-linejoin:round;pointer-events:none}.counties path{stroke:var(--map-stroke);stroke-opacity:.7;transition:fill .5s}.counties path:hover{stroke:var(--text);stroke-opacity:1}.labels text{text-anchor:middle;fill:#fff;font-weight:700}.labels .ink-dark text,.callout text.ink-dark{fill:#1e293b}.labels .abbr{font-size:11px}.labels .sub{font-size:8.5px;font-weight:600}.callout{cursor:pointer}.callout line{stroke:var(--muted);stroke-width:.6px;opacity:.5}.callout rect{stroke:var(--line)}.callout text{text-anchor:middle;fill:#fff;font-size:11px;font-weight:700}.callout:hover rect{stroke:var(--text)}.back{z-index:2;border:1px solid var(--line);background:var(--panel);border-radius:8px;padding:6px 10px;font-weight:600;position:absolute;top:14px;left:14px}.legend{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:6px 14px;padding:4px 8px 8px;font-size:12px;display:flex}.legend span{align-items:center;gap:6px;display:inline-flex}.legend i{border:1px solid var(--line);border-radius:3px;width:12px;height:12px;display:inline-block}.hint{text-align:center;color:var(--muted);margin:0 0 8px;font-size:12px}.house-block{text-align:center;align-self:start;padding:14px}.house-block h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);text-align:left;margin:0 0 8px;font-size:13px}.hemicycle{width:100%;max-width:520px}.seat{fill:var(--empty);transition:fill .4s}.seat.d-called{fill:var(--d-3)}.seat.d-lead{fill:var(--d-1)}.seat.r-called{fill:var(--r-3)}.seat.r-lead{fill:var(--r-1)}.hemi-maj{stroke:var(--text);stroke-width:1.2px}.key-races{align-self:start;padding:14px}.key-races h3,.panel h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 8px;font-size:13px}.key-races ul{margin:0;padding:0;list-style:none}.key-races button{text-align:left;background:0 0;border:0;border-radius:8px;grid-template-rows:auto auto;grid-template-columns:12px 1fr auto;column-gap:10px;width:100%;padding:8px;display:grid}.key-races button:hover{background:var(--panel-2)}.swatch{border-radius:3px;grid-row:span 2;width:12px;height:12px;margin-top:4px}.kr-state{font-weight:700}.kr-names{grid-column:2;font-size:12px}.kr-val{font-variant-numeric:tabular-nums;grid-area:1/3/span 2;align-self:center;font-weight:700}.panel{align-self:start;max-height:calc(100vh - 140px);padding:16px;position:sticky;top:72px;overflow:auto}.panel-head{justify-content:space-between;align-items:flex-start;display:flex}.panel h2{letter-spacing:-.02em;margin:0 0 6px;font-size:24px}.eyebrow{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:12px;font-weight:600}.panel section{border-top:1px solid var(--line);margin-top:12px;padding-top:12px}.chips{flex-wrap:wrap;gap:6px;margin:6px 0;display:flex}.chip{background:var(--panel-2);border:1px solid var(--line);border-radius:999px;padding:3px 8px;font-size:12px;font-weight:600}.chip.rating.safe-d,.chip.rating.likely-d,.chip.rating.lean-d{background:var(--d-3);color:#fff;border-color:#0000}.chip.rating.lean-d{background:var(--d-2)}.chip.rating.safe-r,.chip.rating.likely-r,.chip.rating.lean-r{background:var(--r-3);color:#fff;border-color:#0000}.chip.rating.lean-r{background:var(--r-2)}.chip.rating.tossup{background:var(--toss);color:#fff;border-color:#0000}.note{color:var(--muted);margin:6px 0 0;font-size:13px}.cands{gap:10px;margin:0;padding:0;list-style:none;display:grid}.cand-row{align-items:center;gap:8px;display:flex}.cname{flex:1;font-weight:600}.pct{font-variant-numeric:tabular-nums;font-size:16px;font-weight:800}.check{color:#16a34a;margin-left:4px;font-size:12px}.dot{border-radius:50%;flex:none;width:10px;height:10px;display:inline-block}.dot.d{background:var(--d-3)}.dot.r{background:var(--r-3)}.dot.i{background:#a855f7}.dot.o{background:var(--toss)}.cand-bar{background:var(--panel-2);border-radius:3px;height:6px;margin-top:4px;overflow:hidden}.cand-bar span{height:100%;transition:width .6s;display:block}.cand-bar .d{background:var(--d-3)}.cand-bar .r{background:var(--r-3)}.cand-bar .i{background:#a855f7}.cand-bar .o{background:var(--toss)}.votes{color:var(--muted);font-variant-numeric:tabular-nums;font-size:12px}.winner .cname{color:var(--text)}.reporting{background:var(--panel-2);border-radius:2px;height:4px;margin-bottom:10px;overflow:hidden}.reporting span{background:var(--accent);height:100%;transition:width .6s;display:block}.odds{color:#fff;border-radius:6px;height:26px;font-size:12px;font-weight:700;display:flex;overflow:hidden}.odds span{white-space:nowrap;align-items:center;padding:0 8px;transition:width .6s;display:flex;overflow:hidden}.odds .d{background:var(--d-3)}.odds .r{background:var(--r-3);justify-content:flex-end}.sources{gap:4px;margin:8px 0 0;padding:0;font-size:13px;list-style:none;display:grid}.sources li{justify-content:space-between;display:flex}.poll-avg{margin:0 0 8px}table.polls{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;margin-bottom:6px;font-size:12px}table.polls th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:4px;font-weight:600}table.polls td{border-bottom:1px solid var(--line);padding:4px}table.polls td:first-child{text-overflow:ellipsis;white-space:nowrap;max-width:130px;overflow:hidden}.pick{gap:8px;display:flex}.pick-btn{border:2px solid var(--line);background:var(--panel);border-radius:10px;flex:1;padding:8px;font-weight:700}.pick-btn.d.on{background:var(--d-3);border-color:var(--d-3);color:#fff}.pick-btn.r.on{background:var(--r-3);border-color:var(--r-3);color:#fff}.facts{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.facts div{flex-direction:column;display:flex}.districts{grid-template-columns:repeat(auto-fill,minmax(34px,1fr));gap:4px;display:grid}.district{text-align:center;background:var(--empty);border-radius:6px;padding:6px 0;font-size:11px;font-weight:700}.district.d-called{background:var(--d-3);color:#fff}.district.d-lead{background:var(--d-1)}.district.r-called{background:var(--r-3);color:#fff}.district.r-lead{background:var(--r-1)}.tooltip{z-index:50;pointer-events:none;background:var(--panel);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:10px;max-width:280px;padding:8px 10px;font-size:13px;position:fixed}.foot{color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:8px;padding:12px 20px 20px;font-size:12px;display:flex}@media (max-width:960px){.stage{grid-template-columns:1fr}.panel{z-index:40;border-radius:16px 16px 0 0;max-height:62vh;position:fixed;inset:auto 0 0}.sim-ctl{margin-left:0}}@media (max-width:640px){.topbar{flex-wrap:wrap;gap:10px;padding:10px 12px}.controls,.stage,.foot{padding-left:12px;padding-right:12px}.seg{max-width:100%;overflow-x:auto}.seg button{white-space:nowrap;padding:6px 9px}.balance .side .n{font-size:26px}.balance .side .who,.status .pill:not(.live),.tooltip{display:none}}.market-call{background:var(--panel-2);border-left:3px solid var(--accent);border-radius:4px;margin:0 0 8px;padding:6px 8px;font-size:12px}.wordmark{letter-spacing:-.03em;font-weight:800}.wordmark .tide{background:linear-gradient(90deg,#2563eb,#dc2626);color:#0000;-webkit-background-clip:text;background-clip:text}.doc-wrap{min-height:100vh}.doc{max-width:860px;margin:0 auto;padding:24px 20px 64px;font-size:16px;line-height:1.6}.doc h1{letter-spacing:-.02em;margin:8px 0 12px;font-size:34px;line-height:1.15}.doc h2{letter-spacing:-.01em;margin:32px 0 10px;font-size:22px}.doc h3{margin:18px 0 6px;font-size:16px}.doc .lede{color:var(--text);font-size:18px}.doc ul{padding-left:20px}.crumbs{color:var(--muted);font-size:13px}.cta{background:var(--text);color:var(--bg);border-radius:10px;padding:10px 16px;font-weight:700;display:inline-block}.cta:hover{opacity:.9;text-decoration:none}.updated{margin-top:-6px}table.data{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:14px}table.data th,table.data td{text-align:left;border-bottom:1px solid var(--line);padding:8px 6px}table.data th{color:var(--muted);font-weight:600}table.data caption{caption-side:bottom;text-align:left;color:var(--muted);padding-top:6px;font-size:13px}.faq h3,.faq h2{margin-bottom:4px}.faq p{margin-top:0}.inline-link{margin-right:12px}.race-links{flex-wrap:wrap;gap:6px 14px;display:flex}.home-doc{border-top:1px solid var(--line)}.stakes .sides{grid-template-columns:1fr 1fr;gap:14px;margin-top:12px;display:grid}.side-case{border:1px solid var(--line);background:var(--panel);border-radius:12px;padding:4px 14px}.side-case.d{border-top:4px solid var(--d-3)}.side-case.r{border-top:4px solid var(--r-3)}.side-case ul{padding-left:18px}.panel-stakes{border-top:1px solid var(--line);margin-top:12px;padding-top:10px;font-size:13px}.panel-stakes summary{cursor:pointer;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px;font-size:13px;font-weight:700}.panel-stakes .side-case{margin-top:8px;padding:6px 10px}.panel-stakes ul{margin:4px 0;padding-left:16px}.sr-only{clip:rect(0 0 0 0);width:1px;height:1px;position:absolute;overflow:hidden}@media (max-width:640px){.stakes .sides{grid-template-columns:1fr}.doc h1{font-size:27px}.elections{max-width:100%;overflow-x:auto}}
