:root{color:#151923;background:#f6f7f9;font-family:Libre Franklin,Arial,sans-serif;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--forecast-blue: #1f6feb;--forecast-red: #d73a31;--forecast-purple: #7c3aed;--forecast-ink: #151923;--forecast-muted: #646d7b;--forecast-line: #d9dee7;--forecast-panel: #ffffff;--forecast-panel-soft: #f8fafc;--forecast-input: #ffffff;--forecast-chart-grid: #edf0f4;--forecast-chart-tick: #667085}html.dark{background:#090d14}html:has(body.forecast-react-body){overflow-x:hidden}html.dark body{background:#090d14}*{box-sizing:border-box}body{margin:0;background:#f6f7f9}body.forecast-react-body{overflow-x:hidden}button,input,select,textarea{font:inherit}.forecast-app{min-height:100vh;background:linear-gradient(180deg,#fff 0,#f6f7f9 360px),#f6f7f9;color:var(--forecast-ink)}.forecast-app.dark{color-scheme:dark;--forecast-blue: #60a5fa;--forecast-red: #f87171;--forecast-purple: #a78bfa;--forecast-ink: #f8fafc;--forecast-muted: #a9b3c2;--forecast-line: #263244;--forecast-panel: #111827;--forecast-panel-soft: #0f172a;--forecast-input: #0b1220;--forecast-chart-grid: rgba(148, 163, 184, .14);--forecast-chart-tick: #94a3b8;background:linear-gradient(180deg,#101826 0,#090d14 380px),#090d14}.forecast-topbar{position:sticky;top:0;z-index:20;display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:1rem;min-height:58px;padding:.55rem clamp(1rem,2.5vw,2rem);border-bottom:1px solid var(--forecast-line);background:#fffffff0;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.forecast-app.dark .forecast-topbar{background:#090d14f0}.brand-lockup{display:flex;align-items:center;gap:.7rem;min-width:0}.brand-mark{display:grid;place-items:center;width:34px;height:34px;flex:0 0 auto;border:2px solid #111827;color:#111827;text-decoration:none;font-size:.74rem;font-weight:900}.forecast-app.dark .brand-mark{border-color:#e5e7eb;color:#f8fafc}.brand-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.98rem;font-weight:900}.brand-status{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--forecast-muted);font-size:.72rem;font-weight:700}.forecast-nav{display:flex;align-items:center;gap:.25rem;border:1px solid var(--forecast-line);background:#f8fafc;padding:.2rem;overflow:visible}.forecast-app.dark .forecast-nav{background:#0f172a}.forecast-nav a{flex:0 0 auto;color:#293241;text-decoration:none;padding:.42rem .62rem;font-size:.76rem;font-weight:900}.forecast-app.dark .forecast-nav a{color:#cbd5e1}.forecast-nav a.active,.forecast-nav-group.active>.forecast-nav-root{background:#111827;color:#fff}.forecast-nav-group{position:relative;flex:0 0 auto}.forecast-nav-group:after{content:"";position:absolute;top:100%;left:0;width:max(100%,190px);height:.5rem}.forecast-nav-root{display:block}.forecast-nav-menu{position:absolute;top:calc(100% + .35rem);left:0;z-index:60;display:grid;min-width:190px;max-height:min(420px,calc(100vh - 96px));overflow-y:auto;overscroll-behavior:contain;padding:.3rem;border:1px solid var(--forecast-line);background:var(--forecast-panel);box-shadow:0 16px 34px #0f172a2e;opacity:0;pointer-events:none;transform:translateY(-4px);transition:opacity .14s ease,transform .14s ease}.forecast-nav-menu:before{content:"";position:absolute;left:0;right:0;bottom:100%;height:.5rem}.forecast-nav-group:last-child .forecast-nav-menu{right:0;left:auto}.forecast-nav-group:hover .forecast-nav-menu,.forecast-nav-group:focus-within .forecast-nav-menu{opacity:1;pointer-events:auto;transform:translateY(0)}.forecast-nav .forecast-nav-menu a{padding:.58rem .68rem;color:var(--forecast-ink);white-space:nowrap}.forecast-nav .forecast-nav-menu a:hover,.forecast-nav .forecast-nav-menu a:focus{background:#0f172a14}.forecast-theme-icon{width:38px!important;height:38px!important;justify-self:end;border:1px solid var(--forecast-line)!important;border-radius:4px!important;background:var(--forecast-panel)!important;color:var(--forecast-ink)!important}.forecast-app.dark .forecast-nav a.active,.forecast-app.dark .forecast-nav-group.active>.forecast-nav-root,.forecast-app.dark .forecast-theme-icon{background:#e5e7eb!important;color:#0b1220!important}.forecast-app.dark .forecast-nav-menu{background:#111827;box-shadow:0 18px 36px #0006}.forecast-app.dark .forecast-nav .forecast-nav-menu a:hover,.forecast-app.dark .forecast-nav .forecast-nav-menu a:focus{background:#e2e8f01a}.forecast-special-main{width:min(1180px,100%);margin:0 auto;padding:clamp(1.4rem,3vw,2.5rem) clamp(.9rem,2.4vw,1.5rem) 3rem}.forecast-special-page{display:grid;gap:1rem}.special-hero{display:grid;gap:.8rem;justify-items:center;text-align:center;padding:clamp(1.5rem,5vw,3.5rem) 0 clamp(1rem,3vw,2rem)}.special-hero h1{max-width:980px;margin:0;color:#151923;font-size:clamp(2.2rem,6vw,5.8rem);font-weight:900;line-height:.98;letter-spacing:0}.special-hero p{max-width:720px;margin:0;color:var(--forecast-muted);font-size:clamp(.9rem,1.5vw,1.05rem);font-weight:800}.joint-outcome-grid,.home-control-grid,.forecast-link-grid,.forecast-directory-grid{display:grid;gap:.75rem}.forecast-directory-grid{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}.forecast-directory-grid a{display:grid;gap:.5rem;min-height:150px;padding:1rem;border:1px solid var(--forecast-line);background:var(--forecast-panel);color:var(--forecast-ink);text-decoration:none}.forecast-directory-grid a span{color:var(--forecast-muted);font-size:.72rem;font-weight:900;text-transform:uppercase}.forecast-directory-grid a strong{font-size:clamp(1.2rem,3vw,2rem);line-height:1}.forecast-directory-grid a em{color:var(--forecast-muted);font-size:.9rem;font-style:normal;font-weight:800}.joint-outcome-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.home-control-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.joint-card,.control-mini-card,.forecast-link-grid a,.forecast-link-grid button{border:1px solid var(--forecast-line);background:#fff;color:var(--forecast-ink);text-decoration:none;box-shadow:0 1px 2px #141c260a}.joint-card,.control-mini-card{display:grid;gap:.45rem;padding:1rem}.joint-card span,.control-mini-card span,.forecast-link-grid em{color:var(--forecast-muted);font-size:.78rem;font-weight:800}.joint-card strong,.control-mini-card strong{font-size:clamp(1.7rem,3vw,2.4rem);font-weight:900;line-height:1}.control-mini-card em{color:var(--forecast-muted);font-size:.82rem;font-style:normal;font-weight:900}.forecast-loading-card{position:relative;overflow:hidden}.forecast-loading-card:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(148,163,184,.18),transparent);animation:forecastShimmer 1.4s ease-in-out infinite}.forecast-loading-card strong{color:var(--forecast-ink)}.forecast-loading-line{display:block;width:min(100%,220px);height:1em;border-radius:3px;background:var(--forecast-panel-soft);color:transparent}.forecast-loading-line.short{width:min(70%,180px)}.forecast-loading-track{position:relative;display:block;width:min(100%,230px);height:8px;overflow:hidden;border-radius:999px;background:var(--forecast-panel-soft)}.forecast-loading-track i{position:absolute;inset:0 auto 0 0;width:42%;border-radius:inherit;background:linear-gradient(90deg,var(--forecast-blue),var(--forecast-purple),var(--forecast-red));animation:forecastTrack 1.2s ease-in-out infinite}@keyframes forecastShimmer{to{transform:translate(100%)}}@keyframes forecastTrack{0%{transform:translate(-105%)}50%{transform:translate(80%)}to{transform:translate(245%)}}.forecast-link-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.forecast-link-grid a,.forecast-link-grid button{display:grid;gap:.25rem;min-height:86px;padding:.9rem;border-radius:0;text-align:left;cursor:pointer}.forecast-link-grid a:hover,.forecast-link-grid button:hover{border-color:#111827;transform:translateY(-1px)}.forecast-link-grid span{color:var(--forecast-ink);font-size:.95rem;font-weight:900}.forecast-home-page{gap:1.25rem}.forecast-home-hero{display:grid;justify-items:center;min-height:0;padding:clamp(1.25rem,4vw,3rem) 0 clamp(.75rem,2vw,1.35rem)}.forecast-home-hero-copy{display:grid;gap:1.05rem;align-content:center;justify-items:center;width:min(100%,1240px);margin:0 auto;text-align:center}.forecast-home-hero h1{max-width:1240px;margin:0;color:#151923;font-size:clamp(2.4rem,5.4vw,5.7rem);font-weight:900;line-height:1;letter-spacing:0}.forecast-home-hero p{max-width:780px;margin:0;color:var(--forecast-muted);font-size:clamp(.92rem,1.35vw,1.08rem);text-align:center;line-height:1.55;font-weight:750}.forecast-home-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:.6rem}.forecast-home-actions button,.control-mini-card button{display:inline-flex;align-items:center;justify-content:center;gap:.38rem;min-height:36px;border:1px solid var(--forecast-line);background:#fff;color:var(--forecast-ink);padding:0 .75rem;font-size:.78rem;font-weight:900;cursor:pointer}.forecast-home-actions button:first-child{border-color:#111827;background:#111827;color:#fff}.home-section-heading p{color:var(--forecast-muted);font-size:.72rem;font-weight:850}.joint-card{position:relative;min-height:126px}.joint-card i{display:block;align-self:end;width:100%;height:5px;overflow:hidden;background:#eef2f7}.joint-card i b{display:block;height:100%;width:66%}.joint-card.rep-outcome i b{background:linear-gradient(90deg,var(--forecast-red),#f87171)}.joint-card.dem-outcome i b{background:linear-gradient(90deg,var(--forecast-blue),#93c5fd)}.joint-card.split-outcome i b{background:linear-gradient(90deg,var(--forecast-red) 0 48%,#f8fafc 48% 52%,var(--forecast-blue) 52% 100%)}.home-control-grid{align-items:stretch}.control-mini-card{position:relative;overflow:hidden;min-height:190px;gap:.9rem;padding:1.05rem 1.1rem;border-left:4px solid var(--forecast-line)}.control-mini-card.rep-control{border-left-color:var(--forecast-red)}.control-mini-card.dem-control{border-left-color:var(--forecast-blue)}.control-mini-card strong{display:flex;align-items:baseline;flex-wrap:wrap;gap:.45rem}.control-mini-card strong small{color:var(--forecast-ink);font-size:.98rem;font-weight:850}.control-mini-card button{justify-self:start;margin-top:auto}.control-mini-seat-bar{display:grid;gap:.48rem}.control-mini-seat-bar>div{display:flex;align-items:center;height:12px;overflow:hidden;background:#f2f4f7}.control-mini-seat-bar span.dem{height:100%;background:linear-gradient(90deg,#0b2a4c,var(--forecast-blue),#9bd5ee)}.control-mini-seat-bar span.rep{height:100%;background:linear-gradient(90deg,#f8d2d2,var(--forecast-red),#6e0505)}.control-mini-seat-bar i{width:6px;align-self:stretch;background:#fff}.control-mini-seat-bar p{display:flex;justify-content:space-between;margin:0;color:var(--forecast-muted);font-size:.72rem;font-weight:900}.home-section-heading{display:flex;align-items:end;justify-content:space-between;gap:1rem;margin-top:.35rem}.home-section-heading h2{margin:0;color:var(--forecast-ink);font-size:clamp(1.25rem,2.2vw,1.8rem);line-height:1;font-weight:900}.home-section-heading p{max-width:520px;margin:0;text-align:right}.forecast-link-grid-primary{grid-template-columns:repeat(4,minmax(0,1fr))}.forecast-link-grid-library{grid-template-columns:repeat(3,minmax(0,1fr))}.forecast-link-grid button{position:relative;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;column-gap:.72rem;min-height:104px;padding:.95rem}.forecast-link-grid button em{grid-column:2}.forecast-link-icon{grid-row:1 / span 2;display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid var(--forecast-line);color:var(--forecast-muted)}.forecast-link-arrow{grid-row:1 / span 2;color:var(--forecast-muted)}.primary-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.8fr);gap:1rem}.primary-layout .forecast-panel{padding:1rem}.primary-layout h2{margin:0 0 .75rem;font-size:1rem;font-weight:900;text-transform:uppercase}.primary-table-panel,.primary-polls-panel{grid-column:1 / -1}.component-chip-row{display:flex;flex-wrap:wrap;justify-content:center;gap:.45rem}.component-chip-row span{border:1px solid var(--forecast-line);background:#fff;padding:.35rem .55rem;color:var(--forecast-muted);font-size:.72rem;font-weight:900}.primary-candidate-table{display:grid}.primary-candidate-row{display:grid;grid-template-columns:minmax(170px,.6fr) minmax(180px,1fr) minmax(90px,auto);gap:1rem;align-items:center;padding:.95rem 0;border-bottom:1px solid #edf0f4}.primary-candidate-row:last-child{border-bottom:0}.primary-candidate-row.inactive{opacity:.55}.primary-candidate-row strong{display:flex;align-items:center;gap:.45rem;color:var(--forecast-ink);font-size:.95rem;font-weight:900}.primary-candidate-row strong i{width:9px;height:9px;border-radius:999px}.primary-candidate-row span{display:block;margin-top:.2rem;color:var(--forecast-muted);font-size:.75rem;font-weight:800}.primary-candidate-row em{color:var(--forecast-ink);font-size:1.45rem;font-style:normal;font-weight:900;text-align:right}.primary-probability-meter{height:10px;background:#edf1f6;overflow:hidden}.primary-probability-meter span{display:block;height:100%}.primary-latest-polls{width:100%;border-collapse:collapse}.primary-latest-polls td{padding:.65rem 0;border-bottom:1px solid #edf0f4;color:var(--forecast-muted);font-size:.78rem;font-weight:800;vertical-align:top}.primary-latest-polls td:nth-child(2){color:var(--forecast-ink)}.forecast-shell{display:grid;grid-template-columns:188px minmax(0,1fr) 360px;gap:.9rem;width:min(1440px,100%);margin:0 auto;padding:.9rem clamp(.75rem,2vw,1.35rem) 2rem}.forecast-shell.no-inspector{grid-template-columns:188px minmax(0,1fr);width:min(1320px,100%)}.forecast-shell.no-rail{grid-template-columns:minmax(0,1fr)}.forecast-overview-page .forecast-shell.no-inspector,.forecast-detail-page .forecast-shell.no-inspector{grid-template-columns:1fr;width:min(1320px,100%)}.forecast-overview-page .forecast-shell.no-inspector .forecast-main,.forecast-detail-page .forecast-shell.no-inspector .forecast-main{order:1}.forecast-overview-page .forecast-shell.no-inspector .forecast-rail,.forecast-detail-page .forecast-shell.no-inspector .forecast-rail{order:2;position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.forecast-rail,.forecast-inspector{align-self:start;position:sticky;top:74px}.forecast-rail{display:flex;flex-direction:column;gap:.8rem}.rail-section,.forecast-panel,.forecast-inspector,.forecast-hero{border:1px solid var(--forecast-line);background:var(--forecast-panel);box-shadow:0 1px 2px #141c260a}.rail-section{padding:.85rem}.rail-label{margin-bottom:.5rem;color:#111827;font-size:.73rem;font-weight:900;text-transform:uppercase}.search-box{display:flex;align-items:center;gap:.45rem;min-height:36px;border:1px solid var(--forecast-line);background:#fff;padding:0 .55rem}.search-box input{width:100%;min-width:0;border:0;outline:0;color:var(--forecast-ink);font-size:.78rem;font-weight:700}.rail-stat{display:flex;justify-content:space-between;gap:.75rem;padding:.38rem 0;border-bottom:1px solid #edf0f4;color:var(--forecast-muted);font-size:.78rem;font-weight:800}.rail-stat:last-child{border-bottom:0}.rail-stat strong{color:var(--forecast-ink)}.rail-list{display:grid;gap:.38rem}.rail-race{display:grid;gap:.12rem;width:100%;border:1px solid transparent;background:transparent;color:var(--forecast-ink);cursor:pointer;padding:.42rem .45rem;text-align:left}.rail-race:hover,.rail-race.active{border-color:#c9d2de;background:#f3f6fa}.rail-race span{font-size:.78rem;font-weight:900}.rail-race em,.rail-empty{color:var(--forecast-muted);font-size:.7rem;font-style:normal;font-weight:700}.forecast-main{display:grid;gap:.9rem;min-width:0}.forecast-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1rem;padding:1rem}.forecast-hero-compact{grid-template-columns:1fr;gap:.45rem;padding:.8rem .95rem}.forecast-hero-editorial{display:block;border:0;background:transparent;box-shadow:none;padding:1.2rem 0 .2rem;text-align:center}.forecast-hero h1{margin:0;font-size:clamp(1.45rem,2.4vw,2.45rem);line-height:1.02;font-weight:900;letter-spacing:0}.forecast-hero .hero-election-sentence{max-width:1080px;margin:0 auto;font-size:clamp(2.4rem,5.6vw,5.1rem);line-height:1.04;font-weight:900;letter-spacing:0}.forecast-hero .hero-detail-sentence{max-width:1240px;text-align:left;font-size:clamp(2.6rem,5.1vw,4.9rem)}.hero-detail-sentence em{font-style:italic}.hero-detail-sentence .tossup-headline{color:var(--forecast-purple)}.forecast-hero-compact h1{margin-top:.32rem;font-size:clamp(1.18rem,1.45vw,1.6rem)}.forecast-hero p{max-width:760px;margin:.45rem 0 0;color:var(--forecast-muted);font-size:.92rem;line-height:1.45;font-weight:650}.forecast-hero-compact p{margin-top:.16rem;font-size:.82rem}.forecast-hero-editorial p{max-width:none;margin-top:.7rem;font-size:.76rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.hero-updated{margin-top:1rem;color:#777b83;font-size:.74rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase}.hero-seat-bar{max-width:1180px;margin:1.5rem auto 0}.hero-seat-gradient{display:flex;height:14px;overflow:hidden;background:#f2f4f7}.hero-seat-dem{background:linear-gradient(90deg,#0b2a4c,#0b74b8,#9bd5ee)}.hero-seat-rep{background:linear-gradient(90deg,#f8d2d2,#e13e3e,#6e0505)}.hero-seat-gap{width:8px;flex:0 0 8px;background:#f6f7f9}.hero-seat-labels{display:flex;justify-content:space-between;gap:1rem;margin-top:.72rem;font-size:.95rem;font-weight:900}.hero-seat-labels span:first-child{color:#0875bd}.hero-seat-labels span:last-child{color:#d10000}.hero-scenario-summary{display:inline-flex;align-items:center;justify-content:center;gap:.75rem;max-width:min(100%,980px);margin:1rem auto 0;border:1px solid var(--forecast-line);background:#fbfcfe;padding:.62rem .78rem;color:var(--forecast-muted);font-size:.82rem;line-height:1.35;font-weight:800}.hero-scenario-summary strong{color:#111827;font-weight:900}.hero-scenario-summary.running{border-color:#f59e0b;background:#fff8ed}.hero-scenario-summary.active{display:grid;grid-template-columns:auto minmax(0,1fr);text-align:left}.hero-scenario-shifts{display:flex;flex-wrap:wrap;justify-content:center;gap:.38rem}.hero-control-summary{display:grid;gap:.12rem;max-width:720px}.hero-control-summary span,.hero-control-summary em,.hero-compact-meta span{color:var(--forecast-muted);font-style:normal;font-weight:900;text-transform:uppercase}.hero-control-summary span{font-size:.62rem}.hero-control-summary strong{display:block;font-size:clamp(1.65rem,3.2vw,2.8rem);line-height:.98;font-weight:900}.hero-control-summary em{font-size:.82rem;text-transform:none}.hero-compact-meta{display:flex;flex-wrap:wrap;justify-content:center;gap:.28rem .9rem;margin-top:.62rem}.hero-compact-meta span{font-size:.58rem}.hero-compact-meta b{color:#111827;font-weight:900}.hero-metrics{display:grid;grid-template-columns:repeat(4,minmax(90px,1fr));gap:.5rem;align-content:stretch}.metric{min-width:94px;border-left:4px solid #111827;background:#f8fafc;padding:.55rem .65rem}.metric span{display:block;color:var(--forecast-muted);font-size:.66rem;font-weight:900;text-transform:uppercase}.metric strong{display:block;margin-top:.18rem;font-size:1rem;font-weight:900}.forecast-alert,.forecast-warning{border:1px solid #f1c9cd;background:#fff4f4;color:#8a1f2d;padding:.7rem .85rem;font-size:.78rem;font-weight:800}.forecast-warning{border-color:#f5d28f;background:#fff8e6;color:#7a4a00}.forecast-grid{display:grid;gap:.9rem}.forecast-overview-page .forecast-grid{gap:1.15rem}.forecast-overview-page .map-panel{border:0;background:transparent;box-shadow:none;padding:0}.forecast-overview-page .map-panel>.panel-title-row{margin-bottom:.3rem}.forecast-overview-page .map-panel:not(.house-map-panel)>.panel-title-row{display:none}.forecast-overview-page .house-map-title-row{justify-content:flex-end}.forecast-overview-page .map-panel>.panel-title-row>div{display:none}.forecast-overview-page .map-frame{min-height:560px;border:0;background:transparent}.forecast-overview-page .map-frame svg{max-height:720px}.forecast-overview-page .house-district-map-frame{min-height:610px}.forecast-overview-page .map-legend{justify-content:center}.forecast-detail-page .forecast-hero-editorial{padding:1.4rem 0 .35rem}.forecast-detail-page .map-panel{border:0;background:transparent;box-shadow:none;padding:0}.forecast-detail-page .map-panel>.panel-title-row{display:none}.forecast-detail-page .map-frame{min-height:430px;border:0;background:transparent}.forecast-detail-page .map-frame svg{max-height:470px}.forecast-detail-page .house-district-map-frame{min-height:470px}.forecast-detail-page .map-legend{display:none}.detail-forecast-summary{overflow:hidden;border:1px solid var(--forecast-line);border-radius:8px;background:#ffffffe6}.detail-forecast-head,.detail-forecast-row{display:grid;grid-template-columns:minmax(180px,.9fr) minmax(260px,1.1fr) minmax(150px,.55fr);align-items:center;gap:1.25rem}.detail-forecast-head{min-height:42px;border-bottom:1px solid var(--forecast-line);padding:0 .9rem;color:#70747b;font-size:.7rem;font-weight:900;letter-spacing:.06em;text-transform:uppercase}.detail-forecast-row{min-height:106px;border-bottom:1px solid #edf0f4;padding:.95rem .9rem}.detail-forecast-row:last-child{border-bottom:0}.detail-candidate-name{display:flex;align-items:center;gap:.5rem;min-width:0}.detail-candidate-name strong{overflow-wrap:anywhere;font-size:.88rem;font-weight:900}.detail-candidate-name span{display:inline-grid;place-items:center;width:18px;height:18px;flex:0 0 auto;border-radius:4px;color:#fff;font-size:.62rem;font-weight:900}.detail-vote-share{min-width:0}.detail-vote-meter{position:relative;display:grid;align-items:center;min-height:28px}.detail-vote-track{position:relative;display:block;height:4px;background:#e6e6e6}.detail-vote-track:before,.detail-vote-track:after{content:"";position:absolute;top:-5px;width:1px;height:14px;background:#c9cdd4}.detail-vote-track:before{left:50%}.detail-vote-track:after{left:100%}.detail-vote-track i{position:absolute;top:50%;width:10px;height:10px;border:2px solid;border-radius:999px;transform:translate(-50%,-50%);z-index:2}.detail-vote-band{position:absolute;top:50%;height:12px;opacity:.18;transform:translateY(-50%);z-index:1}.detail-vote-meter strong{position:absolute;left:50%;top:-.9rem;transform:translate(-50%);font-size:.72rem;font-weight:900}.detail-vote-axis{display:grid;grid-template-columns:repeat(3,1fr);margin-top:.35rem;color:#70747b;font-size:.62rem;font-weight:700}.detail-vote-axis span:nth-child(2){text-align:center}.detail-vote-axis span:last-child{text-align:right}.detail-vote-source{display:flex;flex-wrap:wrap;gap:.3rem .65rem;margin-top:.1rem;color:#687083;font-size:.68rem;font-weight:800}.detail-probability{display:grid;gap:.22rem;justify-self:end;text-align:right}.detail-probability strong{font-size:clamp(2.2rem,4.2vw,4rem);line-height:1;font-weight:850}.detail-probability span{color:var(--forecast-muted);font-size:.68rem;font-weight:900;text-transform:uppercase}.detail-time-charts{display:grid;gap:.75rem}.detail-time-chart-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.detail-time-chart{display:grid;gap:.5rem;min-width:0}.detail-time-chart h3{margin:0;color:#111827;font-size:.78rem;font-weight:900;text-transform:uppercase}.detail-time-chart .chart-frame{height:270px}.senate-control-dashboard{display:grid;gap:1rem}.custom-forecast-link-card{display:flex;align-items:center;justify-content:space-between;gap:1rem;border-left:4px solid var(--forecast-purple)}.custom-forecast-link-card span,.custom-scenario-header span,.custom-scenario-stats span{color:var(--forecast-muted);font-size:.68rem;font-weight:900;text-transform:uppercase}.custom-forecast-link-card h2,.custom-scenario-header h2{margin:.16rem 0 0;color:#111827;font-size:1.08rem;font-weight:900}.custom-forecast-link-card p,.custom-scenario-header p{max-width:760px;margin:.24rem 0 0;color:var(--forecast-muted);font-size:.82rem;line-height:1.4;font-weight:700}.custom-forecast-link-card a,.custom-scenario-actions button{display:inline-flex;align-items:center;justify-content:center;min-height:36px;border:1px solid #111827;background:#111827;color:#fff;padding:0 .72rem;text-decoration:none;font-size:.76rem;font-weight:900}.custom-scenario-panel{display:grid;gap:.85rem}.custom-scenario-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.custom-scenario-actions{display:inline-flex;flex-wrap:wrap;justify-content:flex-end;gap:.45rem}.custom-scenario-actions button:last-child{border-color:var(--forecast-line);background:#fff;color:#111827}.custom-scenario-actions button:disabled{opacity:.46;cursor:not-allowed}.custom-scenario-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border:1px solid var(--forecast-line)}.custom-scenario-stats div{min-width:0;border-right:1px solid var(--forecast-line);background:#fbfcfe;padding:.62rem .7rem}.custom-scenario-stats div:last-child{border-right:0}.custom-scenario-stats strong{display:block;margin-top:.18rem;color:#111827;font-size:.92rem;font-weight:900}.custom-scenario-list{display:grid;border-top:1px solid var(--forecast-line)}.custom-scenario-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:.75rem;border-bottom:1px solid var(--forecast-line);padding:.54rem 0}.custom-scenario-row strong,.custom-scenario-row span{display:block}.custom-scenario-row strong{color:#111827;font-size:.84rem;font-weight:900}.custom-scenario-row span,.custom-scenario-empty{color:var(--forecast-muted);font-size:.75rem;font-weight:750}.scenario-mode-chip,.scenario-override-badge{border:1px solid var(--forecast-line);background:#f8fafc;color:#111827;font-size:.68rem;font-weight:900;text-transform:uppercase}.scenario-mode-chip{min-width:78px;min-height:28px;cursor:pointer}.scenario-mode-chip.rep,.scenario-override-badge.rep{border-color:var(--forecast-red);color:var(--forecast-red)}.scenario-mode-chip.dem,.scenario-override-badge.dem{border-color:var(--forecast-blue);color:var(--forecast-blue)}.scenario-mode-chip.tossup,.scenario-override-badge.tossup{border-color:var(--forecast-purple);color:var(--forecast-purple)}.scenario-override-badge{display:inline-flex;width:fit-content;margin-top:.25rem;padding:.12rem .28rem}.state-geo.scenario-overridden,.district-geo.scenario-overridden{stroke:#111827;stroke-width:2.4}.seat-strip-row.scenario-overridden{box-shadow:inset 4px 0 0 var(--forecast-purple)}.control-header{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.control-header h2{margin:0;color:#111827;font-size:1.35rem;line-height:1.05;font-weight:900}.control-header p{max-width:780px;margin:.32rem 0 0;color:var(--forecast-muted);font-size:.82rem;line-height:1.42;font-weight:700}.control-model-meta{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.35rem}.control-model-meta span{border:1px solid var(--forecast-line);background:#f8fafc;color:#2b3442;padding:.28rem .4rem;font-size:.66rem;font-weight:900;text-transform:uppercase}.control-scoreboard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--forecast-line)}.electoral-dashboard .control-scoreboard{grid-template-columns:repeat(5,minmax(0,1fr))}.control-score{min-width:0;border-right:1px solid var(--forecast-line);background:#fbfcfe;padding:.72rem .78rem}.control-score:last-child{border-right:0}.control-score span,.control-score em{display:block;color:var(--forecast-muted);font-size:.66rem;font-style:normal;font-weight:900;text-transform:uppercase}.control-score strong{display:block;margin-top:.25rem;color:#111827;font-size:1.35rem;line-height:1;font-weight:900}.control-score em{margin-top:.28rem;text-transform:none}.scenario-shift-badge{display:inline-flex;width:fit-content;margin-top:.45rem;border:1px solid #cbd5e1;background:#f8fafc;color:#475569;padding:.18rem .34rem;font-size:.64rem;line-height:1.1;font-weight:900;text-transform:uppercase}.scenario-shift-badge.rep{border-color:#dc26266b;background:#dc26261a;color:#b91c1c}.scenario-shift-badge.dem{border-color:#2563eb6b;background:#2563eb1a;color:#1d4ed8}.control-score-primary{background:#fff}.control-score-primary strong{font-size:1.8rem}.control-analytics-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:.85rem}.control-history-stack{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.85rem}.control-chart-card{min-width:0;border:1px solid var(--forecast-line);background:#fff;padding:.72rem}.control-history-card{display:grid;grid-template-rows:auto minmax(0,1fr);min-height:280px}.control-history-chart-frame{position:relative;height:230px;max-height:230px;min-height:0;margin-top:.65rem;overflow:hidden;contain:layout size paint}.control-history-chart-frame canvas{display:block!important;width:100%!important;height:100%!important;max-height:230px}.control-histogram-card{min-height:330px}.electoral-histogram-card{min-height:360px}.control-chart-card h3,.control-section-heading h3{margin:0;color:#111827;font-size:.86rem;font-weight:900;text-transform:uppercase}.control-chart-heading{display:flex;justify-content:space-between;gap:.75rem}.control-chart-heading span,.control-section-heading p{margin:0;color:var(--forecast-muted);font-size:.68rem;font-weight:800}.seat-histogram{position:relative;display:flex;align-items:flex-end;gap:.16rem;min-width:0;max-width:100%;height:210px;margin-top:.9rem;border-bottom:2px solid #111827;padding:0 .35rem;overflow:hidden}.seat-histogram.dense{gap:0}.electoral-histogram{height:240px}.histogram-bin{position:relative;display:flex;align-items:flex-end;flex:1 1 0;height:100%;min-width:0;cursor:help;outline:none}.histogram-bin:hover .histogram-bar,.histogram-bin:focus .histogram-bar{filter:brightness(.94)}.histogram-bar{width:100%;min-width:1px;min-height:4px}.seat-histogram.dense .histogram-bar{min-width:0}.histogram-bar.dem{background:#477ba9}.histogram-bar.rep{background:#d94841}.histogram-control-line{position:absolute;left:-.08rem;bottom:0;width:2px;height:calc(100% + 10px);background:#111827}.histogram-axis{display:flex;justify-content:space-between;gap:.75rem;margin-top:.55rem;color:var(--forecast-muted);font-size:.68rem;font-weight:900}.seat-histogram-tooltip{pointer-events:none;position:fixed;z-index:90;width:372px;max-width:calc(100vw - 24px);border:1px solid rgba(148,163,184,.58);border-radius:8px;background:#fff;color:#111827;padding:.78rem .84rem;box-shadow:0 24px 56px #0f172a42;contain:layout paint}.seat-histogram-tooltip.compact{width:286px}.seat-tooltip-header{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.seat-tooltip-header strong{font-size:1rem;font-weight:900}.seat-tooltip-header span{color:#111827;font-size:.9rem;font-weight:900}.seat-tooltip-map-label{margin-top:.58rem;color:#475569;font-size:.66rem;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.seat-tooltip-map{height:176px;margin-top:.3rem;border:1px solid rgba(148,163,184,.42);background:#f8fafc;overflow:hidden}.seat-tooltip-map svg{display:block;width:100%;height:100%}.seat-tooltip-map-legend{display:flex;gap:.8rem;margin-top:.34rem;color:#475569;font-size:.62rem;font-weight:900}.seat-tooltip-map-legend span{display:inline-flex;align-items:center;gap:.24rem}.seat-tooltip-map-legend i{width:.48rem;height:.48rem;border-radius:999px}.seat-tooltip-map-legend i.dem{background:#477ba9}.seat-tooltip-map-legend i.rep{background:#d94841}.seat-tooltip-map-legend i.none{background:#d8dee8}.seat-tooltip-control{margin-top:.48rem;border-top:1px solid rgba(148,163,184,.34);padding-top:.48rem;font-size:.76rem;font-weight:900;text-transform:uppercase}.seat-tooltip-control.dem{color:#1d4f7a}.seat-tooltip-control.rep{color:#b91c1c}.seat-tooltip-meta{display:grid;gap:.22rem;margin-top:.46rem;color:#475569;font-size:.68rem;font-weight:800}.seat-tooltip-edge-list{display:grid;grid-template-columns:1fr 1fr;gap:.28rem .55rem;margin-top:.52rem;border-top:1px solid rgba(148,163,184,.24);padding-top:.48rem;color:#1f2937;font-size:.65rem;font-weight:800}.seat-tooltip-edge-list span{display:inline-flex;align-items:center;gap:.28rem;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-tooltip-edge-list i{width:.48rem;height:.48rem;flex:0 0 auto;border-radius:999px}.seat-tooltip-edge-list i.dem{background:#60a5fa}.seat-tooltip-edge-list i.rep{background:#f87171}.forecast-tooltip-portal.dark .seat-histogram-tooltip{border-color:#334155;background:#111827;color:#f8fafc;box-shadow:0 24px 56px #00000075}.forecast-tooltip-portal.dark .seat-tooltip-header span,.forecast-tooltip-portal.dark .seat-tooltip-header strong{color:#f8fafc}.forecast-tooltip-portal.dark .seat-tooltip-map-label,.forecast-tooltip-portal.dark .seat-tooltip-map-legend,.forecast-tooltip-portal.dark .seat-tooltip-meta{color:#aab6c8}.forecast-tooltip-portal.dark .seat-tooltip-map{border-color:#334155;background:#0b1220}.forecast-tooltip-portal.dark .seat-tooltip-control{border-top-color:#334155}.forecast-tooltip-portal.dark .seat-tooltip-control.dem{color:#93c5fd}.forecast-tooltip-portal.dark .seat-tooltip-control.rep{color:#fca5a5}.forecast-tooltip-portal.dark .seat-tooltip-edge-list{border-top-color:#334155;color:#e5e7eb}.presidential-split-units{display:grid;gap:.85rem}.split-unit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.55rem}.split-unit-grid button{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border:1px solid var(--forecast-line);background:var(--forecast-panel-soft);color:var(--forecast-text);padding:.72rem .78rem;text-align:left;cursor:pointer}.split-unit-grid button:hover,.split-unit-grid button:focus-visible{border-color:#1f6feb73;outline:none;transform:translateY(-1px)}.split-unit-grid span,.split-unit-grid strong,.split-unit-grid em,.split-unit-grid b{min-width:0}.split-unit-grid span{display:grid;gap:.18rem}.split-unit-grid strong,.split-unit-grid b{font-size:.84rem;font-weight:900}.split-unit-grid em{color:var(--forecast-muted);font-size:.68rem;font-style:normal;font-weight:800}.individual-seat-strip{display:grid;gap:.55rem;border:1px solid var(--forecast-line);background:#fff;padding:.72rem}.control-section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:.75rem}.seat-axis,.seat-strip-row{display:grid;grid-template-columns:150px minmax(260px,1fr) 190px;gap:.75rem;align-items:center}.seat-axis{color:var(--forecast-muted);font-size:.68rem;font-weight:900;padding:.1rem 0}.seat-axis>span{min-width:0}.seat-axis-track{grid-column:2;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;gap:.15rem}.seat-axis-track span,.seat-axis-track strong{min-width:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.seat-axis-track span:nth-child(-n+2){color:#477ba9}.seat-axis-track strong{color:#111827;text-transform:uppercase}.seat-axis-track span:nth-child(n+4){color:#d94841}.seat-strip-rows{display:grid;border-top:1px solid var(--forecast-line)}.individual-seat-strip-scroll .seat-strip-rows{max-height:min(720px,70vh);overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable}.individual-seat-strip-scroll .seat-strip-rows:focus-visible{outline:2px solid #111827;outline-offset:2px}.seat-strip-row{width:100%;min-height:40px;border:0;border-bottom:1px solid var(--forecast-line);background:#fff;color:inherit;cursor:pointer;padding:0;text-align:left}.seat-strip-row:hover,.seat-strip-row:focus{background:#fff;box-shadow:inset 4px 0 #111827,inset 0 0 0 1px #cbd5e1;outline:none}.seat-strip-row:focus{box-shadow:inset 4px 0 #111827,inset 0 0 0 2px #111827}.seat-strip-state{min-width:0}.seat-strip-state strong,.seat-strip-state span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-strip-state strong{color:#111827;font-size:.82rem;font-weight:900}.seat-strip-state span{margin-top:.1rem;color:var(--forecast-muted);font-size:.62rem;font-weight:800}.seat-strip-track{position:relative;height:26px;background:linear-gradient(90deg,#1f6feb14,#7c3aed0d 50%,#d73a3114),repeating-linear-gradient(90deg,transparent 0,transparent calc(16.666% - 1px),rgba(17,24,39,.18) calc(16.666% - 1px),rgba(17,24,39,.18) 16.666%)}.seat-strip-midline{position:absolute;left:50%;top:-4px;bottom:-4px;width:2px;background:#111827}.seat-dot{position:absolute;top:50%;width:18px;height:18px;transform:translate(-50%,-50%);border:5px solid currentColor;border-radius:50%;background:#fff;box-shadow:0 1px 2px #11182724}.seat-dot.toss{border-color:#8b4b7c}.seat-strip-probability{display:flex;align-items:center;justify-content:flex-end;gap:.45rem;min-width:0}.seat-strip-probability span:first-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--forecast-muted);font-size:.68rem;font-weight:850}.seat-rating{flex:0 0 auto;min-width:76px;color:#fff;padding:.22rem .42rem;text-align:center;font-size:.68rem;font-weight:900;text-transform:uppercase}.seat-rating.toss{background:#8b4b7c}.seat-show-more{justify-self:center;min-height:36px;border:1px solid var(--forecast-line);background:#f8fafc;color:#111827;cursor:pointer;padding:0 1.1rem;font-size:.72rem;font-weight:900;text-transform:uppercase}.seat-show-more:hover,.seat-show-more:focus{border-color:#111827;background:#111827;color:#fff;outline:none}.control-warning{border:1px solid #f5d28f;background:#fff8e6;color:#7a4a00;padding:.56rem .65rem;font-size:.7rem;font-weight:800}.individual-seat-tooltip{pointer-events:none;position:fixed;z-index:90;width:340px;border:1px solid rgba(226,232,240,.24);background:linear-gradient(135deg,#0f172af7,#111827f0);color:#fff;padding:.72rem .78rem;box-shadow:0 22px 46px #0f172a52;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.individual-seat-tooltip-meta{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.52rem}.individual-seat-tooltip-meta span{border:1px solid rgba(148,163,184,.28);background:#ffffff0f;color:#dbeafe;padding:.14rem .32rem;font-size:.63rem;font-weight:900;text-transform:uppercase}.individual-seat-tooltip-races{display:grid;gap:.5rem;margin-top:.62rem;border-top:1px solid rgba(148,163,184,.34);padding-top:.56rem}.individual-seat-tooltip-race{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.65rem;align-items:baseline}.individual-seat-tooltip-race strong,.individual-seat-tooltip-race span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.individual-seat-tooltip-race strong{color:#f8fafc;font-size:.74rem;font-weight:900}.individual-seat-tooltip-race span,.individual-seat-tooltip-race em,.individual-seat-tooltip-empty{color:#cbd5e1;font-size:.66rem;font-style:normal;font-weight:800}.individual-seat-tooltip-race em{color:#fff;font-weight:900}.individual-seat-tooltip-empty{margin-top:.62rem;border-top:1px solid rgba(148,163,184,.34);padding-top:.56rem;line-height:1.35}.forecast-panel{min-width:0;padding:.9rem}.panel-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;margin-bottom:.65rem}.panel-title-row h2{display:flex;align-items:center;gap:.38rem;margin:0;color:#111827;font-size:.98rem;font-weight:900}.panel-title-row p{margin:.2rem 0 0;color:var(--forecast-muted);font-size:.78rem;line-height:1.35;font-weight:650}.house-map-title-row{align-items:center}.district-state-filter{display:inline-flex;align-items:center;gap:.4rem;color:var(--forecast-muted);font-size:.72rem;font-weight:900;text-transform:uppercase}.district-state-filter select{height:32px;min-width:142px;border:1px solid var(--forecast-line);border-radius:4px;background:#fff;color:#111827;font:inherit;text-transform:none}.map-frame{position:relative;overflow:hidden;min-height:360px;border:1px solid #edf0f4;background:#fbfcfe}.house-district-map-frame{min-height:430px;overflow:hidden}.house-district-map-frame svg{max-height:640px}.map-frame svg{display:block;width:100%;height:auto;max-height:510px}.forecast-map-loading-wave{position:absolute;top:0;right:0;bottom:0;left:0;z-index:5;display:grid;place-items:center;overflow:hidden;pointer-events:none;background:#f8fafc7a;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.forecast-map-loading-wave:before,.forecast-map-loading-wave:after,.forecast-map-loading-wave i{content:"";position:absolute;top:-18%;right:-26%;bottom:-18%;left:-26%;background:linear-gradient(100deg,#2365d8c7,#2365d8c7 24%,#ffffffb8 24%,#ffffffb8 44%,#e53935c2 44%,#e53935c2 64%,#ffffffb8 64%,#ffffffb8 78%,#2365d8bd 78%,#2365d8bd);background-size:180% 100%;filter:blur(10px);opacity:.62;transform-origin:center;animation:forecastFlagWave 2.8s ease-in-out infinite}.forecast-map-loading-wave:after{top:-30%;right:-12%;bottom:-30%;left:-12%;opacity:.36;filter:blur(22px);animation-duration:3.6s;animation-direction:reverse}.forecast-map-loading-wave i{top:18%;right:8%;bottom:18%;left:8%;border-radius:999px;opacity:.48;filter:blur(14px);animation-duration:2.15s}.forecast-map-loading-wave span{position:relative;z-index:1;border:1px solid rgba(255,255,255,.7);border-radius:4px;background:#0f172abd;color:#fff;padding:.5rem .72rem;font-size:.72rem;font-weight:900;letter-spacing:0;text-transform:uppercase;box-shadow:0 14px 30px #0f172a2e}@keyframes forecastFlagWave{0%{background-position:0% 50%;transform:translate(-4%) skew(-8deg) scaleY(.96)}50%{background-position:100% 50%;transform:translate(4%) skew(8deg) scaleY(1.04)}to{background-position:0% 50%;transform:translate(-4%) skew(-8deg) scaleY(.96)}}.state-geo{outline:none;transition:fill .12s ease,stroke .12s ease}.state-geo.live{cursor:pointer}.state-geo.control{cursor:help}.state-geo.live:hover,.state-geo.live:focus,.state-geo.control:hover,.state-geo.control:focus{stroke:#111827;stroke-width:2}.map-legend{display:flex;flex-wrap:wrap;gap:.7rem 1rem;margin-top:.65rem;color:var(--forecast-muted);font-size:.72rem;font-weight:800}.map-legend span{display:inline-flex;align-items:center;gap:.35rem}.map-legend i{display:inline-block;width:12px;height:12px;border:1px solid #cbd3df}.legend-dem{background:var(--forecast-blue)}.legend-rep{background:var(--forecast-red)}.legend-toss{background:var(--forecast-purple)}.legend-none{background:#e3e8ef}.legend-trial{background:#dbe3ee}.forecast-map-tooltip{pointer-events:none;position:fixed;z-index:80;width:300px;border:1px solid rgba(226,232,240,.24);background:linear-gradient(135deg,#0f172af7,#111827f0);color:#fff;padding:.72rem .78rem;box-shadow:0 22px 46px #0f172a52;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.house-district-tooltip{width:320px}.map-tooltip-header{display:flex;align-items:flex-start;justify-content:space-between;gap:.75rem}.map-tooltip-header strong{min-width:0;font-size:1rem;line-height:1.05;font-weight:900}.map-tooltip-header span,.map-tooltip-meta,.map-tooltip-lead em,.map-tooltip-empty{color:#cbd5e1;font-size:.68rem;font-weight:800}.map-tooltip-header span{flex:0 0 auto;text-align:right;text-transform:uppercase}.map-tooltip-note{width:fit-content;margin-top:.48rem;border:1px solid rgba(251,191,36,.36);background:#fbbf241f;color:#fde68a;padding:.12rem .36rem;font-size:.63rem;font-weight:900;text-transform:uppercase}.map-tooltip-lead{margin-top:.65rem;border-top:1px solid rgba(148,163,184,.34);padding-top:.62rem}.map-tooltip-lead span,.map-tooltip-lead em{display:block}.map-tooltip-lead span{font-size:.86rem;font-weight:900;line-height:1.2}.map-tooltip-lead em{margin-top:.16rem;font-style:normal}.map-tooltip-races{display:grid;gap:.4rem;margin-top:.68rem}.map-tooltip-race{display:flex;align-items:center;justify-content:space-between;gap:.75rem;border-top:1px solid rgba(148,163,184,.22);padding-top:.42rem;font-size:.72rem}.map-tooltip-race span{display:inline-flex;align-items:center;min-width:0;gap:.38rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#f8fafc;font-weight:850}.map-tooltip-race i{display:inline-block;width:8px;height:8px;flex:0 0 auto;border-radius:50%}.map-tooltip-race strong{flex:0 0 auto;font-weight:900}.map-tooltip-meta{display:flex;justify-content:space-between;gap:.75rem;margin-top:.7rem;border-top:1px solid rgba(148,163,184,.34);padding-top:.5rem}.map-tooltip-empty{margin-top:.62rem;border-top:1px solid rgba(148,163,184,.34);padding-top:.6rem;line-height:1.35}.race-table-paper{border:1px solid var(--forecast-line);border-radius:0!important;overflow:hidden}.race-table-paper .MuiTableHead-root th{background:#f3f5f8;color:#2a3340;font-size:.7rem;font-weight:900;text-transform:uppercase}.race-table-paper .MuiTableBody-root td{color:#222a35;font-size:.76rem;font-weight:700}.candidate-cell{display:inline-flex;align-items:center;max-width:100%;min-width:0;gap:.42rem;font-weight:850}.candidate-cell i{display:inline-block;width:9px;height:9px;flex:0 0 auto;border-radius:50%}.candidate-cell span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.forecast-inspector{display:flex;flex-direction:column;gap:.8rem;padding:.95rem}.inspector-kicker{color:var(--forecast-muted);font-size:.68rem;font-weight:900;text-transform:uppercase}.forecast-inspector h2{margin:-.2rem 0 0;font-size:1.42rem;line-height:1.05;font-weight:900}.inspector-favorite{display:flex;align-items:center;gap:.65rem;padding:.75rem;border:1px solid var(--forecast-line);background:#fbfcfe}.inspector-favorite>span{display:block;width:10px;height:42px}.inspector-favorite strong,.inspector-favorite em{display:block}.inspector-favorite strong{font-size:.95rem;font-weight:900}.inspector-favorite em{margin-top:.18rem;color:var(--forecast-muted);font-size:.74rem;font-style:normal;font-weight:800}.result-source{display:flex;align-items:center;justify-content:space-between;gap:.65rem;border:1px solid #d8e3f2;background:#f6faff;color:#314055;padding:.48rem .55rem;font-size:.7rem;font-weight:850}.result-source.compact{margin-bottom:.45rem;font-size:.66rem}.result-source a{flex:0 0 auto;color:#0f4f9e;font-weight:900;text-decoration:none}.result-source a:hover{text-decoration:underline}.model-notes{display:grid;gap:.32rem;border:1px solid #ead39b;background:#fff8e6;color:#62420b;padding:.48rem .55rem;font-size:.7rem;font-weight:850}.model-notes.compact{margin-bottom:.45rem;font-size:.66rem}.model-notes span{display:inline-flex;width:fit-content;border:1px solid #d7b861;background:#fff;color:#5c3b00;padding:.08rem .32rem;font-size:.62rem;font-weight:900;text-transform:uppercase}.model-notes p{margin:0;line-height:1.35}.kalshi-market-summary{display:grid;gap:.42rem;border:1px solid #d5dce8;background:#fff;padding:.5rem .55rem;font-size:.7rem;font-weight:850}.kalshi-market-summary.compact{margin-bottom:.45rem;font-size:.66rem}.kalshi-market-summary.missing{color:#667085;background:#f8fafc}.kalshi-market-summary>span{width:fit-content;border:1px solid #d5dce8;background:#f8fafc;color:#111827;padding:.08rem .32rem;font-size:.62rem;font-weight:900;text-transform:uppercase}.kalshi-market-summary p{margin:0}.kalshi-market-list{display:grid;gap:.35rem}.kalshi-market-row{display:grid;grid-template-columns:8px minmax(0,1fr) auto;align-items:center;gap:.45rem;color:inherit;text-decoration:none}.kalshi-market-row i{width:8px;height:8px;border-radius:999px}.kalshi-market-row strong,.kalshi-market-row em{font-style:normal;font-weight:900}.kalshi-market-row small{grid-column:2 / 4;color:#667085;font-size:.62rem;font-weight:800}.correlated-races-section{border:1px solid var(--forecast-line);border-radius:10px;background:#fff;overflow:hidden}.correlated-races-heading{display:flex;justify-content:space-between;gap:1rem;padding:1rem 1rem .75rem}.correlated-races-heading h2{margin:0;color:#111827;font-size:.98rem;font-weight:900;line-height:1.15;text-transform:none}.correlated-races-heading p,.correlated-races-heading span{margin:.25rem 0 0;color:#667085;font-size:.78rem;font-weight:750}.correlated-races-search{display:flex;align-items:center;gap:.55rem;margin:0 1rem .85rem;border:1px solid var(--forecast-line);border-radius:8px;padding:.55rem .7rem;color:#667085}.correlated-races-search input{width:100%;border:0;outline:0;background:transparent;color:#111827;font:inherit;font-weight:750}.correlated-races-table{display:grid}.correlated-races-head,.correlated-race-row{display:grid;grid-template-columns:110px minmax(180px,1.3fr) minmax(180px,.9fr) 110px 110px;align-items:center;gap:.9rem}.correlated-races-head{border-top:1px solid var(--forecast-line);border-bottom:1px solid var(--forecast-line);background:#f8fafc;padding:.65rem 1rem;color:#70747b;font-size:.68rem;font-weight:900;letter-spacing:.05em;text-transform:uppercase}.correlated-race-row{width:100%;border:0;border-bottom:1px solid #edf0f4;background:#fff;padding:.75rem 1rem;color:#111827;font:inherit;font-size:.82rem;font-weight:850;text-align:left;cursor:pointer}.correlated-race-row:hover,.correlated-race-row:focus-visible{background:#f8fafc;outline:none}.correlated-race-row strong{color:var(--forecast-muted);font-size:.95rem;font-weight:900}.correlated-margin{display:grid;gap:.25rem}.correlated-margin em{font-style:normal;font-weight:900}.correlated-margin small{color:#667085;font-size:.68rem;font-weight:800}.correlated-margin b{position:relative;display:block;height:8px;border-radius:999px;background:linear-gradient(90deg,#1f6feb,#f1f5f9 50%,#d73a31)}.correlated-margin i{position:absolute;top:50%;width:10px;height:10px;transform:translate(-50%,-50%);border:2px solid #fff;border-radius:999px;box-shadow:0 0 0 1px #11182733}.correlated-trend{width:100%;height:24px}.correlated-trend path{fill:none;stroke-width:2.4;stroke-linecap:round}.correlated-trend-empty{display:block;width:100%;height:2px;background:#cbd5e1}.odds-grid{display:grid;gap:.35rem}.odds-row{display:flex;justify-content:space-between;align-items:center;gap:.75rem;min-height:30px;border-bottom:1px solid #edf0f4;padding:.2rem 0;font-size:.78rem}.odds-row span{display:inline-flex;align-items:center;min-width:0;gap:.38rem;font-weight:800}.odds-row span i{width:8px;height:8px;flex:0 0 auto;border-radius:50%}.odds-row strong{flex:0 0 auto;font-weight:900}.inspector-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:.35rem}.inspector-meta span{background:#f3f5f8;color:var(--forecast-muted);padding:.42rem .35rem;text-align:center;font-size:.68rem;font-weight:900}.detail-link{display:inline-flex;align-items:center;justify-content:center;gap:.35rem;min-height:36px;border:1px solid #111827;background:#111827;color:#fff;text-decoration:none;font-size:.78rem;font-weight:900}.mini-section{display:grid;gap:.5rem}.mini-section h3,.expanded-race h3{margin:0;color:#111827;font-size:.78rem;font-weight:900;text-transform:uppercase}.chart-frame{position:relative;height:190px;min-height:0;border:1px solid var(--forecast-line);background:#fff;padding:.35rem;overflow:hidden;contain:layout size paint}.chart-frame canvas{display:block!important;width:100%!important;height:100%!important;max-height:100%}.expanded-race{display:grid;grid-template-columns:minmax(190px,.7fr) minmax(240px,1fr) minmax(240px,1fr) minmax(220px,.9fr);gap:.85rem;width:100%;padding:.75rem .35rem}.expanded-race>div{min-width:0}.chart-empty,.inspector-empty{display:grid;place-items:center;min-height:100px;border:1px dashed #cfd6e0;color:var(--forecast-muted);text-align:center;padding:.75rem;font-size:.76rem;font-weight:800}.chart-empty-detail{gap:.5rem;align-content:center}.chart-empty-detail span{max-width:32ch}.chart-empty-detail a{color:#111827;font-weight:900;text-decoration:none;border-bottom:1px solid currentColor}.chart-empty-detail a:hover,.chart-empty-detail a:focus{color:var(--forecast-accent)}.polling-app-shell{display:grid;grid-template-columns:188px minmax(0,1fr) 360px;gap:.9rem;width:min(1440px,100%);margin:0 auto;padding:.9rem clamp(.75rem,2vw,1.35rem) 2rem}.polling-main,.polling-chart-grid{display:grid;gap:.9rem;min-width:0}.polling-hero{grid-template-columns:1fr}.polling-hero .hero-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}.rail-link{display:block;border-bottom:1px solid #edf0f4;color:var(--forecast-muted);padding:.42rem 0;text-decoration:none;font-size:.78rem;font-weight:900}.rail-link:hover,.rail-link:focus{color:#111827;outline:none}.polling-chart-panel{padding:0;overflow:hidden}.polling-chart-head{margin:0;padding:.9rem;border-bottom:1px solid var(--forecast-line)}.polling-date-controls{display:flex;align-items:end;justify-content:flex-end;flex-wrap:wrap;gap:.45rem}.polling-date-controls label{display:grid;gap:.18rem;color:var(--forecast-muted);font-size:.62rem;font-weight:900;text-transform:uppercase}.polling-date-controls input{width:132px;height:32px;border:1px solid var(--forecast-line);background:#fff;color:#111827;padding:0 .42rem;font-size:.72rem;font-weight:800}.polling-date-controls button{height:32px;border:1px solid var(--forecast-line);background:#f8fafc;color:#111827;cursor:pointer;padding:0 .6rem;font-size:.7rem;font-weight:900;text-transform:uppercase}.polling-date-controls button:hover,.polling-date-controls button:focus{border-color:#111827;outline:none}.polling-leaders{display:flex;flex-wrap:wrap;gap:.45rem;padding:.72rem .9rem;border-bottom:1px solid var(--forecast-line);background:#fbfcfe}.polling-leader-chip{display:inline-flex;align-items:center;gap:.45rem;border-left:4px solid var(--chip-color);background:#fff;color:#111827;padding:.32rem .5rem;box-shadow:inset 0 0 0 1px #e3e8ef}.polling-leader-chip strong,.polling-leader-chip em{font-size:.72rem;font-style:normal;font-weight:900}.polling-leader-chip em{color:var(--forecast-muted)}.polling-react-chart-frame{position:relative;height:420px;background:#fff;padding:.85rem}.polling-latest-panel{display:grid;gap:.72rem}.polling-latest-copy{margin:-.35rem 0 0;color:var(--forecast-muted);font-size:.74rem;font-weight:750}.polling-latest-list{display:grid;gap:.5rem;max-height:calc(100vh - 230px);overflow:auto;padding-right:.15rem}.latest-poll-row{display:grid;grid-template-columns:minmax(0,1fr) 58px;gap:.45rem .65rem;border-bottom:1px solid #edf0f4;padding-bottom:.58rem}.latest-poll-row>div{min-width:0}.latest-poll-row .pollster-line{display:grid;grid-template-columns:minmax(0,1fr) 42px;align-items:center;column-gap:.42rem;width:100%}.latest-poll-row .pollster-badge{display:inline-flex;align-items:center;justify-content:center;justify-self:end;align-self:center;vertical-align:middle;margin-top:0;line-height:1}.latest-poll-row strong,.latest-poll-row span,.latest-poll-row p{display:block;min-width:0}.latest-poll-row strong{overflow:hidden;color:#111827;font-size:.78rem;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.latest-poll-row span{margin-top:.12rem;color:var(--forecast-muted);font-size:.66rem;font-weight:800}.latest-poll-row p{grid-column:1 / -1;margin:0;color:#2b3442;font-size:.7rem;line-height:1.35;font-weight:850}.type-chip{display:inline-flex;align-items:center;justify-content:center;justify-self:end;align-self:start;min-height:22px;border:1px solid transparent;padding:.12rem .34rem;font-size:.58rem;font-style:normal;font-weight:900;text-transform:uppercase}.type-generic{border-color:#cbd5e1;background:#f1f5f9;color:#334155}.type-dem{border-color:#bfdbfe;background:#dbeafe;color:#1d4ed8}.type-gop{border-color:#fecaca;background:#fee2e2;color:#b91c1c}.latest-polls table{width:100%;border-collapse:collapse;font-size:.72rem}.latest-polls td{border-bottom:1px solid #edf0f4;padding:.38rem .2rem;vertical-align:top;font-weight:750}.latest-polls td:first-child{color:var(--forecast-muted);white-space:nowrap}.latest-polls td:last-child{color:#111827;text-align:right}.latest-polls.compact table{font-size:.68rem}.pollster-line{display:inline-flex;align-items:center;gap:.38rem;max-width:100%;min-width:0}.pollster-line>span,.pollster-line>strong{min-width:0}.pollster-badge{display:inline-flex;align-items:center;justify-content:center;min-width:2.35rem;height:1.35rem;flex:0 0 auto;border:1px solid #cbd5e1;background:#f8fafc;color:#334155;padding:0 .34rem;font-size:.62rem;font-weight:900;line-height:1}.pollster-badge.compact{width:42px;min-width:42px;height:22px;font-size:.55rem;padding:0;text-align:center}.pollster-badge.grade-a{border-color:#86efac;background:#dcfce7;color:#166534}.pollster-badge.grade-b{border-color:#93c5fd;background:#dbeafe;color:#1d4ed8}.pollster-badge.grade-c{border-color:#fde68a;background:#fef3c7;color:#92400e}.pollster-badge.grade-d{border-color:#fdba74;background:#ffedd5;color:#9a3412}.pollster-badge.grade-f{border-color:#fecaca;background:#fee2e2;color:#991b1b}.scorecards-shell{display:grid;gap:.9rem;width:min(1280px,100%);margin:0 auto;padding:.9rem clamp(.75rem,2vw,1.35rem) 2rem}.scorecards-hero{grid-template-columns:minmax(0,1fr) minmax(360px,.75fr)}.scorecards-hero .hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.scorecards-table-panel{display:grid;gap:.85rem;padding:.9rem;min-width:0}.scorecards-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem}.scorecards-toolbar .search-box{width:min(420px,100%)}.scorecards-table-wrap{width:100%;overflow-x:auto;border:1px solid var(--forecast-line)}.scorecards-table{width:100%;min-width:1075px;border-collapse:collapse;table-layout:fixed;background:var(--forecast-panel)}.scorecards-table th,.scorecards-table td{border-bottom:1px solid var(--forecast-line);padding:.68rem .72rem;text-align:left;vertical-align:middle}.scorecards-table th{position:sticky;top:0;z-index:1;background:#f8fafc}.scorecards-table th button{display:inline-flex;align-items:center;gap:.28rem;border:0;background:transparent;color:#475569;cursor:pointer;padding:0;font-size:.68rem;font-weight:900;text-transform:uppercase;letter-spacing:0}.scorecards-table th button:focus-visible{outline:2px solid var(--forecast-blue);outline-offset:3px}.scorecards-table th span{display:inline-block;width:.55rem;color:var(--forecast-blue);font-size:.7rem}.scorecards-table td{color:var(--forecast-ink);font-size:.76rem;font-weight:820}.scorecards-col-pollster-name{width:245px}.scorecards-col-letter-grade,.scorecards-col-score-0-100,.scorecards-col-weight-multiplier,.scorecards-col-poll-count,.scorecards-col-race-count,.scorecards-col-confidence{white-space:nowrap}.scorecard-pollster-cell{display:flex;align-items:center;gap:.45rem;min-width:0}.scorecard-pollster-cell strong{color:var(--forecast-ink);font-size:.82rem;font-weight:900;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scorecard-cycle-chip{display:inline-flex;align-items:center;justify-content:center;min-width:4.2rem;height:1.25rem;flex:0 0 auto;border:1px solid #dbe3ef;background:#f8fafc;padding:0 .42rem;color:var(--forecast-muted);font-size:.66rem;font-weight:800;line-height:1}.scorecard-bias{display:inline-flex;align-items:center;justify-content:center;min-width:3.55rem;height:1.35rem;padding:0 .42rem;border:1px solid #dbe3ef;background:#f8fafc;color:var(--forecast-muted);font-weight:950;line-height:1}.scorecard-bias.dem{border-color:#93c5fd;background:#dbeafe;color:#1d4ed8}.scorecard-bias.gop{border-color:#fecaca;background:#fee2e2;color:#dc2626}.scorecard-bias.even{border-color:#cbd5e1;background:#f1f5f9;color:#475569}.scorecards-loading{display:grid;gap:.55rem}.scorecards-loading span{display:block;height:2.8rem;overflow:hidden;background:var(--forecast-panel-soft);position:relative}.scorecards-loading span:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;transform:translate(-100%);background:linear-gradient(90deg,transparent,rgba(148,163,184,.18),transparent);animation:forecastShimmer 1.4s ease-in-out infinite}.hero-sentence-line{display:block}.forecast-app.dark .special-hero h1,.forecast-app.dark .forecast-home-hero h1,.forecast-app.dark .home-section-heading h2,.forecast-app.dark .forecast-hero h1,.forecast-app.dark .forecast-hero h2,.forecast-app.dark .panel-title-row h2,.forecast-app.dark .control-header h2,.forecast-app.dark .control-chart-card h3,.forecast-app.dark .control-section-heading h3,.forecast-app.dark .rail-label,.forecast-app.dark .forecast-link-grid span,.forecast-app.dark .hero-compact-meta b,.forecast-app.dark .control-score strong,.forecast-app.dark .forecast-inspector h2,.forecast-app.dark .correlated-races-heading h2,.forecast-app.dark .correlated-race-row strong,.forecast-app.dark .primary-layout h2,.forecast-app.dark .primary-candidate-row strong,.forecast-app.dark .primary-candidate-row em,.forecast-app.dark .primary-latest-polls td:nth-child(2),.forecast-app.dark .latest-poll-row strong,.forecast-app.dark .latest-poll-row p,.forecast-app.dark .latest-polls td:last-child,.forecast-app.dark .custom-forecast-link-card h2,.forecast-app.dark .custom-scenario-header h2,.forecast-app.dark .custom-scenario-stats strong,.forecast-app.dark .custom-scenario-row strong{color:var(--forecast-ink)}.forecast-app.dark .joint-card,.forecast-app.dark .control-mini-card,.forecast-app.dark .forecast-link-grid a,.forecast-app.dark .forecast-link-grid button,.forecast-app.dark .rail-section,.forecast-app.dark .detail-forecast-summary,.forecast-app.dark .forecast-panel,.forecast-app.dark .forecast-inspector,.forecast-app.dark .forecast-hero,.forecast-app.dark .individual-seat-strip,.forecast-app.dark .control-chart-card,.forecast-app.dark .chart-frame,.forecast-app.dark .correlated-races-section,.forecast-app.dark .race-table-paper,.forecast-app.dark .primary-table-panel,.forecast-app.dark .primary-polls-panel,.forecast-app.dark .polling-chart-panel,.forecast-app.dark .scorecards-table-panel,.forecast-app.dark .scorecards-table{background:var(--forecast-panel);border-color:var(--forecast-line);box-shadow:none}.forecast-app.dark .forecast-link-grid a:hover,.forecast-app.dark .forecast-link-grid button:hover,.forecast-app.dark .polling-date-controls button:hover,.forecast-app.dark .polling-date-controls button:focus{border-color:#e5e7eb}.forecast-app.dark .rail-race:hover,.forecast-app.dark .rail-race.active{border-color:#334155;background:#172033}.forecast-app.dark .search-box,.forecast-app.dark .search-box input,.forecast-app.dark .polling-date-controls input,.forecast-app.dark .polling-date-controls button,.forecast-app.dark .district-state-filter select,.forecast-app.dark .correlated-races-search,.forecast-app.dark .correlated-races-search input{background:var(--forecast-input);color:var(--forecast-ink);border-color:var(--forecast-line)}.forecast-app.dark .district-state-filter option{background:var(--forecast-input);color:var(--forecast-ink)}.forecast-app.dark .search-box input::placeholder,.forecast-app.dark .correlated-races-search input::placeholder{color:#8a97aa}.forecast-app.dark .metric,.forecast-app.dark .control-model-meta span,.forecast-app.dark .control-score,.forecast-app.dark .forecast-link-icon,.forecast-app.dark .custom-scenario-stats div,.forecast-app.dark .custom-scenario-actions button:last-child,.forecast-app.dark .scenario-mode-chip,.forecast-app.dark .scenario-override-badge,.forecast-app.dark .scenario-shift-badge,.forecast-app.dark .hero-scenario-summary,.forecast-app.dark .polling-leaders,.forecast-app.dark .component-chip-row span,.forecast-app.dark .primary-probability-meter,.forecast-app.dark .correlated-races-head,.forecast-app.dark .detail-forecast-head,.forecast-app.dark .race-table-paper .MuiTableHead-root th,.forecast-app.dark .kalshi-market-summary.missing,.forecast-app.dark .kalshi-market-summary>span{background:var(--forecast-panel-soft);color:var(--forecast-ink)}.forecast-app.dark .forecast-home-actions button,.forecast-app.dark .control-mini-card button{border-color:var(--forecast-line);background:var(--forecast-panel-soft);color:var(--forecast-ink)}.forecast-app.dark .forecast-home-actions button:first-child{border-color:var(--forecast-ink);background:var(--forecast-ink);color:#0b111c}.forecast-app.dark .control-mini-seat-bar>div,.forecast-app.dark .joint-card i{background:#0b1220}.forecast-app.dark .control-mini-seat-bar i{background:var(--forecast-panel)}.forecast-app.dark .hero-scenario-summary strong{color:var(--forecast-ink)}.forecast-app.dark .hero-scenario-summary.running{border-color:#f59e0b;background:#f59e0b1f}.forecast-app.dark .custom-forecast-link-card a,.forecast-app.dark .custom-scenario-actions button:first-child{border-color:var(--forecast-ink);background:var(--forecast-ink);color:#0b111c}.forecast-app.dark .control-score-primary,.forecast-app.dark .seat-strip-row,.forecast-app.dark .detail-forecast-row,.forecast-app.dark .polling-leader-chip,.forecast-app.dark .kalshi-market-summary,.forecast-app.dark .correlated-race-row,.forecast-app.dark .polling-react-chart-frame,.forecast-app.dark .latest-poll-row,.forecast-app.dark .chart-empty,.forecast-app.dark .inspector-empty,.forecast-app.dark .map-frame{background:var(--forecast-panel);color:var(--forecast-ink)}.forecast-app.dark .detail-vote-track{background:#1f2937}.forecast-app.dark .detail-time-chart h3,.forecast-app.dark .chart-empty-detail a{color:var(--forecast-ink)}.forecast-app.dark .chart-empty-detail a:hover,.forecast-app.dark .chart-empty-detail a:focus{color:#93c5fd}.forecast-app.dark .detail-vote-track:before,.forecast-app.dark .detail-vote-track:after{background:#475569}.forecast-app.dark .detail-vote-axis,.forecast-app.dark .detail-vote-source{color:var(--forecast-muted)}.forecast-app.dark .seat-strip-row:hover,.forecast-app.dark .seat-strip-row:focus,.forecast-app.dark .correlated-race-row:hover,.forecast-app.dark .correlated-race-row:focus-visible{background:#172033;box-shadow:inset 4px 0 #e5e7eb,inset 0 0 0 1px #334155}.forecast-app.dark .seat-axis-track strong,.forecast-app.dark .seat-strip-state strong,.forecast-app.dark .seat-histogram,.forecast-app.dark .race-table-paper .MuiTableBody-root td,.forecast-app.dark .candidate-summary-card,.forecast-app.dark .candidate-summary-card strong,.forecast-app.dark .polling-leader-chip,.forecast-app.dark .polling-date-controls button,.forecast-app.dark .type-chip,.forecast-app.dark .scorecards-table td,.forecast-app.dark .scorecards-table th button,.forecast-app.dark .scorecard-pollster-cell strong{color:var(--forecast-ink)}.forecast-app.dark .race-table-paper .MuiTableHead-root th,.forecast-app.dark .race-table-paper .MuiTableBody-root td,.forecast-app.dark .correlated-races-head,.forecast-app.dark .correlated-race-row,.forecast-app.dark .detail-forecast-head,.forecast-app.dark .detail-forecast-row,.forecast-app.dark .seat-strip-row,.forecast-app.dark .rail-stat,.forecast-app.dark .rail-link,.forecast-app.dark .component-chip-row span,.forecast-app.dark .primary-candidate-row,.forecast-app.dark .primary-latest-polls td,.forecast-app.dark .latest-poll-row,.forecast-app.dark .latest-polls td,.forecast-app.dark .scorecards-table-wrap,.forecast-app.dark .scorecards-table th,.forecast-app.dark .scorecards-table td{border-color:var(--forecast-line)}.forecast-app.dark .primary-candidate-row span,.forecast-app.dark .primary-latest-polls td,.forecast-app.dark .latest-poll-row span,.forecast-app.dark .scorecard-pollster-cell span{color:var(--forecast-muted)}.forecast-app.dark .scorecards-table th{background:var(--forecast-panel-soft)}.forecast-app.dark .scorecard-cycle-chip{border-color:#334155;background:#172033;color:#aab6c8}.forecast-app.dark .scorecard-bias.dem{border-color:#2563eb;background:#2563eb2e;color:#bfdbfe}.forecast-app.dark .scorecard-bias.gop{border-color:#991b1b;background:#dc262629;color:#fecaca}.forecast-app.dark .scorecard-bias.even{border-color:#475569;background:#1e293b;color:#cbd5e1}.forecast-app.dark .scorecards-loading span{background:var(--forecast-panel-soft)}.forecast-app.dark .pollster-badge.grade-a{border-color:#22c55e;background:#22c55e2e;color:#bbf7d0}.forecast-app.dark .pollster-badge.grade-b{border-color:#2563eb;background:#2563eb2e;color:#bfdbfe}.forecast-app.dark .pollster-badge.grade-c{border-color:#b45309;background:#f59e0b2e;color:#fde68a}.forecast-app.dark .pollster-badge.grade-d{border-color:#c2410c;background:#f973162e;color:#fed7aa}.forecast-app.dark .pollster-badge.grade-f{border-color:#991b1b;background:#dc26262e;color:#fecaca}.forecast-app.dark .pollster-badge.grade-ungraded,.forecast-app.dark .type-generic{border-color:#475569;background:#1e293b;color:#cbd5e1}.forecast-app.dark .type-dem{border-color:#1d4ed8;background:#2563eb2e;color:#bfdbfe}.forecast-app.dark .type-gop{border-color:#991b1b;background:#dc262629;color:#fecaca}.forecast-app.dark .map-frame,.forecast-app.dark .house-district-map-frame,.forecast-app.dark .forecast-overview-page .map-frame,.forecast-app.dark .forecast-overview-page .house-district-map-frame,.forecast-app.dark .forecast-detail-page .map-frame,.forecast-app.dark .forecast-detail-page .house-district-map-frame{background:#0b1220;border-color:var(--forecast-line)}.forecast-app.dark .hero-seat-gap{background:#090d14}.forecast-app.dark .forecast-alert{border-color:#7f1d1d;background:#7f1d1d38;color:#fecaca}.forecast-app.dark .forecast-warning,.forecast-app.dark .model-notes{border-color:#92400e;background:#78350f3d;color:#fde68a}.forecast-app.dark .model-notes span{border-color:#b45309;background:#fbbf241f;color:#fde68a}.forecast-app.dark .result-source{border-color:#1d4ed8;background:#1d4ed829;color:#bfdbfe}.forecast-app.dark .result-source a{color:#93c5fd}.forecast-app.dark .kalshi-market-row small,.forecast-app.dark .kalshi-market-summary.missing,.forecast-app.dark .chart-empty,.forecast-app.dark .inspector-empty{color:var(--forecast-muted)}.forecast-app.dark .chart-empty,.forecast-app.dark .inspector-empty{border-color:#334155}.forecast-app.dark .MuiPaper-root,.forecast-app.dark .MuiTableContainer-root,.forecast-app.dark .MuiToolbar-root,.forecast-app.dark .MuiTablePagination-root{background-color:var(--forecast-panel)!important;color:var(--forecast-ink)!important}.forecast-app.dark .MuiTableCell-root{border-color:var(--forecast-line)!important}.forecast-app.dark .MuiSvgIcon-root{color:inherit}.brazil-page{gap:1rem}.brazil-hero{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(300px,.8fr);gap:.9rem;align-items:stretch;padding:clamp(1.1rem,3vw,2rem);border:1px solid var(--forecast-line);background:linear-gradient(135deg,#fff,#f7fafc 54%,#ecfdf5);box-shadow:0 1px 2px #141c260a}.brazil-hero-copy{display:grid;gap:.55rem;align-content:center}.brazil-hero-copy span,.brazil-metric-card span,.brazil-component-card span,.brazil-state-inspector span,.brazil-runoff-card-head span,.brazil-kalshi-list a span,.brazil-panel-chip{color:var(--forecast-muted);font-size:.72rem;font-weight:900;letter-spacing:0;text-transform:uppercase}.brazil-hero-copy h1{max-width:840px;margin:0;color:var(--forecast-ink);font-size:clamp(2rem,5vw,4.7rem);font-weight:950;line-height:.98;letter-spacing:0}.brazil-hero-copy h1 b{font-weight:inherit}.brazil-hero-copy p{max-width:720px;margin:0;color:var(--forecast-muted);font-size:.98rem;font-weight:800}.brazil-hero-metrics,.brazil-component-grid,.brazil-dashboard-grid,.brazil-lower-grid{display:grid;gap:.75rem}.brazil-hero-metrics{grid-template-columns:1fr}.brazil-metric-card,.brazil-component-card,.brazil-runoff-card,.brazil-poll-row,.brazil-kalshi-list a,.brazil-empty-state{border:1px solid var(--forecast-line);background:var(--forecast-panel);color:var(--forecast-ink);box-shadow:0 1px 2px #141c260a}.brazil-metric-card,.brazil-component-card{display:grid;gap:.3rem;min-height:104px;align-content:center;padding:.85rem}.brazil-metric-card strong{font-size:clamp(1.6rem,4vw,2.3rem);line-height:1}.brazil-component-card strong{font-size:1rem}.brazil-metric-card em,.brazil-component-card em,.brazil-runoff-card em,.brazil-state-inspector em,.brazil-poll-row em,.brazil-kalshi-list a em{color:var(--forecast-muted);font-size:.78rem;font-style:normal;font-weight:800}.brazil-dashboard-grid{grid-template-columns:minmax(320px,.88fr) minmax(0,1.12fr)}.brazil-lower-grid{grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr)}.brazil-overall-panel,.brazil-map-panel,.brazil-table-panel,.brazil-runoff-panel,.brazil-polls-panel,.brazil-kalshi-panel{padding:1rem}.brazil-candidate-list{display:grid;gap:.65rem}.brazil-candidate-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.5rem .75rem;align-items:center}.brazil-candidate-bar>div{display:grid;gap:.16rem;min-width:0}.brazil-candidate-bar strong{overflow:hidden;color:var(--forecast-ink);font-size:.92rem;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.brazil-candidate-bar span{overflow:hidden;color:var(--forecast-muted);font-size:.72rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.brazil-candidate-bar b{color:var(--forecast-ink);font-size:.95rem}.brazil-candidate-bar i{grid-column:1 / -1;display:block;height:8px;overflow:hidden;border-radius:999px;background:#e5e7eb}.brazil-candidate-bar i span{display:block;height:100%;border-radius:inherit}.brazil-component-grid{grid-template-columns:repeat(2,minmax(0,1fr));margin-top:.9rem}.brazil-map-layout{display:grid;grid-template-columns:minmax(0,1fr) 170px;gap:.75rem;align-items:stretch}.brazil-map-frame{display:grid;min-height:380px;overflow:hidden;border:1px solid var(--forecast-line);background:#f8fafc}.brazil-map-frame svg{width:100%;height:auto}.brazil-state-geo{cursor:pointer}.brazil-state-geo.has-data{opacity:.88}.brazil-state-inspector{display:grid;gap:.35rem;align-content:start;min-width:0;padding:.8rem;border:1px solid var(--forecast-line);background:var(--forecast-panel-soft)}.brazil-state-inspector strong{color:var(--forecast-ink);font-size:1.05rem;line-height:1.05}.brazil-state-inspector p{margin:.35rem 0 0;color:var(--forecast-muted);font-size:.82rem;font-weight:750}.brazil-table-wrap{overflow-x:auto}.brazil-forecast-table{width:100%;border-collapse:collapse;min-width:680px}.brazil-forecast-table th,.brazil-forecast-table td{border-bottom:1px solid var(--forecast-line);padding:.72rem .6rem;text-align:right;vertical-align:middle}.brazil-forecast-table th{color:var(--forecast-muted);font-size:.72rem;font-weight:900;text-transform:uppercase}.brazil-forecast-table th:first-child,.brazil-forecast-table td:first-child{text-align:left}.brazil-forecast-table td{color:var(--forecast-ink);font-size:.85rem;font-weight:850}.brazil-table-candidate{display:flex;gap:.45rem;align-items:center}.brazil-table-candidate>span:last-child{display:grid;gap:.1rem}.brazil-forecast-table td em{color:var(--forecast-muted);font-size:.72rem;font-style:normal;font-weight:800}.brazil-candidate-dot{width:12px;height:12px;flex:0 0 auto;border-radius:50%}.brazil-runoff-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem}.brazil-runoff-card{display:grid;gap:.65rem;padding:.85rem}.brazil-runoff-card.sparse{background:var(--forecast-panel-soft)}.brazil-runoff-card-head{display:flex;gap:.5rem;justify-content:space-between}.brazil-runoff-card-head strong{color:var(--forecast-ink);font-size:.92rem}.brazil-runoff-probs,.brazil-poll-list,.brazil-kalshi-list{display:grid;gap:.55rem}.brazil-poll-row{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(0,1.2fr);gap:.75rem;padding:.75rem}.brazil-poll-row>div:first-child,.brazil-kalshi-list a{display:grid;gap:.22rem}.brazil-poll-row strong,.brazil-kalshi-list a strong{color:var(--forecast-ink);font-size:.9rem;font-weight:900}.brazil-poll-row span{color:var(--forecast-muted);font-size:.75rem;font-weight:800}.brazil-poll-results{display:flex;flex-wrap:wrap;gap:.35rem;align-content:center}.brazil-poll-results span{padding:.28rem .45rem;border:1px solid var(--forecast-line);background:var(--forecast-panel-soft);color:var(--forecast-ink)}.brazil-kalshi-list a{padding:.75rem;text-decoration:none}.brazil-empty-state{padding:1rem;color:var(--forecast-muted);font-size:.86rem;font-weight:850}.forecast-app.dark .brazil-hero{background:linear-gradient(135deg,#111827,#0f172a 62%,#052e2b)}.forecast-app.dark .brazil-metric-card,.forecast-app.dark .brazil-component-card,.forecast-app.dark .brazil-runoff-card,.forecast-app.dark .brazil-poll-row,.forecast-app.dark .brazil-kalshi-list a,.forecast-app.dark .brazil-empty-state,.forecast-app.dark .brazil-map-frame{background:var(--forecast-panel);color:var(--forecast-ink)}.forecast-app.dark .brazil-state-inspector,.forecast-app.dark .brazil-runoff-card.sparse,.forecast-app.dark .brazil-poll-results span{background:var(--forecast-panel-soft)}.forecast-app.dark .brazil-candidate-bar i{background:#1f2937}@media(max-width:1220px){.forecast-shell{grid-template-columns:180px minmax(0,1fr)}.forecast-inspector{position:static;grid-column:1 / -1}.control-analytics-grid{grid-template-columns:1fr}}@media(max-width:1360px){.forecast-hero,.scorecards-hero{grid-template-columns:1fr}}@media(max-width:900px){.forecast-topbar{grid-template-columns:1fr auto}.forecast-nav{grid-column:1 / -1;grid-row:2;align-items:stretch;overflow-x:auto}.forecast-nav-menu{position:fixed;top:106px;left:1rem;right:1rem;min-width:0}.forecast-theme-icon{grid-column:2;grid-row:1}.forecast-shell,.polling-app-shell{grid-template-columns:1fr}.scorecards-shell{padding:.9rem}.forecast-main,.polling-main{order:1}.joint-outcome-grid,.home-control-grid,.forecast-link-grid,.brazil-hero,.brazil-dashboard-grid,.brazil-lower-grid,.brazil-map-layout,.primary-layout,.forecast-home-hero{grid-template-columns:1fr}.forecast-home-hero-copy{text-align:center;justify-items:center}.forecast-home-actions{justify-content:center}.brazil-poll-row,.brazil-component-grid{grid-template-columns:1fr}.forecast-link-grid-primary,.forecast-link-grid-library{grid-template-columns:repeat(2,minmax(0,1fr))}.home-section-heading{align-items:start;flex-direction:column}.home-section-heading p{text-align:left}.primary-table-panel,.primary-polls-panel{grid-column:auto}.primary-candidate-row{grid-template-columns:1fr;gap:.5rem}.primary-candidate-row em{text-align:left}.forecast-inspector,.polling-latest-panel{order:2}.forecast-rail,.polling-rail{order:3}.forecast-rail{position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.forecast-overview-page .forecast-shell.no-inspector .forecast-rail,.forecast-detail-page .forecast-shell.no-inspector .forecast-rail,.forecast-hero{grid-template-columns:1fr}.polling-latest-list{max-height:none}.scorecards-toolbar{align-items:stretch;flex-direction:column}.scorecards-toolbar .search-box{width:100%}.hero-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.control-header{display:grid}.control-model-meta{justify-content:flex-start}.control-scoreboard,.electoral-dashboard .control-scoreboard{grid-template-columns:repeat(2,minmax(0,1fr))}.electoral-dashboard .control-score{border-right:1px solid var(--forecast-line);border-bottom:1px solid var(--forecast-line);padding:.62rem}.electoral-dashboard .control-score:nth-child(2n),.electoral-dashboard .control-score:last-child{border-right:0}.electoral-dashboard .control-score:nth-last-child(-n+1){border-bottom:0}.electoral-dashboard .control-score span,.electoral-dashboard .control-score em{font-size:clamp(.56rem,1.55vw,.66rem);line-height:1.15}.electoral-dashboard .control-score strong{font-size:clamp(1.08rem,3.7vw,1.35rem);overflow-wrap:anywhere}.electoral-dashboard .control-score-primary strong{font-size:clamp(1.55rem,6vw,1.8rem)}.control-history-stack{grid-template-columns:1fr}.control-score:nth-child(2){border-right:0}.control-score:nth-child(-n+2){border-bottom:1px solid var(--forecast-line)}.control-chart-heading,.control-section-heading{align-items:start}.control-histogram-card{overflow-x:hidden}.seat-axis{display:none}.seat-strip-row{display:flex;flex-direction:column;align-items:stretch;grid-template-columns:minmax(0,1fr);gap:.45rem;min-height:112px;padding:.65rem .25rem}.seat-strip-state strong,.seat-strip-state span{white-space:normal}.seat-strip-track{grid-column:1;width:100%;height:28px}.seat-strip-probability{grid-column:1;justify-content:space-between;padding-bottom:0}.seat-strip-probability span:first-child{white-space:normal}.expanded-race,.detail-time-chart-grid{grid-template-columns:1fr}.correlated-races-heading{display:grid}.correlated-races-head{display:none}.correlated-race-row{grid-template-columns:42px minmax(0,1fr);gap:.55rem}.correlated-margin,.correlated-race-row>span:nth-child(4),.correlated-trend,.correlated-trend-empty{grid-column:2}.detail-forecast-head{display:none}.detail-forecast-row{grid-template-columns:1fr;gap:.75rem;min-height:0}.detail-probability{justify-self:start;text-align:left}}@media(max-width:640px){.forecast-topbar{padding:.55rem .7rem}.brand-title{font-size:.86rem}.brand-status{max-width:230px}.forecast-shell,.polling-app-shell,.scorecards-shell{padding:.7rem}.forecast-rail{grid-template-columns:1fr}.forecast-hero,.forecast-panel,.forecast-inspector,.rail-section{padding:.75rem}.forecast-hero h1{font-size:1.5rem}.forecast-hero .hero-election-sentence{font-size:clamp(2rem,11vw,3rem)}.forecast-home-hero h1{font-size:clamp(1.85rem,9vw,2.85rem)}.forecast-link-grid-primary,.forecast-link-grid-library{grid-template-columns:1fr}.forecast-hero .hero-detail-sentence{font-size:clamp(2rem,10vw,3rem)}.forecast-hero-editorial{padding-top:.45rem}.hero-seat-bar{margin-top:1rem}.hero-seat-gradient{height:10px}.hero-seat-labels{font-size:.78rem}.hero-scenario-summary,.hero-scenario-summary.active{display:grid;grid-template-columns:1fr;justify-items:center;text-align:center}.forecast-overview-page .map-frame,.forecast-overview-page .house-district-map-frame{min-height:320px}.forecast-overview-page .house-district-map-frame{min-height:0}.forecast-detail-page .map-frame,.forecast-detail-page .house-district-map-frame{min-height:330px}.polling-chart-head,.polling-date-controls{display:grid;justify-content:stretch}.polling-date-controls input,.polling-date-controls button{width:100%}.polling-react-chart-frame{height:330px;padding:.55rem}.hero-metrics,.inspector-meta,.scorecards-hero .hero-metrics{grid-template-columns:1fr 1fr}.scorecards-table-panel{padding:.65rem}.control-scoreboard{grid-template-columns:1fr}.electoral-dashboard .control-scoreboard{grid-template-columns:repeat(2,minmax(0,1fr))}.control-score,.control-score:nth-child(2){border-right:0;border-bottom:1px solid var(--forecast-line)}.electoral-dashboard .control-score{border-right:1px solid var(--forecast-line);border-bottom:1px solid var(--forecast-line)}.electoral-dashboard .control-score:nth-child(2n),.electoral-dashboard .control-score:last-child{border-right:0}.electoral-dashboard .control-score:nth-last-child(-n+1){border-bottom:0}.control-score:last-child{border-bottom:0}.control-chart-card,.individual-seat-strip{padding:.62rem}.control-histogram-card{min-height:280px}.seat-histogram{gap:.08rem;height:170px;min-width:0;padding-inline:.16rem}.histogram-axis{font-size:.6rem}.seat-histogram-tooltip{width:min(372px,calc(100vw - 24px))}.seat-tooltip-map{height:150px}.individual-seat-strip-scroll .seat-strip-rows{max-height:min(560px,65vh)}.seat-strip-row{gap:.42rem;padding:.58rem .18rem}.seat-strip-state strong{font-size:.88rem}.seat-dot{width:16px;height:16px;border-width:4px}.seat-rating{min-width:70px}.map-frame{min-height:250px}}@media(max-width:460px){.electoral-dashboard .control-scoreboard{grid-template-columns:1fr}.electoral-dashboard .control-score,.electoral-dashboard .control-score:nth-child(2n){border-right:0;border-bottom:1px solid var(--forecast-line)}.electoral-dashboard .control-score:last-child{border-bottom:0}}
