/* Election-night utility before election night. */
.election-center{overflow:hidden}.election-center section{scroll-margin-top:68px}.election-hero{background:var(--ink);color:#f8f8f5;border-bottom:1px solid #42484b}.election-hero-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:70px;align-items:end;padding-top:70px;padding-bottom:66px}.election-kicker{display:flex;align-items:center;gap:11px;color:#aeb7bc;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.status-dot{display:inline-block;width:8px;height:8px;background:#7299f2;box-shadow:0 0 0 5px rgba(114,153,242,.12)}.election-intro h1{font-size:clamp(72px,10vw,144px);line-height:.83;letter-spacing:-.072em;margin:38px 0 35px}.election-dek{max-width:760px;color:#c6cdcf;font:clamp(20px,2.1vw,28px)/1.52 Georgia,'Times New Roman',serif}.edition-status{display:flex;flex-wrap:wrap;gap:9px 0;margin-top:35px;color:#9ca5a9;font-size:12px}.edition-status span{padding:0 14px;border-right:1px solid #50575b}.edition-status span:first-child{padding-left:0}.edition-status span:last-child{border:0}
.countdown-panel{border-top:3px solid #7197ef;background:#272c2f;padding:30px 30px 28px}.panel-label{color:#9da8ad;font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase}.countdown{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:26px 0 22px}.countdown div{min-width:0}.countdown strong{display:block;font:clamp(36px,4.4vw,59px)/.95 Georgia,serif;letter-spacing:-.045em}.countdown span{display:block;color:#9da8ad;font-size:11px;text-transform:uppercase;letter-spacing:.08em;margin-top:10px}.cycle-progress{height:3px;background:#42494d;margin:20px 0}.cycle-progress span{display:block;height:100%;width:0;background:#7197ef;transition:width .8s ease}.countdown-panel p{color:#aeb7bc;font-size:14px;line-height:1.6;margin:19px 0}.countdown-panel>a{display:flex;align-items:center;justify-content:space-between;color:#f8f8f5;text-decoration:none;border-top:1px solid #485055;padding-top:19px;font-size:14px}.countdown-panel>a:hover{color:#9ab7ff}
.center-nav{position:sticky;top:0;z-index:22;background:rgba(238,241,243,.96);border-bottom:1px solid var(--line);backdrop-filter:blur(12px)}.center-nav .shell{display:flex;gap:30px;overflow-x:auto;scrollbar-width:none}.center-nav .shell::-webkit-scrollbar{display:none}.center-nav a{white-space:nowrap;text-decoration:none;font-size:13px;color:var(--muted);padding:15px 0;border-bottom:2px solid transparent}.center-nav a:hover,.center-nav a:focus-visible{color:var(--accent);border-bottom-color:var(--accent)}
.election-pulse{display:grid;grid-template-columns:1.55fr .75fr;gap:14px;padding-top:26px;padding-bottom:8px}.change-panel,.watching-panel{border:1px solid var(--line);padding:24px;background:var(--paper2)}.pulse-heading{display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line);padding-bottom:17px}.pulse-heading>span:last-child{font-size:12px;color:var(--muted)}.change-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line)}.change-grid a{display:flex;flex-direction:column;min-height:230px;background:var(--paper2);padding:23px 20px 20px;text-decoration:none}.change-grid a>span,.watching-list a>span{color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.change-grid strong{font:24px/1.2 Georgia,serif;margin:24px 0 12px}.change-grid p{color:var(--muted);font-size:13px;line-height:1.6;margin-top:auto}.change-grid a:hover strong,.watching-list a:hover strong{color:var(--accent)}.watching-panel{background:var(--ink);color:#f7f8f5;border-color:var(--ink)}.watching-panel .pulse-heading{border-color:#4c5357}.watching-panel .pulse-heading>span:last-child{color:#a9b2b6}.watching-list a{display:block;color:inherit;text-decoration:none;padding:19px 0;border-bottom:1px solid #444b4f}.watching-list a:last-child{border:0;padding-bottom:0}.watching-list a>span{color:#88a9f5}.watching-list strong{font:21px/1.25 Georgia,serif;display:block;margin:7px 0}.watching-list p{color:#aeb7bc;font-size:12px;line-height:1.55;margin:0}.race-card-featured{background:#edf2fc}.race-card-featured:before{content:'Deep file';display:block;width:max-content;margin-bottom:12px;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}
.center-section{padding-top:76px;padding-bottom:82px}.center-heading{display:grid;grid-template-columns:1fr minmax(240px,380px);gap:50px;align-items:end;margin-bottom:39px}.center-heading>div{position:relative}.center-heading .section-number{position:absolute;left:-30px;top:3px;color:#8d969a;font-size:10px}.center-heading h2{font-size:clamp(43px,5.2vw,72px);margin:10px 0 0}.center-heading>p{color:var(--muted);font-size:15px;line-height:1.65;margin:0 0 7px}.power-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.power-card{background:var(--paper2);border:1px solid var(--line);padding:31px 33px 30px;min-height:405px;display:flex;flex-direction:column}.power-card header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding-bottom:20px;border-bottom:1px solid var(--line)}.chamber-name{font-weight:700}.power-status{font-size:12px;color:var(--muted)}.seat-total{display:flex;align-items:end;gap:17px;margin:35px 0 27px}.seat-total strong{font:82px/.8 Georgia,serif;letter-spacing:-.065em}.seat-total span{color:var(--muted);font-size:14px;padding-bottom:3px}.seat-bar{display:flex;height:11px;background:#d6dadd;overflow:hidden;margin-bottom:15px}.seat-bar>span{width:calc(var(--seats) * 1%)}.bar-r{background:#34383a}.bar-d{background:#323778}.bar-i{background:#9aa3a8}.seat-key{display:flex;gap:19px;font-size:12px;color:var(--muted)}.seat-key span{display:flex;align-items:center;gap:7px}.seat-key i{width:8px;height:8px;display:inline-block}.key-r{background:#34383a}.key-d{background:#323778}.key-i{background:#9aa3a8}.power-card>p{margin:29px 0 23px;font-size:15px;line-height:1.7;max-width:620px}.source-link{font-size:12px;color:var(--muted);margin-top:auto}.source-link:hover{color:var(--accent)}.source-pair{display:flex;flex-wrap:wrap;gap:8px 22px;margin-top:auto}.house-threshold{background:#edf1f4;display:flex;align-items:center;justify-content:space-between;gap:20px;padding:19px 20px;margin:3px 0 0}.house-threshold span{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.house-threshold strong{font-size:17px}.method-note,.watchlist-note{font-size:12px;color:var(--muted);line-height:1.7;max-width:900px;margin:18px 0 0}
.race-section{background:var(--paper2);box-shadow:0 0 0 100vmax var(--paper2);clip-path:inset(0 -100vmax)}.race-toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid var(--ink);padding:17px 0 27px}.race-filters{display:flex;flex-wrap:wrap;gap:7px}.race-filters button{border:1px solid var(--line);background:transparent;color:var(--ink);padding:8px 13px;font-size:13px;border-radius:2px}.race-filters button:hover{border-color:var(--ink)}.race-filters button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:var(--paper2)}.race-toolbar>p{margin:0;color:var(--muted);font-size:12px}.race-board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}.race-card{background:var(--paper2);padding:27px 27px 25px;min-height:310px;display:flex;flex-direction:column}.race-card[hidden]{display:none}.race-meta{display:flex;justify-content:space-between;align-items:start;gap:12px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.065em}.race-tag{border:1px solid #c7ced2;padding:4px 6px;white-space:nowrap;color:#667176}.race-tag-live{border-color:#91a8dd;color:#323778;background:#edf2fc}.race-card h3{font-size:clamp(25px,2.35vw,34px);margin:31px 0 17px;line-height:1.15}.race-card h3 small{font:700 11px Arial,sans-serif;color:var(--muted);letter-spacing:.06em}.race-card h3 em{font-size:.54em;color:#8a9296;font-weight:400}.race-card>p{font-size:14px;color:var(--muted);line-height:1.65}.race-links{display:flex;flex-wrap:wrap;gap:9px 19px;border-top:1px solid var(--line);padding-top:17px;margin-top:auto}.race-links a{font-size:12px;color:var(--muted)}.race-links a:first-child{color:var(--accent);font-weight:700}.watchlist-note{margin-top:22px}
.development-list{border-top:1px solid var(--ink)}.development{display:grid;grid-template-columns:105px minmax(0,1fr);gap:28px;padding:29px 0;border-bottom:1px solid var(--line)}.development>time{font:25px Georgia,serif;color:var(--accent)}.development>div{display:grid;grid-template-columns:100px minmax(0,1fr);gap:5px 24px;align-items:start}.development-type{grid-row:1/3;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding-top:9px}.development h3{font-size:clamp(25px,2.7vw,37px);margin:0}.development h3 a{text-decoration:none}.development h3 a:hover{color:var(--accent)}.development p{grid-column:2;font-size:14px;color:var(--muted);max-width:760px;margin:7px 0 0}
.issue-section{background:#e4e9ed;box-shadow:0 0 0 100vmax #e4e9ed;clip-path:inset(0 -100vmax)}.issue-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.issue-card{min-height:325px;background:var(--paper2);border:1px solid #d0d7db;padding:29px 31px;display:flex;flex-direction:column;text-decoration:none;transition:transform .2s ease,border-color .2s ease}.issue-card:hover{transform:translateY(-3px);border-color:#8b9aa4}.issue-card>span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}.issue-card h3{font-size:clamp(38px,4.5vw,58px);margin:45px 0 17px}.issue-card p{color:var(--muted);font-size:15px;max-width:520px}.issue-card b{font-size:13px;margin-top:auto}.issue-money{background:var(--ink);color:#f7f8f5;border-color:var(--ink)}.issue-money>span,.issue-money p{color:#aeb7bc}.issue-money b{color:#9ab8ff}
.election-timeline{list-style:none;padding:0;margin:0;border-top:1px solid var(--ink)}.election-timeline li{display:grid;grid-template-columns:minmax(170px,.45fr) 1fr;gap:45px;padding:28px 0;border-bottom:1px solid var(--line);position:relative}.election-timeline li:before{content:'';position:absolute;left:0;top:31px;width:7px;height:7px;background:#9ca6ab}.election-timeline time{padding-left:25px}.election-timeline time b,.election-timeline time span{display:block}.election-timeline time b{font-size:15px}.election-timeline time span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.07em;margin-top:4px}.election-timeline h3{font-size:28px;margin:0 0 7px}.election-timeline p{color:var(--muted);font-size:14px;margin:0}.election-timeline .timeline-now:before{background:var(--accent);box-shadow:0 0 0 5px rgba(50,55,120,.1)}.election-timeline .timeline-election{background:#edf2fc;margin:0 -20px;padding-left:20px;padding-right:20px}.election-timeline .timeline-election:before{left:20px;background:var(--accent)}
.voter-guide-section{background:var(--accent);color:white;padding:74px 0}.voter-guide-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start}.voter-guide-copy .label{color:#cad8fa}.voter-guide-copy h2{font-size:clamp(47px,6vw,76px);margin:15px 0 25px}.voter-guide-copy p{color:#d8e2fb;font-size:17px;max-width:580px}.official-links{border-top:1px solid rgba(255,255,255,.5)}.official-links a{display:flex;align-items:center;justify-content:space-between;gap:30px;color:white;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.35);padding:24px 0}.official-links a:hover b{transform:translateX(3px)}.official-links span{font-size:14px;color:#dce6ff}.official-links b{font-size:13px;transition:transform .18s ease}.center-methodology{padding-top:35px;padding-bottom:65px}.center-methodology details{border-top:1px solid var(--ink);border-bottom:1px solid var(--line)}.center-methodology summary{display:flex;align-items:center;justify-content:space-between;gap:25px;list-style:none;padding:22px 0;cursor:pointer}.center-methodology summary::-webkit-details-marker{display:none}.center-methodology summary span{font:26px Georgia,serif}.center-methodology summary b{font-size:12px;color:var(--accent)}.center-methodology summary b:after{content:' +'}.center-methodology details[open] summary b:after{content:' −'}.methodology-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:45px;padding:20px 0 32px}.methodology-grid h3{font-size:21px;margin:17px 0 10px}.methodology-grid p,.methodology-grid li{font-size:13px;color:var(--muted);line-height:1.7}.methodology-grid ul{padding-left:18px}.methodology-grid li{margin-bottom:8px}.update-record{border-top:1px solid var(--line);padding:20px 0 0;font-size:12px;color:var(--muted)}
.reveal-item{opacity:1;transform:none}.motion-ready .reveal-item{opacity:0;transform:translateY(16px)}.motion-ready .reveal-item.is-visible{opacity:1;transform:translateY(0);transition:opacity .55s ease var(--reveal-delay,0ms),transform .55s cubic-bezier(.2,.7,.25,1) var(--reveal-delay,0ms)}
@media(max-width:1050px){.election-hero-grid{gap:42px}.election-pulse{grid-template-columns:1fr}.race-board{grid-template-columns:repeat(2,minmax(0,1fr))}.center-heading .section-number{position:static;margin-right:10px}.voter-guide-grid{gap:45px}.methodology-grid{gap:28px}}
@media(max-width:760px){.election-hero-grid{grid-template-columns:1fr;gap:45px;padding-top:50px;padding-bottom:50px}.election-intro h1{font-size:clamp(71px,22vw,112px);margin-top:29px}.election-dek{font-size:20px}.countdown-panel{padding:26px 24px}.countdown strong{font-size:48px}.center-nav .shell{gap:23px}.election-pulse{padding-top:20px}.change-grid{grid-template-columns:1fr;background:transparent}.change-grid a{min-height:0;border-bottom:1px solid var(--line);padding-left:0;padding-right:0}.change-grid strong{margin-top:15px}.change-grid p{margin-top:8px}.center-section{padding-top:57px;padding-bottom:61px}.center-heading{grid-template-columns:1fr;gap:15px;margin-bottom:31px}.center-heading h2{font-size:46px}.center-heading>p{max-width:570px}.power-grid,.issue-grid,.voter-guide-grid{grid-template-columns:1fr}.power-card{min-height:385px;padding:27px 25px}.race-board{grid-template-columns:1fr}.race-toolbar{align-items:flex-start}.race-card{min-height:285px;padding:25px 23px}.development{grid-template-columns:75px 1fr;gap:18px}.development>div{grid-template-columns:1fr}.development-type{grid-row:auto}.development p{grid-column:1}.issue-card{min-height:280px;padding:26px 24px}.issue-card h3{margin-top:34px}.election-timeline li{grid-template-columns:1fr;gap:15px;padding-left:18px}.election-timeline li:before{left:0}.election-timeline time{padding-left:0}.election-timeline .timeline-election{margin:0 -12px;padding-left:30px;padding-right:12px}.election-timeline .timeline-election:before{left:12px}.voter-guide-section{padding:57px 0}.voter-guide-grid{gap:39px}.methodology-grid{grid-template-columns:1fr;gap:8px}.center-methodology summary{align-items:flex-start}.center-methodology summary span{font-size:23px}}
@media(max-width:480px){.election-intro h1{font-size:72px}.edition-status{display:grid;gap:5px}.edition-status span{border:0;padding:0}.countdown{gap:8px}.countdown strong{font-size:40px}.countdown span{font-size:10px}.seat-total strong{font-size:70px}.power-card header{align-items:flex-start;flex-direction:column;gap:5px}.race-toolbar{display:block}.race-toolbar>p{margin-top:13px}.race-meta{flex-direction:column}.development{grid-template-columns:1fr}.development>time{font-size:19px}.official-links a{align-items:flex-start;flex-direction:column;gap:6px}}
@media(prefers-reduced-motion:reduce){.cycle-progress span,.issue-card,.official-links b{transition:none}.issue-card:hover{transform:none}.motion-ready .reveal-item{opacity:1;transform:none;transition:none}}
