:root {
  --navy: #071a33;
  --blue: #1769c2;
  --blue-soft: #eaf3ff;
  --red: #d83b43;
  --red-soft: #fff0f1;
  --ind: #e1a51f;
  --ind-dark: #7a5300;
  --ind-soft: #fff5cf;
  --ink: #10213a;
  --muted: #5b687a;
  --line: #d9e1eb;
  --paper: #fff;
  --wash: #f5f8fc;
  --max: 1180px;
  --shadow: 0 18px 50px rgba(7,26,51,.1);
}

/* Scenario builder: keep the result readable, then give the race choices the
   full page width. The conditional numbers remain the same; only the layout
   is intentionally editorial and compact. */
.scenario-builder-section .scenario-builder-layout { display: block; }
.scenario-builder-section .scenario-result {
  position: sticky;
  top: 86px;
  z-index: 9;
  display: grid;
  grid-template-columns: minmax(220px, 1.15fr) minmax(360px, 1.85fr);
  column-gap: 28px;
  align-items: center;
  margin: 12px 0 16px;
  padding: 12px 16px;
  border: 1px solid var(--line);
  border-top: 5px solid var(--navy);
  border-radius: 12px;
  background: rgba(255,255,255,.97);
  box-shadow: 0 10px 26px rgba(7,26,51,.10);
  backdrop-filter: blur(10px);
}
.scenario-builder-section .scenario-result-head { min-width: 0; }
.scenario-builder-section .scenario-result-head strong { margin-top: 3px; font-size: clamp(1.05rem, 2vw, 1.35rem); }
.scenario-builder-section .scenario-result-head small { margin-top: 4px; color: var(--muted); }
.scenario-builder-section .scenario-seat-line,
.scenario-builder-section .scenario-control-odds { margin-top: 0; }
.scenario-builder-section .scenario-seat-line { gap: 18px; }
.scenario-builder-section .scenario-seat-line > span,
.scenario-builder-section .scenario-control-odds > div { text-align: left; }
.scenario-builder-section .scenario-seat-line small,
.scenario-builder-section .scenario-control-odds small { font-size: .68rem; }
.scenario-builder-section .scenario-seat-line strong { font-size: clamp(1.5rem, 3vw, 2.05rem); }
.scenario-builder-section .scenario-control-odds {
  grid-column: 2;
  border-top: 1px solid var(--line);
  padding-top: 8px;
  margin-top: 8px;
  gap: 22px;
}
.scenario-builder-section .scenario-control-odds strong { font-size: clamp(1rem, 2vw, 1.25rem); }
.scenario-builder-section .scenario-seat-breakdown {
  grid-column: 1 / -1;
  margin: 8px 0 0;
  padding: 7px 0 0;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: .78rem;
}
.scenario-builder-section .scenario-seat-breakdown strong { color: var(--ink); }
.scenario-builder-section .scenario-seat-breakdown span { color: var(--blue); }
.scenario-builder-section .scenario-result-actions {
  grid-column: 1 / -1;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 18px;
  margin-top: 8px;
  padding-top: 8px;
  border-top: 1px solid var(--line);
}
.scenario-builder-section .scenario-help { margin: 0; max-width: 70ch; }
.scenario-builder-section .scenario-share { margin-top: 0; white-space: nowrap; }
.scenario-builder-section .scenario-race-panel { padding: 16px 0 0; border: 0; border-radius: 0; background: transparent; }
.scenario-builder-section .scenario-toolbar { padding: 0 0 14px; }
.scenario-builder-section .scenario-race-list { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; padding-top: 10px; }
.scenario-builder-section .scenario-race-row { min-width: 0; }
.scenario-builder-section .scenario-race-row { padding: 10px; }
.scenario-builder-section .scenario-choice { min-width: 0; min-height: 32px; padding: 4px 8px; }
.scenario-builder-section .scenario-choice-buttons { margin-top: 6px; }
.scenario-builder-section .scenario-choice span { overflow-wrap: anywhere; }
.scenario-builder-section .scenario-choice small { white-space: nowrap; }
.scenario-builder-section .scenario-race-heading > span { white-space: nowrap; }
.scenario-builder-section .scenario-favorite-value,
.scenario-builder-section .scenario-choice-value,
.scenario-builder-section .scenario-seat-line strong,
.scenario-builder-section .scenario-control-odds strong { display: inline-block; }
.scenario-builder-section .scenario-choice-check { display: inline-block; margin-left: .18em; font-weight: 900; line-height: 1; }
.scenario-builder-section .scenario-value-shift-up,
.scenario-builder-section .scenario-value-shift-down { animation-duration: .46s; animation-timing-function: cubic-bezier(.2,.8,.3,1); animation-fill-mode: both; }
.scenario-builder-section .scenario-value-shift-up { animation-name: scenario-value-rise; }
.scenario-builder-section .scenario-value-shift-down { animation-name: scenario-value-fall; }
@keyframes scenario-value-rise {
  0% { opacity: .35; transform: translateY(5px); }
  65% { opacity: 1; transform: translateY(-2px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes scenario-value-fall {
  0% { opacity: .35; transform: translateY(-5px); }
  65% { opacity: 1; transform: translateY(2px); }
  100% { opacity: 1; transform: translateY(0); }
}
@media (prefers-reduced-motion: reduce) {
  .scenario-builder-section .scenario-value-shift-up,
  .scenario-builder-section .scenario-value-shift-down { animation: none; }
}
.scenario-builder-section .scenario-chamber { display: none; }

/* The Alaska/Hawaii paths include small map-island geometry left of x=0.
   Include that geometry in the viewport so a highlighted state never spills
   through the map frame. */
.us-forecast-map { overflow: hidden; }
.us-map-shell { overflow: hidden; }

@media (max-width: 860px) {
  .scenario-builder-section .scenario-result { grid-template-columns: 1fr; top: 72px; }
  .scenario-builder-section .scenario-control-odds { grid-column: 1; }
  .scenario-builder-section .scenario-result-actions { grid-column: 1; }
}
@media (max-width: 640px) {
  .scenario-builder-section .scenario-race-list { grid-template-columns: 1fr; }
  .scenario-builder-section .scenario-result { padding: 10px 12px; }
  .scenario-builder-section .scenario-result-actions { align-items: flex-start; flex-direction: column; }
  .scenario-builder-section .scenario-control-odds { gap: 12px; }
}
* {
  box-sizing: border-box;
}
html {
  scroll-behavior: smooth;
}
body {
  margin: 0;
  color: var(--ink);
  background: var(--paper);
  font-family: Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  line-height: 1.55;
}
a {
  color: inherit;
}
button {
  font: inherit;
}
.wrap {
  width: min(calc(100% - 40px),var(--max));
  max-width: calc(100vw - 40px);
  margin: auto;
}
.skip {
  position: absolute;
  left: 12px;
  top: -100px;
  z-index: 20;
  background: var(--navy);
  color: #fff;
  padding: 10px 14px;
}
.skip:focus {
  top: 12px;
}
.site-header {
  position: sticky;
  top: 0;
  z-index: 10;
  background: rgba(255,255,255,.94);
  border-bottom: 1px solid var(--line);
  backdrop-filter: blur(12px);
}
.nav {
  min-height: 70px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
}
.logo {
  text-decoration: none;
  font-weight: 900;
  letter-spacing: .05em;
}
.logo span {
  color: #fff;
  background: linear-gradient(135deg,var(--blue) 0 49%,var(--red) 51%);
  padding: 7px 8px;
  margin-right: 5px;
  border-radius: 4px;
}
.nav nav {
  display: flex;
  gap: 28px;
  font-size: .86rem;
  font-weight: 750;
}
.nav nav a {
  text-decoration: none;
  border-bottom: 3px solid transparent;
  padding: 24px 0 21px;
}
.nav nav a[aria-current=page] {
  border-color: var(--red);
}
.nav-toggle {
  display: none;
}
.home-hero,
.chamber-hero,
.race-hero {
  position: relative;
  overflow: hidden;
}
.home-hero {
  padding: 92px 0 110px;
  background: linear-gradient(135deg,#f7fbff 0 54%,#fff2f2 54%);
}
.home-hero:after {
  content: "";
  position: absolute;
  width: 36vw;
  height: 36vw;
  border: 4rem solid rgba(23,105,194,.06);
  border-radius: 50%;
  right: -12vw;
  top: -16vw;
}
.home-hero h1 {
  font-size: clamp(3rem,7vw,6.8rem);
  line-height: .88;
  letter-spacing: -.07em;
  margin: 16px 0;
  max-width: 950px;
}
.home-hero h1 em {
  font-style: normal;
  color: var(--blue);
}
.dek {
  font-size: clamp(1.15rem,2vw,1.5rem);
  max-width: 700px;
  color: var(--muted);
}
.overline {
  margin: 0 0 8px;
  color: var(--blue);
  font-weight: 850;
  letter-spacing: .14em;
  text-transform: uppercase;
  font-size: .72rem;
}
.freshness {
  display: inline-flex;
  margin-top: 22px;
  padding: 7px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.76);
  font-size: .76rem;
  color: var(--muted);
}
.section {
  padding: 80px 0;
}
.tinted {
  background: var(--wash);
}
.story-grid {
  display: grid;
  grid-template-columns: 1.25fr .75fr;
  gap: 64px;
  align-items: center;
}
.lead-story h2,
.section-title h2,
.portal h2,
.method-strip h2,
.evidence-grid h2 {
  font-size: clamp(2rem,4vw,3.6rem);
  line-height: 1;
  letter-spacing: -.05em;
  margin: 8px 0 18px;
}
.lead-story p {
  font-size: 1.12rem;
  color: var(--muted);
}
.text-link {
  font-weight: 850;
  text-decoration-color: var(--red);
  text-decoration-thickness: 2px;
  text-underline-offset: 5px;
}
.control-card,
.portal,
.mosaic-card,
.distribution-shell,
.state-preview,
.audit-card {
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 18px;
  box-shadow: var(--shadow);
}
.control-card {
  padding: 32px;
}
.control-split {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 14px;
  align-items: end;
  text-align: center;
}
.control-split strong {
  font-size: 2.5rem;
  line-height: 1;
}
.control-split span {
  font-size: .72rem;
  color: var(--muted);
}
.dem {
  color: var(--blue);
}
.rep {
  color: var(--red);
}
.mini-mosaic,
.election-mosaic {
  display: grid;
  grid-template-columns: repeat(20,1fr);
  gap: 5px;
  margin: 28px 0;
}
.mini-mosaic i,
.election-mosaic i {
  display: block;
  aspect-ratio: 1;
  border-radius: 50%;
  background: var(--line);
}
.mini-mosaic i.dem,
.election-mosaic i.dem {
  background: var(--blue);
}
.mini-mosaic i.rep,
.election-mosaic i.rep {
  background: var(--red);
}
.data-note {
  font-size: .78rem;
  color: var(--muted);
}
.section-title {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 30px;
  margin-bottom: 34px;
}
.section-title h2 {
  margin-bottom: 0;
}
.section-title > p {
  max-width: 420px;
  color: var(--muted);
  text-align: right;
}
.race-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 18px;
}
.race-card {
  display: block;
  text-decoration: none;
  background: #fff;
  border: 1px solid var(--line);
  border-top: 5px solid var(--red);
  border-radius: 14px;
  padding: 24px;
  transition: transform .2s,box-shadow .2s;
}
.race-card:hover,
.race-card:focus-visible {
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}
.race-card .race-state {
  font-size: 1.45rem;
  font-weight: 850;
}
.race-card .race-margin {
  font-size: 2rem;
  font-weight: 900;
}
.race-card .prob-track,
.vote-bar-track {
  display: flex;
  height: 12px;
  border-radius: 99px;
  overflow: hidden;
  background: var(--line);
  margin: 18px 0;
}
.prob-track .d,
.vote-bar-track .d {
  background: var(--blue);
}
.prob-track .r,
.vote-bar-track .r {
  background: var(--red);
}
.portal-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}
.portal {
  padding: 36px;
}
.muted-portal {
  background: var(--wash);
  box-shadow: none;
}
.status {
  display: inline-block;
  border: 1px solid var(--line);
  border-radius: 999px;
  padding: 6px 10px;
  font-size: .74rem;
  color: var(--muted);
}
.method-strip {
  padding: 80px 0;
  background: var(--navy);
  color: #fff;
}
.method-strip .overline {
  color: #81baff;
}
.method-strip p:last-child {
  max-width: 760px;
  color: #c8d4e3;
}
.chamber-hero {
  padding: 74px 0;
  background: linear-gradient(180deg,var(--navy),#0c2c55);
  color: #fff;
}
.chamber-hero .overline {
  color: #83baff;
}
.chamber-hero h1 {
  font-size: clamp(3rem,7vw,6rem);
  line-height: .94;
  letter-spacing: -.06em;
  margin: 12px 0;
}
.chamber-hero .dek {
  color: #c7d6e8;
}
.mosaic-card {
  margin-top: 42px;
  padding: 34px;
  color: var(--ink);
}
.mosaic-numbers {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: end;
  text-align: center;
}
.mosaic-numbers strong {
  display: block;
  font-size: clamp(2.5rem,6vw,5rem);
  line-height: .9;
}
.mosaic-numbers span {
  font-size: .75rem;
}
.out-of {
  color: var(--muted);
  font-weight: 800;
}
.election-mosaic {
  grid-template-columns: repeat(25,1fr);
  gap: 7px;
}
.chamber-layout {
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: 55px;
  align-items: center;
}
.chamber {
  position: relative;
  min-height: 340px;
}
.seat-dot {
  position: absolute;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  transform: translate(-50%,-50%);
}
.seat-dot.dem {
  background: var(--blue);
}
.seat-dot.rep {
  background: var(--red);
}
.seat-dot.unknown {
  background: #bfc9d5;
}
.seat-dot.other {
  background: var(--ind);
  z-index: 2;
  box-shadow: 0 0 0 2px #fff,0 0 0 3px rgba(139,94,0,.28);
}
.majority-line {
  position: absolute;
  left: 50%;
  top: 7%;
  bottom: 10%;
  border-left: 2px solid var(--navy);
}
.majority-line span {
  position: absolute;
  top: -26px;
  transform: translateX(-50%);
  white-space: nowrap;
  font-size: .7rem;
  font-weight: 800;
}
.chamber-label {
  position: absolute;
  left: 50%;
  bottom: 0;
  transform: translateX(-50%);
  width: 90%;
  display: flex;
  justify-content: space-between;
  font-weight: 900;
}
.senate-snake-section {
  margin-top: clamp(36px,5vw,64px);
  padding-top: clamp(28px,4vw,44px);
  border-top: 1px solid var(--line);
}
.scenario-builder-section {
  border-top: 1px solid var(--line);
}
.scenario-builder-layout {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(280px, .7fr);
  gap: 24px;
  align-items: start;
}
.scenario-race-panel,
.scenario-result {
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
}
.scenario-race-panel { padding: 16px; }
.scenario-toolbar {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: end;
  padding-bottom: 14px;
  border-bottom: 1px solid var(--line);
}
.scenario-toolbar label {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 800;
}
.scenario-toolbar input,
.scenario-toolbar select {
  display: block;
  min-width: 150px;
  margin-top: 4px;
  padding: 8px 10px;
  border: 1px solid #bfc9d7;
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
}
.scenario-reset,
.scenario-share {
  border: 1px solid var(--navy);
  border-radius: 8px;
  padding: 9px 12px;
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  font-weight: 800;
}
.scenario-reset:hover,
.scenario-reset:focus-visible,
.scenario-share:hover,
.scenario-share:focus-visible { background: var(--blue-soft); }
.scenario-race-list { display: grid; gap: 10px; padding-top: 14px; }
.scenario-race-row {
  padding: 12px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: var(--wash);
}
.scenario-race-heading,
.scenario-choice-buttons,
.scenario-seat-line,
.scenario-control-odds { display: flex; gap: 8px; }
.scenario-race-heading { align-items: start; justify-content: space-between; }
.scenario-race-heading strong,
.scenario-race-heading small { display: block; }
.scenario-race-heading small,
.scenario-race-heading > span { color: var(--muted); font-size: .74rem; }
.scenario-choice-buttons { flex-wrap: wrap; margin-top: 10px; }
.scenario-choice {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 36px;
  border: 1px solid var(--line);
  border-radius: 8px;
  padding: 6px 9px;
  background: #fff;
  cursor: pointer;
  color: var(--ink);
  font-size: .78rem;
  font-weight: 800;
}
.scenario-choice small { color: var(--muted); font-weight: 700; }
.scenario-choice.selected { box-shadow: inset 0 0 0 2px var(--navy); }
.scenario-choice.dem { color: var(--blue); }
.scenario-choice.rep { color: var(--red); }
.scenario-choice.ind { color: var(--ind-dark); }
.scenario-result {
  position: sticky;
  top: 86px;
  padding: 18px;
  box-shadow: var(--shadow);
}
.scenario-result-head strong,
.scenario-result-head small { display: block; }
.scenario-result-head strong { margin-top: 4px; font-size: 1.1rem; }
.scenario-result-head small { margin-top: 4px; color: var(--muted); }
.scenario-seat-line,
.scenario-control-odds { justify-content: space-between; margin-top: 18px; }
.scenario-seat-line > span,
.scenario-control-odds > div { flex: 1; text-align: center; }
.scenario-seat-line small,
.scenario-seat-line strong,
.scenario-control-odds small,
.scenario-control-odds strong { display: block; }
.scenario-seat-line small,
.scenario-control-odds small { color: var(--muted); font-size: .68rem; }
.scenario-seat-line strong { font-size: 1.65rem; }
.scenario-control-odds { border-top: 1px solid var(--line); padding-top: 14px; }
.scenario-control-odds strong { font-size: 1.2rem; }
.scenario-chamber { min-height: 210px; margin-top: 14px; }
.scenario-chamber .chamber-label { font-size: .75rem; }
.scenario-help { color: var(--muted); font-size: .8rem; }
.scenario-share { margin-top: 6px; }
.scenario-share-status { margin-left: 8px; color: var(--blue); font-size: .78rem; font-weight: 800; }
@media (max-width: 860px) {
  .scenario-builder-layout { grid-template-columns: 1fr; }
  .scenario-result { position: static; }
}
@media (max-width: 520px) {
  .scenario-toolbar input, .scenario-toolbar select { min-width: 0; width: 100%; }
  .scenario-toolbar label { flex: 1 1 130px; }
  .scenario-reset { flex: 0 0 auto; }
  .scenario-choice { flex: 1 1 auto; justify-content: center; }
}
.senate-snake-heading {
  margin-bottom: 18px;
}
.senate-snake-heading h3 {
  margin: 0;
  color: var(--navy);
  font-size: clamp(1.55rem,3vw,2.35rem);
  letter-spacing: -.035em;
}
.senate-snake-heading p {
  max-width: 760px;
  margin: 7px 0 0;
  color: var(--muted);
}
.senate-snake-summary {
  display: grid;
  grid-template-columns: 1.15fr 1.55fr 1.05fr 1.45fr;
  gap: 1px;
  margin-bottom: 12px;
  border-block: 1px solid var(--line);
  background: var(--line);
}
.senate-snake-summary > div {
  min-width: 0;
  /*
     Held-seat segments do not have a projected vote bar or margin scale.
     Keep every selected segment the same height as a race segment so moving
     between held and contested seats never shifts the snake chart.
  */
  min-height: 7.5rem;
  padding: 13px 15px;
  background: #fff;
}
.senate-snake-summary small,
.senate-snake-summary strong {
  display: block;
}
.senate-snake-summary small {
  margin-bottom: 3px;
  color: var(--muted);
  font-size: .69rem;
  font-weight: 800;
  letter-spacing: .055em;
  text-transform: uppercase;
}
.senate-snake-summary strong {
  overflow-wrap: anywhere;
  color: var(--navy);
}
.senate-snake-summary > div {
  border-top: 4px solid transparent;
}
.senate-snake-summary[data-tone="dem"] .snake-summary-lead { border-top-color: var(--blue); }
.senate-snake-summary[data-tone="rep"] .snake-summary-lead { border-top-color: var(--red); }
.senate-snake-summary[data-tone="ind"] .snake-summary-lead { border-top-color: var(--ind); }
.snake-summary-lead > strong {
  font-size: 1.05rem;
}
.snake-summary-lead > span {
  display: block;
  margin-top: 5px;
  color: var(--navy);
  font-size: 1rem;
  font-weight: 900;
}
.snake-summary-vote > strong,
.snake-summary-margin > strong,
.snake-summary-model > strong {
  display: block;
  font-size: .83rem;
  line-height: 1.35;
}
/*
   Projected-vote labels vary in length (candidate names can turn the line
   into two rows). Reserve that second line for every selected segment so the
   live snake summary never changes height while the pointer moves between
   races. The grid then keeps the chart itself in one stable position.
*/
.snake-summary-vote > strong {
  min-height: 2.7em;
}
.snake-summary-vote > span,
.snake-summary-margin > span,
.snake-summary-model > span {
  display: block;
  margin-top: 5px;
  color: var(--muted);
  font-size: .7rem;
  line-height: 1.35;
}
.snake-vote-bar,
.snake-margin-scale {
  position: relative;
  display: flex;
  height: 7px;
  margin-top: 8px;
  overflow: hidden;
  border-radius: 999px;
  background: var(--line);
}
.snake-vote-bar i {
  display: block;
  height: 100%;
}
.snake-vote-bar i.dem { background: var(--blue); }
.snake-vote-bar i.ind { background: var(--ind); }
.snake-vote-bar i.other { background: var(--ind); }
.snake-vote-bar i.rep { background: var(--red); }
.snake-margin-scale {
  background: linear-gradient(90deg,var(--blue) 0%,#dce7f7 38%,#fff 50%,#f9dfe1 62%,var(--red) 100%);
}
.snake-margin-scale i {
  position: absolute;
  top: -3px;
  width: 13px;
  height: 13px;
  transform: translateX(-50%);
  border: 3px solid var(--navy);
  border-radius: 50%;
  background: #fff;
}
.snake-summary-vote .dem { color: var(--blue); }
.snake-summary-vote .rep { color: var(--red); }
.snake-summary-vote .other { color: var(--ind-dark); }
.senate-snake-chart svg {
  display: block;
  width: 100%;
  height: auto;
  overflow: visible;
}
.senate-snake-base {
  fill: none;
  stroke: var(--line);
  stroke-width: 37;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.senate-snake-segment {
  fill: none;
  stroke-width: 31;
  stroke-linecap: butt;
  stroke-linejoin: round;
  cursor: pointer;
}
.senate-snake-segment.dem { stroke: var(--blue); }
.senate-snake-segment.rep { stroke: var(--red); }
.senate-snake-segment.ind { stroke: var(--ind); }
.senate-snake-segment.unknown { stroke: #c7cfda; }
.senate-snake-segment.held {
  opacity: 1;
  stroke-linecap: butt;
}
.senate-snake-selected {
  /* Selection should not change the probability color. */
  stroke-width: 33;
  filter: none;
}
.senate-snake-chart a:focus-visible .senate-snake-segment {
  stroke-width: 33;
  filter: none;
}
.senate-snake-race-label,
.senate-snake-held-label {
  fill: #fff;
  stroke: rgba(7,26,51,.92);
  stroke-width: 1.6px;
  paint-order: stroke fill;
  font-weight: 900;
  pointer-events: none;
}
.senate-snake-race-label {
  font-size: 10px;
  letter-spacing: .02em;
}
.senate-snake-held-label {
  font-size: 13px;
  letter-spacing: .045em;
}
.senate-snake-threshold-halo {
  stroke: #fff;
  stroke-width: 9;
  stroke-linecap: round;
  opacity: .96;
  pointer-events: none;
}
.senate-snake-threshold-line {
  stroke: var(--navy);
  stroke-width: 4;
  stroke-linecap: round;
  stroke-dasharray: 8 5;
  pointer-events: none;
}
.senate-snake-threshold-label {
  fill: var(--navy);
  stroke: #fff;
  stroke-width: 5px;
  paint-order: stroke fill;
  font-size: 11px;
  font-weight: 900;
  text-anchor: middle;
}
.senate-snake-directions,
.senate-snake-legend {
  display: flex;
  gap: 12px;
}
.senate-snake-directions {
  justify-content: space-between;
  margin-top: -8px;
  color: var(--navy);
  font-size: .78rem;
  font-weight: 850;
}
.senate-snake-legend {
  justify-content: center;
  flex-wrap: wrap;
  margin-top: 14px;
  color: var(--muted);
  font-size: .72rem;
}
.senate-snake-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.senate-snake-legend i {
  width: 17px;
  height: 8px;
  border-radius: 2px;
}
.senate-snake-legend i.dem { background: var(--blue); }
.senate-snake-legend i.rep { background: var(--red); }
.senate-snake-legend i.ind { background: var(--ind); }
.senate-snake-legend i.unknown { background: #c7cfda; }
.seat-distribution {
  display: grid;
  gap: 12px;
}
.seat-row {
  display: grid;
  grid-template-columns: 52px 1fr 54px 1fr 52px;
  gap: 9px;
  align-items: center;
  font-size: .76rem;
  font-weight: 800;
}
.seat-bar {
  height: 16px;
  background: #e7edf5;
  border-radius: 3px;
  overflow: hidden;
}
.seat-bar i {
  display: block;
  height: 100%;
}
.seat-bar.dem i {
  margin-left: auto;
  background: var(--blue);
}
.seat-bar.rep i {
  background: var(--red);
}
.state-browser {
  display: grid;
  grid-template-columns: repeat(auto-fit,minmax(130px,1fr));
  gap: 14px;
}
.state-button {
  min-height: 150px;
  border: 1px solid var(--line);
  border-radius: 16px;
  background: #fff;
  padding: 20px;
  text-align: left;
  cursor: pointer;
}
.state-button:hover,
.state-button:focus-visible,
.state-button.active {
  border-color: var(--blue);
  box-shadow: 0 0 0 3px var(--blue-soft);
}
.state-mark {
  display: grid;
  place-items: center;
  width: 70px;
  height: 70px;
  border-radius: 48% 52% 44% 56%;
  background: var(--blue-soft);
  color: var(--blue);
  font-size: 1.5rem;
  font-weight: 900;
  transform: rotate(-6deg);
}
.state-button span:last-child {
  display: block;
  margin-top: 12px;
  font-weight: 850;
}
.browser-layout {
  display: grid;
  grid-template-columns: 1fr 330px;
  gap: 22px;
}
.browser-layout > *,
.state-browser,
.state-button {
  min-width: 0;
}
.state-preview {
  padding: 25px;
  min-height: 220px;
}
.state-preview strong {
  display: block;
  font-size: 2rem;
}
.state-preview a {
  font-weight: 850;
}
.race-list {
  display: grid;
  grid-template-columns: repeat(2,1fr);
  gap: 14px;
  margin-top: 24px;
}
.race-list a {
  display: flex;
  align-items: center;
  justify-content: space-between;
  text-decoration: none;
  background: #fff;
  border: 1px solid var(--line);
  border-radius: 10px;
  padding: 18px;
  font-weight: 800;
}
.race-hero {
  padding: 46px 0 60px;
  background: linear-gradient(110deg,#eef6ff 0 49.8%,#fff0f1 50.2%);
}
.breadcrumbs {
  display: flex;
  gap: 8px;
  font-size: .82rem;
  margin-bottom: 26px;
}
.race-hero h1 {
  font-size: clamp(3.2rem,8vw,7rem);
  line-height: .88;
  letter-spacing: -.07em;
  margin: 10px 0;
}
.race-call {
  font-size: clamp(1.2rem,2.4vw,1.75rem);
  font-weight: 750;
}
.candidate-matchup {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 16px;
  align-items: center;
  margin: 36px 0 0;
  padding: 18px 18px 16px;
  background: rgba(255,255,255,.94);
  border: 1px solid var(--line);
  border-bottom: 0;
  border-radius: 20px 20px 0 0;
}
.candidate {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 14px;
  align-items: center;
  min-height: 112px;
  padding: 18px;
  border: 0;
  border-radius: 14px;
}
.candidate.dem {
  background: var(--blue-soft);
}
.candidate.rep {
  background: var(--red-soft);
}
.candidate > span {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  color: #fff;
  font-weight: 900;
}
.candidate.dem > span {
  background: var(--blue);
}
.candidate.rep > span {
  background: var(--red);
}
.candidate strong,
.candidate small {
  display: block;
}
.candidate strong {
  font-size: 1.05rem;
}
.candidate small {
  color: var(--muted);
}
.candidate b {
  display: flex;
  flex-direction: column;
  font-size: 2rem;
  line-height: 1;
}
.candidate b::before {
  content: "Win chance";
  margin-bottom: 7px;
  color: var(--muted);
  font-size: .63rem;
  font-weight: 850;
  letter-spacing: .11em;
  text-transform: uppercase;
}
.candidate.dem b {
  grid-column: 1;
  grid-row: 1;
  text-align: left;
}
.candidate.dem > div {
  grid-column: 2;
  grid-row: 1;
  text-align: right;
}
.candidate.dem > span {
  grid-column: 3;
  grid-row: 1;
}
.candidate.rep > span {
  grid-column: 1;
  grid-row: 1;
}
.candidate.rep > div {
  grid-column: 2;
  grid-row: 1;
}
.candidate.rep b {
  grid-column: 3;
  grid-row: 1;
  text-align: right;
  align-items: flex-end;
}
.versus {
  display: grid;
  place-items: center;
  width: 42px;
  height: 42px;
  background: var(--navy);
  border: 4px solid #fff;
  border-radius: 50%;
  color: #fff;
  font-size: .72rem;
  font-weight: 900;
}
.vote-bar {
  background: rgba(255,255,255,.94);
  border: 1px solid var(--line);
  border-top: 0;
  border-radius: 0 0 20px 20px;
  padding: 0 36px 28px;
}
.vote-bar-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 30px;
  padding-top: 23px;
  border-top: 1px solid var(--line);
}
.vote-bar-heading span,
.vote-bar-heading strong {
  display: block;
}
.vote-bar-heading span {
  color: var(--muted);
  font-size: .66rem;
  font-weight: 850;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.vote-bar-heading strong {
  margin-top: 2px;
  font-size: 1.05rem;
}
.vote-bar-heading p {
  max-width: 360px;
  margin: 0;
  color: var(--muted);
  font-size: .78rem;
  text-align: right;
}
.vote-bar-labels {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 16px;
  align-items: end;
  margin-top: 20px;
}
.vote-bar-labels span {
  display: grid;
}
.vote-bar-labels span:nth-child(2) {
  text-align: center;
}
.vote-bar-labels span:last-child {
  text-align: right;
}
.vote-bar-labels small {
  color: var(--muted);
  font-size: .64rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.vote-bar-labels strong {
  font-size: 1.15rem;
  line-height: 1.25;
}
.vote-bar-labels.rcv-vote-labels {
  grid-template-columns: repeat(auto-fit,minmax(180px,1fr));
  gap: 10px;
  align-items: stretch;
  margin-top: 14px;
}
.rcv-vote-labels .rcv-vote-label,
.rcv-vote-labels .rcv-vote-label:nth-child(2),
.rcv-vote-labels .rcv-vote-label:last-child {
  --candidate-color: var(--ind);
  display: grid;
  grid-template-columns: minmax(0,1fr) auto;
  gap: 12px;
  align-items: center;
  min-width: 0;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-left: 4px solid var(--candidate-color);
  border-radius: 9px;
  background: rgba(255,255,255,.7);
  text-align: left;
}
.rcv-vote-labels .rcv-vote-label.dem { --candidate-color: var(--blue); }
.rcv-vote-labels .rcv-vote-label.rep { --candidate-color: var(--red); }
.rcv-vote-labels .rcv-vote-label.ind { --candidate-color: var(--ind); }
.rcv-vote-labels .rcv-vote-label small {
  min-width: 0;
  color: var(--muted);
  line-height: 1.25;
  overflow-wrap: anywhere;
}
.rcv-vote-labels .rcv-vote-label strong {
  color: var(--candidate-color);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.vote-bar-track.rcv-vote-track {
  margin-top: 12px;
}
@media (max-width:900px) {
  .vote-bar-labels.rcv-vote-labels {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
}
@media (max-width:520px) {
  .vote-bar-labels.rcv-vote-labels {
    grid-template-columns: 1fr;
  }
}
.explain-button {
  margin-top: 24px;
  border: 0;
  border-radius: 999px;
  background: var(--navy);
  color: #fff;
  padding: 14px 22px;
  font-weight: 850;
  cursor: pointer;
}
.explain-button span {
  margin-left: 30px;
}
.distribution-shell {
  padding: 30px;
}
.distribution-readout {
  min-height: 48px;
  font-weight: 850;
}
.dot-chart {
  position: relative;
  display: grid;
  grid-template-columns: repeat(var(--dot-bin-count,21),1fr);
  align-items: end;
  gap: 4px;
  min-height: 290px;
  padding: 24px 0;
  border-bottom: 2px solid var(--navy);
}
.dot-chart:after {
  content: "";
  position: absolute;
  left: 50%;
  top: 10px;
  bottom: 0;
  border-left: 2px solid var(--navy);
}
.dot-bin {
  display: flex;
  flex-direction: column-reverse;
  gap: 4px;
  align-items: center;
  align-self: stretch;
  justify-content: flex-start;
  min-width: 0;
  border: 0;
  background: transparent;
  padding: 0;
  cursor: pointer;
}
.dot {
  display: block;
  width: min(100%,11px);
  aspect-ratio: 1;
  border: 0;
  border-radius: 50%;
  padding: 0;
  cursor: pointer;
  background: var(--red);
}
.dot.dem {
  background: var(--blue);
}
.dot.even {
  background: #a8b2c0;
}
.dot-bin:focus-visible {
  outline: 3px solid var(--navy);
  outline-offset: 2px;
}
.axis {
  display: flex;
  justify-content: space-between;
  margin-top: 10px;
  font-size: .72rem;
}
.axis.margin-axis {
  display: grid;
  grid-template-columns: repeat(var(--margin-tick-count),minmax(0,1fr));
  align-items: start;
  min-height: 28px;
}
.axis.margin-axis span {
  text-align: center;
  white-space: nowrap;
  transform: translateX(-50%);
}
.axis.margin-axis span:first-child {
  text-align: left;
  transform: none;
}
.axis.margin-axis span:last-child {
  text-align: right;
  transform: none;
}
.prototype-warning {
  font-size: .75rem;
  color: var(--muted);
  max-width: 860px;
}
.evidence-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 70px;
}
.donut-row {
  display: flex;
  gap: 26px;
  align-items: center;
  margin-top: 28px;
}
.evidence-donut {
  width: 180px;
  aspect-ratio: 1;
  border-radius: 50%;
  position: relative;
}
.evidence-donut:after {
  content: "";
  position: absolute;
  inset: 26%;
  border-radius: 50%;
  background: var(--wash);
}
.evidence-values {
  display: grid;
  grid-template-columns: auto auto;
  gap: 2px 10px;
}
.evidence-values strong {
  font-size: 2rem;
}
.center-waterfall {
  display: grid;
  gap: 14px;
  margin-top: 28px;
}
.water-row {
  display: grid;
  grid-template-columns: minmax(190px,.65fr) 1fr 70px;
  gap: 12px;
  align-items: center;
}
.water-label {
  display: grid;
  gap: 2px;
}
.water-label b {
  font-size: .82rem;
}
.water-label em {
  color: var(--muted);
  font-size: .68rem;
  font-style: normal;
  line-height: 1.25;
}
.water-track {
  position: relative;
  height: 17px;
}
.water-track:after {
  content: "";
  position: absolute;
  left: 50%;
  top: -5px;
  bottom: -5px;
  border-left: 2px solid var(--navy);
}
.water-mark {
  position: absolute;
  left: 50%;
  height: 100%;
  border-radius: 3px;
  background: #9aa7b8;
}
.water-row.dem .water-mark {
  right: 50%;
  left: auto;
  background: var(--blue);
}
.water-row.rep .water-mark {
  left: 50%;
  background: var(--red);
}
.water-row.ind-left .water-mark {
  right: 50%;
  left: auto;
  background: var(--ind);
}
.water-row.ind-right .water-mark {
  left: 50%;
  right: auto;
  background: var(--ind);
}
.water-row small {
  text-align: right;
}
.waterfall-note {
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.45;
  margin: 8px 0 0;
}
.audit-grid {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 14px;
}
.audit-card {
  padding: 20px;
  box-shadow: none;
}
.audit-card span,
.audit-card strong,
.audit-card small {
  display: block;
}
.audit-card strong {
  font-size: 1.5rem;
}
.audit-card small {
  color: var(--muted);
}
.explain-dialog {
  width: min(760px,calc(100% - 30px));
  border: 0;
  border-radius: 20px;
  padding: 30px;
  box-shadow: 0 30px 100px rgba(7,26,51,.3);
}
.explain-dialog::backdrop {
  background: rgba(7,26,51,.65);
}
.explain-top {
  display: flex;
  justify-content: space-between;
  gap: 20px;
}
.explain-top h2 {
  font-size: 2.2rem;
  margin: 0;
}
.close-button {
  border: 0;
  background: transparent;
  font-size: 2rem;
  cursor: pointer;
}
.explain-progress {
  display: flex;
  gap: 6px;
  margin: 22px 0;
}
.explain-progress button {
  flex: 1;
  height: 7px;
  border: 0;
  border-radius: 99px;
  background: var(--line);
  font-size: 0;
}
.explain-progress button.active {
  background: var(--blue);
}
.explain-stage {
  min-height: 260px;
  background: var(--wash);
  border-radius: 14px;
  padding: 26px;
}
.explain-stage p {
  font-size: 1.12rem;
}
.explain-visual {
  display: flex;
  height: 34px;
  border-radius: 6px;
  overflow: hidden;
}
.explain-visual span {
  display: grid;
  place-items: center;
  color: #fff;
  font-size: .72rem;
  font-weight: 850;
}
.explain-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: 20px;
}
.explain-controls button {
  border: 1px solid var(--line);
  background: #fff;
  border-radius: 999px;
  padding: 9px 15px;
  font-weight: 800;
  cursor: pointer;
}
footer:not(.footer) {
  padding: 42px 0;
  background: #061527;
  color: #c5d1df;
}
footer:not(.footer) .wrap {
  display: flex;
  justify-content: space-between;
  gap: 30px;
  align-items: center;
}
footer:not(.footer) p {
  font-size: .75rem;
}
.loading-error {
  padding: 30px;
  background: var(--red-soft);
  border: 1px solid var(--red);
  color: #7b171d;
  border-radius: 12px;
}

/* PRD-aligned editorial and interactive layers */
.forecast-nav {
  border-bottom: 1px solid var(--line);
  background: var(--navy);
  color: #dce9f7;
}
.forecast-nav .wrap {
  display: flex;
  align-items: center;
  gap: 24px;
  overflow-x: auto;
  scrollbar-width: none;
}
.forecast-nav strong {
  flex: 0 0 auto;
  white-space: nowrap;
}
.forecast-nav a {
  flex: 0 0 auto;
  padding: 10px 0;
  color: inherit;
  font-size: .75rem;
  font-weight: 800;
  text-decoration: none;
}
.forecast-nav a[aria-current=page] {
  color: #fff;
  box-shadow: inset 0 -3px var(--red);
}
.hero-grid,
.chamber-hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: minmax(0,1.2fr) minmax(290px,.8fr);
  gap: 64px;
  align-items: end;
}
.editorial-question {
  max-width: 380px;
  padding: 28px;
  border-left: 5px solid var(--red);
  background: rgba(255,255,255,.82);
  box-shadow: var(--shadow);
}
.editorial-question strong {
  display: block;
  font-family: Georgia,serif;
  font-size: 1.7rem;
  line-height: 1.15;
}
.frequency-lead {
  max-width: 720px;
  margin: 24px 0 0;
  padding-left: 18px;
  border-left: 4px solid var(--red);
  font-family: Georgia,serif;
  font-size: 1.15rem;
  font-weight: 700;
}
.inverse-frequency {
  color: #fff;
}
.meta-row,
.hero-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  align-items: center;
}
.model-meta,
.status-chip {
  display: inline-flex;
  margin-top: 22px;
  padding: 7px 11px;
  border: 1px solid var(--line);
  border-radius: 999px;
  background: rgba(255,255,255,.76);
  color: var(--muted);
  font-size: .76rem;
}
.status-chip {
  margin: 0 0 10px;
  color: var(--navy);
  font-weight: 800;
}
.model-portals {
  display: grid;
  grid-template-columns: 1.1fr 1fr 1fr;
  gap: 18px;
}
.model-portal {
  position: relative;
  min-width: 0;
  padding: 28px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 20px;
  background: #fff;
  box-shadow: var(--shadow);
}
.model-portal h2 {
  margin: 9px 0;
  font-size: 2rem;
  line-height: 1;
}
.model-portal p {
  color: var(--muted);
}
.portal-control {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: end;
  gap: 10px;
  margin: 18px 0;
  text-align: center;
}
.portal-control strong {
  font-size: 2.2rem;
}
.portal-control span {
  color: var(--muted);
  font-size: .67rem;
}
.portal-state,
.portal-state-visual {
  display: grid;
  grid-template-columns: minmax(90px,140px) 1fr;
  gap: 18px;
  align-items: center;
}
.portal-state strong,
.portal-state span {
  display: block;
}
.house-shell {
  position: relative;
  height: 126px;
  margin: 20px 0;
}
.house-shell i {
  position: absolute;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: #cbd3dd;
}
.house-shell i:nth-child(1) { left: 13%; top: 62%; }
.house-shell i:nth-child(2) { left: 24%; top: 36%; }
.house-shell i:nth-child(3) { left: 39%; top: 18%; }
.house-shell i:nth-child(4) { left: 58%; top: 18%; }
.house-shell i:nth-child(5) { left: 73%; top: 36%; }
.house-shell i:nth-child(6) { left: 84%; top: 62%; }
.house-shell:after {
  content: "HOUSE MODEL\A COMING LATER";
  white-space: pre;
  position: absolute;
  left: 50%;
  top: 54%;
  transform: translate(-50%,-50%);
  color: var(--muted);
  font-size: .68rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-align: center;
}
.national-story .wrap {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 70px;
  align-items: center;
}
.uncertainty-scale {
  display: grid;
  gap: 0;
  border-top: 1px solid var(--line);
}
.uncertainty-scale div {
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 18px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}
.uncertainty-scale span {
  color: var(--blue);
  font-weight: 900;
}
.uncertainty-scale small {
  grid-column: 2;
  color: var(--muted);
}
.race-card {
  display: grid;
  grid-template-columns: 90px minmax(0,1fr);
  gap: 18px;
  border-top: 1px solid var(--line);
}
.race-card-shape {
  display: grid;
  place-items: center;
}
.race-card-body {
  min-width: 0;
}
.race-card-body > * {
  display: block;
}
.race-card-body p {
  margin: 5px 0;
  font-family: Georgia,serif;
  font-weight: 700;
}
.race-card-body small {
  color: var(--muted);
}
.card-link,
.card-note {
  margin-top: 14px;
  color: var(--blue);
  font-size: .75rem;
  font-weight: 850;
}
.card-note {
  color: var(--muted);
}
.state-silhouette {
  display: block;
  width: 100%;
  height: auto;
  max-height: 130px;
  overflow: visible;
}
.state-silhouette path {
  fill: #d9e1eb;
  stroke: var(--navy);
  stroke-width: 1.5;
  vector-effect: non-scaling-stroke;
}
.state-silhouette .state-split-blue { stop-color: var(--blue); }
.state-silhouette .state-split-red { stop-color: var(--red); }
.state-silhouette .state-split-path,
.dem-fill .state-silhouette .state-split-path,
.rep-fill .state-silhouette .state-split-path {
  stroke: var(--navy);
}
.state-fallback {
  display: grid;
  place-items: center;
  width: 70px;
  height: 70px;
  border-radius: 50%;
  background: linear-gradient(90deg,var(--blue) 0 50%,var(--red) 50% 100%);
  color: #fff;
  font-weight: 900;
}
.all-states-strip {
  display: grid;
  grid-template-columns: repeat(auto-fit,minmax(150px,1fr));
  gap: 12px;
  margin-top: 28px;
}
.all-states-strip > * {
  display: grid;
  grid-template-columns: 54px 1fr;
  grid-template-rows: auto auto;
  gap: 0 12px;
  align-items: center;
  padding: 12px;
  border: 1px solid var(--line);
  background: #fff;
  color: inherit;
  text-decoration: none;
}
.all-states-strip svg {
  grid-row: 1 / 3;
}
.all-states-strip small {
  color: var(--muted);
}
.methodology-preview {
  display: grid;
  grid-template-columns: 1fr .8fr;
  gap: 52px;
  align-items: center;
}
.method-steps {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 8px;
}
.method-steps button,
.map-mode-controls button,
.history-tabs button {
  border: 1px solid var(--line);
  background: #fff;
  color: var(--ink);
  padding: 12px;
  cursor: pointer;
  font-weight: 800;
}
.method-steps button[aria-pressed=true],
.map-mode-controls button[aria-pressed=true],
.history-tabs button[aria-pressed=true] {
  border-color: var(--blue);
  background: var(--blue);
  color: #fff;
}
.method-steps b,
.method-steps span {
  display: block;
}
.method-steps b {
  font-size: 1.5rem;
}
.method-detail {
  position: relative;
  min-height: 190px;
  padding: 30px 30px 30px 88px;
  border-left: 5px solid var(--red);
  background: #fff;
  box-shadow: var(--shadow);
}
.method-number {
  position: absolute;
  left: 26px;
  top: 25px;
  color: var(--red);
  font-family: Georgia,serif;
  font-size: 3rem;
  font-weight: 900;
}
.update-grid,
.meaning-ribbon,
.update-facts {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: 44px;
  align-items: center;
}
.latest-update {
  padding: 64px 0;
  border-top: 1px solid var(--line);
}
.update-facts {
  grid-template-columns: repeat(3,1fr);
  gap: 0;
}
.update-facts span {
  padding: 15px;
  border-left: 1px solid var(--line);
}
.update-facts small,
.update-facts strong {
  display: block;
}
.update-facts small {
  color: var(--muted);
}
.chamber-hero-grid {
  align-items: center;
}
.chamber-hero .freshness,
.chamber-hero .model-meta {
  border-color: rgba(255,255,255,.25);
  background: rgba(255,255,255,.1);
  color: #dce9f7;
}
.chamber-hero-question {
  padding: 26px;
  border-top: 5px solid var(--red);
  background: #fff;
  color: var(--ink);
}
.chamber-hero-question strong {
  display: block;
  font-family: Georgia,serif;
  font-size: 1.45rem;
}
.mosaic-sentence {
  max-width: 760px;
  margin: 8px auto 18px;
  font-family: Georgia,serif;
  font-weight: 700;
  text-align: center;
}
.meaning-ribbon {
  grid-template-columns: repeat(3,1fr);
  gap: 0;
  margin-bottom: 38px;
  border-block: 1px solid var(--line);
}
.meaning-ribbon span {
  padding: 18px;
  text-align: center;
}
.meaning-ribbon span + span {
  border-left: 1px solid var(--line);
}
.meaning-ribbon small,
.meaning-ribbon strong {
  display: block;
}
.meaning-ribbon small {
  color: var(--muted);
}
.meaning-ribbon strong {
  font-size: 1.8rem;
}
.seat-summary-ribbon {
  grid-template-columns: repeat(6,1fr);
}
.seat-summary-ribbon .seat-expected {
  grid-column: span 2;
}
.seat-summary-ribbon .seat-range {
  grid-column: span 3;
  border-top: 1px solid var(--line);
}
.seat-summary-ribbon .dem-range {
  border-left: 0;
}
.chart-question {
  margin-bottom: 18px;
}
.chart-question span,
.chart-question strong {
  display: block;
}
.chart-question span {
  color: var(--muted);
  font-size: .75rem;
  font-weight: 800;
  text-transform: uppercase;
}
.seat-row {
  width: 100%;
  border: 0;
  background: transparent;
  padding: 2px 0;
  cursor: pointer;
}
.seat-row:hover,
.seat-row:focus-visible {
  background: var(--blue-soft);
}
.map-mode-controls,
.history-tabs {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 22px;
}
.map-toolbar {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  align-items: start;
  flex-wrap: wrap;
}
.map-toolbar .map-mode-controls {
  flex: 1 1 auto;
  margin-bottom: 0;
}
.map-history-control {
  flex: 0 0 190px;
  min-width: 190px;
  color: var(--muted);
  font-size: .74rem;
  font-weight: 800;
}
.map-history-control span,
.map-history-control strong,
.map-history-control label {
  display: block;
}
.map-history-control select {
  width: 100%;
  margin-top: 4px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: #fff;
  padding: 8px 10px;
  color: var(--navy);
  font: inherit;
}
.map-date-note {
  display: block;
  margin: 12px 0;
  color: var(--muted);
}
.configured-map {
  display: grid;
  grid-template-columns: 1fr 300px;
  gap: 30px;
}
.map-field {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 22px;
  align-items: stretch;
}
.map-state {
  display: grid;
  grid-template-columns: minmax(100px,1fr) 1fr;
  gap: 24px;
  align-items: center;
  min-height: 250px;
  padding: 24px;
  border: 1px solid var(--line);
  background: #fff;
  text-align: left;
  cursor: pointer;
}
.map-state span,
.map-state strong,
.map-state b,
.map-state small {
  display: block;
}
.map-state strong {
  font-size: 1.5rem;
}
.map-state b {
  font-size: 2rem;
}
.map-state small {
  color: var(--muted);
}
.map-legend {
  align-self: center;
  padding-left: 24px;
  border-left: 4px solid var(--navy);
}
.map-legend > strong {
  display: block;
  font-family: Georgia,serif;
  font-size: 1.3rem;
}
.map-key {
  display: grid;
  gap: 8px;
  margin-top: 18px;
  font-size: .78rem;
}
.map-key i {
  display: inline-block;
  width: 12px;
  height: 12px;
  margin-right: 6px;
  border-radius: 50%;
}
.dem-key { background: var(--blue); }
.rep-key { background: var(--red); }
.state-button {
  display: grid;
  grid-template-columns: 70px 1fr;
  grid-template-rows: 1fr auto;
  gap: 4px 14px;
  align-items: center;
}
.state-button svg {
  grid-row: 1 / 3;
  max-height: 90px;
}
.state-button span {
  font-weight: 850;
}
.state-button small {
  color: var(--muted);
}
.preview-head {
  display: grid;
  grid-template-columns: 80px 1fr;
  gap: 15px;
  align-items: center;
}
.preview-head strong {
  display: block;
  font-size: 2rem;
}
.preview-head .overline {
  display: block;
  margin: 0 0 3px;
}
.preview-frequency {
  font-family: Georgia,serif;
  font-weight: 700;
}
.state-preview dl {
  display: grid;
  gap: 8px;
  margin: 18px 0;
}
.state-preview dl div {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.state-preview dt {
  color: var(--muted);
}
.state-preview dd {
  margin: 0;
  font-weight: 850;
  text-align: right;
}
.preview-links {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  font-size: .78rem;
}
.history-shell {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 40px;
  align-items: center;
}
.history-chart {
  min-height: 170px;
  padding: 28px 0;
}
.history-axis {
  display: flex;
  justify-content: space-between;
  color: var(--muted);
  font-size: .72rem;
}
.history-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px 18px;
  margin-bottom: 8px;
  color: var(--muted);
  font-size: .75rem;
  font-weight: 750;
}
.history-legend span {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.history-legend i {
  width: 18px;
  height: 3px;
  background: var(--navy);
}
.history-legend .dem i { background: var(--blue); }
.history-legend .rep i { background: var(--red); }
.history-legend .ind i { background: var(--ind); }
.history-legend .other i { background: #8792a2; }
.history-line {
  position: relative;
  height: 3px;
  margin: 38px 0;
  background: var(--line);
}
.history-line i {
  position: absolute;
  top: 50%;
  width: 18px;
  height: 18px;
  transform: translate(-50%,-50%);
  border: 4px solid #fff;
  border-radius: 50%;
  background: var(--navy);
  box-shadow: 0 0 0 2px var(--navy);
}
.history-line i.dem { background: var(--blue); box-shadow: 0 0 0 2px var(--blue); }
.history-line i.rep { background: var(--red); box-shadow: 0 0 0 2px var(--red); }
.history-plot {
  display: block;
  width: 100%;
  height: 140px;
  overflow: visible;
}
.history-plot line {
  stroke: var(--line);
  stroke-width: 2;
}
.history-plot .history-guide {
  stroke: rgba(7,26,51,.38);
  stroke-dasharray: 4 4;
  stroke-width: 1.5;
  pointer-events: none;
}
.history-plot polyline,
.history-plot .history-series-segment {
  fill: none;
  stroke: var(--navy);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.history-plot .history-series.dem,
.history-plot .history-series-segment.dem { stroke: var(--blue); }
.history-plot .history-series.rep,
.history-plot .history-series-segment.rep { stroke: var(--red); }
.history-plot .history-series.ind,
.history-plot .history-series-segment.ind { stroke: var(--ind); }
.history-plot .history-series.other,
.history-plot .history-series-segment.other { stroke: #8792a2; }
.history-plot .history-grid-line {
  stroke: #e2e7ed;
  stroke-width: 1;
}
.history-plot .history-center-line {
  stroke: var(--navy);
  stroke-width: 1.5;
}
.history-plot .history-y-label {
  fill: var(--muted);
  font-size: 9px;
  font-weight: 700;
}
.history-plot circle {
  fill: var(--navy);
  stroke: #fff;
  stroke-width: 3;
  pointer-events: none;
}
.history-plot circle.dem { fill: var(--blue); }
.history-plot circle.rep { fill: var(--red); }
.history-plot circle.ind { fill: var(--ind); }
.history-plot circle.other { fill: #8792a2; }
.history-hit-area {
  fill: transparent;
  cursor: crosshair;
  outline: none;
}
.history-hit-area:focus-visible {
  fill: rgba(37,99,235,.07);
  stroke: var(--blue);
  stroke-width: 2;
}
.history-date-controls {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 16px;
}
.history-date-controls button {
  border: 1px solid var(--line);
  border-radius: 999px;
  background: #fff;
  padding: 7px 10px;
  color: var(--navy);
  font-size: .76rem;
  font-weight: 800;
  cursor: pointer;
}
.history-date-controls button[aria-pressed="true"] {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
}
.history-readout {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: baseline;
}
.history-readout-series {
  display: inline-flex;
  align-items: baseline;
  gap: 6px;
  padding-right: 12px;
  border-right: 1px solid var(--line);
}
.history-readout-series.dem strong { color: var(--blue); }
.history-readout-series.rep strong { color: var(--red); }
.history-readout-series.ind strong { color: var(--ind); }
.history-readout-series.other strong { color: #667085; }
.history-readout strong {
  font-size: 1.7rem;
}
.history-readout span,
.history-readout small {
  color: var(--muted);
}
.history-hint {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: .74rem;
}
.sr-only {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0,0,0,0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}
.history-shell aside {
  padding-left: 24px;
  border-left: 4px solid var(--red);
}
.method-strip-grid,
.trust-footer .wrap {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 60px;
  align-items: center;
}
.method-strip-points {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  gap: 12px;
}
.method-strip-points span {
  padding-top: 12px;
  border-top: 3px solid var(--red);
}
.method-strip-points b,
.method-strip-points small {
  display: block;
}
.method-strip-points small {
  color: #c8d4e3;
}
.trust-footer {
  padding: 52px 0;
  border-top: 1px solid var(--line);
}
.trust-links {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: 12px 20px;
  color: var(--muted);
  font-size: .78rem;
}
.trust-links a {
  color: var(--blue);
  font-weight: 850;
}
.race-title-row {
  display: grid;
  grid-template-columns: 1fr 180px;
  gap: 30px;
  align-items: center;
}
.race-state-shape {
  color: var(--red);
}
.race-state-shape .state-silhouette path {
  stroke: var(--navy);
}
.race-topline {
  display: grid;
  grid-template-columns: repeat(4,1fr);
  margin-top: 22px;
  border-block: 1px solid var(--line);
  background: rgba(255,255,255,.7);
}
.race-topline span {
  min-width: 0;
  padding: 16px;
}
.race-topline span + span {
  border-left: 1px solid var(--line);
}
.race-topline small,
.race-topline strong {
  display: block;
}
.race-topline small {
  color: var(--muted);
  font-size: .67rem;
  font-weight: 850;
  text-transform: uppercase;
}
.race-topline strong {
  font-size: .92rem;
}
.hero-actions .freshness,
.hero-actions .model-meta {
  margin-top: 24px;
}
.chapter-nav {
  border-bottom: 1px solid var(--line);
  background: #fff;
}
.chapter-nav .wrap {
  display: flex;
  gap: 25px;
  overflow-x: auto;
}
.chapter-nav a {
  flex: 0 0 auto;
  padding: 13px 0;
  color: var(--muted);
  font-size: .75rem;
  font-weight: 850;
  text-decoration: none;
}
.distribution-readout span,
.distribution-readout small {
  display: block;
}
.distribution-readout span {
  font-size: 1.4rem;
}
.distribution-readout small {
  color: var(--muted);
}
.distribution-meaning {
  display: grid;
  grid-template-columns: .55fr 1.45fr;
  gap: 24px;
  margin-top: 24px;
  padding: 22px 0;
  border-block: 1px solid var(--line);
}
.distribution-meaning strong {
  font-family: Georgia,serif;
  font-size: 1.35rem;
}
.distribution-meaning p {
  margin: 0;
  color: var(--muted);
}
.probability-meaning-layout {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 60px;
  align-items: center;
}
.forecast-vs-polls {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 18px;
  align-items: center;
}
.forecast-vs-polls > div {
  padding: 22px;
  border-top: 4px solid var(--blue);
  background: #fff;
  box-shadow: var(--shadow);
}
.forecast-vs-polls > div:last-child {
  border-color: var(--red);
}
.forecast-vs-polls > div.tone-dem,
.forecast-vs-polls > div.tone-dem:last-child { border-top-color: var(--blue); }
.forecast-vs-polls > div.tone-rep,
.forecast-vs-polls > div.tone-rep:last-child { border-top-color: var(--red); }
.forecast-vs-polls > div.tone-ind,
.forecast-vs-polls > div.tone-ind:last-child { border-top-color: var(--ind); }
.forecast-vs-polls > div.tone-neutral,
.forecast-vs-polls > div.tone-neutral:last-child { border-top-color: #8f9baa; }
.forecast-vs-polls strong,
.forecast-vs-polls small {
  display: block;
}
.forecast-vs-polls small {
  margin-top: 8px;
  color: var(--muted);
}
.comparison-arrow {
  font-size: 1.8rem;
  font-weight: 900;
}
.vote-bar-track .other {
  background: #aab4c2;
}
.donut-label {
  position: absolute;
  z-index: 1;
  inset: 26%;
  display: grid;
  place-content: center;
  text-align: center;
}
.donut-label strong,
.donut-label span {
  display: block;
}
.donut-label strong {
  font-size: 1.4rem;
}
.donut-label span {
  color: var(--muted);
  font-size: .68rem;
}
.checkpoint-row {
  display: grid;
  grid-template-columns: 32px minmax(0,1fr) auto;
  gap: 14px;
  align-items: center;
  padding: 13px 0;
  border-bottom: 1px solid var(--line);
}
.checkpoint-number {
  display: grid;
  place-items: center;
  width: 28px;
  height: 28px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  font-weight: 900;
}
.checkpoint-row strong,
.checkpoint-row small {
  display: block;
}
.checkpoint-row small {
  color: var(--muted);
}
.checkpoint-values {
  display: flex;
  gap: 10px;
  font-weight: 850;
}
.evidence-story {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 28px;
}
.evidence-story article {
  padding-top: 18px;
  border-top: 5px solid var(--blue);
}
.evidence-story article:nth-child(2) { border-color: var(--red); }
.evidence-story article:nth-child(3) { border-color: var(--navy); }
.evidence-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  margin-bottom: 16px;
  border-radius: 50%;
  background: var(--blue-soft);
  color: var(--blue);
  font-weight: 900;
}
.audit-details {
  margin-top: 42px;
  border-top: 1px solid var(--line);
}
.audit-details summary {
  padding: 18px 0;
  color: var(--blue);
  font-weight: 850;
  cursor: pointer;
}
.context-links {
  display: grid;
  grid-template-columns: repeat(2,1fr);
  gap: 18px;
  margin-bottom: 30px;
}
.context-links a {
  padding: 20px;
  border-top: 4px solid var(--blue);
  background: #fff;
  text-decoration: none;
}
.context-links a:last-child { border-color: var(--red); }
.context-links span,
.context-links strong {
  display: block;
}
.context-links span {
  color: var(--muted);
  font-size: .75rem;
}
.compact-browser {
  margin-top: 18px;
}
.explain-stage [data-explain-visual] {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-top: 24px;
}
.explain-value {
  padding: 18px;
  border: 2px solid currentColor;
  background: #fff;
  font-size: 1.2rem;
  font-weight: 900;
  text-align: center;
}
@media (max-width:850px) {
  .story-grid,
  .chamber-layout,
  .browser-layout,
  .evidence-grid,
  .hero-grid,
  .chamber-hero-grid,
  .national-story .wrap,
  .methodology-preview,
  .configured-map,
  .history-shell,
  .method-strip-grid,
  .trust-footer .wrap,
  .probability-meaning-layout {
    grid-template-columns: 1fr;
  }
  .model-portals {
    grid-template-columns: 1fr 1fr;
  }
  .model-portal:first-child {
    grid-column: 1 / -1;
  }
  .editorial-question,
  .chamber-hero-question {
    max-width: none;
  }
  .map-legend,
  .history-shell aside {
    padding: 20px 0 0;
    border-top: 4px solid var(--red);
    border-left: 0;
  }
  .race-topline,
  .evidence-story {
    grid-template-columns: repeat(2,1fr);
  }
  .race-topline span:nth-child(3) {
    border-left: 0;
    border-top: 1px solid var(--line);
  }
  .race-topline span:nth-child(4) {
    border-top: 1px solid var(--line);
  }
  .race-grid,
  .audit-grid {
    grid-template-columns: repeat(2,1fr);
  }
  .browser-layout {
    gap: 14px;
  }
  .state-preview {
    min-height: auto;
  }
  .section-title {
    align-items: start;
    flex-direction: column;
  }
  .section-title > p {
    text-align: left;
  }
  .nav nav {
    display: none;
  }
  .nav nav.open {
    display: flex;
    position: absolute;
    left: 0;
    right: 0;
    top: 70px;
    padding: 18px 20px;
    background: #fff;
    flex-direction: column;
    gap: 4px;
    border-bottom: 1px solid var(--line);
  }
  .nav nav a {
    padding: 10px;
  }
  .nav-toggle {
    display: block;
    border: 1px solid var(--line);
    background: #fff;
    border-radius: 8px;
    padding: 8px 12px;
  }
  .candidate-matchup {
    grid-template-columns: 1fr;
    padding: 14px;
  }
  .versus {
    justify-self: center;
    text-align: center;
  }
  .evidence-grid {
    gap: 55px;
  }
  .chamber {
    min-height: 300px;
  }
}
@media (max-width:560px) {
  .wrap {
    width: min(calc(100% - 28px),var(--max));
    max-width: calc(100vw - 28px);
  }
  .home-hero {
    padding: 66px 0 78px;
  }
  .section {
    padding: 58px 0;
  }
  .race-grid,
  .portal-grid,
  .race-list,
  .audit-grid,
  .model-portals,
  .map-field,
  .evidence-story,
  .context-links {
    grid-template-columns: 1fr;
  }
  .model-portal:first-child {
    grid-column: auto;
  }
  .hero-grid,
  .chamber-hero-grid {
    gap: 34px;
  }
  .home-hero h1,
  .chamber-hero h1,
  .race-hero h1 {
    overflow-wrap: anywhere;
  }
  .method-steps,
  .method-strip-points {
    grid-template-columns: repeat(2,1fr);
  }
  .method-detail {
    padding: 84px 22px 24px;
  }
  .method-number {
    left: 22px;
    top: 14px;
  }
  .update-grid,
  .update-facts,
  .meaning-ribbon {
    grid-template-columns: 1fr;
  }
  .update-facts span,
  .meaning-ribbon span + span {
    border-top: 1px solid var(--line);
    border-left: 0;
  }
  .portal-control {
    grid-template-columns: 1fr 1fr;
  }
  .portal-control span {
    grid-column: 1 / -1;
    grid-row: 2;
  }
  .race-card {
    grid-template-columns: 70px minmax(0,1fr);
    padding: 18px;
  }
  .map-state {
    grid-template-columns: 110px 1fr;
    min-height: 200px;
    padding: 18px;
  }
  .race-title-row {
    grid-template-columns: 1fr 100px;
    gap: 12px;
  }
  .race-topline {
    grid-template-columns: 1fr;
  }
  .race-topline span + span,
  .race-topline span:nth-child(3) {
    border-top: 1px solid var(--line);
    border-left: 0;
  }
  .distribution-meaning,
  .forecast-vs-polls {
    grid-template-columns: 1fr;
  }
  .comparison-arrow {
    transform: rotate(90deg);
    text-align: center;
  }
  .checkpoint-row {
    grid-template-columns: 32px minmax(0,1fr);
  }
  .checkpoint-values {
    grid-column: 2;
    flex-wrap: wrap;
  }
  .history-readout {
    align-items: flex-start;
    flex-direction: column;
    gap: 0;
  }
  .control-split {
    grid-template-columns: 1fr 1fr;
  }
  .control-split span {
    grid-column: 1/-1;
    grid-row: 2;
  }
  .mini-mosaic {
    grid-template-columns: repeat(10,1fr);
  }
  .election-mosaic {
    grid-template-columns: repeat(20,1fr);
    gap: 4px;
  }
  .mosaic-card {
    padding: 22px;
  }
  .mosaic-numbers strong {
    font-size: 2.5rem;
  }
  .out-of {
    display: none;
  }
  .mosaic-numbers {
    grid-template-columns: 1fr 1fr;
  }
  .candidate {
    grid-template-columns: auto 1fr auto;
  }
  .vote-bar {
    padding: 0 20px 22px;
  }
  .vote-bar-heading {
    align-items: start;
    flex-direction: column;
    gap: 6px;
  }
  .vote-bar-heading p {
    text-align: left;
  }
  .distribution-shell {
    padding: 18px;
  }
  .dot-chart {
    min-height: 230px;
    gap: 2px;
  }
  .dot {
    width: min(100%,8px);
  }
  .axis {
    font-size: .62rem;
  }
  .water-row {
    grid-template-columns: 1fr 56px;
    font-size: .72rem;
  }
  .water-label {
    grid-column: 1 / -1;
  }
  .state-browser {
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .state-button {
    min-height: 125px;
  }
  .state-mark {
    width: 56px;
    height: 56px;
  }
  .chamber {
    min-height: 250px;
  }
  .seat-dot {
    width: 11px;
    height: 11px;
  }
  .donut-row {
    align-items: flex-start;
  }
  .evidence-donut {
    width: 140px;
  }
  .explain-dialog {
    padding: 20px;
  }
  .explain-stage {
    min-height: 300px;
    padding: 20px;
  }
  footer:not(.footer) .wrap {
    align-items: flex-start;
    flex-direction: column;
  }
}
/* Simplified public reading flow */
.compact-section {
  padding: 56px 0;
}
.simplified-hero {
  grid-template-columns: minmax(0,1fr);
}
.compact-question {
  align-self: center;
  padding: 28px;
}
.compact-question h2 {
  font-size: clamp(1.45rem,2.5vw,2.15rem);
}
.home-hero {
  isolation: isolate;
  padding: clamp(36px,6vw,76px) 16px;
  background:
    radial-gradient(circle at 12% 20%,rgba(23,105,194,.24),transparent 34%),
    radial-gradient(circle at 88% 18%,rgba(216,59,67,.20),transparent 32%),
    radial-gradient(circle at 55% 102%,rgba(117,73,190,.22),transparent 38%),
    linear-gradient(135deg,#f7fbff,#fff 48%,#fff8fa);
}
.home-hero:before {
  content:"";
  position:absolute;
  inset:0;
  z-index:-1;
  background:radial-gradient(ellipse at 50% 45%,rgba(255,255,255,.82),transparent 58%);
  pointer-events:none;
}
.home-hero:after {
  width:30vw;
  height:30vw;
  right:-10vw;
  top:-13vw;
  border:0;
  background:rgba(216,59,67,.10);
  filter:blur(70px);
}
.home-hero .simplified-hero {
  position:relative;
  padding:clamp(34px,6vw,76px);
  border:1px solid rgba(255,255,255,.92);
  border-radius:32px;
  background:rgba(255,255,255,.80);
  box-shadow:0 28px 80px rgba(7,26,51,.14),inset 0 1px 0 #fff;
  backdrop-filter:blur(18px);
}
.home-hero .simplified-hero > div {max-width:920px}
.home-hero h1 {font-size:clamp(3rem,7vw,6.5rem)}
.home-hero-actions {display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:26px}
.home-hero-actions a {display:inline-flex;align-items:center;gap:22px;min-height:46px;padding:12px 17px;border-radius:12px;font-weight:850;text-decoration:none}
.hero-primary {background:var(--navy);color:#fff}
.hero-primary:hover,.hero-primary:focus-visible {background:var(--blue);color:#fff}
.hero-secondary {border:1px solid var(--line);background:rgba(255,255,255,.72);color:var(--navy)}
.simplified-portals {
  grid-template-columns: minmax(0,1.35fr) minmax(280px,.65fr);
}
.simplified-portals .model-portal {
  min-height: 0;
}
.availability-note {
  margin: 18px 0 0;
  color: var(--muted);
  font-size: .84rem;
}
.reader-details {
  border-block: 1px solid var(--line);
  background: #fff;
}
.reader-details > summary {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  align-items: center;
  padding: 22px 4px;
  cursor: pointer;
  list-style: none;
}
.reader-details > summary::-webkit-details-marker {
  display: none;
}
.reader-details > summary span,
.reader-details > summary small,
.reader-details > summary strong {
  display: block;
}
.reader-details > summary small {
  margin-bottom: 3px;
  color: var(--blue);
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.reader-details > summary strong {
  font-family: Georgia,serif;
  font-size: 1.35rem;
}
.reader-details > summary b {
  color: var(--blue);
  font-size: .8rem;
}
.reader-details[open] > summary {
  border-bottom: 1px solid var(--line);
}
.simplified-method {
  padding: 30px 0 8px;
}
.compact-update {
  display: flex;
  justify-content: space-between;
  gap: 24px;
  margin-top: 24px;
  padding: 18px 4px;
  border-top: 1px solid var(--line);
  color: var(--muted);
  font-size: .82rem;
}
.compact-update div,
.compact-update small,
.compact-update strong,
.compact-update span {
  display: block;
}
.compact-update strong {
  color: var(--navy);
}
.compact-update div:last-child {
  text-align: right;
}
.map-selected dl {
  display: grid;
  gap: 10px;
  margin: 20px 0;
}
.map-selected dl div {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--line);
}
.map-selected dt {
  color: var(--muted);
}
.map-selected dd {
  margin: 0;
  font-weight: 850;
}
.compact-method {
  padding: 48px 0;
}
.compact-method h2 {
  max-width: 850px;
  font-size: clamp(1.7rem,3vw,2.75rem);
}
.compact-method p {
  max-width: 760px;
}
.hero-distribution {
  margin-top: 28px;
  padding: 26px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: rgba(255,255,255,.88);
  box-shadow: var(--shadow);
}
.distribution-heading {
  display: grid;
  grid-template-columns: 1fr minmax(260px,.75fr);
  gap: 30px;
  align-items: end;
  margin-bottom: 18px;
}
.distribution-heading h2 {
  margin: 0;
  font-size: clamp(1.6rem,3vw,2.6rem);
}
.distribution-heading > p {
  margin: 0;
  color: var(--muted);
}
.hero-distribution .distribution-shell {
  padding: 18px 22px;
  box-shadow: none;
}
.hero-distribution .distribution-meaning {
  margin-top: 12px;
  padding: 0;
  border: 0;
  background: transparent;
}
.race-topline {
  grid-template-columns: repeat(2,1fr);
}
.simplified-evidence {
  margin-top: 30px;
}
.inline-details {
  margin-top: 22px;
  border-top: 1px solid var(--line);
}
.inline-details summary {
  padding: 16px 0;
  color: var(--blue);
  font-weight: 850;
  cursor: pointer;
}
.inline-details .forecast-vs-polls {
  margin-top: 4px;
}
.reader-details .evidence-story,
.reader-details .audit-grid,
.reader-details .history-shell {
  margin-top: 26px;
  margin-bottom: 26px;
}
@media (max-width:800px) {
  .simplified-hero,
  .simplified-portals,
  .distribution-heading {
    grid-template-columns: 1fr;
  }
  .compact-question {
    padding: 22px;
  }
  .configured-map {
    grid-template-columns: 1fr;
  }
  .map-legend {
    padding: 22px 0 0;
    border-top: 4px solid var(--navy);
    border-left: 0;
  }
  .compact-update {
    flex-direction: column;
  }
  .compact-update div:last-child {
    text-align: left;
  }
  .hero-distribution {
    padding: 16px;
  }
}
@media (max-width:520px) {
  .compact-section {
    padding: 42px 0;
  }
  .reader-details > summary b {
    display: none;
  }
  .map-field,
  .race-topline {
    grid-template-columns: 1fr;
  }
  .race-topline span + span {
    border-top: 1px solid var(--line);
    border-left: 0;
  }
  .home-hero {padding:22px 12px}
  .home-hero .simplified-hero {padding:30px 22px;border-radius:24px}
  .home-hero-actions {align-items:stretch;flex-direction:column}
  .home-hero-actions a {justify-content:space-between;width:100%}
}

/* 2026 editorial simplification: forecast first, context on request. */
.forecast-nav {
  display: none !important;
}
.site-header {
  border-bottom: 1px solid var(--line);
  box-shadow: none;
}
.nav {
  min-height: 60px;
}
.section,
.compact-section {
  padding: clamp(36px,5vw,64px) 0;
}
.tinted,
.map-section {
  background: transparent;
}
.section-title {
  margin-bottom: 22px;
}
.section-title .overline {
  display: none;
}
.section-title h2 {
  font-size: clamp(1.8rem,3vw,2.6rem);
}
.section-title > p {
  max-width: 50ch;
}
.quiet-links {
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 22px;
  padding-block: 22px 42px;
  border-top: 1px solid var(--line);
}
.quiet-links a {
  color: var(--navy);
  font-size: .88rem;
  font-weight: 750;
  text-decoration: none;
}
.quiet-links a:hover,
.quiet-links a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 4px;
}

/* Homepage: one national story, one race list, one secondary destination. */
.home-hero {
  padding: clamp(42px,7vw,86px) 0;
  background:
    radial-gradient(circle at 12% 12%,rgba(32,115,202,.13),transparent 32%),
    radial-gradient(circle at 92% 16%,rgba(220,55,65,.11),transparent 30%),
    radial-gradient(circle at 55% 92%,rgba(109,63,152,.08),transparent 34%),
    #fbfcfe;
}
.home-hero-grid.simplified-hero {
  grid-template-columns: minmax(0,1.3fr) minmax(260px,.55fr);
  gap: clamp(28px,5vw,70px);
  align-items: center;
}
.home-hero-copy .overline {
  margin-top: 18px;
}
.home-control-summary {
  max-width: 660px;
  margin-top: 28px;
  padding-block: 20px;
  border-block: 1px solid var(--line);
}
.home-control-numbers {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 22px;
}
.home-control-numbers span {
  display: grid;
}
.home-control-numbers .rep {
  text-align: right;
}
.home-control-numbers strong {
  font-family: var(--display);
  font-size: clamp(2rem,4vw,3.25rem);
  line-height: 1;
}
.home-control-numbers .dem strong { color: var(--blue); }
.home-control-numbers .rep strong { color: var(--red); }
.home-control-numbers small {
  margin-top: 5px;
  color: var(--muted);
  font-weight: 700;
}
.home-control-summary > p {
  margin: 8px 0 0;
  color: var(--muted);
  font-size: .92rem;
}
.mini-mosaic {
  display: grid;
  grid-template-columns: repeat(20,1fr);
  gap: 3px;
  margin-top: 16px;
}
.mini-mosaic .mosaic-dot {
  aspect-ratio: 1;
  width: 100%;
  min-width: 0;
  border-radius: 50%;
}
.home-state-feature {
  min-height: 0;
  padding: 20px;
  border: 1px solid var(--line);
  border-top: 3px solid var(--navy);
  background: rgba(255,255,255,.78);
}
.home-state-shape,
.home-state-shape .state-silhouette {
  min-height: 150px;
  height: 150px;
}
.home-secondary {
  display: grid;
  gap: 26px;
}
.governor-brief {
  display: grid;
  grid-template-columns: 86px minmax(0,1fr) auto;
  gap: 20px;
  align-items: center;
  padding: 22px 0;
  border-block: 1px solid var(--line);
  color: var(--navy);
  text-decoration: none;
}
.governor-brief .portal-state,
.governor-brief .state-silhouette {
  width: 86px;
  height: 64px;
}
.governor-brief .portal-state {
  display: grid;
  place-items: center;
  overflow: hidden;
}
.governor-brief .portal-state .state-silhouette {
  display: block;
  max-width: 100%;
}
.governor-brief > div:nth-child(2) {
  display: grid;
  gap: 3px;
}
.governor-brief small,
.governor-brief span {
  color: var(--muted);
}
.governor-brief strong {
  font-family: var(--display);
  font-size: 1.35rem;
}
.governor-brief b {
  font-size: .85rem;
}
.home-secondary .quiet-links {
  padding: 0;
  border: 0;
}

/* Senate: four clear reading stops. */
.chamber-hero {
  padding: clamp(44px,6vw,76px) 0 clamp(34px,5vw,58px);
  background: #fff;
  color: var(--navy);
}
.chamber-hero-grid {
  grid-template-columns: minmax(0,820px);
}
.chamber-hero h1 {
  max-width: 900px;
  font-size: clamp(3rem,7vw,6.3rem);
}
.chamber-hero .senate-coverage,
.chamber-hero .meta-row {
  color: var(--muted);
}
.chamber-hero .frequency-lead {
  color: var(--navy);
  border-color: var(--red);
}
.mosaic-card {
  margin-top: 32px;
  padding: 24px 0;
  border: 0;
  border-block: 1px solid var(--line);
  background: transparent;
}
.mosaic-numbers {
  max-width: 820px;
  margin-inline: auto;
}
.election-mosaic {
  max-width: 820px;
  margin-inline: auto;
}
.mosaic-sentence {
  max-width: 64ch;
  margin-inline: auto;
  color: var(--muted);
}
.mosaic-footnote {
  max-width: 72ch;
  margin: -.55rem auto 0;
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.45;
  text-align: center;
}
.meaning-ribbon {
  border-radius: 0;
  border-inline: 0;
  background: transparent;
}
.chamber-layout {
  margin-top: 24px;
}
.map-toolbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
  margin-bottom: 18px;
}
.map-more {
  position: relative;
}
.map-more > summary {
  cursor: pointer;
  color: var(--navy);
  font-size: .84rem;
  font-weight: 800;
  list-style: none;
  padding: 10px 0;
}
.map-more > summary::-webkit-details-marker { display: none; }
.map-more > summary::after { content: " +"; }
.map-more[open] > summary::after { content: " −"; }
.map-more-inner {
  position: absolute;
  z-index: 12;
  right: 0;
  width: min(430px,calc(100vw - 36px));
  padding: 14px;
  border: 1px solid var(--line);
  background: #fff;
  box-shadow: 0 14px 36px rgba(7,26,51,.12);
}
.compact-browser {
  grid-template-columns: minmax(0,1fr) minmax(260px,340px);
  margin-top: 26px;
  padding-top: 24px;
  border-top: 1px solid var(--line);
}
.compact-browser .state-browser {
  display: flex;
  align-items: stretch;
  gap: 8px;
  overflow-x: auto;
  padding: 2px 2px 10px;
}
.compact-browser .state-button {
  flex: 0 0 116px;
  min-height: 118px;
}
.compact-browser .state-preview {
  padding: 18px;
}

/* Race pages: all forecast visuals first; methodology lives in one drawer. */
.race-hero {
  padding: 34px 0 46px;
}
.race-hero h1 {
  font-size: clamp(2.8rem,6vw,5.2rem);
}
.race-call {
  max-width: 680px;
  margin-top: 12px;
  font-family: var(--display);
  font-size: clamp(1.2rem,2vw,1.55rem);
}
.candidate-matchup {
  margin-top: 24px;
  padding: 10px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.7);
}
.candidate {
  min-width: 0;
  min-height: 88px;
  background: transparent;
}
.candidate b {
  display: grid;
  justify-items: end;
  min-width: 92px;
}
.candidate.dem b { justify-items: start; }
.candidate b small {
  color: var(--muted);
  font-family: var(--sans);
  font-size: .66rem;
  font-weight: 750;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.candidate b span {
  font-family: var(--display);
  font-size: clamp(1.8rem,4vw,2.8rem);
  line-height: 1;
}
.vote-bar {
  padding: 18px 26px 24px;
  border: 1px solid var(--line);
  border-top: 0;
  background: rgba(255,255,255,.76);
}
.vote-bar-heading {
  margin-bottom: 12px;
}
.vote-bar-heading > strong {
  font-size: .82rem;
  letter-spacing: .03em;
  text-transform: uppercase;
}
.hero-distribution {
  margin-top: 28px;
}
.distribution-heading {
  margin-bottom: 12px;
}
.distribution-heading h2 {
  font-size: clamp(1.65rem,3vw,2.2rem);
}
.distribution-shell {
  padding: 20px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.82);
}
.dot-chart {
  min-height: 230px;
}
.race-topline {
  max-width: 640px;
  grid-template-columns: repeat(2,1fr);
  margin: 16px auto 0;
  border: 0;
  background: transparent;
}
.race-topline span {
  padding: 8px 18px;
}
.reason-strip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 30px;
  margin-block: clamp(34px,5vw,64px) 0;
  padding-block: 22px;
  border-block: 1px solid var(--line);
}
.reason-strip > div {
  display: grid;
  gap: 4px;
}
.reason-strip small {
  color: var(--muted);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.reason-strip strong {
  font-family: var(--display);
  font-size: clamp(1.25rem,2.2vw,1.65rem);
}
.reason-strip p {
  margin: 0;
  color: var(--muted);
}
.inline-explanation {
  margin-top: 18px;
  margin-bottom: clamp(34px,5vw,64px);
  padding: clamp(22px,4vw,38px);
  border: 1px solid var(--line);
  border-top: 4px solid var(--navy);
  background: #fff;
}
.inline-explanation[hidden] {
  display: none;
}
.inline-explanation .explain-top {
  padding: 0 0 20px;
  border-bottom: 1px solid var(--line);
}
.inline-explanation .explain-top h2 {
  font-size: clamp(1.7rem,3vw,2.5rem);
}
.inline-explanation .explain-scroll {
  overflow: visible;
  padding: 24px 0 0;
}
.explanation-collapse {
  margin-top: 24px;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--navy);
  font: inherit;
  font-size: .85rem;
  font-weight: 800;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 4px;
}
.explain-drawer {
  width: min(720px,100%);
  max-width: 100%;
  height: 100dvh;
  max-height: 100dvh;
  margin: 0 0 0 auto;
  padding: 0;
  border: 0;
  background: #fff;
  color: var(--navy);
  box-shadow: -20px 0 60px rgba(7,26,51,.2);
}
.explain-drawer[open] {
  display: flex;
  flex-direction: column;
}
.explain-drawer::backdrop {
  background: rgba(7,26,51,.45);
  backdrop-filter: blur(2px);
}
.explain-drawer .explain-top {
  flex: 0 0 auto;
  padding: 22px clamp(20px,4vw,38px);
  border-bottom: 1px solid var(--line);
}
.explain-drawer .explain-top h2 {
  font-size: clamp(1.7rem,3vw,2.5rem);
}
.explain-scroll {
  flex: 1 1 auto;
  overflow-y: auto;
  padding: 26px clamp(20px,4vw,38px) 50px;
}
.explain-summary {
  margin: 0 0 26px;
  font-family: var(--display);
  font-size: 1.25rem;
  line-height: 1.35;
}
.explain-section {
  padding-block: 22px;
  border-top: 1px solid var(--line);
}
.explain-section h3 {
  margin-bottom: 18px;
}
.drawer-details {
  margin-top: 10px;
  border-top: 1px solid var(--line);
}
.drawer-details > summary {
  cursor: pointer;
  padding: 20px 0;
  font-weight: 800;
}
.drawer-details > summary span,
.drawer-details > summary strong,
.drawer-details > summary small { display: block; }
.drawer-details > summary small {
  margin-top: 3px;
  color: var(--muted);
  font-size: .78rem;
  font-weight: 500;
}
.race-links {
  margin-top: 0;
}

/* Governor and state pages retain their useful visuals without extra explainers. */
.office-hero,
.state-hero {
  padding: clamp(40px,6vw,72px) 0;
}
.office-hero h1,
.state-hero h1 {
  font-size: clamp(3rem,6vw,5rem);
}
.office-links {
  margin-top: 16px;
}
.state-poll-details {
  margin-top: 28px;
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.state-poll-details .state-polling {
  padding-bottom: 24px;
}
.availability-note:empty {
  display: none;
}

@media (max-width:800px) {
  .home-hero-grid.simplified-hero {
    grid-template-columns: 1fr;
  }
  .map-toolbar,
  .reason-strip {
    align-items: stretch;
    flex-direction: column;
  }
  .map-history-control {
    flex-basis: auto;
    width: 100%;
  }
  .map-more-inner {
    position: static;
    width: 100%;
    margin-top: 8px;
    box-shadow: none;
  }
  .compact-browser {
    grid-template-columns: 1fr;
  }
  .candidate b {
    min-width: 72px;
  }
  .reason-strip .explain-button {
    width: 100%;
  }
  .governor-brief {
    grid-template-columns: 70px minmax(0,1fr);
  }
  .governor-brief > b {
    grid-column: 2;
  }
}

@media (max-width:520px) {
  .home-control-summary {
    margin-top: 22px;
  }
  .mini-mosaic {
    gap: 2px;
  }
  .candidate-matchup {
    padding: 6px;
  }
  .candidate {
    display: grid;
    grid-template-columns: 38px minmax(0,1fr);
    min-height: 118px;
  }
  .candidate b {
    grid-column: 1 / -1;
    justify-items: start;
    min-width: 0;
    padding-left: 4px;
  }
  .candidate.rep b {
    justify-items: end;
    padding-left: 0;
    padding-right: 4px;
  }
  .candidate b span {
    font-size: 1.75rem;
  }
  .vote-bar {
    padding: 16px 14px 20px;
  }
  .vote-bar-labels small {
    font-size: .62rem;
  }
  .vote-bar-labels strong {
    font-size: 1rem;
  }
  .distribution-shell {
    padding: 14px 10px;
  }
  .dot-chart {
    min-height: 195px;
  }
  .race-topline span {
    padding-inline: 8px;
  }
  .explain-drawer {
    width: 100%;
  }
}

/* Senate overview: use the same light editorial canvas as the rest of the forecast. */
.chamber-hero {
  isolation: isolate;
  padding: clamp(42px,6vw,72px) 0 54px;
  color: var(--ink);
  background:
    radial-gradient(circle at 12% 8%,rgba(23,105,194,.18),transparent 31%),
    radial-gradient(circle at 88% 12%,rgba(216,59,67,.14),transparent 29%),
    radial-gradient(circle at 52% 104%,rgba(117,73,190,.10),transparent 36%),
    #fbfbfa;
  border-bottom: 1px solid var(--line);
}
.chamber-hero .overline {
  color: var(--blue);
}
.chamber-hero h1 {
  max-width: 760px;
  color: var(--navy);
  font-size: clamp(3rem,6.5vw,5.4rem);
  line-height: .96;
}
.chamber-hero .dek {
  max-width: 720px;
  color: var(--muted);
}
.chamber-hero .inverse-frequency {
  color: var(--ink);
}
.chamber-hero .freshness,
.chamber-hero .model-meta {
  border-color: var(--line);
  background: rgba(255,255,255,.72);
  color: var(--muted);
}
.control-meaning {
  display: block;
  align-self: center;
  padding: 24px;
  border: 1px solid var(--line);
  border-top: 4px solid var(--red);
  background: rgba(255,255,255,.84);
  box-shadow: 0 14px 34px rgba(7,26,51,.08);
}
.control-meaning .overline {
  margin: 0 0 8px;
}
.control-meaning h2 {
  margin: 0 0 10px;
  color: var(--navy);
  font-size: clamp(1.35rem,2.2vw,1.8rem);
  letter-spacing: -.025em;
}
.control-meaning p {
  margin: 0;
  color: var(--ink);
  line-height: 1.55;
}
.control-meaning .data-note {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
  color: var(--muted);
}
.office-hero,
.state-hero,
.methodology-hero,
.updates-hero {
  padding: 76px 0;
  overflow: hidden;
  background: linear-gradient(135deg,#f7fbff 0 58%,#fff2f2 58%);
}
.office-hero h1,
.state-hero h1,
.methodology-hero h1,
.updates-hero h1 {
  max-width: 900px;
  margin: 10px 0 16px;
  font-size: clamp(2.8rem,6vw,5.8rem);
  line-height: .92;
  letter-spacing: -.06em;
}
.office-hero-grid,
.state-hero-grid {
  display: grid;
  grid-template-columns: minmax(0,1.4fr) minmax(230px,.6fr);
  gap: 48px;
  align-items: center;
}
.office-hero-visual,
.state-hero-shape {
  height: 270px;
  color: var(--red);
}
.office-hero-visual .state-silhouette,
.state-hero-shape .state-silhouette {
  width: 100%;
  height: 100%;
}
.office-hero-visual path,
.state-hero-shape path {
  stroke: var(--navy);
  stroke-width: 8px;
}
.map-state.dem-fill { border-left: 5px solid var(--blue); }
.map-state.rep-fill { border-left: 5px solid var(--red); }
.map-state.unavailable {
  border-left: 5px solid #98a2b3;
  background: var(--wash);
}
.section-action {
  margin: 24px 0 0;
  text-align: right;
}
.explainer-band {
  display: flex;
  justify-content: space-between;
  gap: 42px;
  align-items: end;
}
.explainer-band h2 {
  max-width: 820px;
  margin: 5px 0 0;
  font-size: clamp(1.8rem,3.4vw,3.2rem);
  line-height: 1;
  letter-spacing: -.04em;
}
.state-directory {
  display: grid;
  gap: 12px;
}
.state-directory-card {
  display: grid;
  grid-template-columns: 100px 1fr auto;
  gap: 20px;
  align-items: center;
  min-width: 0;
  padding: 16px 20px;
  border-block: 1px solid var(--line);
  color: var(--navy);
  text-decoration: none;
}
.state-directory-card:hover,
.state-directory-card:focus-visible {
  background: var(--blue-soft);
}
.state-directory-card > div {
  height: 70px;
}
.state-directory-card svg {
  width: 100%;
  height: 100%;
}
.state-directory-card span,
.state-directory-card strong,
.state-directory-card small {
  display: block;
}
.state-directory-card strong {
  font-family: Georgia,serif;
  font-size: 1.4rem;
}
.state-directory-card small {
  color: var(--muted);
}
.state-context-grid {
  display: grid;
  grid-template-columns: minmax(0,1.35fr) minmax(280px,.65fr);
  gap: 42px;
}
.state-polling {
  border-top: 1px solid var(--line);
}
.state-polling article {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}
.state-polling article div:last-child {
  text-align: right;
}
.state-polling strong,
.state-polling span {
  display: block;
}
.state-polling span {
  color: var(--muted);
  font-size: .8rem;
}
.coverage-note {
  align-self: start;
  padding: 24px;
  border-left: 4px solid var(--red);
  background: #fff;
}
.context-links {
  grid-template-columns: repeat(auto-fit,minmax(220px,1fr));
}
.method-journey {
  display: grid;
  grid-template-columns: minmax(240px,.7fr) minmax(0,1.3fr);
  gap: 28px;
}
.method-journey-steps {
  display: grid;
  gap: 6px;
}
.method-journey-steps button {
  display: grid;
  grid-template-columns: 34px 1fr;
  gap: 12px;
  align-items: center;
  padding: 13px 14px;
  border: 1px solid var(--line);
  background: #fff;
  color: var(--navy);
  text-align: left;
  cursor: pointer;
}
.method-journey-steps button[aria-pressed="true"] {
  border-color: var(--blue);
  background: var(--blue-soft);
}
.method-journey-steps b {
  display: grid;
  place-items: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
}
.method-journey-detail {
  position: relative;
  min-height: 300px;
  padding: 74px 34px 34px;
  border-top: 4px solid var(--red);
  background: #fff;
  box-shadow: var(--shadow);
}
.method-journey-detail .method-number {
  top: 18px;
  left: 34px;
}
.method-journey-detail h3 {
  margin: 4px 0 14px;
  font-size: clamp(1.8rem,3vw,3rem);
  line-height: 1;
}
.method-journey-detail p:last-child {
  color: var(--muted);
  font-size: 1.05rem;
}
.trust-grid {
  display: grid;
  grid-template-columns: repeat(3,1fr);
  gap: 28px;
}
.trust-grid article {
  padding-top: 18px;
  border-top: 4px solid var(--blue);
}
.trust-grid article:nth-child(2) { border-color: var(--navy); }
.trust-grid article:nth-child(3) { border-color: var(--red); }
.trust-grid strong {
  font-family: Georgia,serif;
  font-size: 1.25rem;
}
.trust-grid p,
.method-writing p {
  color: var(--muted);
}
.method-writing {
  max-width: 820px;
  padding: 28px 4px 12px;
}
.method-writing h2 {
  margin: 28px 0 7px;
  font-size: 1.45rem;
}
.update-timeline {
  position: relative;
  margin-left: 12px;
  border-left: 2px solid var(--line);
}
.update-timeline article {
  position: relative;
  padding: 0 0 42px 32px;
}
.timeline-mark {
  position: absolute;
  left: -8px;
  top: 5px;
  width: 14px;
  height: 14px;
  border: 3px solid #fff;
  border-radius: 50%;
  background: var(--red);
  box-shadow: 0 0 0 2px var(--red);
}
.update-timeline h2 {
  margin: 4px 0 8px;
  font-size: clamp(1.6rem,3vw,2.5rem);
}
.update-timeline small {
  color: var(--muted);
}
@media (max-width:800px) {
  .office-hero-grid,
  .state-hero-grid,
  .state-context-grid,
  .method-journey,
  .trust-grid {
    grid-template-columns: 1fr;
  }
  .office-hero-visual,
  .state-hero-shape {
    height: 180px;
  }
  .explainer-band {
    align-items: flex-start;
    flex-direction: column;
  }
}

/* Geographic forecast map */
.map-field {
  display: block;
  min-width: 0;
}
.us-map-shell {
  padding: 18px 18px 12px;
  border: 1px solid var(--line);
  border-radius: 18px;
  background: #f8fafc;
}
.us-forecast-map {
  display: block;
  width: 100%;
  height: auto;
  overflow: hidden;
}
.us-map-state {
  stroke: #fff;
  stroke-width: 1.25;
  vector-effect: non-scaling-stroke;
  transition: filter .14s ease,stroke-width .14s ease;
}
.us-map-state[tabindex] {
  cursor: pointer;
}
.us-map-state:hover,
.us-map-state.selected,
.us-map-state:focus-visible {
  filter: brightness(.94) saturate(1.12);
  stroke: var(--navy);
  stroke-width: 3;
  outline: none;
}
.map-map-note {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: .72rem;
  text-align: center;
}
.map-fallback-list {
  display: none;
  gap: 8px;
  margin-top: 14px;
}
.map-fallback-list > span {
  color: var(--muted);
  font-size: .72rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.map-fallback-list button {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: #fff;
  padding: 10px 12px;
  color: var(--navy);
  cursor: pointer;
}
.map-fallback-list button[aria-pressed="true"] {
  border-color: var(--navy);
  box-shadow: inset 3px 0 0 var(--navy);
}
.map-scale {
  display: grid;
  grid-template-columns: auto 1fr auto 1fr auto;
  gap: 7px;
  align-items: center;
  margin-top: 22px;
  color: var(--muted);
  font-size: .66rem;
  font-weight: 800;
}
.map-scale i {
  height: 7px;
  border-radius: 999px;
}
.map-scale i:first-of-type {
  background: linear-gradient(90deg,var(--blue),#e6eaf0);
}
.map-scale i:last-of-type {
  background: linear-gradient(90deg,#e6eaf0,var(--red));
}
.map-scale-rep {
  color: var(--red);
}
.map-scale-dem {
  color: var(--blue);
}
.map-scale-neutral {
  text-align: center;
}
@media (max-width:800px) {
  .us-map-shell {
    padding: 10px 8px 8px;
  }
  .map-fallback-list {
    display: grid;
  }
  .map-scale {
    grid-template-columns: auto 1fr auto;
  }
  .map-scale i:first-of-type {
    background: linear-gradient(90deg,var(--blue),#e6eaf0,var(--red));
    grid-column: 1 / -1;
    grid-row: 2;
  }
  .map-scale i:last-of-type {
    display: none;
  }
  .map-scale-rep {
    grid-column: 3;
  }
  .map-scale-neutral {
    grid-column: 2;
  }
}
@media (max-width:520px) {
  .office-hero,
  .state-hero,
  .methodology-hero,
  .updates-hero {
    padding: 54px 0;
  }
  .state-directory-card {
    grid-template-columns: 68px 1fr;
  }
  .state-directory-card > b {
    grid-column: 2;
  }
  .state-polling article {
    grid-template-columns: 1fr;
  }
  .state-polling article div:last-child {
    text-align: left;
  }
  .method-journey-detail {
    min-height: 240px;
    padding: 68px 22px 24px;
  }
}
@media (prefers-reduced-motion:reduce) {
  html {
    scroll-behavior: auto;
  }
  *,
  *:before,
  *:after {
    transition: none!important;
    animation: none!important;
  }
}

/* Final editorial release: quieter, denser, and closer to a newsroom graphic. */
:root {
  --ink: #152033;
  --muted: #586272;
  --line: #d5dae2;
  --wash: #f6f6f4;
  --max: 1120px;
  --shadow: 0 2px 0 rgba(7,26,51,.04);
}
body {
  font-family: "Helvetica Neue",Arial,sans-serif;
  line-height: 1.48;
}
.nav {
  min-height: 62px;
}
.nav nav a {
  padding: 20px 0 17px;
}
.home-hero {
  padding: clamp(52px,8vw,92px) 0;
  border-bottom: 1px solid var(--line);
  background:
    radial-gradient(circle at 13% 25%,rgba(23,105,194,.18),transparent 31%),
    radial-gradient(circle at 87% 22%,rgba(216,59,67,.15),transparent 29%),
    radial-gradient(circle at 54% 105%,rgba(117,73,190,.14),transparent 34%),
    #fbfbfa;
}
.home-hero:before,
.home-hero:after {
  display: none;
}
.home-hero .simplified-hero {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(250px,.42fr);
  align-items: center;
  gap: clamp(36px,6vw,82px);
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
}
.home-hero .simplified-hero > .home-hero-copy {
  max-width: 820px;
}
.home-hero h1,
.chamber-hero h1,
.race-hero h1 {
  letter-spacing: -.045em;
}
.home-hero h1 {
  max-width: 780px;
  font-size: clamp(3rem,7vw,5.4rem);
  line-height: .94;
}
.home-hero h1 em {
  color: var(--navy);
}
.home-state-feature {
  display: grid;
  gap: 10px;
  align-self: stretch;
  min-height: 360px;
  padding: 22px;
  border: 1px solid var(--line);
  border-top: 4px solid var(--navy);
  background: rgba(255,255,255,.7);
  color: var(--navy);
  text-decoration: none;
}
.home-state-shape {
  display: grid;
  place-items: center;
  min-height: 190px;
}
.home-state-shape .state-silhouette {
  width: 100%;
  height: 190px;
  filter: drop-shadow(0 8px 12px rgba(7,26,51,.08));
}
.home-state-feature-copy {
  display: grid;
  gap: 2px;
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.home-state-feature-copy strong {
  font-size: 1.65rem;
}
.home-state-feature-copy span,
.home-state-feature-copy small {
  color: var(--muted);
}
.home-state-feature-copy b {
  margin-top: 8px;
  font-size: .82rem;
}
.dek {
  max-width: 650px;
  font-size: clamp(1.05rem,1.8vw,1.3rem);
}
.overline {
  letter-spacing: .09em;
  font-size: .69rem;
}
.section,
.compact-section {
  padding: 48px 0;
}
.section-title {
  margin-bottom: 26px;
}
.section-title h2,
.lead-story h2,
.method-strip h2,
.evidence-grid h2 {
  font-size: clamp(1.85rem,3.4vw,2.9rem);
  letter-spacing: -.035em;
}
.control-card,
.portal,
.mosaic-card,
.distribution-shell,
.state-preview,
.audit-card,
.model-portal,
.race-card,
.candidate-matchup,
.vote-bar,
.candidate,
.reader-details,
.explain-dialog,
.explain-stage,
.map-state,
.state-button {
  border-radius: 3px;
  box-shadow: none;
}
.model-portal,
.race-card {
  border-top: 4px solid var(--navy);
}
.model-portal {
  padding: 22px;
}
.model-portal:hover,
.model-portal:focus-visible,
.race-card:hover,
.race-card:focus-visible {
  transform: none;
  border-color: var(--navy);
  box-shadow: none;
}
.status-chip,
.freshness,
.model-meta,
.explain-button,
.home-hero-actions a,
.map-mode-controls button,
.history-tabs button,
.explain-controls button {
  border-radius: 3px;
}
.status-chip,
.freshness,
.model-meta {
  background: rgba(255,255,255,.62);
}
.home-hero-actions {
  margin-top: 22px;
}
.home-hero-actions a {
  min-height: 42px;
  padding: 10px 14px;
}
.race-hero {
  padding: 38px 0 48px;
  background: linear-gradient(90deg,#f0f6fd 0 50%,#fdf1f2 50%);
}
.race-hero h1 {
  font-size: clamp(3rem,7vw,5.7rem);
  line-height: .94;
}
.candidate-matchup {
  margin-top: 28px;
  padding: 12px;
}
.candidate {
  min-height: 96px;
  padding: 14px;
}
.vote-bar {
  padding: 0 26px 22px;
}
.hero-distribution {
  margin-top: 34px;
}
.distribution-shell {
  padding: 24px;
}
.dot-chart {
  min-height: 250px;
}
.race-topline {
  grid-template-columns: repeat(3,1fr);
  background: rgba(255,255,255,.62);
}
.evidence-grid {
  gap: 42px;
}
.audit-card {
  padding: 16px 0;
  border: 0;
  border-top: 2px solid var(--line);
}
.water-total {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin-top: 4px;
  padding-top: 14px;
  border-top: 2px solid var(--navy);
}
.water-total strong {
  font-size: 1.05rem;
}
.reader-details > summary {
  padding: 18px 0;
}
.configured-map,
.history-shell {
  gap: 28px;
}
.method-strip {
  padding: 58px 0;
}
footer:not(.footer) {
  padding: 32px 0;
}
@media (max-width:800px) {
  .home-hero .simplified-hero {
    grid-template-columns: 1fr;
  }
  .home-state-feature {
    grid-template-columns: 120px 1fr;
    min-height: 0;
  }
  .home-state-feature > .overline {
    grid-column: 1 / -1;
  }
  .home-state-shape,
  .home-state-shape .state-silhouette {
    min-height: 110px;
    height: 110px;
  }
  .home-state-feature-copy {
    align-content: center;
    padding-top: 0;
    padding-left: 16px;
    border-top: 0;
    border-left: 1px solid var(--line);
  }
  .section,
  .compact-section {
    padding: 40px 0;
  }
  .section-title {
    align-items: flex-start;
    flex-direction: column;
    gap: 8px;
  }
  .section-title > p {
    text-align: left;
  }
  .race-topline {
    grid-template-columns: 1fr;
  }
  .race-topline span + span,
  .race-topline span:nth-child(3) {
    border-top: 1px solid var(--line);
    border-left: 0;
  }
}
@media (max-width:520px) {
  .home-hero {
    padding: 44px 0;
  }
  .home-hero .simplified-hero {
    padding: 0;
    border-radius: 0;
  }
  .home-state-feature {
    grid-template-columns: 88px 1fr;
    padding: 16px;
  }
  .home-state-shape,
  .home-state-shape .state-silhouette {
    min-height: 88px;
    height: 88px;
  }
  .home-state-feature-copy strong {
    font-size: 1.35rem;
  }
  .candidate-matchup,
  .vote-bar,
  .distribution-shell {
    padding-inline: 14px;
  }
  .dot-chart {
    min-height: 210px;
  }
}

/* Final editorial hierarchy and compact evidence presentation. */
.race-summary-grid {
  display: grid;
  grid-template-columns: repeat(3,minmax(0,1fr));
  gap: 10px;
  margin: 22px 0 18px;
}
.race-summary-grid > span {
  min-width: 0;
  padding: 14px 16px;
  border: 1px solid var(--line);
  background: rgba(255,255,255,.72);
}
.race-summary-grid small,
.race-summary-grid strong {
  display: block;
}
.race-summary-grid small {
  margin-bottom: 5px;
  color: var(--muted);
  font-size: .66rem;
  font-weight: 800;
  letter-spacing: .06em;
  text-transform: uppercase;
}
.race-summary-grid strong {
  color: var(--navy);
  font-size: .9rem;
  line-height: 1.3;
}
.race-summary-grid .freshness {
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--navy);
  font-size: .9rem;
  font-weight: 800;
}
.race-call {
  margin-top: 0;
}

.senate-control-call {
  max-width: 900px;
  margin: 0 auto 24px;
  padding: 18px 20px;
  border-block: 1px solid var(--line);
  text-align: center;
  font-family: var(--display);
  font-size: clamp(1.55rem,3vw,2.35rem);
  font-weight: 800;
  line-height: 1.15;
}
.senate-control-call.rep-call {
  color: var(--red);
}
.senate-control-call.dem-call {
  color: var(--blue);
}

.inline-explanation .drawer-details {
  margin-top: 16px;
}
.inline-explanation .forecast-vs-polls {
  grid-template-columns: minmax(0,1fr) auto minmax(0,1fr);
  gap: 14px;
  margin: 8px 0 22px;
}
.inline-explanation .forecast-vs-polls > div {
  min-width: 0;
  padding: 18px;
  box-shadow: none;
  border-inline: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}
.inline-explanation .evidence-story {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 6px;
  border-top: 1px solid var(--line);
}
.inline-explanation .evidence-story article {
  display: grid;
  grid-template-columns: 42px minmax(125px,180px) minmax(0,1fr);
  gap: 18px;
  align-items: start;
  padding: 18px 0;
  border: 0;
  border-bottom: 1px solid var(--line);
}
.inline-explanation .evidence-step-number {
  display: grid;
  place-items: center;
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  font-weight: 900;
  font-variant-numeric: tabular-nums;
}
.inline-explanation .model-evidence-step.tone-dem .evidence-step-number { background: var(--blue); }
.inline-explanation .model-evidence-step.tone-rep .evidence-step-number { background: var(--red); }
.inline-explanation .model-evidence-step.tone-ind .evidence-step-number { background: var(--ind); }
.inline-explanation .model-evidence-step.tone-neutral .evidence-step-number { background: #8f9baa; }
.inline-explanation .evidence-story h3,
.inline-explanation .evidence-story strong,
.inline-explanation .evidence-story p {
  margin: 0;
}
.inline-explanation .evidence-story h3 {
  color: var(--navy);
  font-size: .9rem;
  letter-spacing: .04em;
  text-transform: uppercase;
}
.seat-distribution-note {
  margin: 10px 0 0;
  color: var(--muted);
  font-size: .82rem;
  line-height: 1.35;
}
.inline-explanation .evidence-story strong {
  display: block;
  margin-bottom: 4px;
}
.inline-explanation .evidence-story p {
  color: var(--muted);
  line-height: 1.5;
}
.inline-explanation .audit-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  margin-top: 22px;
  border-top: 2px solid var(--navy);
}
.inline-explanation .audit-row {
  display: grid;
  grid-template-columns: minmax(0,1fr) minmax(180px,auto);
  gap: 24px;
  align-items: center;
  padding: 14px 0;
  border-bottom: 1px solid var(--line);
}
.inline-explanation .audit-row strong,
.inline-explanation .audit-row small {
  display: block;
}
.inline-explanation .audit-row strong {
  font-size: .9rem;
}
.inline-explanation .audit-row small {
  margin-top: 3px;
  color: var(--muted);
  font-size: .78rem;
}
.inline-explanation .audit-row b {
  color: var(--navy);
  text-align: right;
  font-size: 1rem;
  overflow-wrap: anywhere;
}

.compact-browser {
  align-items: start;
}
.compact-browser .state-browser {
  align-self: start;
  align-items: flex-start;
  min-height: 0;
}
.compact-browser .state-button {
  flex: 0 0 150px;
  width: 150px;
  height: 142px;
  min-height: 142px;
  grid-template-columns: 1fr;
  grid-template-rows: 76px auto auto;
  gap: 2px;
  align-items: center;
  padding: 12px;
  overflow: hidden;
  text-align: center;
}
.compact-browser .state-button svg {
  grid-row: auto;
  width: 100%;
  height: 72px;
  max-height: 72px;
}
.compact-browser .state-button span,
.compact-browser .state-button span:last-child,
.compact-browser .state-button small {
  display: block;
  width: 100%;
  margin: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

@media (max-width:700px) {
  .race-summary-grid {
    grid-template-columns: 1fr;
  }
  .inline-explanation .forecast-vs-polls {
    grid-template-columns: 1fr;
  }
  .inline-explanation .comparison-arrow {
    transform: rotate(90deg);
    text-align: center;
  }
  .inline-explanation .evidence-story article,
  .inline-explanation .audit-row {
    grid-template-columns: 1fr;
    gap: 7px;
  }
  .inline-explanation .evidence-story article {
    grid-template-columns: 38px minmax(0,1fr);
  }
  .inline-explanation .evidence-story article > div:last-child {
    grid-column: 2;
  }
  .inline-explanation .audit-row b {
    text-align: left;
  }
}

/* Equal office gateways on the forecast homepage. */
.neutral-home-hero {
  max-width: 940px;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
}
.neutral-home-hero .status-chip,
.neutral-home-hero .meta-row {
  justify-content: center;
}
.neutral-home-hero h1 {
  width: 100%;
  max-width: none;
  margin: 18px auto 14px;
  font-size: clamp(3.2rem,7vw,6.2rem);
  line-height: .94;
  letter-spacing: -.055em;
  text-align: center;
}
.neutral-home-hero .dek {
  margin-inline: auto;
}

/* One public hero language: soft election-night color, never a hard party split. */
.office-hero,
.state-hero,
.race-hero {
  position: relative;
  overflow: hidden;
  border-bottom: 1px solid var(--line);
  background:
    radial-gradient(circle at 12% 22%,rgba(23,105,194,.17),transparent 32%),
    radial-gradient(circle at 88% 18%,rgba(216,59,67,.14),transparent 30%),
    radial-gradient(circle at 52% 112%,rgba(117,73,190,.12),transparent 34%),
    #fbfbfa;
}
.office-hero::before,
.office-hero::after,
.state-hero::before,
.state-hero::after,
.race-hero::before,
.race-hero::after {
  display: none;
}
.office-hero {
  padding: clamp(54px,8vw,88px) 0;
}
.office-hero-grid,
.state-hero-grid {
  position: relative;
  z-index: 1;
}
.office-hero-visual,
.state-hero-shape {
  background: transparent;
  border: 0;
  box-shadow: none;
  filter: drop-shadow(0 18px 24px rgba(13,35,64,.12));
}
.state-directory-hero .wrap {
  max-width: 940px;
  text-align: center;
}
.state-directory-hero .dek {
  margin-inline: auto;
}
.state-directory-hero .meta-row {
  justify-content: center;
}
.race-hero {
  padding: clamp(38px,6vw,62px) 0 48px;
}

@media (max-width: 760px) {
  .neutral-home-hero h1 {
    font-size: clamp(3rem,17vw,4.7rem);
  }
  .office-hero,
  .state-hero {
    padding: 46px 0;
  }
}
.office-portals {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 22px;
}
.office-forecast-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  min-height: 470px;
  padding: clamp(22px,3vw,34px);
  border: 1px solid var(--line);
  border-top: 5px solid var(--navy);
  background: #fff;
}
.senate-office-card {
  border-top-color: var(--blue);
}
.governor-office-card {
  border-top-color: var(--red);
}
.office-card-head,
.race-column-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 18px;
}
.office-card-head small {
  color: var(--muted);
  font-size: .67rem;
  font-weight: 800;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.office-card-head h2 {
  margin-top: 3px;
  font-size: clamp(2.2rem,4vw,3.4rem);
}
.office-card-head a,
.race-column-head a {
  color: var(--navy);
  font-size: .82rem;
  font-weight: 800;
  text-decoration: none;
}
.office-card-head a:hover,
.office-card-head a:focus-visible,
.race-column-head a:hover,
.race-column-head a:focus-visible {
  text-decoration: underline;
  text-underline-offset: 4px;
}
.office-forecast-call {
  margin: 24px 0;
  padding-block: 14px;
  border-block: 1px solid var(--line);
  text-align: center;
  font-family: var(--display);
  font-size: clamp(1.25rem,2.2vw,1.7rem);
  line-height: 1.25;
}
.office-forecast-call.dem-call { color: var(--blue); }
.office-forecast-call.rep-call { color: var(--red); }
.office-forecast-card .home-control-numbers {
  margin-top: auto;
}
.office-forecast-card .mini-mosaic {
  margin: 18px 0 10px;
}
.office-card-note {
  margin: 0;
  color: var(--muted);
  font-size: .85rem;
}
.governor-office-lead {
  display: grid;
  grid-template-columns: 150px minmax(0,1fr);
  gap: 22px;
  align-items: center;
  flex: 1 1 auto;
  margin: 24px 0;
  padding-block: 18px;
  border-block: 1px solid var(--line);
}
.governor-office-shape,
.governor-office-shape .state-silhouette {
  width: 150px;
  height: 120px;
}
.governor-office-lead > div:last-child {
  display: grid;
  gap: 5px;
}
.governor-office-lead small,
.governor-office-lead p {
  color: var(--muted);
}
.governor-office-lead strong {
  font-family: var(--display);
  font-size: clamp(1.7rem,3vw,2.4rem);
}
.governor-office-lead p {
  margin: 0;
}
.governor-probabilities {
  margin-top: 0 !important;
}
.home-race-section {
  border-block: 1px solid var(--line);
  background: #fafbfc;
}
.home-race-columns {
  display: grid;
  grid-template-columns: repeat(2,minmax(0,1fr));
  gap: 28px;
}
.home-race-columns > section {
  min-width: 0;
}
.race-column-head {
  align-items: center;
  margin-bottom: 16px;
  padding-bottom: 12px;
  border-bottom: 2px solid var(--navy);
}
.race-column-head h3 {
  font-size: 1.35rem;
}
.home-race-columns .race-grid {
  grid-template-columns: 1fr;
}
.home-secondary {
  padding-top: 28px;
}

/* Article-style methodology. */
.methodology-hero {
  padding: clamp(54px,8vw,100px) 0;
  background: linear-gradient(135deg,#f3f7fd 0%,#fff 55%,#fdf3f4 100%);
  color: var(--navy);
}
.methodology-hero-inner {
  max-width: 920px;
}
.methodology-hero h1 {
  margin-block: 20px;
  font-size: clamp(3rem,7vw,6.4rem);
  line-height: .95;
  letter-spacing: -.055em;
}
.methodology-lead {
  max-width: 760px;
  font-family: var(--display);
  font-size: clamp(1.25rem,2.1vw,1.65rem);
  line-height: 1.45;
}
.methodology-layout {
  display: grid;
  grid-template-columns: 190px minmax(0,820px);
  justify-content: center;
  gap: clamp(38px,7vw,90px);
  padding-block: clamp(48px,7vw,90px);
}
.article-toc {
  position: sticky;
  top: 90px;
  align-self: start;
  display: grid;
  gap: 10px;
  padding-top: 16px;
  border-top: 3px solid var(--navy);
}
.article-toc strong {
  margin-bottom: 4px;
  font-size: .75rem;
  letter-spacing: .07em;
  text-transform: uppercase;
}
.article-toc a {
  color: var(--muted);
  font-size: .82rem;
  font-weight: 700;
  text-decoration: none;
}
.article-toc a:hover,
.article-toc a:focus-visible {
  color: var(--blue);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.methodology-article {
  min-width: 0;
}
.methodology-article > section,
.method-example {
  scroll-margin-top: 90px;
  padding: 42px 0;
  border-top: 1px solid var(--line);
}
.methodology-article > section:first-child {
  padding-top: 0;
  border-top: 0;
}
.article-kicker {
  margin: 0 0 8px;
  color: var(--blue);
  font-size: .7rem;
  font-weight: 850;
  letter-spacing: .09em;
  text-transform: uppercase;
}
.methodology-article h2,
.method-example h2 {
  margin-bottom: 18px;
  font-size: clamp(2rem,4vw,3.1rem);
  line-height: 1.03;
}
.methodology-article h3 {
  margin: 28px 0 7px;
  font-size: 1.2rem;
}
.methodology-article p {
  max-width: 72ch;
  font-size: 1.05rem;
  line-height: 1.72;
}
.reader-definitions,
.method-story {
  display: grid;
  gap: 0;
  margin: 24px 0 30px;
  padding: 0;
  border-top: 1px solid var(--line);
  list-style: none;
}
.reader-definitions li,
.method-story li {
  display: grid;
  grid-template-columns: minmax(150px,.55fr) 1.45fr;
  gap: 24px;
  padding: 17px 0;
  border-bottom: 1px solid var(--line);
}
.reader-definitions strong,
.method-story strong {
  color: var(--navy);
  font-family: var(--display);
  font-size: 1.05rem;
}
.reader-definitions span,
.method-story span {
  color: var(--muted);
  line-height: 1.55;
}
.method-story {
  counter-reset: method-story;
}
.method-story li {
  counter-increment: method-story;
  grid-template-columns: 34px minmax(150px,.55fr) 1.45fr;
}
.method-story li::before {
  content: counter(method-story);
  display: grid;
  place-items: center;
  width: 27px;
  height: 27px;
  border-radius: 50%;
  background: var(--navy);
  color: #fff;
  font-size: .75rem;
  font-weight: 850;
}
.method-details {
  margin: 24px 0;
  border-block: 1px solid var(--line);
}
.method-details summary {
  padding: 15px 2px;
  color: var(--blue);
  cursor: pointer;
  font-weight: 800;
}
.method-details summary:hover,
.method-details summary:focus-visible {
  text-decoration: underline;
  text-underline-offset: 3px;
}
.method-details > div {
  padding: 0 2px 4px;
}
.method-details .formula-box {
  margin: 0 0 14px;
}
.model-update-list {
  margin-top: 28px;
  border-top: 1px solid var(--line);
}
.model-update-list article {
  display: grid;
  grid-template-columns: minmax(130px,.55fr) 1fr 1fr;
  gap: 24px;
  padding: 22px 0;
  border-bottom: 1px solid var(--line);
}
.model-update-list h3,
.model-update-list p {
  margin: 0;
}
.model-update-list article > div {
  min-width: 0;
}
.model-update-list article > div strong {
  display: block;
  margin-bottom: 5px;
  color: var(--navy);
  font-size: .72rem;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.method-callout,
.formula-box {
  margin: 28px 0;
  padding: 22px 24px;
  border-left: 5px solid var(--blue);
  background: #f3f7fd;
}
.method-callout p {
  margin-bottom: 0;
  font-size: .95rem;
}
.formula-box {
  display: grid;
  gap: 7px;
  border-color: var(--red);
  background: #fff6f6;
}
.formula-box span {
  font-family: ui-monospace,SFMono-Regular,Menlo,monospace;
  font-size: .9rem;
}
.method-example {
  padding-inline: clamp(20px,4vw,34px);
  border: 1px solid var(--line);
  border-top: 5px solid var(--navy);
  background: #fafbfc;
}
.method-example .method-journey {
  margin-top: 24px;
}
.method-links {
  display: flex;
  flex-wrap: wrap;
  gap: 18px 28px;
}

/* Probability calls use the same hierarchy on every page. */
.race-call {
  max-width: none;
  margin: 18px 0 24px;
  padding: 16px 20px;
  border-block: 1px solid var(--line);
  text-align: center;
  font-size: clamp(1.5rem,3vw,2.2rem);
  line-height: 1.18;
}
.race-call.dem-call { color: var(--blue); }
.race-call.rep-call { color: var(--red); }

/* Independent candidates are a distinct modeled party, not a Democratic skin. */
.ind { color: var(--ind-dark) !important; }
.ind-fill { background: var(--ind-soft) !important; }
.ind-call,
.race-call.ind-call,
.office-forecast-call.ind-call,
.senate-control-call.ind-call { color: var(--ind-dark); }
.mini-mosaic i.other,
.election-mosaic i.other,
.prob-track .ind,
.vote-bar-track .ind,
.dot.ind,
.water-row.ind .water-mark {
  background: var(--ind);
}
.prob-track .dem,
.vote-bar-track .dem {
  background: var(--blue);
}
.prob-track .rep,
.vote-bar-track .rep {
  background: var(--red);
}
.candidate.dem.independent {
  background: var(--ind-soft);
}
.candidate.dem.independent > span {
  background: var(--ind);
  color: var(--navy);
}
.candidate.dem.independent b,
.candidate.dem.independent strong {
  color: var(--ind-dark);
}
.history-plot circle.ind { fill: var(--ind); }
.home-control-numbers.senate-control-numbers {
  grid-template-columns: 1fr 1fr 1fr;
}
.home-control-numbers .other { text-align: center; }
.home-control-numbers .other strong,
.mosaic-numbers .other strong { color: var(--ind-dark); }
.mosaic-numbers {
  grid-template-columns: repeat(3,1fr);
  gap: 18px;
}
.mosaic-numbers .out-of {
  grid-column: 1 / -1;
  grid-row: 1;
}
.map-scale-ind { color: var(--ind-dark); }
.map-scale {
  grid-template-columns: auto 1fr auto 1fr auto 1fr auto;
}
.map-scale i:first-of-type { background: linear-gradient(90deg,var(--blue),var(--ind)); }
.map-scale i:nth-of-type(2) { background: linear-gradient(90deg,var(--ind),#e6eaf0); }
.map-scale i:last-of-type { background: linear-gradient(90deg,#e6eaf0,var(--red)); }

@media (max-width:800px) {
  .home-control-numbers.senate-control-numbers { grid-template-columns: 1fr; }
  .home-control-numbers.senate-control-numbers span,
  .home-control-numbers.senate-control-numbers .rep { text-align: center; }
  .map-scale { grid-template-columns: repeat(4,1fr); text-align: center; }
  .map-scale i { display: none !important; }
  .map-scale-rep,
  .map-scale-neutral,
  .map-scale-ind { grid-column: auto; }
}

@media (max-width:800px) {
  .office-portals,
  .home-race-columns,
  .methodology-layout {
    grid-template-columns: 1fr;
  }
  .office-forecast-card {
    min-height: 0;
  }
  .article-toc {
    position: static;
    grid-template-columns: repeat(2,minmax(0,1fr));
  }
  .model-update-list article {
    grid-template-columns: 1fr 1fr;
  }
  .model-update-list h3 {
    grid-column: 1 / -1;
  }
}

@media (max-width:520px) {
  .office-card-head,
  .governor-office-lead {
    align-items: flex-start;
  }
  .office-card-head {
    flex-direction: column;
  }
  .governor-office-lead {
    grid-template-columns: 92px minmax(0,1fr);
  }
  .governor-office-shape,
  .governor-office-shape .state-silhouette {
    width: 92px;
    height: 88px;
  }
  .article-toc {
    grid-template-columns: 1fr;
  }
  .model-update-list article {
    grid-template-columns: 1fr;
  }
  .model-update-list h3 {
    grid-column: auto;
  }
  .reader-definitions li,
  .method-story li {
    grid-template-columns: 1fr;
    gap: 5px;
  }
  .method-story li::before {
    margin-bottom: 4px;
  }
}

/* HDR election lockup: the original boxed wordmark with a restrained forecast cue. */
.logo {
  position: relative;
  display: inline-flex;
  flex: 0 0 auto;
  align-items: baseline;
  padding: 9px 12px 10px;
  border: 2px solid #fff;
  border-radius: 0;
  outline: 2px solid #050505;
  color: #fff;
  background:
    linear-gradient(90deg,var(--blue) 0 50%,var(--red) 50% 100%) bottom / 100% 4px no-repeat,
    #050505;
  font-family: "Helvetica Neue",Arial,sans-serif;
  font-size: 1.12rem;
  font-weight: 900;
  letter-spacing: -.045em;
  line-height: 1;
  text-transform: lowercase;
  white-space: nowrap;
}
.logo span {
  margin: 0 .22em 0 0;
  padding: 0;
  border-radius: 0;
  color: inherit;
  background: transparent;
}
.site-header .logo {
  margin-left: 2px;
  margin-right: 190px;
}
.site-header .logo::after {
  content: "2026 Election Forecast";
  position: absolute;
  left: calc(100% + 14px);
  top: 50%;
  width: max-content;
  padding: 3px 0 3px 12px;
  border-left: 4px solid transparent;
  border-image: linear-gradient(to bottom,var(--blue) 0 50%,var(--red) 50% 100%) 1;
  color: var(--navy);
  font-size: .8rem;
  font-weight: 900;
  letter-spacing: .055em;
  line-height: 1;
  text-align: left;
  text-transform: uppercase;
  white-space: nowrap;
  transform: translateY(-50%);
}
footer:not(.footer) .logo {
  outline-color: #fff;
}

@media (max-width:640px) {
  .site-header .logo {
    margin-right: 132px;
    padding: 7px 9px 8px;
    font-size: .88rem;
  }
  .site-header .logo::after {
    content: "2026 Election Forecast";
    left: calc(100% + 8px);
    width: max-content;
    padding: 2px 0 2px 7px;
    border-left-width: 3px;
    font-size: .56rem;
    letter-spacing: .035em;
  }
}

/* The parent HDR navbar and footer come from the site's shared SSI includes. */
.site-header {
  box-shadow: 0 4px 14px rgba(7,26,51,.035);
}
.forecast-wordmark {
  flex: 0 0 auto;
  color: var(--navy);
  font-family: Georgia,"Times New Roman",serif;
  font-size: 1.12rem;
  font-weight: 800;
  text-decoration: none;
  white-space: nowrap;
}
.forecast-wordmark::before {
  display: inline-block;
  width: 5px;
  height: 1.2em;
  margin-right: 10px;
  background: linear-gradient(to bottom,var(--blue) 0 50%,var(--red) 50% 100%);
  vertical-align: -.2em;
  content: "";
}
.site-header .nav {
  min-height: 58px;
}
.site-header .nav nav a {
  padding: 18px 0 15px;
}

@media (max-width:780px) {
  .site-header .nav {
    min-height: 58px;
  }
  .forecast-wordmark {
    font-size: 1rem;
  }
}

@media (max-width:700px) {
  .senate-snake-summary {
    grid-template-columns: 1fr 1fr;
  }
  .senate-snake-summary > div {
    min-height: 8rem;
    padding: 11px 12px;
  }
  .senate-snake-held-label {
    font-size: 17px;
  }
  .senate-snake-race-label {
    font-size: 16px;
  }
  .senate-snake-directions {
    font-size: .66rem;
  }
}

@media (prefers-reduced-motion:reduce) {
  .senate-snake-segment {
    transition: none !important;
  }
}

/* HDR's shared footer is a white site-wide surface. Keep it white even when
   older forecast markup or cached parent styles are present. */
body > footer,
body > footer.footer {
  background: #fff !important;
  color: #000 !important;
}
body > footer a,
body > footer a:visited,
body > footer .text-muted {
  color: #000 !important;
}
.flip-summary-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 1rem;
}
.flip-summary-card {
  display: grid;
  gap: .35rem;
  min-height: 7.5rem;
  padding: 1.15rem 1.25rem;
  border: 1px solid var(--line, #d9e0ea);
  border-top: 4px solid var(--navy, #0b1f3a);
  border-radius: 12px;
  background: #fff;
  color: var(--navy, #0b1f3a);
  text-decoration: none;
}
.flip-summary-card.dem { border-top-color: var(--blue, #2563eb); }
.flip-summary-card.rep { border-top-color: var(--red, #dc2636); }
.flip-summary-card.ind { border-top-color: #e1a51f; }
.flip-summary-card:hover, .flip-summary-card:focus-visible { box-shadow: 0 8px 22px rgba(7,26,51,.1); transform: translateY(-1px); }
.flip-summary-card strong { font-size: 1.15rem; }
.flip-summary-card > span:last-child { color: var(--muted, #667085); font-size: .92rem; }
.flip-badge {
  display: inline-flex;
  width: fit-content;
  margin: .3rem 0 .1rem;
  padding: .22rem .5rem;
  border-radius: 999px;
  color: #fff;
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .02em;
}
.flip-badge.dem, .race-flip-note.dem { background: var(--blue, #2563eb); color: #fff; }
.flip-badge.rep, .race-flip-note.rep { background: var(--red, #dc2636); color: #fff; }
.flip-badge.ind, .race-flip-note.ind { background: #e1a51f; color: #172033; }
.race-flip-note {
  width: fit-content;
  margin: .45rem 0 1rem;
  padding: .45rem .75rem;
  border-radius: 999px;
  font-weight: 700;
}
.flip-note { color: var(--navy, #0b1f3a); font-weight: 650; }
.snake-summary-flip {
  display: block;
  min-height: 1.25em;
  margin-top: .25rem;
  color: var(--navy, #0b1f3a);
  font-size: .78rem;
  font-style: normal;
  font-weight: 800;
}
.senate-snake-flip-outline {
  fill: none;
  stroke: #111827;
  stroke-width: 37px;
  /* Butt caps stop exactly at each tile boundary, so the border cannot bleed
     into the neighboring race when a segment ends on a tight curve. */
  stroke-linecap: butt;
  stroke-linejoin: round;
  pointer-events: none;
}
.senate-snake-flip-fill {
  stroke-linecap: butt;
  stroke-linejoin: round;
}
.map-no-flip { opacity: .78; }
@media (prefers-reduced-motion: reduce) {
  .flip-summary-card:hover, .flip-summary-card:focus-visible { transform: none; }
}
 .rcv-panel{margin-top:1.5rem;padding:1.25rem;border:1px solid var(--line,#d9e0ea);border-radius:14px;background:#fff}.rcv-panel .distribution-heading{margin-bottom:1rem}.rcv-candidate-bars{display:grid;gap:.7rem}.rcv-candidate-row{display:grid;grid-template-columns:minmax(130px,1.1fr) minmax(120px,3fr) 4rem;gap:.8rem;align-items:center}.rcv-candidate-row strong,.rcv-candidate-row small{display:block}.rcv-candidate-row small{color:var(--muted,#667085);font-size:.78rem}.rcv-bar{height:1rem;background:#edf0f4;border-radius:99px;overflow:hidden}.rcv-bar i{display:block;height:100%;border-radius:inherit}.rcv-dem{background:#216dcc}.rcv-rep{background:#df3e49}.rcv-ind{background:#e5a515}.rcv-outcomes{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;border-top:1px solid var(--line,#d9e0ea);margin-top:1.1rem;padding-top:1rem}.rcv-outcomes small,.rcv-outcomes strong{display:block}.rcv-outcomes small{color:var(--muted,#667085)}.rcv-sensitivity{margin:1rem 0 0;padding:.8rem 1rem;border-radius:9px;background:#f7f9fc;color:var(--muted,#667085);font-size:.9rem}.rcv-sensitivity strong{color:var(--ink,#172033)}@media(max-width:600px){.rcv-candidate-row{grid-template-columns:1fr 3rem}.rcv-candidate-row .rcv-bar{grid-column:1/-1;grid-row:2}.rcv-outcomes{grid-template-columns:1fr}}
