:root{--paper:#f4f5f7;--surface:#fff;--ink:#161a23;--muted:#5b6374;--rule:#dde1e8;--d:#2a78d6;--r:#c74843;--accent:#277663;--chip:#eef0f4}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.55 "Segoe UI",system-ui,sans-serif}.wrap{max-width:1320px;margin:auto;padding:22px 24px 40px}header,.toolbar,.scenario,.section-top{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}header{border-bottom:1px solid var(--rule);padding-bottom:18px}.brand{font-weight:800;font-size:20px;letter-spacing:-.04em;color:var(--ink);text-decoration:none}.brand span{font-weight:400;color:var(--muted);letter-spacing:0}.pill,.eyebrow{font:12px ui-monospace,Consolas,monospace;letter-spacing:.07em}.pill{background:var(--chip);border-radius:24px;padding:7px 12px}.eyebrow{text-transform:uppercase;color:var(--accent)}.intro{padding:36px 0 20px;max-width:850px}h1{font-size:clamp(36px,5vw,60px);line-height:1.03;letter-spacing:-.05em;margin:14px 0 22px}h2{font-size:20px;line-height:1.2;letter-spacing:-.025em;margin:0 0 14px}h3{font-size:16px}.intro>p:last-child{font-size:18px;color:var(--muted);max-width:650px}.notice{padding:14px 18px;border-left:4px solid var(--accent);background:#eaf2ed;font-size:14px}.notice.demo-notice{background:#fff4da;border-color:#9b671c}.toolbar{justify-content:flex-start;padding:20px 0}label{display:flex;flex-direction:column;gap:5px;color:var(--muted);font-size:12px}select,input,button{font:inherit;border:1px solid var(--rule);border-radius:6px;background:var(--surface);color:var(--ink);padding:8px 12px}select{min-width:200px;font-size:15px}button{cursor:pointer}button:hover{border-color:var(--ink)}button:disabled{opacity:.4;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.demo{flex-direction:row;align-items:center;margin-left:auto;font-size:14px}.demo input{width:18px;height:18px}.scenario{position:sticky;top:0;z-index:5;background:var(--paper);border-block:1px solid var(--rule);padding:14px 0}.scenario p{margin:4px 0 0;font-size:13px}#chips{flex:1;display:flex;gap:8px;flex-wrap:wrap}.chip{font-size:12px;border-radius:24px;background:var(--surface)}.empty{padding:58px 0;max-width:680px}.empty h2{font-size:30px;margin:15px 0}.muted,footer{color:var(--muted)}.cards{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:22px 0}.panel{background:var(--surface);border:1px solid var(--rule);border-radius:10px;padding:22px;min-width:0}.big{font-size:38px;font-weight:750;letter-spacing:-.04em;color:var(--d)}.hist{display:flex;align-items:flex-end;gap:3px;height:115px;padding:12px 0 24px}.hist button{padding:0;flex:1;background:var(--d);min-height:2px;position:relative;border:0;border-radius:3px 3px 0 0}.hist button span{position:absolute;bottom:-22px;left:50%;transform:translateX(-50%);font:11px ui-monospace,monospace;color:var(--muted)}form{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap;margin:16px 0}form label{flex:1;min-width:100px}form input{width:100%}form button{background:var(--ink);color:white}form#pv-form{border-top:1px solid var(--rule);padding-top:15px}.layout{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(280px,1fr);gap:16px}.section-top input{max-width:220px}.races{display:grid;gap:0}.race{display:grid;grid-template-columns:1fr 80px 80px;gap:10px;padding:11px 0;border-top:1px solid var(--rule);align-items:center}.race .name{border:0;text-align:left;padding:0;color:var(--ink);background:none;font-weight:600}.race .name small{display:block;font-weight:400;color:var(--muted)}.outcome.d{color:var(--d)}.outcome.r{color:var(--r)}.outcome[aria-pressed=true]{border:2px solid var(--ink);padding:7px 11px}.method-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:26px 0}.method-grid ol{padding-left:20px}.method-grid li{margin:14px 0}.evidence{border-top:1px solid var(--rule);padding:10px 0;display:flex;justify-content:space-between;gap:12px}.evidence strong{font:14px ui-monospace,monospace}.detail-note{font-size:13px;color:var(--muted)}.sources{margin-bottom:20px}.sources a{color:var(--accent)}footer{font-size:12px;padding-top:10px}@media(max-width:760px){.wrap{padding:16px}.cards,.layout,.method-grid{grid-template-columns:1fr}.demo{margin-left:0}h1{font-size:40px}.intro{padding-top:22px}.panel{padding:17px}.scenario{position:static}.brand span{display:block;font-size:14px}.race{grid-template-columns:1fr 67px 67px}select{min-width:160px}header .pill{font-size:10px}.section-top label{width:100%}.section-top input{max-width:none}}
:root{color-scheme:light}.outcome{white-space:nowrap;padding:8px 6px;font-size:13px}.outcome[aria-pressed=true]{padding:7px 5px}.hist button:hover{background:var(--accent)}
a,.panel,.empty{overflow-wrap:anywhere}.evidence>span{min-width:0}.toolbar label{max-width:100%}.toolbar select{max-width:100%}.table-wrap{max-width:100%}
@media(prefers-color-scheme:dark){:root{--paper:#0e1117;--surface:#151922;--ink:#e7eaf0;--muted:#9aa3b5;--rule:#262c38;--d:#5b9cf0;--r:#e8706a;--accent:#79c7ae;--chip:#1d2330;color-scheme:dark}.notice{background:#172d26}.notice.demo-notice{background:#312919}form button{color:var(--paper)}}
.view-tabs{display:flex;gap:8px;margin:0 0 15px}.view-tabs button[aria-pressed=true]{border-color:var(--ink);font-weight:700}.research{margin-top:24px}.table-wrap{overflow:auto;margin:25px 0}table{border-collapse:collapse;width:100%;font-size:14px}caption{text-align:left;font-weight:600;margin-bottom:15px}th,td{text-align:left;border-bottom:1px solid var(--rule);padding:12px;white-space:nowrap}th{font-weight:600}td{font-variant-numeric:tabular-nums}.empty a{color:var(--accent)}
.candidate-race{border-top:1px solid var(--rule);padding:14px 0}.candidate-race .name{border:0;font-weight:600;padding:0;background:none}.candidate-buttons{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.candidate-buttons button{font-size:13px}.candidate-buttons small{display:block;color:var(--muted)}.candidate-buttons button[aria-pressed=true]{border:2px solid var(--accent)}
@media(max-width:760px){.hist button:nth-child(even) span{visibility:hidden}}
.evidence>strong{flex:0 0 auto;white-space:nowrap}
.national-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:22px}.coverage-stat{padding:16px;background:var(--surface);border:1px solid var(--rule);border-radius:8px}.coverage-stat strong{display:block;font-size:26px}.coverage-stat span{font-size:12px;color:var(--muted)}.map-panel{margin:0 0 24px}.district-map svg{width:100%;height:auto;max-height:470px;display:block}.district-map path{fill:var(--chip);stroke:var(--muted);stroke-width:.65;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .12s}.district-map path:hover,.district-map path:focus{fill:var(--accent);outline:none}.district-map path.selected{stroke:var(--accent);stroke-width:3}.map-selection{border-top:1px solid var(--rule);padding-top:12px;margin-top:10px}.map-selection button{margin:8px 8px 0 0}.report-list details{padding:16px 0;border-top:1px solid var(--rule)}.report-list summary{cursor:pointer;font-weight:600}.report-list pre{font-size:12px;max-height:420px;overflow:auto;background:var(--paper);padding:15px}.share-field{width:100%;margin:12px 0;font:12px ui-monospace,monospace}#state-summary{display:flex;gap:20px;margin:20px 0;flex-wrap:wrap}@media(max-width:760px){.national-summary{grid-template-columns:1fr 1fr}.district-map svg{min-height:200px}.coverage-stat strong{font-size:22px}}

#already-decided { overflow-wrap: anywhere; }
.hist button span{white-space:nowrap}

/* Repeated candidate scope stays explicit without burying the odds. */
.race-scope { margin: .35rem 0 .65rem; font-size: .83rem; }
.race-scope summary { cursor: pointer; padding: .25rem 0; }
.race-scope summary:focus-visible { outline: 2px solid var(--accent, #215f97); outline-offset: 3px; }
.race-scope .detail-note { margin: .45rem 0; }
