:root{font-family:Arial,Helvetica,sans-serif;color:#17232e;background:#faf9f6;--studio-bg:#faf9f6;--studio-panel:#ffffffbd;--studio-ink:#17232e;--studio-muted:#586572;--studio-line:#d9dddf;--studio-map:#e0e1de;--studio-dem:#205e9c;--studio-rep:#b53129;--studio-bluewash:#e7eff7;--studio-redwash:#f7e8e6}*{box-sizing:border-box}body{margin:0;background:var(--studio-bg);color:var(--studio-ink)}a{color:inherit;text-underline-offset:3px}button,select,input{font:inherit;color:inherit}button,select{cursor:pointer}button{background:var(--studio-panel);border:1px solid var(--studio-line);border-radius:5px;padding:9px 12px}button:hover{background:var(--studio-bluewash)}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #5089c2;outline-offset:3px}.studio-header{display:flex;align-items:center;gap:20px;padding:12px 28px;border-bottom:1px solid var(--studio-line);background:var(--studio-panel);backdrop-filter:blur(18px)}.brand{text-decoration:none;font:bold 27px Georgia,serif;letter-spacing:-1.5px}.brand span{color:#dc2638}.header-edition{display:grid;gap:3px;font-size:10px;letter-spacing:.12em;border-left:1px solid var(--studio-line);padding-left:18px}.header-edition span{font-size:9px;color:var(--studio-muted)}.studio-header nav{display:flex;gap:22px;margin:auto}.office-tab{border:0;border-radius:0;background:none;padding:12px 0;font-size:14px;font-weight:bold;border-bottom:2px solid transparent}.office-tab[aria-pressed=true]{border-bottom-color:#da2638}.desk-link{font-size:12px;text-decoration:none}main{max-width:1800px;margin:auto;padding:0 30px}.status-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px;padding:12px 0;border-bottom:1px solid var(--studio-line)}.status-bar>div{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.status-bar b{font-size:10px;letter-spacing:.09em}.status-bar span:last-child{color:var(--studio-muted)}.status-bar button{padding:6px 10px;font-size:11px;white-space:nowrap}.status-dot{width:7px;height:7px;border-radius:50%;background:#9c722a}.status-dot.connected{background:#d92b3b;box-shadow:0 0 0 4px #d92b3b15}.national-tally{display:grid;grid-template-columns:1fr 1.2fr 1fr;align-items:center;gap:16px;padding:25px 0 15px}.party-total{display:grid;gap:2px}.party-total>span{display:flex;align-items:center;gap:10px;font:bold 22px Georgia,serif}.party-total img{width:38px;height:32px;object-fit:contain}.party-total strong{font:700 65px/.95 Georgia,serif;font-variant-numeric:tabular-nums;margin-top:5px}.party-total small{font-size:11px;color:var(--studio-muted);margin-top:5px}.dem{color:var(--studio-dem)}.rep{color:var(--studio-rep);text-align:right}.rep>span{justify-content:flex-end}.tally-center{text-align:center}.eyebrow{font-size:9px;font-weight:bold;letter-spacing:.13em;color:var(--studio-muted)}h1,h2,h3,p{margin:0}.tally-center h1{font:700 33px Georgia,serif;margin:5px 0}.tally-center p{font-size:12px;color:var(--studio-muted);margin:6px 0}.tally-center a{font-size:11px}.seat-track{grid-column:1/-1;height:15px;background:var(--studio-map);display:flex;justify-content:space-between;overflow:hidden}.seat-track i{height:100%;width:0;transition:width .8s}.seat-track i:first-child{background:var(--studio-dem)}.seat-track i:last-child{background:var(--studio-rep)}.tally-caption{grid-column:1/-1;display:flex;justify-content:space-between;font-size:10px;color:var(--studio-muted);margin-top:-9px;gap:10px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 355px;gap:28px;border-top:1px solid var(--studio-line);padding-top:16px}.national-map{min-width:0}.map-toolbar{display:flex;align-items:center;gap:12px;min-height:32px}.map-toolbar h2{font-size:12px;margin-right:auto}.map-toolbar label{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--studio-muted)}select,input{border:1px solid var(--studio-line);background:var(--studio-panel);border-radius:4px;padding:8px;min-width:0;max-width:100%}.map-toolbar button,.map-toolbar select{font-size:11px;padding:7px}.map-stage{position:relative;overflow:hidden;touch-action:pan-y;min-height:280px}#map{width:100%;max-height:630px;display:block;margin:10px auto}#map path{fill:var(--studio-map);stroke:var(--studio-bg);stroke-width:1.3;cursor:pointer;transition:fill .35s}#map path.no-race{opacity:.42}#map path:hover,#map path:focus-visible{stroke:var(--studio-ink);stroke-width:2;outline:none}#map path[aria-pressed=true]{stroke:var(--studio-ink);stroke-width:2.5}#map text{font:600 10px Arial,sans-serif;fill:var(--studio-ink);pointer-events:none;paint-order:stroke;stroke:var(--studio-bg);stroke-width:2px;stroke-linejoin:round}.map-hint{position:absolute;left:14px;top:15px;padding:8px 10px;border:1px solid var(--studio-line);background:var(--studio-panel);backdrop-filter:blur(10px);border-radius:4px;max-width:75%;font-size:11px;pointer-events:none}.zoom-controls{position:absolute;right:0;bottom:16px;display:grid;box-shadow:0 2px 10px #0000000a}.zoom-controls button{border-radius:0;width:32px;height:32px;padding:3px;font-size:18px}.map-footer{border-top:1px solid var(--studio-line);padding:12px 0}.legend{display:flex;flex-wrap:wrap;gap:12px;font-size:10px}.legend span{display:flex;align-items:center;gap:5px}.legend i{width:11px;height:10px;background:var(--studio-map)}.legend i.dem-swatch{background:var(--studio-dem)}.legend i.rep-swatch{background:var(--studio-rep)}.legend i.other-swatch{background:#7255a4}.map-footer p,.muted{font-size:11px;color:var(--studio-muted);line-height:1.6;margin-top:9px}.territories{display:flex;gap:5px;flex-wrap:wrap}.territories button{font-size:10px;padding:5px 8px}.race-panel{border-left:1px solid var(--studio-line);padding-left:24px;min-width:0}.panel-title{display:flex;justify-content:space-between;align-items:center}.panel-title h2{font-size:13px}.panel-title>span{font-size:9px;letter-spacing:.1em;color:var(--studio-muted)}.controls{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}.controls label{display:grid;gap:5px;font-size:10px;color:var(--studio-muted)}.controls select{width:100%;font-size:12px}.controls .wide{grid-column:1/-1}.race-detail{border-top:1px solid var(--studio-line);padding-top:16px}.race-top{display:grid;gap:10px}.race-top h3{font:700 23px/1.15 Georgia,serif;margin:6px 0}.pill{font-size:10px;color:var(--studio-muted);width:fit-content;border:1px solid var(--studio-line);border-radius:4px;padding:5px 8px}.race-meta{font-size:11px;line-height:1.6;color:var(--studio-muted);margin:12px 0}.candidates{display:grid}.candidate{display:grid;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:9px;border-top:1px solid var(--studio-line);border-left:3px solid var(--party);padding:12px 8px;background:var(--studio-panel)}.portrait{width:42px;height:48px;overflow:hidden;border-radius:3px;background:var(--studio-map);display:grid;place-items:center;font-size:12px;font-weight:bold}.portrait img{width:100%;height:100%;object-fit:cover;object-position:top}.candidate-name{font-size:12px;font-weight:bold;line-height:1.4;overflow-wrap:anywhere}.party{display:flex;align-items:center;gap:5px;font-size:10px;color:var(--studio-muted);margin-top:4px}.party img{width:18px;height:15px;object-fit:contain}.vote{text-align:right;font-variant-numeric:tabular-nums}.vote strong{font-size:16px;display:block}.vote small{font-size:9px;color:var(--studio-muted)}.result-bar{height:3px;background:var(--studio-map);margin-top:8px}.result-bar i{display:block;height:100%;background:var(--party);transition:width .8s}.source-note{font-size:10px;line-height:1.7;color:var(--studio-muted);margin-top:16px}.loading{padding:16px 0;font-size:12px;color:var(--studio-muted)}.race-browser{margin-top:28px;border-top:2px solid var(--studio-ink);padding-top:14px}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;margin-bottom:14px}.section-heading h2{font:700 22px Georgia,serif}.section-heading label{display:grid;gap:4px;font-size:10px;color:var(--studio-muted)}.section-heading input{width:190px;font-size:12px}.race-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;max-height:410px;overflow:auto}.race-tile{display:grid;gap:8px;padding:12px;text-align:left;min-width:0;position:relative}.race-tile[aria-pressed=true]{border-color:var(--studio-ink)}.race-tile strong{font:700 16px Georgia,serif}.race-tile small{font-size:10px;color:var(--studio-muted);line-height:1.4}.race-tile .tile-candidate{display:flex;gap:5px;align-items:center;min-width:0;font-size:11px}.tile-candidate i{width:4px;height:16px;flex:none;background:var(--party)}.tile-candidate span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tile-candidate b{margin-left:auto;font-variant-numeric:tabular-nums}.studio-notes{display:grid;grid-template-columns:1fr 1fr auto;gap:30px;border-top:1px solid var(--studio-line);padding:25px 0;margin-top:30px}.studio-notes h2{font-size:13px;margin-bottom:8px}.studio-notes p{font-size:11px;line-height:1.7;color:var(--studio-muted);max-width:520px}.studio-notes>a{font-size:11px}footer{border-top:1px solid var(--studio-line);display:flex;align-items:center;gap:20px;padding:20px 0;font-size:11px;color:var(--studio-muted)}footer>a:last-child{margin-left:auto}:root[data-resolved-theme=dark]{--studio-bg:#06141b;--studio-panel:#11212dd9;--studio-ink:#e5edf1;--studio-muted:#a8bbc7;--studio-line:#314551;--studio-map:#344954;--studio-dem:#83b9ee;--studio-rep:#ff9c93;--studio-bluewash:#1b3447;--studio-redwash:#432a32;background:var(--studio-bg);color:var(--studio-ink)}@media(min-width:1500px){.workspace{grid-template-columns:minmax(0,1fr) 390px}.race-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}@media(max-width:1000px){.workspace{grid-template-columns:minmax(0,1fr) 300px;gap:18px}.race-panel{padding-left:16px}.race-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.header-edition{display:none}.studio-header{gap:12px}.studio-header nav{gap:18px}}@media(max-width:760px){main{padding:0 16px}.studio-header{padding:10px 16px;flex-wrap:wrap}.studio-header nav{order:3;width:100%;justify-content:center;border-top:1px solid var(--studio-line)}.desk-link{margin-left:auto}.workspace{display:flex;flex-direction:column;gap:24px}.race-panel{border-left:0;border-top:2px solid var(--studio-ink);padding:18px 0 0}.party-total>span{font-size:15px;gap:5px}.party-total img{width:24px;height:22px}.party-total strong{font-size:43px}.tally-center h1{font-size:24px}.tally-center .eyebrow{font-size:8px}.party-total small{font-size:9px}.tally-center p{font-size:10px}.national-tally{gap:12px;padding-top:20px}.tally-caption{font-size:9px;flex-wrap:wrap}.tally-caption span:nth-child(2){display:none}.map-toolbar{flex-wrap:wrap}.map-stage{min-height:220px}.map-hint{font-size:10px;max-width:85%;top:9px;left:0}.map-toolbar label{font-size:9px}.race-grid{max-height:330px}.race-tile strong{font-size:15px}.section-heading input{width:155px}.studio-notes{grid-template-columns:1fr;gap:20px}footer{flex-wrap:wrap;gap:12px}footer p{width:100%;order:3}.status-bar{align-items:flex-start}.candidate{grid-template-columns:48px minmax(0,1fr) auto}.portrait{width:48px;height:54px}.candidate-name{font-size:14px}.vote strong{font-size:20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.pan-controls{position:absolute;bottom:16px;left:0;display:flex;gap:3px}.pan-controls button{width:29px;height:29px;padding:2px;font-size:14px}html[data-resolved-theme=dark] body:has(.studio-header){background:var(--studio-bg)!important;color:var(--studio-ink)!important}.piq-preferences:has(+.studio-header){background:var(--studio-panel);color:var(--studio-ink);border-color:var(--studio-line)}
.chamber-nav{display:flex;justify-content:center;gap:34px;border-bottom:1px solid var(--studio-line)}.chamber-nav .office-tab{min-width:70px}.chamber-nav .office-tab[aria-pressed=true]{color:var(--studio-ink);border-bottom:2px solid #dc2638}
#map path.not-up{opacity:.78;stroke-dasharray:3 1}.legend i.held-swatch{background:linear-gradient(135deg,#2474d8 50%,#d34245 50%);opacity:.78;outline:1px dashed var(--studio-muted)}#held-summary{font-weight:600}.held-detail h3{font:700 23px Georgia,serif}.held-seat{display:grid;gap:6px;border-left:4px solid var(--party);padding:12px;background:var(--studio-panel);margin:10px 0}.held-seat span,.held-seat small{font-size:11px;color:var(--studio-muted)}
/* Election-night board: the map owns the first screen, detail follows beneath. */
main{max-width:1500px}.national-tally{grid-template-columns:1fr minmax(280px,460px) 1fr;gap:14px;padding:28px 0 20px;align-items:start}.party-total{padding-top:30px}.party-total strong{font-size:clamp(70px,7vw,110px);color:var(--studio-ink)}.party-total>span{font-size:clamp(20px,2.1vw,31px)}.party-total img{width:48px;height:42px}.tally-center h1{font:700 22px Georgia,serif;margin:7px 0 0}.tally-center{min-width:0}#forecast-dial{display:block;width:100%;max-width:350px;margin:-5px auto -4px;overflow:visible}.dial-segments{opacity:.32}.dial-rim{stroke:var(--studio-muted);fill:none;stroke-width:1;opacity:.5}#forecast-dial text{font:10px Arial,sans-serif;fill:var(--studio-muted)}#forecast-needle{fill:var(--studio-ink);filter:drop-shadow(0 3px 3px #0003);transition:transform 1s cubic-bezier(.2,.8,.2,1)}#forecast-needle .dial-pin{fill:var(--studio-bg)}#forecast-value{font:700 clamp(20px,2.2vw,31px)/1.2 Georgia,serif;display:block}.forecast-tag{font-size:9px;letter-spacing:.12em;color:var(--studio-muted);font-weight:bold;display:block;margin:6px 0}#forecast-note{font-size:10px;line-height:1.5;max-width:340px;margin:0 auto}.seat-track{height:23px;position:relative;margin-top:12px;overflow:visible}.seat-track i{position:absolute;top:0}.seat-track #dem-track{left:0;background:#2474d8}.seat-track #rep-track{right:0;background:#d34245}.seat-track #other-track{background:#7255a4}#majority-marker{position:absolute;top:-7px;bottom:-7px;width:2px;background:var(--studio-ink)}.balance-labels{grid-column:1/-1;display:flex;justify-content:space-between;font-size:11px;color:var(--studio-muted);padding:0 0 6px}.balance-labels strong{color:var(--studio-ink)}.tally-caption{font-size:10px;margin-top:0}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 355px;grid-template-areas:'toolbar toolbar' 'map map' 'legend legend' 'territories territories' 'races detail';gap:12px 26px}.national-map{display:contents}.map-toolbar{grid-area:toolbar}.map-stage{grid-area:map;background:radial-gradient(ellipse at 18% 45%,#2474d808,transparent 55%),radial-gradient(ellipse at 85% 50%,#d3424508,transparent 55%);border-radius:12px}#map{max-height:650px;width:100%;margin:0 auto}.map-footer{grid-area:legend}.territories{grid-area:territories}.race-browser{grid-area:races;margin-top:20px}.race-panel{grid-area:detail;margin-top:20px;background:var(--studio-panel);backdrop-filter:blur(18px);border:1px solid var(--studio-line);border-radius:12px;padding:20px}.race-grid{max-height:560px}.chamber-nav{position:sticky;top:0;background:var(--studio-panel);backdrop-filter:blur(20px);z-index:20}.chamber-nav .office-tab{font-size:16px;min-height:48px}.race-tile{background:var(--studio-panel);border-radius:8px;transition:transform .2s,border-color .2s}.race-tile:hover{transform:translateY(-2px);border-color:var(--studio-muted)}.map-hint{box-shadow:0 4px 20px #00000008;max-width:65%}@media(max-width:760px){.national-tally{grid-template-columns:1fr 1fr;gap:12px;padding-top:22px}.party-total{padding-top:0}.party-total.dem{grid-column:1;grid-row:1}.party-total.rep{grid-column:2;grid-row:1}.party-total strong{font-size:62px}.party-total>span{font-size:19px}.party-total img{width:32px;height:30px}.party-total small{font-size:11px}.tally-center{grid-column:1/-1;grid-row:2;padding:8px 0 0}#forecast-dial{max-width:310px}.tally-center h1{font-size:18px}#forecast-value{font-size:27px}.seat-track{grid-column:1/-1;margin-top:4px;height:19px}.balance-labels{font-size:10px;gap:10px}.balance-labels strong{text-align:center}.workspace{grid-template-columns:1fr;grid-template-areas:'toolbar' 'map' 'legend' 'territories' 'detail' 'races';gap:10px}.race-panel{margin-top:12px}.race-browser{margin-top:12px}#map{min-height:230px;max-height:440px}.map-hint{font-size:10px;max-width:80%;top:4px}.chamber-nav{gap:24px}.chamber-nav .office-tab{font-size:15px}.tally-caption span:nth-child(2){display:none}.header-edition{display:none}.studio-header .desk-link{display:none}.studio-notes{margin-top:22px}}@media(prefers-reduced-motion:reduce){#forecast-needle,.race-tile{transition:none!important}}
body:has(.studio-header) .piq-us-local-wrap{display:none}.dial-segments path{stroke:var(--studio-bg);stroke-width:.7}.national-tally{background:radial-gradient(ellipse at 50% 38%,#ffffff40,transparent 65%)}:root[data-resolved-theme=dark] .national-tally{background:radial-gradient(ellipse at 50% 38%,#83b9ee08,transparent 65%)}

/* Election-night geography: a held office is never a source call. */
:root{--studio-not-up:#4c535d;--studio-not-up-label:#fff}
:root[data-resolved-theme=dark]{--studio-not-up:#555f6c;--studio-not-up-label:#fff}
#map path.not-up{fill:var(--studio-not-up);opacity:1}
.legend i.held-swatch{background:var(--studio-not-up)}
#map-labels text.not-up-label{fill:var(--studio-not-up-label)!important;stroke:var(--studio-not-up)!important;stroke-width:2.5px}
.map-candidate-card[hidden]{display:none!important}
.map-candidate-card{position:absolute;z-index:12;width:min(370px,calc(100% - 16px));max-height:min(480px,calc(100% - 16px));background:var(--studio-bg);color:var(--studio-ink);border-radius:8px;box-shadow:0 8px 30px #0003;display:flex;flex-direction:column;padding:14px;text-align:left}
.map-card-heading,.face-card-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.map-card-heading h3,.face-card-heading h3{font-size:18px;line-height:1.25;margin:0;overflow-wrap:anywhere}
.map-card-close{font-size:23px;line-height:1;min-width:32px;min-height:32px;padding:2px 6px;margin:-5px -5px 0 0;flex-shrink:0}
.map-card-content{overflow-y:auto;overflow-x:hidden;padding:4px;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--studio-muted) var(--studio-bg);min-height:0}
.map-card-race+.map-card-race{border-top:1px solid var(--studio-line);margin-top:16px;padding-top:12px}
.face-status{font-size:11px;line-height:1.4;font-weight:700;color:var(--studio-muted);white-space:normal}
.face-office{font-size:12px;line-height:1.5;color:var(--studio-muted);margin:8px 0 12px;overflow-wrap:anywhere}
.face-candidate{display:grid;grid-template-columns:42px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 0;min-width:0}
.face-candidate .portrait{width:42px;height:48px;border-radius:4px;background:var(--studio-map);color:var(--studio-ink);outline:0;border:2px solid var(--party)}
.face-info{min-width:0}.face-name{font-size:13px;font-weight:700;line-height:1.4;overflow-wrap:anywhere}
.face-party{display:flex;align-items:center;gap:5px;font-size:11px;line-height:1.5;color:var(--studio-muted);margin-top:3px}
.face-party img{width:17px;height:15px;object-fit:contain;flex-shrink:0}
.incumbent-tag{display:inline-block;font-size:9px;line-height:1.5;padding:1px 5px;margin-left:6px;border:1px solid var(--studio-line);border-radius:3px;color:var(--studio-muted);font-weight:500}
.face-count{font-size:14px;font-weight:700;text-align:right;font-variant-numeric:tabular-nums}.face-count small{display:block;font-size:10px;color:var(--studio-muted);font-weight:400}
.face-results-link{display:inline-block;padding:10px 0;font-size:12px;font-weight:700;text-decoration:underline;text-underline-offset:3px}
.map-card-note{font-size:10px;line-height:1.5;color:var(--studio-muted);border-top:1px solid var(--studio-line);margin-top:8px;padding-top:8px}
.workspace.face-board{grid-template-areas:'toolbar toolbar' 'map map' 'legend legend' 'territories territories' 'races races'}
.workspace.face-board>.race-panel{display:none}
.face-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(275px,1fr));gap:16px;max-height:none;overflow:visible;align-items:start}
.race-face-card{border:1px solid var(--studio-line);border-radius:8px;padding:18px;background:var(--studio-panel);min-width:0;content-visibility:auto;contain-intrinsic-size:auto 380px}
.race-face-card .face-status{max-width:120px;text-align:right;flex-shrink:0}.face-roster{display:grid;gap:2px}.race-face-card .face-results-link{margin-top:10px}
@media(max-width:760px){.workspace.face-board{grid-template-columns:1fr;grid-template-areas:'toolbar' 'map' 'legend' 'territories' 'races'}.face-card-grid{grid-template-columns:repeat(auto-fit,minmax(min(275px,100%),1fr))}.map-candidate-card{max-height:calc(100% - 16px);padding:12px}.map-card-close{min-width:44px;min-height:44px}.face-results-link{min-height:44px;display:inline-flex;align-items:center}.race-face-card{padding:16px}}

.face-board .map-hint{display:none}

/* Touch uses an inline detail panel, keeping the selected state and controls reachable. */
.mobile-map-detail,.map-help{display:none}#map.is-zoomed{touch-action:none;cursor:grab}#map.is-zoomed:active{cursor:grabbing}#map-shapes path{touch-action:inherit}
@media(max-width:760px){.workspace,.workspace.face-board{grid-template-areas:'toolbar' 'map' 'maphelp' 'mapdetail' 'legend' 'territories' 'races' 'detail'}
.mobile-map-detail{display:block;grid-area:mapdetail;min-width:0}.mobile-map-detail:empty{display:none}.mobile-map-detail:has([hidden]){display:none}.map-help{display:block;grid-area:maphelp;font-size:12px;line-height:1.5;color:var(--studio-muted)}
.mobile-map-detail .map-candidate-card{position:relative;inset:auto!important;width:100%;max-height:none;overflow:visible;box-shadow:none;border:1px solid var(--studio-line)}
.map-stage{min-height:280px}#map{height:280px;min-height:280px}.zoom-controls{right:4px;bottom:8px}.pan-controls{left:4px;bottom:8px;gap:4px}.zoom-controls button,.pan-controls button{min-width:44px;min-height:44px;width:44px;height:44px}
.map-toolbar button,.map-toolbar select{min-height:44px}.map-toolbar select{font-size:16px}.face-card-heading{flex-wrap:wrap}.race-face-card .face-status{max-width:none;text-align:left}.chamber-nav{gap:16px}}
@media(hover:none){#map path:hover{stroke-width:1.3}.map-card-close{min-width:44px;min-height:44px}}

/* Keep every portrait border and focus ring inside the candidate card's content box. */
.map-card-content,.face-info{min-width:0;max-width:100%}.face-roster{padding:4px}.face-name,.face-party{white-space:normal;overflow-wrap:anywhere}.face-party span{min-width:0}
@media(max-width:760px){.mobile-map-detail .map-card-content{overflow:visible;max-height:none;padding:4px}.mobile-map-detail .map-card-heading{flex-shrink:0}.mobile-map-detail .map-card-note{flex-shrink:0}}
@media(max-width:420px){.face-candidate:has(.face-count) .face-count{grid-column:2;text-align:left;padding-bottom:4px}}
/* Results lead; forecasts remain available without displacing the map. */
.feed-checks{display:grid;grid-template-columns:1fr 1fr;gap:8px 24px;padding:8px 0 12px;border-bottom:1px solid var(--studio-line);font-size:12px;line-height:1.5;color:var(--studio-muted)}
.national-tally{padding:18px 0 14px;gap:10px}.party-total{padding-top:0}.party-total strong{font-size:clamp(48px,5vw,72px)}
.forecast-disclosure{margin-top:10px;text-align:center}.forecast-disclosure summary{cursor:pointer;font-size:13px;padding:10px;color:var(--studio-muted);text-decoration:underline;text-underline-offset:3px;min-height:44px}.forecast-disclosure #forecast-dial{max-width:240px}.forecast-disclosure #forecast-value{font-size:24px}
.tally-center h1{font-size:28px}.tally-center .eyebrow{display:none}.tally-caption,.balance-labels{font-size:12px}.tally-caption{flex-wrap:wrap}.tally-caption span:nth-child(2){display:inline!important}
.map-toolbar{flex-wrap:wrap;gap:10px}.map-toolbar label{font-size:12px}.map-toolbar button,.map-toolbar select{min-height:44px;font-size:13px}.map-toolbar h2{font-size:16px}
.territory-section{grid-area:territories;border-top:1px solid var(--studio-line);padding:16px 0}.territory-section h2{font:700 20px Georgia,serif}.territory-section>p{font-size:12px;color:var(--studio-muted);margin:6px 0 12px}.territory-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px}.territory-result{display:grid;gap:6px;text-align:left;padding:12px;min-height:66px;background:var(--studio-panel)}.territory-result strong{font-size:14px}.territory-result span{font-size:12px;line-height:1.4;color:var(--studio-muted)}
.race-tile .tile-candidate span{white-space:normal;overflow:visible;text-overflow:clip;overflow-wrap:anywhere}.candidate{border-left:0}.face-roster .portrait{flex-shrink:0}.race-panel .controls{margin-top:8px}
:focus-visible{outline:2px solid var(--studio-ink);outline-offset:3px}::selection{background:var(--studio-ink);color:var(--studio-bg)}input,select{caret-color:var(--studio-ink)}
@media(max-width:760px){.feed-checks{grid-template-columns:1fr;font-size:12px}.national-tally{padding-top:16px}.party-total strong{font-size:52px}.tally-center h1{font-size:24px}.tally-center{padding-top:0}.territory-results{grid-template-columns:repeat(2,minmax(0,1fr))}.territory-result:last-child{grid-column:1/-1}.map-toolbar h2{width:100%;margin:0}.map-toolbar label{flex:1;min-width:130px}.map-toolbar select{width:100%;font-size:16px}.map-toolbar label:first-of-type{flex-basis:100%}.chamber-nav .office-tab{min-width:0;flex:1;padding:10px 6px}.chamber-nav{gap:6px}.race-face-card .face-results-link{font-size:14px}.face-name{font-size:14px}.map-help{font-size:13px}}
.called-tag{display:inline-block;font-size:11px;line-height:1.5;margin:4px 0 0 6px;padding:2px 5px;border:1px solid var(--party);border-radius:3px;color:var(--studio-ink);font-weight:600}.tally-center #board-summary{font-size:13px;line-height:1.5;margin:8px 0 0}

.senate-battlegrounds{margin:0 0 18px;padding:14px 0;border-top:1px solid var(--studio-line)}
.senate-battlegrounds[hidden]{display:none}
.senate-battlegrounds summary{cursor:pointer;font:700 21px Georgia,serif;padding:8px 0;min-height:44px}
.senate-battlegrounds p,.battleground-status{color:var(--studio-muted);font-size:12px;line-height:1.5}
#battleground-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,235px),1fr));gap:0 14px;margin-top:8px}
.battleground-race{padding:10px 0;border-bottom:1px solid var(--studio-line);min-width:0}
.battleground-race h3 a{display:inline-flex;align-items:center;min-height:44px;font-size:15px}
.battleground-candidate{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:7px;font-size:13px;line-height:1.4;margin-top:6px}
.battleground-candidate span{overflow-wrap:anywhere}.battleground-candidate b{font-variant-numeric:tabular-nums}
.battleground-party{background:var(--party);color:#fff;padding:1px 5px;border-radius:3px;font-size:11px;font-weight:700}

.poll-clock{border:1px solid var(--studio-line);border-radius:12px;padding:12px 16px;margin:12px 0}
.poll-clock>div{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:6px 16px}
.poll-clock [role=timer]{font-size:clamp(20px,3vw,30px);font-weight:800;font-variant-numeric:tabular-nums}
.poll-clock p{font-size:13px;line-height:1.5;margin:4px 0 0;color:var(--studio-muted)}

.congress-control{margin:12px 0 24px;padding:16px clamp(12px,2vw,24px);border:1px solid var(--studio-line);border-radius:12px;background:var(--studio-panel);color:var(--studio-ink)}
.congress-control h2,.control-dials h3{margin:0 0 8px}.control-dials h3{font-size:1rem;border-bottom:1px solid var(--studio-line);padding-bottom:6px}
.control-dials{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:12px}
.control-dials svg{display:block;width:100%;max-width:430px;margin:auto}.control-dials svg text{font-size:14px;font-weight:700}
.control-dials article>p{margin:0;text-align:center;font-weight:700}.congress-control>p{margin:12px 0 0;color:var(--studio-muted);font-size:.85rem}
.control-needle{visibility:hidden;fill:currentColor;transform-origin:200px 194px;transition:transform .55s ease}.control-needle[data-party]{visibility:visible}.control-needle[data-party=DEM]{transform:rotate(-83deg)}.control-needle[data-party=REP]{transform:rotate(83deg)}
@media(max-width:600px){.control-dials{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.control-needle{transition:none}}

.studio-jump{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 6px}.studio-jump a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 14px;border:1px solid var(--studio-line);border-radius:8px;background:var(--studio-panel);color:var(--studio-ink);font-weight:700;text-decoration:none}.studio-jump a:hover,.studio-jump a:focus-visible{border-color:currentColor}.studio-feed-details>summary{min-height:36px;padding-block:8px;cursor:pointer;color:var(--studio-muted);font-size:.85rem}.studio-feed-details .feed-checks{margin-top:0}.studio-jump~section :target,#race-search:target{scroll-margin-top:96px}
@media(max-width:600px){.studio-jump{display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.studio-jump a{padding:0 4px;font-size:.83rem}.congress-control{margin-block:8px 16px}.map-help{font-size:.8rem}}

.face-card-grid{align-items:stretch}.race-face-card{padding:12px;display:flex;flex-direction:column;min-width:0}.race-face-card .face-results-link{margin-top:auto;padding-top:8px;align-self:flex-start}.race-face-card .face-roster,.map-card-race .face-roster{display:grid;gap:4px}.race-face-card .face-candidate,.map-card-race .face-candidate{padding-block:3px}.race-face-card .portrait,.map-card-race .portrait{width:34px;height:38px}.face-more>summary{display:list-item;cursor:pointer;padding-block:6px;min-height:32px;font-size:.8rem;font-weight:700;color:var(--studio-ink)}@media(pointer:coarse){.face-more>summary{min-height:44px;padding-block:12px}}

.map-export{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:8px 0}.map-export button{min-height:44px}.map-export [role=status]{font-size:.8rem;color:var(--studio-muted)}

.chamber-scorecards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:12px 0 20px}.chamber-scorecards[hidden]{display:none}.chamber-scorecard{min-width:0;padding:14px;border:1px solid var(--studio-line);border-radius:10px;background:var(--studio-panel)}.chamber-scorecard h2{font-size:1rem;margin:0}.score-note,.score-row small{color:var(--studio-muted);font-size:.77rem}.score-note{margin:4px 0 10px}.score-row+.score-row{margin-top:8px}.score-line,.score-party{display:flex;align-items:center;gap:6px}.score-line{justify-content:space-between;font-size:.9rem}.score-line strong{font-size:1.08rem;font-variant-numeric:tabular-nums}.score-party img{width:18px;height:18px;object-fit:contain}.score-bar{display:block;width:100%;height:7px;margin:3px 0;accent-color:var(--score-party)}@media(max-width:700px){.chamber-scorecards{grid-template-columns:1fr;gap:8px}.chamber-scorecard{padding:10px 12px}}
