:root{--canvas:#f3f5f8;--ink:#142033;--muted:#5b687b;--line:#dce2ea;--blue:#2164cf;--red:#cc3d4a;--other:#7356a6;--amber:#805000;--white:#fff;--radius:10px;font-family:"Apple SD Gothic Neo","Malgun Gothic","Noto Sans KR",sans-serif;color:var(--ink);background:var(--canvas);font-synthesis:none;font-variant-numeric:tabular-nums}*{box-sizing:border-box}body{margin:0;font-size:14px;line-height:1.5}button,input{font:inherit}button,a,input,path[tabindex]{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a{color:#245598;text-underline-offset:3px}button:focus-visible,input:focus-visible,a:focus-visible,summary:focus-visible{outline:3px solid #2d67bb;outline-offset:3px}h1,h2,h3,h4,p{margin:0}h2{font-size:19px;letter-spacing:-.6px}h3{font-size:16px}h4{font-size:14px}.sr-only,.skip-link:not(:focus){position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}.skip-link:focus{position:fixed;top:10px;left:10px;padding:12px;background:white;z-index:100}.masthead{background:var(--ink);color:white;min-height:100px;padding:22px max(28px,calc((100vw - 1440px)/2));display:flex;gap:18px;align-items:center}.brand h1{font-size:26px;letter-spacing:-1px;line-height:1.3;font-weight:750}.brand p{color:#bdc9d9;font-size:13px;margin-top:4px}.brand-mark{display:flex;width:39px;height:32px;gap:4px;align-items:flex-end;flex-shrink:0}.brand-mark span{background:#ced9e9;width:5px;display:block;height:22px}.brand-mark span:nth-child(2),.brand-mark span:nth-child(4){height:28px}.brand-mark span:nth-child(3){height:32px}.update-control{margin-left:auto;display:flex;align-items:center;gap:20px}.connection{font-size:12px;color:#cfdaea;white-space:nowrap}.connection:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:7px}.connection.live{color:#9de0bc}.connection.stale{color:#ffcc80}#refresh{border:1px solid #728097;border-radius:6px;background:transparent;color:#fff;padding:9px 15px;min-width:120px;min-height:42px}#refresh:hover:not(:disabled){background:#26374e}#refresh span{margin-left:10px;font-size:18px;line-height:1}.shell{max-width:1496px;padding:0 28px 32px;margin:auto}.status-strip{padding:17px 0;display:flex;align-items:center;gap:26px;flex-wrap:wrap;font-size:12px}.status-strip>div{display:flex;gap:9px}.status-label{color:var(--muted)}.poll-note{margin-left:auto;color:var(--muted)}.notice{padding:10px 14px;border:1px solid #cbd9ea;border-left:3px solid #527ba8;background:#edf3fb;color:#3d5675;font-size:13px;margin-bottom:18px;border-radius:4px}.notice.warning{background:#fff6e5;border-color:#e8cd9a;border-left-color:#b87912;color:var(--amber)}.notice.error{background:#fff0f1;border-color:#e5b7bc;border-left-color:var(--red);color:#942733}.notice[hidden]{display:none}.seat-overview{display:grid;grid-template-columns:1fr 1fr;background:white;border:1px solid var(--line);border-radius:var(--radius);margin-bottom:22px;overflow:hidden}.chamber-summary{padding:20px 25px 18px;min-width:0}.chamber-summary+article{border-left:1px solid var(--line)}.summary-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}.summary-heading h2{font-size:20px}.summary-heading>span{font-size:12px;color:var(--muted)}.seat-numbers{display:flex;align-items:center;margin:12px 0 14px;gap:18px}.seat-number{display:flex;gap:8px;align-items:baseline}.seat-number strong{font-size:33px;line-height:1.2;letter-spacing:-1px;font-weight:750}.seat-number span{font-size:12px}.seat-number.other{margin-left:auto;color:var(--muted)}.seat-number.other strong{font-size:18px;letter-spacing:0}.party-d{color:var(--blue)}.party-r{color:var(--red)}.party-other{color:var(--other)}.seat-track{position:relative;display:flex;height:13px;background:#e7ebf1;border-radius:3px;margin:4px 0 10px}.seat-track>span{height:100%;display:block}.seat-track>span:first-child{border-radius:3px 0 0 3px}.seat-track .d{background:var(--blue)}.seat-track .r{background:var(--red)}.seat-track .other{background:var(--other)}.majority-marker{position:absolute;top:-4px;bottom:-4px;border-left:2px solid var(--ink)}.summary-foot{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:12px}.summary-placeholder{height:114px;display:flex;align-items:center;color:var(--muted)}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:20px;align-items:start}.map-panel,.detail-panel,.states-panel{background:white;border:1px solid var(--line);border-radius:var(--radius);min-width:0}.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:22px 22px 0}.panel-heading p{color:var(--muted);font-size:12px;margin-top:5px}.mode-switch{display:flex;border:1px solid var(--line);border-radius:6px;padding:3px;background:var(--canvas);flex-shrink:0}.mode-switch button{border:0;border-radius:4px;background:transparent;color:var(--muted);padding:7px 18px;min-height:36px;font-weight:650}.mode-switch button[aria-pressed=true]{background:var(--ink);color:white}.map-container{position:relative;margin:12px 16px 0;min-height:180px}#us-map{width:100%;height:auto;display:block;overflow:visible}.state-shape{stroke:white;stroke-width:1.35;cursor:pointer;transition:fill .15s;vector-effect:non-scaling-stroke}.state-shape:hover{stroke:var(--ink);stroke-width:2;filter:brightness(.96)}.state-shape.selected{stroke:var(--ink);stroke-width:2.8}.state-shape:focus-visible{outline:none;stroke:var(--ink);stroke-width:3;filter:drop-shadow(0 0 3px #142033)}.state-label{font-size:12px;font-weight:650;fill:#142033;pointer-events:none;text-anchor:middle;paint-order:stroke;stroke:#fff;stroke-width:2.5px;stroke-linejoin:round}.state-label.dark{fill:white;stroke:rgba(20,32,51,.2);stroke-width:2px}.map-status{position:absolute;inset:30% 8% auto;text-align:center;padding:12px;color:var(--muted);background:#ffffffed;border:1px solid var(--line);border-radius:6px;font-size:13px;pointer-events:none}.map-status[hidden]{display:none}.map-legend{display:flex;justify-content:center;gap:10px 18px;flex-wrap:wrap;padding:10px 18px 18px;font-size:11px;color:#46556b}.legend-item{display:inline-flex;align-items:center;gap:5px}.legend-swatch{width:12px;height:12px;border:1px solid #14203318;border-radius:2px}.map-footnote{display:flex;gap:8px;justify-content:space-between;flex-wrap:wrap;border-top:1px solid var(--line);padding:12px 20px;font-size:11px;color:var(--muted)}.detail-panel{max-height:760px;overflow:auto;scrollbar-width:thin;scroll-margin-top:12px}.detail-heading{background:#f8fafc;padding:20px 22px;border-bottom:1px solid var(--line);border-radius:10px 10px 0 0}.section-kicker{font-size:11px;color:var(--muted)}.detail-heading h2{font-size:23px;margin:3px 0 4px}.detail-heading p{font-size:12px;color:var(--muted)}.detail-empty{text-align:center;color:#8292a7;padding:74px 16px 90px}.detail-empty svg{margin:0 auto 22px}.detail-empty p{font-size:14px;color:var(--muted);line-height:1.8}.detail-empty span{display:block;margin-top:16px;font-size:12px;color:#7e8b9e}.detail-section{padding:20px}.detail-section+.detail-section{border-top:1px solid var(--line)}.section-header{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:14px}.section-header span{font-size:11px;color:var(--muted)}.race-block+.race-block{margin-top:20px;padding-top:16px;border-top:1px dashed var(--line)}.race-meta{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:11px;margin-bottom:10px;color:var(--muted)}.race-meta h4{color:var(--ink)}.race-status{border-radius:4px;padding:2px 6px;background:var(--canvas);color:#435267;font-size:11px;white-space:nowrap}.race-status.called{background:#eaf1fb;color:#214b84}.candidate{position:relative;padding:8px 0}.candidate+.candidate{border-top:1px solid #edf0f5}.candidate-line{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.candidate-name{font-size:13px;overflow-wrap:anywhere}.candidate-name small{display:block;font-size:11px;color:var(--muted)}.candidate-results{white-space:nowrap;text-align:right;font-size:14px;font-weight:650}.candidate-results small{display:block;font-size:11px;color:var(--muted);font-weight:400}.candidate-bar{height:3px;background:#edf0f5;margin-top:6px;border-radius:2px}.candidate-bar span{height:100%;display:block;border-radius:2px}.data-empty{font-size:12px;color:var(--muted);line-height:1.7;padding:10px 0}.house-detail-counts{display:flex;gap:12px;flex-wrap:wrap;font-size:12px;margin:0 0 12px}.district{border-top:1px solid var(--line)}.district summary{cursor:pointer;list-style:none;padding:12px 0;display:grid;grid-template-columns:1fr auto;gap:5px 10px}.district summary::-webkit-details-marker{display:none}.district-title{font-size:13px;font-weight:650}.district-title:before{content:'+';display:inline-block;color:#6a7c94;font-size:15px;margin-right:8px;width:10px}.district[open] .district-title:before{content:'−'}.district-leader{font-size:12px;grid-column:1/3;color:var(--muted);padding-left:18px;overflow-wrap:anywhere}.district-reporting{font-size:11px;color:var(--muted);grid-column:1/3;padding-left:18px}.district-candidates{padding:0 0 12px 18px}.states-panel{margin-top:22px;overflow:hidden}.table-toolbar{padding:22px;display:flex;align-items:center;justify-content:space-between;gap:20px}.table-toolbar p{font-size:12px;color:var(--muted);margin-top:4px}.search-control{display:flex;align-items:center;gap:10px}.search-control label{font-size:12px;color:var(--muted)}.search-control input{width:230px;border:1px solid #bfc9d7;border-radius:5px;padding:10px 12px;background:white;min-height:42px}.search-control input::placeholder{color:#768399}.search-control>span{font-size:11px;color:var(--muted);min-width:48px}.table-scroll{overflow:auto;max-height:625px;scrollbar-width:thin}.states-table{width:100%;border-collapse:collapse;font-size:13px;white-space:nowrap}.states-table th{font-size:11px;position:sticky;top:0;background:#f6f8fb;z-index:1;text-align:left;border-block:1px solid var(--line);padding:12px 22px;font-weight:650}.states-table td{padding:10px 22px;border-bottom:1px solid #ebeff4}.states-table .number{text-align:right}.states-table th:first-child{width:24%}.states-table td:last-child{font-size:12px;min-width:200px}.states-table tbody tr:hover{background:#f7f9fd}.states-table tr.selected{background:#edf3fc}.state-button{background:none;border:0;padding:3px 0;color:var(--ink);font-weight:650;text-align:left;min-height:30px}.state-code{font-size:11px;color:var(--muted);font-weight:400;display:inline-block;width:30px}.state-button:hover{text-decoration:underline;text-underline-offset:3px}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block;margin-right:7px;border:1px solid #14203318}.table-empty{text-align:center!important;padding:40px 12px!important;color:var(--muted)}.table-explanation{padding:14px 22px;color:var(--muted);font-size:11px;border-top:1px solid var(--line)}.footer{display:grid;grid-template-columns:1.4fr 1fr;gap:40px;padding:25px 2px 0;color:var(--muted);font-size:11px;line-height:1.9}.footer strong{font-size:12px;font-weight:650;color:#40516a}.footer p{margin-top:3px}.footer a{color:inherit}.noscript{position:fixed;bottom:0;inset-inline:0;padding:20px;background:#fff2d7;color:#663f00;z-index:100}
@media(min-width:1400px){.workspace{grid-template-columns:minmax(0,1fr) 390px}.detail-panel{max-height:830px}}
@media(max-width:1050px){.workspace{grid-template-columns:minmax(0,1fr) 310px;gap:14px}.shell{padding-inline:20px}.panel-heading{padding:18px 16px 0;align-items:start;flex-direction:column;gap:12px}.mode-switch{align-self:flex-end}.map-container{margin:0 8px}.map-legend{gap:8px 12px}.chamber-summary{padding:18px}.seat-number strong{font-size:29px}.seat-numbers{gap:12px}.seat-number.other{gap:5px}.poll-note{width:100%;margin-left:0}.status-strip{gap:8px 24px}.map-footnote{padding:12px 16px}.table-toolbar{padding:18px}.states-table td,.states-table th{padding-inline:18px}}
@media(max-width:780px){.masthead{min-height:92px;padding:18px 18px;gap:12px}.brand h1{font-size:23px}.brand p{font-size:11px}.brand-mark{width:29px;gap:3px}.brand-mark span{width:4px}.connection{display:none}.update-control{gap:0}#refresh{min-width:100px;padding:8px 10px;font-size:12px}.shell{padding:0 14px 24px}.status-strip{font-size:11px;gap:6px 16px;padding:13px 0}.poll-note{font-size:10px}.seat-overview{margin-bottom:16px}.summary-heading{align-items:start;flex-direction:column;gap:2px}.summary-heading>span{font-size:10px}.chamber-summary{padding:15px 13px}.seat-numbers{gap:10px;flex-wrap:wrap;margin:12px 0 10px}.seat-number{gap:5px}.seat-number strong{font-size:28px}.seat-number span{font-size:11px}.seat-number.other{width:100%;margin:0;justify-content:flex-start}.seat-number.other strong{font-size:14px}.summary-foot{flex-direction:column;gap:2px;font-size:10px}.workspace{grid-template-columns:1fr;gap:16px}.panel-heading{flex-direction:row;align-items:center;padding:18px 16px 0}.panel-heading h2{font-size:17px}.panel-heading p{font-size:11px;max-width:250px}.mode-switch{align-self:center}.mode-switch button{padding:6px 13px}.map-container{margin:14px 8px 0}.state-label{font-size:13px}.map-legend{padding-bottom:14px;font-size:10px;gap:8px 12px}.map-footnote{font-size:10px}.detail-panel{max-height:620px}.detail-heading{padding:17px 20px}.detail-heading h2{font-size:21px}.detail-empty{padding:32px 20px 38px}.detail-empty svg{width:50px;height:45px;margin-bottom:12px}.detail-empty p br{display:none}.detail-empty span{margin-top:8px}.detail-section{padding:18px 20px}.table-toolbar{flex-direction:column;align-items:stretch;gap:15px}.table-toolbar h2{font-size:18px}.search-control{flex-wrap:wrap;gap:8px}.search-control input{flex:1;width:150px;min-width:100px}.search-control label{font-size:11px}.states-table th,.states-table td{padding:10px 15px}.states-table td:last-child{min-width:180px}.table-explanation{padding:12px 16px}.footer{grid-template-columns:1fr;gap:15px;padding-top:22px}.notice{font-size:12px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{transition:none!important;scroll-behavior:auto!important}}
