:root{--ink:#142b2a;--muted:#647673;--green:#092f2e;--accent:#ffd66b;--line:#dce4e1;--paper:#f3f6f5;--blue:#1765c5;--red:#d54444;font-family:'Segoe UI',Arial,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,select,input{font:inherit}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.5;cursor:wait}a{color:inherit}button:focus-visible,a:focus-visible,select:focus-visible,input:focus-visible,svg:focus-visible{outline:3px solid #248b85;outline-offset:4px}button{border:0}.shell{max-width:1440px;margin:auto;padding:0 48px}.masthead{background:var(--green);color:#fff;border-bottom:4px solid var(--accent)}.header-inner{height:94px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;align-items:center;gap:13px;text-decoration:none;font-size:20px;font-weight:800;letter-spacing:2px}.brand-mark{background:var(--accent);color:var(--green);width:42px;height:42px;display:grid;place-items:center;letter-spacing:-2px;font-size:24px;border-radius:8px}.brand-sub{font-size:10px;letter-spacing:1.8px;display:block;margin-top:3px;font-weight:600}.edition{font-size:14px;letter-spacing:2px}.edition span{border-left:1px solid #72928e;padding-left:20px;margin-left:20px}.source-link{font-size:14px;text-underline-offset:5px;color:#d4e5e2}.intro{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:40px 0 27px}.eyebrow{font-size:12px;font-weight:800;letter-spacing:1.6px;margin:0 0 9px;color:var(--muted)}h1{font-size:clamp(28px,3vw,42px);letter-spacing:-1.7px;line-height:1.15;font-weight:750;margin:0}h2{font-size:23px;letter-spacing:-.6px;margin:0;line-height:1.2}.live-status{font-size:14px;display:flex;align-items:center;gap:8px;white-space:nowrap}.live-status::before{content:'';height:8px;width:8px;background:#6b7e78;border-radius:50%}.live-status.live::before{background:#167c68;box-shadow:0 0 0 4px #dcece6}.live-status.warn::before{background:#be730a}.toolbar{display:flex;justify-content:space-between;gap:16px;align-items:center;padding-bottom:24px}.scope-buttons{display:flex;align-items:center;gap:10px}.scope-buttons>button{padding:11px 22px;border-radius:7px;font-weight:650;color:var(--ink);background:#e5ece9}.scope-buttons>button.selected{background:var(--green);color:white}.state-select{display:flex;gap:12px;align-items:center;font-size:14px;font-weight:600}.state-select select{min-height:44px;border:1px solid #c6d5cf;border-radius:7px;background:white;color:var(--ink);max-width:230px;padding:8px 30px 8px 12px}.refresh-controls{display:flex;gap:16px;align-items:center;font-size:13px;color:var(--muted)}.outline{border:1px solid #c8d7d0;background:#fff;color:var(--ink);border-radius:7px;min-height:42px;padding:9px 14px;font-size:14px;font-weight:600;white-space:nowrap}.outline:hover{background:#eff5f2}.outline span{font-size:19px;margin-right:5px}.small{font-size:13px;min-height:38px}.notice{font-size:14px;border:1px solid #e5c98a;background:#fff7e2;border-radius:8px;padding:13px 17px;margin:0 0 18px;line-height:1.5}.results-layout{display:grid;grid-template-columns:minmax(330px,.8fr) minmax(0,1.4fr);gap:22px;align-items:stretch}.panel{background:white;border:1px solid var(--line);border-radius:12px;padding:26px}.panel-top{display:flex;align-items:center;justify-content:space-between;gap:12px}.tag{background:#eef4f1;color:#416355;white-space:nowrap;border-radius:5px;padding:6px 9px;font-size:12px;font-weight:700}.source-time{font-size:13px;color:var(--muted);line-height:1.5;margin:11px 0 21px}.count-progress>div:first-child{display:flex;align-items:baseline;justify-content:space-between;font-size:14px}.count-progress strong{font-size:30px;font-weight:800;letter-spacing:-1px;font-variant-numeric:tabular-nums}.progress-track{height:7px;border-radius:20px;overflow:hidden;background:#e7eeea;margin:9px 0}.progress-track span{display:block;height:100%;width:0;background:#267f6a;border-radius:20px;transition:width .5s}.count-progress p{margin:0;font-size:12px;color:var(--muted)}.candidate-list{margin-top:21px}.candidate{padding:13px 0;border-top:1px solid #edf1ee}.candidate-header{display:flex;justify-content:space-between;gap:16px;align-items:center}.candidate-name{display:flex;align-items:center;gap:10px;min-width:0}.candidate-number{flex:none;height:33px;width:33px;border-radius:6px;display:grid;place-items:center;font-size:14px;font-weight:800;color:var(--color);background:color-mix(in srgb,var(--color) 10%,white)}.candidate h3{margin:0;font-size:16px;line-height:1.3;font-weight:750;letter-spacing:-.2px}.candidate-party{font-size:12px;color:var(--muted);margin:3px 0 0}.candidate-percent{font-size:24px;font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.7px;white-space:nowrap}.candidate-bar{height:5px;background:#edf1ef;border-radius:10px;margin:10px 0 0;overflow:hidden}.candidate-bar span{display:block;height:100%;width:var(--percent);background:var(--color);border-radius:10px;transition:width .5s}.candidate-votes{font-size:12px;color:var(--muted);margin:5px 0 0;text-align:right;font-variant-numeric:tabular-nums}.text-button{font-size:14px;color:#216450;font-weight:650;background:none;padding:13px 0 0}.footnote{font-size:12px;color:var(--muted);line-height:1.55;margin:17px 0 0}.history-panel{position:relative;min-width:0;display:flex;flex-direction:column}.chart-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:25px 0 16px}.segmented{display:flex;background:#edf3ef;padding:3px;border-radius:7px}.segmented button{padding:8px 11px;background:none;color:var(--muted);font-size:13px;border-radius:5px;font-weight:650}.segmented button.active{background:white;box-shadow:0 1px 3px #17302318;color:var(--green)}.chart-unit{font-size:12px;color:var(--muted)}.legend{display:flex;gap:8px 16px;flex-wrap:wrap;min-height:28px}.legend button{display:flex;gap:6px;align-items:center;font-size:12px;font-weight:650;background:none;padding:4px 0;color:var(--ink)}.legend button.off{opacity:.4}.swatch{width:9px;height:9px;border-radius:2px;background:var(--color);flex:none}.chart{width:100%;min-height:260px;flex:1;display:flex;align-items:center}.chart svg{display:block;width:100%;overflow:visible;touch-action:pan-y}.chart .chart-hit{cursor:crosshair}.empty-chart{width:100%;padding:65px 28px;text-align:center;color:var(--muted);line-height:1.6;font-size:14px;border:1px dashed var(--line);border-radius:9px;margin:18px 0}.chart-tooltip{position:absolute;z-index:5;left:26px;right:26px;top:100px;border:1px solid var(--line);background:#ffffffed;padding:10px 15px;border-radius:8px;box-shadow:0 6px 25px #15342b15;font-size:12px;pointer-events:none}.chart-tooltip span{margin-right:14px;display:inline-block}.timeline-head{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--line);padding-top:18px;margin-top:18px;font-size:13px;font-weight:650}.live-button{padding:7px 10px;background:#edf4f0;color:#557567;border-radius:6px;font-size:12px}.live-button.active{background:var(--green);color:#fff}input[type=range]{width:100%;accent-color:var(--green);margin:17px 0 9px;min-height:22px;cursor:pointer}.timeline-labels{display:flex;justify-content:space-between;font-variant-numeric:tabular-nums;font-size:12px;color:var(--muted)}.timeline-labels strong{font-weight:700;color:var(--ink)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);background:white;border-radius:10px;margin:22px 0 30px;padding:20px 0}.metrics>div{padding:0 24px;border-right:1px solid var(--line)}.metrics>div:last-child{border:0}.metrics span{font-size:13px;color:var(--muted);display:block;margin:0 0 7px}.metrics strong{font-size:25px;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.states-panel{margin-bottom:22px}.muted{font-size:13px;color:var(--muted)}.state-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:11px;margin-top:24px}.state-card{padding:13px;background:#fff;border:1px solid var(--line);border-radius:8px;text-align:left;color:var(--ink);transition:background .15s,border-color .15s}.state-card:hover,.state-card.selected{background:#f1f7f3;border-color:#318472}.state-card .state-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.state-card .uf{font-size:14px;font-weight:800;display:block}.state-card .state-progress{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.state-card .state-name{font-size:12px;color:var(--muted);margin-top:3px;display:block}.state-card .state-leader{margin-top:14px;display:flex;align-items:center;gap:6px;font-size:12px;font-weight:650;line-height:1.3}.state-card .state-score{font-size:20px;font-weight:750;margin-top:4px;display:block;font-variant-numeric:tabular-nums}.state-card .state-time{font-size:12px;color:var(--muted);display:block;margin-top:7px}.hourly-panel{margin-bottom:25px}.table-scroll{overflow-x:auto;margin-top:22px}table{width:100%;border-collapse:collapse;white-space:nowrap;font-size:14px;text-align:right;font-variant-numeric:tabular-nums}th{font-size:12px;color:var(--muted);font-weight:650;background:#f4f7f5;padding:14px 12px}td{padding:15px 12px;border-bottom:1px solid #edf1ee}th:first-child,td:first-child{text-align:left}tr:last-child td{border-bottom:0}.row-selected td{background:#f0f6f2}.methodology{margin-bottom:28px;padding:20px 0;border-top:1px solid var(--line);font-size:14px;line-height:1.7;color:var(--muted)}.methodology summary{cursor:pointer;font-size:14px;font-weight:650;color:var(--ink)}.methodology p{max-width:980px}.methodology a{color:#1a685c;text-underline-offset:3px}.footer{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-top:22px;padding-bottom:28px;border-top:1px solid var(--line);font-size:12px;color:var(--muted)}.footer>span{font-weight:800;letter-spacing:1px;color:var(--ink)}.footer>span span{font-weight:400;letter-spacing:0}.footer p{margin:0}.sr-only,.skip:not(:focus){position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}.skip:focus{position:fixed;top:10px;left:10px;background:white;padding:15px;z-index:20}.loading{padding:70px 10px;color:var(--muted);text-align:center;font-size:14px}[hidden]{display:none!important}
@media(min-width:1600px){.shell{max-width:1500px}.chart{min-height:310px}}
@media(max-width:1100px){.shell{padding-left:28px;padding-right:28px}.results-layout{grid-template-columns:minmax(300px,.85fr) minmax(0,1.15fr);gap:16px}.panel{padding:20px}.history-panel h2{font-size:20px}.state-grid{grid-template-columns:repeat(4,1fr)}.panel-top{align-items:flex-start}.metrics>div{padding:0 18px}.metrics strong{font-size:23px}.chart-unit{display:none}}
@media(max-width:800px){.shell{padding-left:20px;padding-right:20px}.edition{display:none}.header-inner{height:79px}.brand{font-size:17px}.brand-sub{font-size:9px}.brand-mark{width:38px;height:38px}.intro{margin-top:28px;align-items:flex-start;flex-direction:column;gap:14px}h1{font-size:33px}.toolbar{align-items:flex-start;flex-direction:column}.scope-buttons{width:100%}.state-select{flex:1}.state-select span{display:none}.state-select select{width:100%;max-width:none}.refresh-controls{width:100%;justify-content:space-between}.results-layout{grid-template-columns:1fr}.panel{padding:22px}.history-panel h2{font-size:21px}.history-panel .panel-top{flex-wrap:wrap;gap:12px}.chart{min-height:240px}.metrics{grid-template-columns:1fr 1fr;padding:0;margin-bottom:22px}.metrics>div{padding:18px 20px}.metrics>div:nth-child(2){border-right:0}.metrics>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.metrics span{font-size:12px}.metrics strong{font-size:24px}.state-grid{grid-template-columns:repeat(3,1fr)}.states-panel .panel-top{flex-direction:column;gap:10px}.hourly-panel .panel-top{flex-wrap:wrap;gap:14px}.footer{align-items:flex-start;flex-direction:column;gap:9px}.chart svg{min-height:220px}}
@media(max-width:450px){.shell{padding-left:14px;padding-right:14px}.panel{padding:19px}.source-link{font-size:12px}.brand-sub{letter-spacing:1.3px}.header-inner{gap:12px}.intro h1{font-size:30px;letter-spacing:-1.2px}.state-grid{grid-template-columns:repeat(2,1fr);gap:9px}.candidate-percent{font-size:25px}.history-panel h2{font-size:20px}.legend{gap:7px 12px}.timeline-head{font-size:12px}.metrics>div{padding:16px}.metrics strong{font-size:22px}.timeline-labels{font-size:12px}.eyebrow{font-size:12px;letter-spacing:1.3px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
