:root{color-scheme:dark;--bg:#0B1324;--panel:#172338;--muted:#a6b5cc;--text:#fff;--dem:#003DA5;--rep:#E31B23;--gray:#64748B;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{margin:0;background:radial-gradient(ellipse at 70% 40%,#12213b 0,var(--bg) 65%);color:var(--text);min-height:100vh;display:flex;flex-direction:column}button,select{font:inherit;touch-action:manipulation}button,select,[role=button]{-webkit-tap-highlight-color:transparent}button:focus-visible,select:focus-visible,[role=button]:focus-visible{outline:3px solid #f5d57a;outline-offset:4px}.masthead{height:18vh;min-height:140px;margin:0 2.4vw;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff18}.party-mark{width:8vw;height:12vh;object-fit:contain;filter:drop-shadow(0 5px 25px #0003)}.heading{text-align:center}.eyebrow{font-size:clamp(11px,.8vw,30px);font-weight:700;letter-spacing:.19em;color:#b3c2d9}h1{font-size:clamp(25px,2.55vw,98px);letter-spacing:.015em;margin:.6vh 0 1vh;line-height:1.15}h1 span{color:#acc6f0}.subheading{display:flex;gap:1vw;justify-content:center;align-items:center;font-size:clamp(11px,.8vw,30px);letter-spacing:.2em;font-weight:700;color:#c4d2e7}.header-rule{width:3vw;height:2px;background:#6c829f}main{display:grid;grid-template-columns:30fr 70fr;gap:2vw;padding:3vh 2.4vw 2vh;flex:1;min-height:0}.state-panel{background:linear-gradient(160deg,#1b2b45,var(--panel));padding:1.65vw;border-radius:1vw;box-shadow:0 20px 60px #0002;display:flex;flex-direction:column;min-width:0}.panel-heading{display:flex;justify-content:space-between;gap:1vw;align-items:center}.subtle{font-size:clamp(10px,.65vw,25px);color:var(--muted);letter-spacing:.1em}.state-title{display:flex;align-items:center;justify-content:space-between;margin:1.6vh 0}.state-title h2{font-size:clamp(26px,2.5vw,96px);margin:0;font-weight:800;letter-spacing:-.035em}.state-title>span{font-size:clamp(18px,1.3vw,50px);color:#7e94b6}.state-controls{display:flex;flex-wrap:wrap;gap:.6vw;align-items:center;justify-content:space-between}select{min-height:44px;padding:.6vh .65vw;background:#0e1a2d;color:white;border:1px solid #52617a;border-radius:.35vw;max-width:100%;font-size:clamp(13px,.85vw,32px)}.status{display:inline-flex;align-items:center;gap:.4vw;background:#ffffff0d;padding:.6vh .6vw;border-radius:4px;text-transform:uppercase;font-size:clamp(10px,.65vw,25px);letter-spacing:.08em;font-weight:700}.status.called{background:#24b99220;color:#85efcc}.state-message{color:#b6c6db;font-size:clamp(13px,.8vw,31px);line-height:1.5;margin:1.7vh 0;min-height:1.5em}.candidates{display:flex;flex-direction:column;gap:1.5vh;flex:1;overflow:auto;max-height:49vh;padding-right:2px}.candidate{background:#0b1527a8;position:relative;border-radius:.6vw;padding:1.1vw;overflow:hidden;flex-shrink:0;border-left:.22vw solid var(--party)}.candidate-main{display:flex;gap:1vw;align-items:center}.candidate-photo{width:5.7vw;height:6vw;min-width:60px;min-height:64px;border-radius:.4vw;object-fit:cover;background:#24334b}.candidate-photo.fallback{object-fit:contain;padding:.45vw}.candidate-info{min-width:0;flex:1}.party-label{color:#b8c8e0;text-transform:uppercase;letter-spacing:.08em;font-size:clamp(10px,.65vw,25px);margin:0 0 .65vh}.candidate h3{font-size:clamp(19px,1.25vw,48px);line-height:1.2;margin:0;overflow-wrap:anywhere}.percentage-row{display:flex;align-items:baseline;justify-content:space-between;margin:1.2vh 0 .9vh}.percentage{font-size:clamp(38px,3.15vw,121px);font-weight:800;letter-spacing:-.055em;line-height:1}.percent-sign{font-size:.48em;font-weight:400;color:#b9c8de;margin-left:.15em}.candidate-status{font-size:clamp(11px,.65vw,25px);font-weight:700;letter-spacing:.1em;color:#b8c8e0}.candidate-status.winner{color:#85efcc}.progress-track{height:.55vh;min-height:5px;background:#ffffff0a;border-radius:20px;overflow:hidden}.progress-fill{height:100%;background:var(--party);width:0;transition:width .85s ease;border-radius:20px}.panel-footnote{display:flex;gap:.5vw;align-items:flex-start;color:#aabbd3;margin-top:2vh;font-size:clamp(11px,.7vw,27px);line-height:1.6}.panel-footnote p{margin:0}.note-dot{width:.35vw;height:.35vw;min-width:5px;min-height:5px;background:#8ca8ce;border-radius:50%;margin-top:.5em}.map-panel{min-width:0;display:flex;flex-direction:column;justify-content:center;padding:.5vw 0}.map-top{display:flex;align-items:center;justify-content:space-between;gap:2vw;padding:0 1vw}.map-top h2{font-size:clamp(18px,1.45vw,56px);font-weight:500;margin:1vh 0 0;letter-spacing:-.02em}.race-counter{display:flex;gap:.65vw;align-items:center}.race-counter>strong{font-size:clamp(32px,2.7vw,104px);line-height:1;font-weight:700}.race-counter span{font-size:clamp(10px,.65vw,25px);line-height:1.65;letter-spacing:.08em;color:#9db0ce}.race-counter b{font-weight:400}.map-container{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;margin:1vh 0}#usa-map{width:100%;max-height:54vh;overflow:visible}#usa-map path{fill:#64748B;stroke:#0B1324;stroke-width:1.6;stroke-linejoin:round;cursor:pointer;transition:fill .65s ease,filter .2s ease}#usa-map path:hover{filter:brightness(1.35)}#usa-map path.selected{stroke:#fff;stroke-width:2.6;filter:drop-shadow(0 0 4px #ffffff70)}#map-labels{pointer-events:none}#map-labels text{fill:white;font-size:11px;font-weight:700;stroke:#0b1324;stroke-width:2px;paint-order:stroke;stroke-linejoin:round;text-anchor:middle;dominant-baseline:central}.small-states{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35vw;margin:0 1vw 1.5vh}.small-states button{min-width:44px;min-height:44px;padding:.4vh .6vw;background:#172338;border:1px solid #53637b;border-radius:5px;color:white;font-size:clamp(12px,.75vw,29px);cursor:pointer}.small-states button[aria-pressed=true]{border-color:#fff;box-shadow:0 0 0 1px #fff}.legend{display:flex;justify-content:center;gap:1.1vw;flex-wrap:wrap;font-size:clamp(11px,.75vw,29px);color:#d7e2f2}.legend>span{display:inline-flex;align-items:center;gap:.4vw}.legend i{width:.75vw;height:.75vw;min-width:11px;min-height:11px;background:var(--color);border-radius:3px;display:inline-block}.legend i.no-election{background:repeating-linear-gradient(45deg,#64748B 0 3px,#24344d 3px 5px)}.map-note{text-align:center;color:#91a5c3;font-size:clamp(11px,.7vw,27px);margin:1.8vh 0 0}.map-note span{padding:0 .7vw}footer{display:flex;align-items:center;justify-content:space-between;gap:2vw;margin:0 2.4vw;padding:1.5vh 0;border-top:1px solid #ffffff18;min-height:7vh;font-size:clamp(11px,.75vw,29px)}.connection,.footer-right{display:flex;align-items:center;gap:.75vw}.connection>span:first-child{width:.45vw;height:.45vw;min-width:7px;min-height:7px;background:#fbbf24;border-radius:50%}.connection>span:first-child.online{background:#4ce0ae;box-shadow:0 0 15px #4ce0ae50}.connection>span:first-child.offline{background:#fbbf24}.connection strong{letter-spacing:.1em;font-size:clamp(10px,.7vw,27px)}#last-update,.footer-right>span{color:#a2b5d0}.footer-right>span{letter-spacing:.12em}#fullscreen{min-height:44px;cursor:pointer;background:#172338;border:1px solid #ffffff20;color:white;border-radius:6px;padding:.6vh .9vw;font-size:clamp(15px,.9vw,35px)}#fullscreen span{font-size:.7em;letter-spacing:.1em;margin-left:.4vw}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.empty-state{padding:3vw 1vw;background:#0b152750;border-radius:.5vw;font-size:clamp(18px,1.2vw,46px);line-height:1.5;color:#bacbe2}.empty-state strong{display:block;color:white;margin-bottom:1vh}.noscript{position:fixed;inset:auto 0 0;background:#b91c1c;color:#fff;padding:20px;text-align:center}@media(min-width:1600px){body{height:100vh;overflow:hidden}}@media(max-width:1100px){main{grid-template-columns:35fr 65fr}.party-mark{width:10vw}.candidate-photo{width:65px;height:70px}.candidate{padding:14px}.state-panel{padding:18px}.small-states{gap:5px}.legend{gap:12px}}@media(max-width:760px){.masthead{height:auto;min-height:130px}.heading h1{font-size:22px;max-width:260px}.heading .eyebrow{font-size:9px}.party-mark{width:13vw}main{display:flex;flex-direction:column-reverse;padding:20px 4vw;gap:28px}.map-panel{min-height:380px}.map-top{padding:0}.map-container{margin:15px 0}#usa-map{max-height:none}.small-states{justify-content:center}.state-title h2{font-size:35px}.candidates{max-height:none}.candidate-photo{width:85px;height:90px}.candidate h3{font-size:25px}.percentage{font-size:54px}.candidate{border-left-width:5px}.state-panel{border-radius:12px}.state-message{min-height:0}.legend{font-size:12px}.map-top h2{font-size:22px}.race-counter strong{font-size:38px}.eyebrow{font-size:11px}footer{flex-wrap:wrap;padding:16px 0}.footer-right{margin-left:auto}#last-update{font-size:10px}.connection{gap:8px}.panel-footnote{font-size:12px}.candidate-status{font-size:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;animation:none!important}}
/* Keep the two broadcast columns inside their allocated fullscreen row. */
@media(min-width:1600px){.masthead,footer{flex-shrink:0}main{grid-template-rows:minmax(0,1fr)}.state-panel,.map-panel{min-height:0}.candidates{min-height:0}.map-container #usa-map{height:100%;max-height:100%}.candidate{padding:.8vw}.candidate-photo{width:4.5vw;height:4.7vw}.percentage{font-size:2.8vw}}

#usa-map path[aria-disabled="true"]{cursor:default;pointer-events:none}
#usa-map path[aria-disabled="true"]:hover{filter:none}
.small-states button:disabled{cursor:default;opacity:.45;border-color:#ffffff18}
