:root{--navy:#12233d;--ink:#17263d;--muted:#687489;--blue:#2869be;--red:#d14b4c;--other:#a48145;--pending:#d8dce2;--paper:#fff;--line:#e5e8ec;--surface:#f3f5f7}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:#f1f3f5;color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Arial,sans-serif;font-size:15px;line-height:1.5}button,input,select{font:inherit}button{cursor:pointer}.map-shape:focus-visible,a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #f1b44d;outline-offset:3px}a{color:#2869ae;text-decoration:none}a:hover{text-decoration:underline}.page{max-width:1500px;margin:auto;background:#fff;box-shadow:0 0 48px #0f1c2b0d}.masthead{background:#102039;color:white;height:62px;justify-content:space-between;padding:0 5.5%;letter-spacing:.13em}.brand,.masthead{display:flex;align-items:center}.brand{gap:10px;font-size:13px;font-weight:800}.brand-mark{background:#fff;color:#102039;padding:4px 5px;font-weight:900;letter-spacing:-.09em}.brand small{color:#92a3bb;font-weight:500;margin-left:4px}.edition{color:#aebbd0;font-weight:700;font-size:10px}.hero{background:linear-gradient(113deg,#14263f,#1d3958);padding:50px 5.5% 54px;color:white;display:flex;justify-content:space-between;align-items:flex-end;gap:30px}.eyebrow{font-weight:800;letter-spacing:.16em;font-size:10px;color:#abbccf}.eyebrow.dark{color:#486b91}.live-dot,.pulse{display:inline-block;width:7px;height:7px;border-radius:50%;background:#eb7c6c;vertical-align:middle;margin-right:7px}.hero h1{font-family:Georgia,serif;font-size:clamp(38px,5.1vw,68px);font-weight:400;letter-spacing:-.037em;line-height:1.04;margin:19px 0}.hero h1 em{font-style:normal;color:#b8d7f5}.hero p{max-width:600px;font-size:16px;line-height:1.65;color:#d4dfeb;margin:0}.hero-stat{text-align:right;white-space:nowrap;padding-bottom:5px}.hero-stat strong{display:block;font-family:Georgia,serif;font-weight:400;font-size:clamp(35px,4vw,55px)}.hero-stat i{font-style:normal;color:#7690ac}.hero-stat span{color:#aebfd1;font-size:11px;text-transform:uppercase;letter-spacing:.15em;font-weight:700}.notice{background:#fff6df;border-bottom:1px solid #eedcae;padding:16px 5.5%;display:flex;gap:20px;color:#614d20;font-size:13px}.notice strong{white-space:nowrap;font-size:10px;letter-spacing:.1em;padding-top:3px;color:#765718}.livebar{background:#f8fafb;border-bottom:1px solid var(--line);padding:13px 5.5%;display:flex;gap:9px;align-items:center;flex-wrap:wrap;color:#687588;font-size:11px}.livebar strong{color:#263b50}.live-dot{background:#53a782;margin:0;flex:none}.live-dot.warn{background:#d59a40}.divider{width:1px;height:13px;background:#d7dde4;margin:0 3px}.livebar-right{margin-left:auto;font-weight:700;color:#8391a1}.tabs{display:flex;padding:0 5.5%;border-bottom:1px solid var(--line);gap:34px}.tabs button{border:0;background:transparent;padding:20px 0 17px;color:#7c8898;font-weight:800;border-bottom:3px solid transparent}.tabs button.active{border-bottom-color:#1e65b3;color:#173f70}.tabs button span{font-size:11px;font-weight:500;color:#8490a0;margin-left:6px}.explore,.method,.overview{padding:40px 5.5%}.explore-title,.section-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:18px}h2{font-family:Georgia,serif;font-size:clamp(25px,2.7vw,35px);line-height:1.16;letter-spacing:-.025em;font-weight:400;margin:9px 0}.explore-title p,.section-heading p{color:var(--muted);margin:0;font-size:13px}.majority{text-align:right;min-width:80px}.majority span{display:block;color:#8190a0;font-size:10px;letter-spacing:.14em;font-weight:800}.majority strong{font-family:Georgia,serif;font-size:35px;font-weight:400}.count-grid{display:grid;grid-template-columns:repeat(4,1fr);margin:31px 0 14px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.count{padding:16px 0}.count+.count{padding-left:22px;border-left:1px solid var(--line)}.count span{display:block;color:#6f7e8d;font-size:11px;font-weight:700}.count strong{font-size:29px;font-weight:700;line-height:1.3}.count.dem strong{color:var(--blue)}.count.rep strong{color:var(--red)}.count.other strong{color:#9b783b}.count.pending strong{color:#929ba7}.bar{display:flex;overflow:hidden;background:#e1e5ea;height:12px;border-radius:4px}.bar span.dem,.candidate-bar span.dem,.map-legend i.dem,.row-dot.dem{background:var(--blue)}.bar span.rep,.candidate-bar span.rep,.map-legend i.rep,.row-dot.rep{background:var(--red)}.bar span.other,.candidate-bar span.other,.map-legend i.other,.row-dot.other{background:var(--other)}.bar span.pending,.map-legend i.pending,.row-dot.pending{background:var(--pending)}.footnote{font-size:12px;color:#768293;margin:12px 0 0;max-width:1100px}.explore{background:#f6f8fa;border-block:1px solid var(--line)}.source-note{display:flex;flex-direction:column;text-align:right}.source-note strong{font-family:Georgia,serif;font-weight:400;font-size:24px}.source-note span{font-size:11px;color:#788799;line-height:1.4}.controls{display:grid;grid-template-columns:1fr 250px;grid-gap:15px;gap:15px;margin-top:25px}.controls label{font-size:11px;color:#5d6f82;display:block;font-weight:800;margin-bottom:7px}.search-wrap{position:relative}.search-input{height:45px;display:flex;align-items:center;background:white;border:1px solid #dbe2e8;border-radius:4px;padding:0 12px}.search-input span{font-size:24px;color:#7990a5;margin-right:8px}.search-input input{width:100%;border:0;outline:none;color:var(--ink);min-width:0}.search-input input:focus-visible{outline:none}.search-input:focus-within{outline:3px solid #e5b75d;outline-offset:2px}.state-select select{height:45px;width:100%;border:1px solid #dbe2e8;background:white;border-radius:4px;padding:0 11px;color:#31465a}.suggestions{position:absolute;z-index:5;background:white;left:0;right:0;top:100%;box-shadow:0 8px 20px #1b2a3c28;border:1px solid #e0e6eb;border-radius:4px;max-height:280px;overflow:auto}.suggestions button,.suggestions>span{display:block;width:100%;text-align:left;border:0;background:white;padding:10px 14px;color:#384b5e;font-size:13px}.suggestions button:hover{background:#eaf2f9}.map-legend{display:flex;flex-wrap:wrap;gap:9px 20px;margin:23px 0 13px;color:#68798a;font-size:11px;font-weight:700}.map-legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px}.map-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);min-height:470px;background:white;border:1px solid #e0e6ec;border-radius:5px;overflow:hidden}.map-frame{position:relative;min-width:0;background:#eef3f6;display:flex;flex-direction:column;justify-content:center}.map-frame:-webkit-full-screen{background:#eef3f6;padding:3vw}.map-frame:fullscreen{background:#eef3f6;padding:3vw}.map-frame:-webkit-full-screen svg{height:85vh}.map-frame:fullscreen svg{height:85vh}.map-frame svg{width:100%;display:block;max-height:570px;touch-action:none}.map-toolbar{position:absolute;z-index:2;top:15px;left:15px;display:flex;flex-direction:column;box-shadow:0 2px 7px #13263d1e;border-radius:5px;overflow:hidden}.map-toolbar button{width:34px;height:34px;background:white;border:0;border-bottom:1px solid #edf0f3;color:#415870;font-size:20px;line-height:1}.map-toolbar button:hover{background:#edf5fa}.map-shape{stroke:#fff;stroke-width:.7;vector-effect:non-scaling-stroke;cursor:pointer;transition:fill .2s}.map-shape.dem{fill:#2869be}.map-shape.rep{fill:#d14b4c}.map-shape.other{fill:#a48145}.map-shape.pending{fill:#cbd2d9}.map-shape.not-up{fill:#e6ebee;stroke:#fff}.map-shape:focus,.map-shape:hover{stroke:#132f50;stroke-width:2}.map-shape.selected{stroke:#152f4e;stroke-width:2.5}.map-hint{margin:0;padding:5px 15px 12px;color:#778c9c;font-size:10px;text-align:center}.map-error{position:absolute;inset:40% 20px auto;text-align:center;color:#765718;font-weight:700}.detail{border-left:1px solid #e6ebef;padding:23px;min-width:0;max-height:600px;overflow:auto}.detail-top{display:flex;justify-content:space-between;align-items:center;color:#7d8e9f;font-size:10px;font-weight:800;letter-spacing:.12em}.detail-top button{font-size:22px;line-height:1;background:none;border:0;color:#7a8898}.detail h3{font-family:Georgia,serif;font-size:24px;line-height:1.2;letter-spacing:-.02em;font-weight:400;margin:19px 0 4px}.detail-sub{font-size:12px;color:#82909d}.status-label{display:inline-block;background:#edf3f8;color:#395f85;font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;padding:6px 8px;border-radius:3px;margin-top:21px}.detail-disclaimer,.detail-progress{font-size:11px;color:#788897}.detail-progress{border-bottom:1px solid var(--line);padding-bottom:14px}.detail-disclaimer{line-height:1.5;border-top:1px solid var(--line);padding-top:14px}.candidate{display:flex;align-items:flex-start;gap:9px;padding:12px 0}.party-pill{width:25px;height:25px;flex:none;border-radius:50%;font-size:10px;display:grid;place-items:center;background:#edf1f4;color:#68798b;font-weight:800}.party-pill.dem{background:#e8f0fb;color:var(--blue)}.party-pill.rep{background:#fbeaea;color:var(--red)}.party-pill.other{background:#f8f1e4;color:#8f6a2c}.candidate-main{min-width:0;flex:1 1}.candidate-main b,.candidate-main small,.candidate-value small,.candidate-value strong{display:block}.candidate-main b{font-size:12px;line-height:1.3}.candidate-main small,.candidate-value small{color:#8b98a6;font-size:10px;margin-top:3px}.candidate-value{white-space:nowrap;text-align:right}.candidate-value strong{font-size:12px}.candidate-bar{height:4px;background:#eff2f5;margin-top:8px;border-radius:3px}.candidate-bar span{display:block;height:100%;border-radius:3px}.official-link{font-size:11px;font-weight:800}.no-data{font-size:13px;color:#68798a;margin:24px 0}.empty-detail{min-height:330px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.empty-detail .pin{width:52px;height:52px;background:#eef4f9;border-radius:50%;display:grid;place-items:center;color:#4679a5;font-size:28px}.empty-detail h3{font-size:22px;margin:18px 0 8px}.empty-detail p{max-width:240px;color:#788899;font-size:12px;margin:0}.empty-detail span{font-size:10px;color:#a2adb8;margin-top:25px}.list-heading{display:flex;justify-content:space-between;align-items:flex-end;margin-top:35px;gap:15px}.list-heading h3{font-family:Georgia,serif;font-size:24px;font-weight:400;margin:0}.list-heading p{margin:2px 0;color:#8291a1;font-size:11px}.filter-group{display:flex;gap:4px;flex-wrap:wrap}.filter-group button{background:transparent;border:1px solid transparent;color:#7a8a9b;border-radius:4px;padding:7px 10px;font-weight:700;font-size:11px}.filter-group button.active{background:#fff;border-color:#d9e2eb;color:#315c83}.filter-note{color:#8795a3;font-size:10px}.race-list{background:#fff;border:1px solid #e2e8ed;border-radius:5px;max-height:410px;overflow:auto}.race-row{width:100%;display:flex;align-items:center;text-align:left;gap:12px;background:white;padding:12px 15px;border:0;border-bottom:1px solid #edf0f3;color:#293d50}.race-row.active,.race-row:hover{background:#f0f6fb}.row-dot{width:8px;height:8px;flex:none;border-radius:50%}.race-name{flex:1 1}.race-name b,.race-name small{display:block}.race-name b{font-size:12px}.race-name small{color:#8b99a6;font-size:10px}.race-lead{color:#62788b;font-size:11px}.arrow{color:#96a5b1}.no-results{padding:28px;text-align:center;color:#8493a0;font-size:13px}.method{display:grid;grid-template-columns:1fr 2fr;grid-gap:40px;gap:40px;padding-top:48px;padding-bottom:48px}.method h2{max-width:240px}.method-copy p{color:#68798a;font-size:12px;line-height:1.7;margin:0 0 11px}.method-copy p b{color:#344b60}.links{display:flex;gap:20px;flex-wrap:wrap;margin-top:20px;font-size:11px}.links,footer{font-weight:800}footer{background:#102039;color:#c6d4e4;font-size:10px;letter-spacing:.09em;padding:23px 5.5%}footer span{color:#7890a8}.footer-right{float:right;letter-spacing:0;font-weight:500}.dem{color:var(--blue)}.rep{color:var(--red)}@media(max-width:800px){.masthead{padding-inline:5%}.hero{padding:40px 5%}.hero-stat{display:none}.explore,.method,.overview{padding:30px 5%}.livebar{padding-inline:5%}.livebar-right{margin-left:0}.map-layout{grid-template-columns:1fr}.map-frame{min-height:300px}.detail{border-left:0;border-top:1px solid #e6ebef;max-height:none}.empty-detail{min-height:180px}.detail h3{margin-top:12px}.controls{grid-template-columns:1fr 190px}.method{grid-template-columns:1fr;gap:8px}.method h2{max-width:none}}@media(max-width:560px){.edition{display:none}.hero{padding-top:31px;padding-bottom:34px}.hero h1{font-size:43px}.hero p{font-size:14px}.notice{padding:13px 5%;display:block;font-size:12px}.notice strong{display:block;margin-bottom:6px}.livebar{font-size:10px}.tabs{gap:26px;padding-inline:5%}.tabs button{padding:16px 0 13px}.tabs button span{display:block;margin:1px 0 0;font-size:10px}.explore-title,.section-heading{align-items:flex-start}.source-note strong{font-size:19px}.source-note span{font-size:10px}.count-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:23px}.count+.count{padding-left:8px}.count span{font-size:9px}.count strong{font-size:24px}.majority strong{font-size:29px}.controls{grid-template-columns:1fr;gap:11px}.map-legend{gap:7px 12px;font-size:10px}.map-layout{min-height:0}.map-frame{min-height:250px}.map-toolbar{top:8px;left:8px}.map-toolbar button{width:30px;height:30px;font-size:18px}.map-hint{font-size:9px}.list-heading{display:block}.filter-group{margin-top:12px}.filter-group button{padding:7px 8px;font-size:10px}.race-lead{max-width:100px;text-align:right;font-size:10px}.footer-right{display:none}}