/* The hidden attribute always wins. Several elements set their own display
   (grid, flex, block), which silently overrode it: the Discourse river showed
   every story instead of five, and the signup card showed its thank-you before
   anyone signed up (24 Sept 2026). */
[hidden] { display: none !important; }

/* The Transcript — quiet luxury: ivory ground, near-black ink, gold hairlines. */

:root {
  --ink: #111111;
  --ink-soft: #2f4f4f; /* dark slate gray */
  --ground: #ffffff;
  --paper: #fafafa;
  --gold: #a8823c;
  --hairline: #e6e6e6;
  --serif: 'Bodoni Moda', 'Didot', 'Bodoni MT', serif;
  --sans: 'Helvetica Neue', Helvetica, Arial, sans-serif;
}

* { margin: 0; padding: 0; box-sizing: border-box; }

body {
  background: var(--ground);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 14px;
  font-weight: 400;
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}

a { color: inherit; text-decoration: none; }

main { max-width: 880px; margin: 0 auto; padding: 0 32px 96px; }

/* Masthead */
.masthead {
  text-align: center;
  padding: 56px 24px 40px;
  border-bottom: 1px solid var(--hairline);
  margin-bottom: 64px;
}
.wordmark {
  font-family: var(--serif);
  font-size: clamp(17px, 4.5vw, 28px);
  font-weight: 500;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  margin-left: 0.28em; /* optically recenter the tracked-out caps */
  white-space: nowrap;
}
.tagline {
  margin-top: 6px;
  font-size: 10px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold);
}
.crumb { margin-top: 22px; font-size: 12px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ink-soft); }
.crumb a:hover { color: var(--gold); }
.crumb span { margin: 0 10px; color: var(--hairline); }

/* Hero */
.hero { text-align: center; margin-bottom: 72px; }
.hero h1 {
  font-family: var(--serif);
  font-size: clamp(38px, 6vw, 58px);
  font-weight: 400;
  line-height: 1.12;
  margin-bottom: 22px;
}
.lede { max-width: 560px; margin: 0 auto; color: var(--ink-soft); font-size: 16px; }

/* Podcast grid */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 28px; }
.card {
  background: var(--paper);
  border: 1px solid var(--hairline);
  transition: transform .35s ease, box-shadow .35s ease;
}
.card:hover { transform: translateY(-4px); box-shadow: 0 24px 48px -24px rgba(22, 19, 14, .25); }
.card-art { aspect-ratio: 1; overflow: hidden; filter: saturate(.85); }
.card-art img { width: 100%; height: 100%; object-fit: cover; display: block; }
.card-body { padding: 22px 22px 26px; border-top: 1px solid var(--hairline); }
.eyebrow {
  font-size: 10px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 8px;
}
.card h2 { font-family: var(--serif); font-size: 20px; font-weight: 500; line-height: 1.2; }
.card-meta { margin-top: 10px; font-size: 11px; color: var(--ink-soft); }

/* Show page */
.show-head { text-align: center; margin-bottom: 56px; }
.show-head h1 { font-family: var(--serif); font-size: clamp(26px, 4.5vw, 40px); font-weight: 400; }

.ep-list { border-top: 1px solid var(--hairline); }
.ep-row {
  display: grid;
  grid-template-columns: 190px 1fr auto auto;
  gap: 20px;
  align-items: baseline;
  padding: 26px 8px;
  border-bottom: 1px solid var(--hairline);
  transition: background .25s ease;
}
a.ep-row:hover { background: var(--paper); }
a.ep-row:hover .ep-arrow { transform: translateX(4px); color: var(--gold); }
.ep-row.is-pending { opacity: .5; }
.ep-date { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; color: var(--ink-soft); }
.ep-title { font-family: var(--serif); font-size: 18px; font-weight: 500; line-height: 1.3; }
.ep-status { font-size: 11px; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink-soft); white-space: nowrap; }
.ep-status.is-ready { color: var(--gold); }
.ep-arrow { transition: transform .25s ease; color: var(--ink-soft); }
.empty { text-align: center; color: var(--ink-soft); padding: 48px 0; }

/* Episode page */
.ep-head { text-align: center; margin-bottom: 64px; }
.ep-head h1 {
  font-family: var(--serif);
  font-size: clamp(22px, 4vw, 34px);
  font-weight: 400;
  line-height: 1.18;
  max-width: 720px;
  margin: 0 auto;
}

.ep-links {
  margin-top: 26px;
  display: flex;
  justify-content: center;
  gap: 34px;
  flex-wrap: wrap;
}
.ep-links a {
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gold);
  border-bottom: 1px solid transparent;
  padding-bottom: 3px;
  transition: border-color .25s ease;
}
.ep-links a:hover { border-color: var(--gold); }

.sect {
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  font-weight: 500;
  color: var(--gold);
  text-align: center;
  margin-bottom: 28px;
}
.sect::after {
  content: '';
  display: block;
  width: 40px;
  height: 1px;
  background: var(--gold);
  margin: 14px auto 0;
}

/* Tabbed episode layout */
.tabbed {
  display: grid;
  grid-template-columns: 200px minmax(0, 1fr);
  gap: 48px;
  align-items: start;
}
.tab-nav {
  position: sticky;
  top: 24px;
  display: flex;
  flex-direction: column;
  border-left: 1px solid var(--hairline);
}
.tab-btn {
  appearance: none;
  background: none;
  border: none;
  border-left: 2px solid transparent;
  margin-left: -1px;
  padding: 12px 18px;
  text-align: left;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-soft);
  cursor: pointer;
  transition: color .2s ease, border-color .2s ease;
}
.tab-btn:hover { color: var(--ink); }
.tab-btn.is-active { color: var(--gold); border-left-color: var(--gold); }

.tab-panel { display: none; }
.tab-panel.is-active { display: block; }

.headlines {
  max-width: 640px;
  margin: 0;
  padding-left: 0;
  list-style: none;
  counter-reset: hl;
}
.headlines li {
  counter-increment: hl;
  font-family: var(--serif);
  font-size: 19px;
  font-weight: 500;
  line-height: 1.3;
  padding: 22px 0;
  border-bottom: 1px solid var(--hairline);
  display: flex;
  gap: 18px;
}
.headlines li::before {
  content: counter(hl, decimal-leading-zero);
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.1em;
  color: var(--gold);
  padding-top: 8px;
}

@media (max-width: 760px) {
  .tabbed { grid-template-columns: 1fr; gap: 28px; }
  .tab-nav {
    position: static;
    flex-direction: row;
    flex-wrap: wrap;
    border-left: none;
    border-bottom: 1px solid var(--hairline);
  }
  .tab-btn { border-left: none; border-bottom: 2px solid transparent; margin: 0 0 -1px 0; padding: 10px 14px; }
  .tab-btn.is-active { border-bottom-color: var(--gold); }
}

.summary { max-width: 640px; margin: 0; }
.summary p { font-size: 15px; line-height: 1.8; }

.quotes { max-width: 680px; margin: 0; }
.quote { margin-bottom: 40px; text-align: left; }
.quote blockquote {
  font-family: var(--sans);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.55;
  border-left: 2px solid var(--gold);
  padding-left: 20px;
}
.quote figcaption {
  margin-top: 12px;
  padding-left: 22px;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.quote .topic { color: var(--gold); }

.transcript { max-width: 680px; margin: 0; }
.note { text-align: left; font-size: 12px; color: var(--ink-soft); font-style: italic; margin-bottom: 36px; }

.tab-panel .sect { text-align: left; }
.tab-panel .sect::after { margin: 14px 0 0; }

/* Transcript search */
.t-search {
  position: sticky;
  top: 0;
  background: var(--ground);
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 10px 0 14px;
  margin-bottom: 20px;
  border-bottom: 1px solid var(--hairline);
  z-index: 5;
}
.t-search input {
  flex: 1;
  min-width: 0;
  padding: 10px 14px;
  font-family: var(--sans);
  font-size: 13px;
  letter-spacing: 0.04em;
  background: var(--paper);
  border: 1px solid var(--hairline);
  color: var(--ink);
  outline: none;
}
.t-search input:focus { border-color: var(--gold); }
.t-count { font-size: 11px; color: var(--ink-soft); white-space: nowrap; letter-spacing: 0.06em; }
.t-nav {
  appearance: none;
  background: var(--paper);
  border: 1px solid var(--hairline);
  color: var(--ink-soft);
  width: 32px;
  height: 36px;
  cursor: pointer;
  font-size: 14px;
}
.t-nav:hover { color: var(--gold); border-color: var(--gold); }
.transcript mark { background: #f1e5c6; color: inherit; padding: 1px 0; }
.transcript mark.is-current { background: var(--gold); color: #fff; }
.turn { margin-bottom: 18px; }
.turn-head { display: flex; align-items: baseline; gap: 14px; margin: 34px 0 8px; }
.speaker {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.2em;
  text-transform: uppercase;
}
.tstamp { font-size: 11px; color: var(--gold); letter-spacing: 0.06em; font-variant-numeric: tabular-nums; }
.turn p { font-size: 14px; line-height: 1.75; }

/* Login */
.login { max-width: 340px; margin: 48px auto 96px; text-align: center; }
.login .eyebrow { display: block; margin-bottom: 14px; }
.login-input {
  width: 100%;
  padding: 14px 16px;
  font-family: var(--sans);
  font-size: 16px;
  letter-spacing: 0.2em;
  text-align: center;
  background: var(--paper);
  border: 1px solid var(--hairline);
  color: var(--ink);
  outline: none;
}
.login-input:focus { border-color: var(--gold); }
.login-error { margin-top: 12px; font-size: 12px; color: #9c3c2e; }
.login-btn {
  margin-top: 18px;
  padding: 12px 44px;
  font-family: var(--sans);
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
  background: var(--ink);
  color: var(--ground);
  border: none;
  cursor: pointer;
  transition: background .25s ease;
}
.login-btn:hover { background: var(--gold); }

/* Discourse — news site */
.d-main { max-width: 1040px; margin: 0 auto; padding: 0 24px 80px; }
.d-masthead { padding-top: 20px; margin-bottom: 44px; }
.d-topbar {
  font-size: 10px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--ink-soft);
  padding-bottom: 18px;
}
.d-nav {
  margin-top: 24px;
  padding-top: 16px;
  border-top: 1px solid var(--hairline);
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 8px 26px;
}
.d-nav a {
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.d-nav a:hover { color: var(--gold); }

.d-hero-story {
  display: grid;
  grid-template-columns: 3fr 2fr;
  gap: 36px;
  align-items: center;
  padding-bottom: 40px;
  margin-bottom: 40px;
  border-bottom: 1px solid var(--hairline);
}
.d-hero-img img { width: 100%; display: block; }
.d-hero-text h1 {
  font-family: var(--serif);
  font-size: clamp(24px, 3.4vw, 34px);
  font-weight: 500;
  line-height: 1.18;
  margin: 10px 0 12px;
}
.d-hero-story:hover h1 { color: var(--gold); }

.d-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 40px 32px;
}
.d-card { display: block; }
.d-card-img { aspect-ratio: 16/9; overflow: hidden; margin-bottom: 14px; background: var(--paper); }
.d-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-card h2 {
  font-family: var(--serif);
  font-size: 20px;
  font-weight: 500;
  line-height: 1.25;
  margin: 8px 0 8px;
  transition: color .2s ease;
}
.d-card:hover h2 { color: var(--gold); }
.d-dek { font-size: 13px; color: var(--ink-soft); line-height: 1.6; }
/* Polling rail */
.d-layout { display: grid; grid-template-columns: minmax(0, 1fr) 280px; gap: 48px; align-items: start; }
.d-rail { border-top: 2px solid var(--ink); padding-top: 14px; position: sticky; top: 24px; }
.d-rail-head {
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 18px;
  display: block; text-decoration: none;
}
.d-rail-main { display: block; }
.d-rail-nums { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; margin: 10px 0 12px; }
.d-tracker-nums { grid-template-columns: repeat(3, minmax(0, 1fr)); max-width: 520px; margin: 26px 0 22px; }
.d-rail-k {
  display: block;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 4px;
}
.d-rail-big { font-family: var(--serif); font-size: 26px; font-weight: 500; line-height: 1; }
.d-rail-big small { font-size: 12px; }
.d-rail-big.is-b { color: var(--gold); }
.d-spark svg { width: 100%; height: 64px; display: block; }
.d-tracker-spark svg { height: 180px; }
.d-rail-cap { font-size: 11px; color: var(--ink-soft); margin-top: 8px; letter-spacing: .03em; }
.d-key-a { color: var(--ink); } .d-key-b { color: var(--gold); }
.d-rail-rows { margin-top: 16px; border-top: 1px solid var(--hairline); }
.d-rail-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--hairline);
}
.d-rail-row:hover .d-rail-k { color: var(--gold); }
.d-rail-net { font-family: var(--serif); font-size: 15px; font-weight: 600; white-space: nowrap; }

.d-tracker header h1 { font-family: var(--serif); font-size: clamp(26px, 4vw, 36px); font-weight: 500; margin: 10px 0 10px; }
.d-table-wrap { overflow-x: auto; margin-top: 22px; }
.d-polls { width: 100%; border-collapse: collapse; font-size: 13px; }
.d-polls th {
  text-align: left;
  font-size: 10px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-soft);
  font-weight: 500;
  padding: 0 12px 10px 0;
  border-bottom: 2px solid var(--ink);
}
.d-polls td { padding: 10px 12px 10px 0; border-bottom: 1px solid var(--hairline); }
.d-polls .num { text-align: right; }
.d-polls th.num { text-align: right; }
.d-polls .strong { font-weight: 600; }
.d-poll-sponsor { color: var(--ink-soft); }
@media (max-width: 860px) {
  .d-layout { grid-template-columns: 1fr; }
  .d-rail { position: static; }
}

/* Race maps */
:root {
  --m-d3: #2f4a6e; --m-d2: #5b7699; --m-d1: #9db0c7;
  --m-r3: #8c3b2e; --m-r2: #b06a58; --m-r1: #d4a99d;
  --m-t: #c9a15a; --m-none: #e9e4da;
}
.racemap svg { width: 100%; height: auto; display: block; }
.racemap .st { fill: var(--m-none); transition: opacity .12s; }
.racemap .st.d3 { fill: var(--m-d3); } .racemap .st.d2 { fill: var(--m-d2); } .racemap .st.d1 { fill: var(--m-d1); }
.racemap .st.r3 { fill: var(--m-r3); } .racemap .st.r2 { fill: var(--m-r2); } .racemap .st.r1 { fill: var(--m-r1); }
.racemap .st.t { fill: var(--m-t); }
.racemap .borders { fill: none; stroke: var(--ground); stroke-width: 1; }
.racemap a:hover .st { opacity: .72; cursor: pointer; }
.racemap { margin: 8px 0; }
.d-legend { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 14px 0 6px; font-size: 11px; color: var(--ink-soft); letter-spacing: .04em; }
.d-legend .sw { display: inline-block; width: 11px; height: 11px; margin-right: 6px; vertical-align: -1px; }
.sw.d3 { background: var(--m-d3); } .sw.d2 { background: var(--m-d2); } .sw.d1 { background: var(--m-d1); }
.sw.r3 { background: var(--m-r3); } .sw.r2 { background: var(--m-r2); } .sw.r1 { background: var(--m-r1); }
.sw.t { background: var(--m-t); }
.d-lean { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; padding: 3px 8px; color: #fff; white-space: nowrap; }
.d-lean.d3 { background: var(--m-d3); } .d-lean.d2 { background: var(--m-d2); } .d-lean.d1 { background: var(--m-d1); color: var(--ink); }
.d-lean.r3 { background: var(--m-r3); } .d-lean.r2 { background: var(--m-r2); } .d-lean.r1 { background: var(--m-r1); color: var(--ink); }
.d-lean.t { background: var(--m-t); color: var(--ink); }
.d-polls tr.is-link { cursor: pointer; }
.d-polls tr.is-link:hover td { background: var(--paper); }
.d-ratings { margin-top: 26px; display: flex; align-items: center; flex-wrap: wrap; gap: 10px 16px; }
.d-rating { font-size: 12px; color: var(--ink-soft); }
.d-rating b { font-weight: 600; color: var(--ink); margin-right: 5px; }
.d-rail-map { display: block; margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--hairline); }
.d-rail-verdict { display: block; font-family: var(--serif); font-size: 15px; font-weight: 600; margin-top: 8px; line-height: 1.3; }
.d-rail-map:hover .d-rail-verdict { color: var(--gold); }

.d-person-head { margin-bottom: 40px; }
.d-person-head h1 { font-family: var(--serif); font-size: clamp(28px, 4.5vw, 42px); font-weight: 500; margin: 8px 0 6px; }
.d-polls-index { max-width: 640px; }
.d-polls-index-row { padding: 18px 0; }
.d-topics { margin-top: 40px; padding-top: 22px; border-top: 1px solid var(--hairline); display: flex; flex-wrap: wrap; gap: 10px; }
.d-topics a {
  font-size: 11px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-soft);
  border: 1px solid var(--hairline);
  padding: 7px 14px;
  transition: color .2s ease, border-color .2s ease;
}
.d-topics a:hover { color: var(--gold); border-color: var(--gold); }

.d-hero { margin: 0 0 30px; }
.d-hero img { width: 100%; display: block; }
picture { display: contents; }
/* Sized pictures keep their aspect ratio: the width/height attributes exist for layout stability, not as a fixed height (the hero was stretched, 6 Oct 2026). Zero specificity so the cover crops (height: 100%) still win. */
:where(img[width][height]) { height: auto; }
.d-hero figcaption { font-size: 11px; color: var(--ink-soft); padding-top: 8px; letter-spacing: .04em; }
.d-hero a { color: var(--gold); }
@media (max-width: 720px) {
  .d-hero-story { grid-template-columns: 1fr; gap: 18px; }
}

.d-article header { text-align: left; margin-bottom: 34px; }
.d-article h1 {
  font-family: var(--serif);
  font-size: clamp(26px, 4.5vw, 38px);
  font-weight: 500;
  line-height: 1.18;
  margin: 10px 0 12px;
}
.d-byline {
  margin-top: 16px;
  font-size: 11px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.d-byline a { color: inherit; text-decoration: none; border-bottom: 1px solid var(--rule, #d8d0c0); }
.d-byline a:hover { color: var(--ink); }
.d-body { font-size: 15px; line-height: 1.8; }
.d-body p { margin-bottom: 18px; }
.d-body h2 {
  font-family: var(--serif);
  font-size: 21px;
  font-weight: 600;
  line-height: 1.25;
  margin: 34px 0 10px;
  text-wrap: pretty;
}
.d-body h2 + p { margin-top: 0; }
.d-body h3 { font-family: var(--serif); font-size: 18px; font-weight: 600; margin: 28px 0 10px; }
.d-body a { color: var(--gold); border-bottom: 1px solid var(--hairline); }
.d-body a:hover { border-color: var(--gold); }
.d-sources { margin-top: 44px; padding-top: 8px; }
.d-sources .sect { text-align: left; }
.d-sources .sect::after { margin: 14px 0 0; }
.d-sources ul { margin: 18px 0 0 18px; }
.d-sources li { font-size: 13px; margin-bottom: 10px; color: var(--ink-soft); }
.d-sources a { color: var(--gold); }

.colophon {
  text-align: center;
  font-size: 11px;
  letter-spacing: 0.12em;
  color: var(--ink-soft);
  border-top: 1px solid var(--hairline);
  padding: 32px 24px 48px;
}

@media (max-width: 640px) {
  .ep-row { grid-template-columns: 1fr auto; }
  .ep-date { grid-column: 1 / -1; }
  main { padding: 0 18px 56px; }
  .masthead { padding: 34px 16px 26px; margin-bottom: 40px; }
  .ep-links { gap: 20px; }
  .ep-head { margin-bottom: 40px; }
  .grid { gap: 20px; }
}

/* ---- PolitiKool neon theme (Discourse pages only, via body.neon) ---- */
body.neon {
  --ground: #ffffff;
  --paper: #f7f7f7;
  --ink: #141414;
  --ink-soft: #3d4450;
  --gold: #da0a70;          /* magenta, matched to the generated art (text-safe) */
  --lime: #b8d80e;
  --slate: #325d88;
  --good: #b8d80e;         /* 'better' figures use the house lime, never another green */
  --bad: #da0a70;          /* 'worse' figures share the magenta */
  --hairline: #e8e8e8;
  /* race map: slate-blue Democrats, magenta Republicans, lime toss-ups */
  --m-d3: #31517d; --m-d2: #5b7ca8; --m-d1: #a5bcd8;
  --m-r3: #c2158f; --m-r2: #e455b8; --m-r1: #f6a8de;
  --m-t: #b8d80e; --m-none: #ececec;
}
body.neon ::selection { background: var(--lime); color: var(--ink); }
body.neon .tagline { color: var(--slate); }
body.neon .d-topbar { color: var(--slate); }
body.neon .d-nav a { color: var(--ink-soft); }
body.neon .d-nav a:hover { color: var(--ink); box-shadow: inset 0 -8px 0 var(--lime); }
body.neon .wordmark:hover { color: var(--gold); }
body.neon .d-rail { border-top-color: var(--slate); }
body.neon .d-rail-head { color: var(--slate); }
body.neon .d-rail-big.is-b { color: var(--gold); }
body.neon .d-card:hover h2,
body.neon .d-hero-story:hover h1 { color: var(--gold); }
body.neon .sect { color: var(--gold); }
body.neon .sect::after { background: var(--lime); height: 3px; width: 52px; }
body.neon .d-body a { color: var(--gold); border-bottom-color: var(--lime); }
body.neon .d-body a:hover { border-bottom-color: var(--gold); }
/* Section headings carry no bar or rule: the type and the space around it do the work, so an article reads as one piece rather than a stack of boxes. */
body.neon .d-body h2 { border-left: 0; padding-left: 0; }
body.neon .d-topics a { border-color: var(--hairline); }
body.neon .d-topics a:hover { color: var(--ink); border-color: var(--gold); background: #ffe9f8; }
body.neon .d-lean.t { color: var(--ink); }
body.neon .d-lean.d1, body.neon .d-lean.r1 { color: var(--ink); }
body.neon .d-polls th { border-bottom-color: var(--slate); }
body.neon .d-hero figcaption a, body.neon .d-sources a { color: var(--gold); }
body.neon .colophon { border-top: 3px solid var(--lime); }
.d-maps-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 40px; max-width: 900px; }
.d-map-module { display: block; }
.d-map-module .d-rail-verdict { font-size: 17px; }
.d-map-module:hover .d-rail-verdict { color: var(--gold); }

/* Breaking bar, updates feed, debt tracker */
.d-breaking {
  display: flex;
  align-items: center;
  gap: 14px;
  background: var(--ink, #141414);
  color: #fff;
  padding: 10px 20px;
  overflow: hidden;
}
.d-breaking-tag {
  flex: none;
  font-size: 10px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  font-weight: 700;
  color: #fff;
  background: #da0a70;
  padding: 3px 9px;
}
.d-breaking-items { position: relative; flex: 1; min-width: 0; height: 20px; }
.d-breaking-item {
  position: absolute;
  inset: 0;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  font-size: 13px;
  color: #fff;
  opacity: 0;
  transition: opacity .5s ease;
  pointer-events: none;
}
.d-breaking-item.is-on { opacity: 1; pointer-events: auto; }
.d-breaking-item:hover { color: #b8d80e; }
.d-breaking-src { color: #9aa1ab; font-size: 11px; letter-spacing: .05em; margin-left: 8px; }

.d-updates-list { border-top: 2px solid var(--slate, #325d88); }
.d-update {
  display: block;
  padding: 13px 0;
  border-bottom: 1px solid var(--hairline);
}
.d-update-meta {
  display: block;
  font-size: 10px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--gold);
  margin-bottom: 3px;
}
.d-update-title { font-size: 14px; line-height: 1.5; }
.d-update:hover .d-update-title { color: var(--gold); }
.d-updates-pager { display: flex; justify-content: space-between; align-items: center; padding-top: 16px; }
.d-updates-pager a { font-size: 11px; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold); }

.d-debt .d-debt-num {
  display: block;
  font-family: var(--serif);
  font-size: 23px;
  font-weight: 600;
  letter-spacing: .01em;
  margin: 8px 0 6px;
  font-variant-numeric: tabular-nums;
  color: var(--gold);
}

/* Stats strip + gas */
.d-strip {
  display: flex;
  justify-content: center;
  align-items: center;
  flex-wrap: wrap;
  gap: 8px 0;
  border-bottom: 1px solid var(--hairline);
  margin-top: -44px;
  padding: 9px 16px;
  font-size: 11.5px;
  letter-spacing: .03em;
  color: var(--ink-soft);
}
.d-strip-item b { color: var(--ink); font-weight: 600; }
.d-strip-item i { font-style: normal; color: var(--gold); }
a.d-strip-item:hover b { color: var(--gold); }
.d-strip-sep { width: 1px; height: 14px; background: var(--hairline); margin: 0 14px; }
.d-gas-rail .d-spark svg { height: 48px; }
.d-gas-chip { display: inline-block; width: 22px; height: 11px; }
.d-gas-table td, .d-gas-table th { padding-right: 18px; }
.d-up { color: var(--good); }
.d-down { color: var(--bad); }
.wm-cap { font-size: 1.4em; line-height: 0; vertical-align: baseline; }

/* Interactive charts + map tooltips */
.d-chart { position: relative; }
.d-chart.is-live { cursor: crosshair; }
.d-chart-x { position: absolute; top: 0; bottom: 0; width: 1px; background: var(--slate, #325d88); opacity: .55; pointer-events: none; }
.d-chart-tip, .d-map-tip {
  position: absolute;
  z-index: 5;
  pointer-events: none;
  background: #141414;
  color: #fff;
  font-size: 11.5px;
  line-height: 1.5;
  padding: 8px 11px;
  white-space: nowrap;
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.d-chart-tip[hidden], .d-map-tip[hidden] { display: none; }
.d-tip-date { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: #b8d80e; }
.d-chart-tip i { display: inline-block; width: 9px; height: 9px; margin-right: 6px; }
.d-map-tip b { display: block; font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: #b8d80e; }

/* Trump page */
.d-trump-trackers { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 36px; max-width: 940px; }
.d-trump-tracker { display: block; border-top: 2px solid var(--slate, #325d88); padding-top: 14px; }
.d-trump-tracker:hover .d-rail-cap { color: var(--gold); }
.d-trump-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: start; }
@media (max-width: 860px) { .d-trump-cols { grid-template-columns: 1fr; } }
.d-sample { position: relative; opacity: .92; cursor: default; }
.d-sample-art {
  display: flex; align-items: center; justify-content: center;
  background: repeating-linear-gradient(-45deg, #f4f4f4, #f4f4f4 12px, #fafafa 12px, #fafafa 24px);
  border: 1px dashed var(--hairline);
}
.d-sample-art span {
  font-size: 11px; letter-spacing: .3em; text-transform: uppercase;
  color: var(--ink-soft); border: 1px solid var(--ink-soft); padding: 6px 14px; background: #fff;
}
.d-truth {
  display: block;
  border: 1px solid var(--hairline);
  padding: 14px 16px;
  margin-bottom: 14px;
  transition: border-color .2s ease;
}
.d-truth:hover { border-color: var(--gold); }
.d-truth-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; font-size: 13px; }
.d-truth-avatar { width: 30px; height: 30px; border-radius: 50%; }
.d-truth-handle { color: var(--ink-soft); font-size: 12px; }
.d-truth-time { margin-left: auto; font-size: 11px; color: var(--ink-soft); }
.d-truth-body { display: block; font-size: 13.5px; line-height: 1.6; word-break: break-word; }
.d-truth-body p { margin-bottom: 8px; }
.d-truth-body a { color: var(--gold); }
.d-truth-media { width: 100%; margin-top: 10px; display: block; }
.d-x-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; max-width: 940px; margin-bottom: 12px; }
@media (max-width: 760px) { .d-x-cols { grid-template-columns: 1fr; } }
.racemap.has-tip [data-code] { cursor: pointer; }
.racemap.has-tip [data-code]:hover .st { opacity: .72; stroke: #141414; stroke-width: 1.5; }
.d-feed-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.d-feed-tab {
  appearance: none; background: none; cursor: pointer;
  border: 1px solid var(--hairline);
  font-size: 11px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--ink-soft); padding: 7px 14px;
}
.d-feed-tab:hover { border-color: var(--gold); color: var(--ink); }
.d-feed-tab.is-on { background: #141414; color: #fff; border-color: #141414; }
.d-feed-scroll { max-height: 640px; overflow-y: auto; padding-right: 8px; border-bottom: 1px solid var(--hairline); }
body.neon .d-updates .sect { color: var(--slate); }
.d-trump-cols > section { min-width: 0; }
.d-feed-scroll { max-height: 520px; }
.d-truth-media { max-width: 100%; height: auto; }
.d-truth-body a { overflow-wrap: anywhere; }
@media (max-width: 860px) { .d-feed-scroll { max-height: 420px; } }
.d-truth[hidden] { display: none !important; }
.d-feed-scroll { overflow-x: hidden; }
.d-truth-body, .d-truth-body * { max-width: 100%; overflow-wrap: anywhere; }
.d-truth-body iframe, .d-truth-body video { width: 100%; }
.d-gas-list { max-width: 460px; }
.d-gas-search {
  width: 100%;
  padding: 10px 14px;
  margin-bottom: 10px;
  font-family: var(--sans);
  font-size: 13px;
  border: 1px solid var(--hairline);
  background: var(--paper);
  color: var(--ink);
  outline: none;
}
.d-gas-search:focus { border-color: var(--gold); }
.d-gas-scroll { max-height: 196px; overflow-y: auto; border-bottom: 1px solid var(--hairline); }
.d-gas-scroll thead th { position: sticky; top: 0; background: var(--ground); }
.d-gas-table tr[hidden] { display: none; }
.d-gas-sort {
  appearance: none; background: none; border: none; cursor: pointer;
  font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit;
  padding: 0;
}
.d-gas-sort:hover { color: var(--gold); }

/* Article data graphic */
.d-figure { margin: 34px 0; padding: 22px 0 18px; border-top: 2px solid var(--slate); border-bottom: 1px solid var(--hairline); }
.d-figure-title { font-family: var(--serif); font-size: 18px; font-weight: 600; margin-bottom: 18px; line-height: 1.3; }
.d-bars { display: flex; flex-direction: column; gap: 12px; }
.d-bar-row { display: grid; box-sizing: border-box; grid-template-columns: 150px minmax(0, 1fr) 74px; gap: 12px; align-items: center; }
.d-bar-label { font-size: 13px; line-height: 1.3; color: var(--ink-soft); }
.d-bar-track { display: block; background: var(--paper); height: 26px; }
.d-bar-fill { display: block; min-width: 3px; height: 100%; transition: width .6s ease; }
.d-bar-value { font-family: var(--serif); font-size: 16px; font-weight: 600; text-align: right; font-variant-numeric: tabular-nums; }
.d-figure-note { font-size: 12px; color: var(--ink-soft); line-height: 1.6; margin-top: 14px; font-style: italic; }
.d-figure-source { font-size: 11px; color: var(--ink-soft); margin-top: 6px; letter-spacing: .03em; }
.d-figure-source a { color: var(--gold); }
@media (max-width: 560px) { .d-bar-row { grid-template-columns: 96px minmax(0, 1fr) 58px; gap: 8px; } .d-bar-label { font-size: 12px; } }

/* Home: headline-only briefs + more-news link */
.d-briefs { border-top: 2px solid var(--slate); margin-top: 44px; }
.d-brief { display: block; padding: 18px 0; border-bottom: 1px solid var(--hairline); }
.d-brief-date { font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--gold); }
.d-brief h3 { font-family: var(--serif); font-size: 19px; font-weight: 500; line-height: 1.3; margin-top: 6px; transition: color .2s ease; }
.d-brief:hover h3 { color: var(--gold); }
.d-more {
  display: inline-block;
  margin-top: 30px;
  padding: 13px 34px;
  font-size: 11px;
  letter-spacing: .3em;
  text-transform: uppercase;
  color: #fff;
  background: var(--ink);
  transition: background .2s ease;
}
.d-more:hover { background: var(--gold); }

/* Discourse archive — lede + rail + river */
.d-section-head { margin-bottom: 30px; padding-bottom: 20px; border-bottom: 2px solid var(--ink); }
.d-section-head h1 { font-family: var(--serif); font-size: clamp(30px, 5vw, 46px); font-weight: 500; }
.d-section-head .d-dek { margin-top: 8px; max-width: 640px; }

.d-lede-grid { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: 40px; align-items: start; }
.d-lede-story { display: block; }
.d-lede-img { display: block; margin-bottom: 16px; }
.d-lede-img img { width: 100%; display: block; }
.d-lede-text { display: block; }
.d-lede-hed {
  display: block;
  font-family: var(--serif);
  font-size: clamp(23px, 3vw, 31px);
  font-weight: 600;
  line-height: 1.2;
  margin: 6px 0 10px;
  transition: color .2s ease;
}
.d-lede-story:hover .d-lede-hed { color: var(--gold); }

.d-kicker {
  display: block;
  font-size: 10px;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold);
  font-weight: 600;
}
.d-rail-read { display: block; font-size: 11px; color: var(--ink-soft); margin-top: 8px; letter-spacing: .04em; }

.d-rail-stories { border-top: 1px solid var(--hairline); }
.d-rail-story { display: grid; grid-template-columns: 92px minmax(0, 1fr); gap: 14px; padding: 16px 0; border-bottom: 1px solid var(--hairline); align-items: start; }
.d-rail-thumb { display: block; aspect-ratio: 4/3; overflow: hidden; background: var(--paper); }
.d-rail-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-rail-story-text { display: block; min-width: 0; }
.d-rail-hed { display: block; font-family: var(--serif); font-size: 16px; font-weight: 600; line-height: 1.3; margin-top: 4px; transition: color .2s ease; }
.d-rail-story:hover .d-rail-hed { color: var(--gold); }

.d-river { margin-top: 48px; border-top: 2px solid var(--slate); }
.d-river-story { display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 24px; padding: 26px 0; border-bottom: 1px solid var(--hairline); align-items: start; }
.d-river-thumb { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--paper); }
.d-river-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-river-text { display: block; min-width: 0; }
.d-river-hed { display: block; font-family: var(--serif); font-size: 20px; font-weight: 600; line-height: 1.28; margin: 5px 0 7px; transition: color .2s ease; }
.d-river-story:hover .d-river-hed { color: var(--gold); }

@media (max-width: 860px) {
  .d-lede-grid { grid-template-columns: 1fr; gap: 26px; }
  .d-river-story { grid-template-columns: 130px minmax(0, 1fr); gap: 16px; }
  .d-river-hed { font-size: 17px; }
}

/* Polls page feature cards */
.d-poll-features { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 32px; margin-bottom: 40px; }
.d-poll-feature { display: block; border-bottom: 1px solid var(--hairline); padding-bottom: 16px; }
.d-poll-feature-img { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--paper); }
.d-poll-feature-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-poll-feature-body { display: block; padding-top: 14px; }
.d-poll-feature-nums { display: block; font-family: var(--serif); font-size: 19px; font-weight: 500; margin: 6px 0 4px; }
.d-poll-feature-nums b { font-weight: 700; }
.d-poll-feature-nums .is-b { color: var(--gold); }
.d-poll-feature:hover .d-kicker { color: var(--ink); }
.d-dateline {
  margin-top: 12px;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.d-cand-bars { max-width: 760px; }
.d-cand-row { grid-template-columns: 200px minmax(0, 1fr) 64px; }
.d-cand-name { font-size: 14px; font-weight: 500; }
@media (max-width: 560px) { .d-cand-row { grid-template-columns: 120px minmax(0, 1fr) 48px; } .d-cand-name { font-size: 12px; } }
/* Primary field: the whole field, no scroll box — a cut-off sixth row with a
   scrollbar beside it looked broken (24 Sept 2026). */
.d-field-scroll .d-cand-row { padding: 3px 0; }

/* Article measure — narrower column for reading */
.d-article { max-width: 780px; margin: 0 auto; }
.d-article .d-body { font-size: 16px; line-height: 1.75; }
.d-article .d-body h2 { font-size: 23px; }

/* Read More */
.d-readmore { margin-top: 48px; padding-top: 6px; border-top: 2px solid var(--slate); }
.d-readmore .sect { text-align: left; margin-top: 18px; }
.d-readmore .sect::after { margin: 14px 0 0; }
.d-readmore-list { display: grid; gap: 4px; }
.d-readmore-item { display: grid; grid-template-columns: 104px minmax(0, 1fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--hairline); align-items: center; }
.d-readmore-thumb { display: block; aspect-ratio: 16/9; overflow: hidden; background: var(--paper); }
.d-readmore-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-readmore-hed { display: block; font-family: var(--serif); font-size: 17px; font-weight: 600; line-height: 1.3; margin-top: 3px; transition: color .2s ease; }
.d-readmore-item:hover .d-readmore-hed { color: var(--gold); }
@media (max-width: 560px) { .d-readmore-item { grid-template-columns: 84px minmax(0, 1fr); gap: 12px; } .d-readmore-hed { font-size: 15px; } }
.d-rail-group { margin-top: 26px; padding-top: 16px; border-top: 2px solid var(--slate); }
.d-rail-subhead { margin-bottom: 4px; }
.d-rail-group .d-rail-map:first-of-type { border-top: none; margin-top: 6px; padding-top: 0; }

/* Dashboard layout: KPI tiles, paired panels, hero panel */
.d-kpi { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 2px; background: var(--hairline); border: 1px solid var(--hairline); margin: 30px 0 40px; }
.d-kpi-tight { margin: 14px 0 0; }
.d-tile { display: block; background: var(--ground); padding: 16px 16px 12px; }
a.d-tile:hover { background: var(--paper); }
.d-tile-label { display: block; font-size: 10px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-soft); line-height: 1.4; min-height: 28px; }
.d-tile-value { display: block; font-family: var(--serif); font-size: 27px; font-weight: 600; line-height: 1.05; margin-top: 4px; }
.d-tile-delta { display: block; font-size: 11px; color: var(--ink-soft); margin-top: 3px; letter-spacing: .02em; }
.d-tile-spark { display: block; margin-top: 8px; opacity: .85; }
.d-tile-spark svg { width: 100%; height: 30px; display: block; }

.d-hero-panel { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 34px; align-items: start; padding: 26px 0 30px; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--hairline); }
.d-hero-panel-main { display: block; }
.d-hero-figure { display: block; font-family: var(--serif); font-size: clamp(30px, 5vw, 50px); font-weight: 700; line-height: 1.05; margin: 8px 0 8px; letter-spacing: -.01em; }
.d-hero-panel-side { display: block; border-left: 3px solid var(--gold); padding-left: 18px; }
.d-hero-panel-side:hover .d-panel-split { color: var(--gold); }
.d-panel-split, .d-panel-nums { display: block; font-family: var(--serif); font-size: 19px; margin: 8px 0 6px; }
.d-panel-split b, .d-panel-nums b { font-weight: 700; }
.d-panel-split .is-b, .d-panel-nums .is-b { color: var(--gold); }
.d-panel-split i, .d-panel-nums i { font-style: normal; color: var(--hairline); margin: 0 4px; }

.d-duo { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 44px; margin-top: 44px; }
.d-duo-wide { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }
.d-duo > div { min-width: 0; }
.d-duo .sect { text-align: left; margin-bottom: 14px; }
.d-duo .sect::after { margin: 12px 0 0; }
.d-wall { margin-top: 48px; }
.d-wall .sect { text-align: left; }
.d-wall .sect::after { margin: 12px 0 0; }
@media (max-width: 860px) {
  .d-hero-panel, .d-duo-wide { grid-template-columns: 1fr; gap: 24px; }
  .d-hero-panel-side { border-left: none; border-top: 3px solid var(--gold); padding: 14px 0 0; }
}
.d-primary-card { display: block; }
.d-primary-card-img { display: block; aspect-ratio: 3/2; overflow: hidden; margin-bottom: 14px; background: var(--paper); }
.d-primary-card-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-site-hero { margin: 8px 0 28px; }
.d-primary-card:hover .d-panel-nums { color: var(--gold); }
.d-primary-bars { display: flex; flex-direction: column; gap: 9px; margin: 12px 0 10px; }
.d-primary-card .d-cand-row { display: grid; grid-template-columns: 148px minmax(0, 1fr) 46px; gap: 10px; align-items: center; }
.d-primary-card .d-bar-track { height: 20px; }
.d-primary-card .d-bar-value { font-size: 14px; }

/* Tile counts that divide evenly at every breakpoint — no empty cells */
.d-kpi-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
@media (max-width: 1000px) { .d-kpi { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (max-width: 760px) { .d-kpi { grid-template-columns: repeat(3, minmax(0, 1fr)); } .d-kpi-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 520px) { .d-kpi, .d-kpi-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.d-hero-figure { color: var(--slate); font-variant-numeric: tabular-nums; }

a.d-rail-head { position: relative; }
a.d-rail-head:hover { color: var(--magenta); }
a.d-rail-head::after { content: ' \2192'; opacity: 0; transition: opacity .15s ease; }
a.d-rail-head:hover::after { opacity: 1; }

/* Section-top tiles in house slate blue (Polls, Trump, Economy). */
.d-kpi .d-tile { background: var(--slate); color: #fff; }
.d-kpi a.d-tile:hover { background: #3d5d8c; }
.d-kpi .d-tile-label { color: rgba(255, 255, 255, .72); }
.d-kpi .d-tile-value { color: #fff; }
.d-kpi .d-tile-delta { color: rgba(255, 255, 255, .78); }
.d-kpi .d-tile-spark { opacity: 1; }
.d-kpi .d-tile-spark svg path,
.d-kpi .d-tile-spark svg polyline { stroke: var(--lime); }
.d-kpi .d-tile-spark svg [fill]:not([fill="none"]) { fill: rgba(255, 255, 255, .18); }
.d-trump-tracker { background: var(--slate); color: #fff; border-top: 0; padding: 16px 18px 14px; }
.d-trump-tracker .d-rail-k { color: rgba(255, 255, 255, .72); }
.d-trump-tracker .d-rail-big, .d-trump-tracker .d-rail-big.is-b { color: #fff; }
.d-trump-tracker .d-rail-cap { color: rgba(255, 255, 255, .78); }
.d-trump-tracker:hover { background: #3d5d8c; }
.d-trump-tracker:hover .d-rail-cap { color: var(--lime); }
.d-trump-tracker .d-spark svg polyline:nth-of-type(1) { stroke: #fff; }
.d-trump-tracker .d-spark svg polyline:nth-of-type(2) { stroke: var(--lime); }

/* Wall Street: three tiles, three columns — no empty cell beside them. */
.d-kpi.d-kpi-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
@media (max-width: 620px) { .d-kpi.d-kpi-3 { grid-template-columns: repeat(1, minmax(0, 1fr)); } }

/* Indexed comparison chart: readable proportions, not a full-bleed hairline. */
.d-market-chart { max-width: 780px; margin: 22px 0 0; }
.d-market-chart svg { width: 100%; height: auto; display: block; }
.d-legend { display: flex; flex-wrap: wrap; gap: 18px; margin-bottom: 10px; }
.d-legend-item { display: inline-flex; align-items: center; gap: 7px; font-size: 12px; letter-spacing: .04em; color: var(--ink-soft); }
.d-legend-item i { width: 14px; height: 3px; border-radius: 2px; display: inline-block; }

/* Source list: first few visible, the rest behind a disclosure. */
.d-sources-more { margin: 6px 0 0 18px; }
.d-sources-more > summary {
  cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 7px;
  font-size: 11px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--slate); padding: 6px 0;
}
.d-sources-more > summary::-webkit-details-marker { display: none; }
.d-sources-more > summary::after {
  content: ''; width: 6px; height: 6px; border-right: 2px solid currentColor;
  border-bottom: 2px solid currentColor; transform: rotate(45deg) translate(-2px, -2px);
  transition: transform .18s ease;
}
.d-sources-more[open] > summary::after { transform: rotate(-135deg) translate(-2px, -2px); }
.d-sources-more > summary:hover { color: var(--magenta); }
.d-sources-more > summary:focus-visible { outline: 2px solid var(--slate); outline-offset: 3px; }
.d-sources-more ul { margin: 4px 0 0; padding-left: 0; }

/* Poll rows link back to the pollster's own release. */
.d-poll-link { color: inherit; text-decoration: none; border-bottom: 1px solid var(--hairline); }
.d-poll-link:hover { color: var(--magenta); border-bottom-color: currentColor; }

/* Economy Snapshot: wide lead card with recent stories stacked beside it. */
.d-snapshot-grid { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: 40px; align-items: start; border-top: 2px solid var(--ink); padding-top: 22px; }
.d-snapshot { display: block; text-decoration: none; color: inherit; }
.d-snapshot-img { display: block; overflow: hidden; }
.d-snapshot-img img { width: 100%; display: block; transition: transform .5s ease; }
.d-snapshot:hover .d-snapshot-img img { transform: scale(1.02); }
.d-snapshot-text { display: block; padding-top: 14px; }
.d-snapshot-kicker { display: block; font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--magenta); margin-bottom: 8px; }
.d-snapshot-hed { display: block; font-family: var(--serif); font-size: clamp(24px, 2.6vw, 32px); font-weight: 700; line-height: 1.08; letter-spacing: -.01em; }
.d-snapshot:hover .d-snapshot-hed { color: var(--slate); }
.d-snapshot .d-dek { display: block; margin-top: 10px; max-width: 46em; }
.d-snapshot-side { display: flex; flex-direction: column; gap: 2px; }
.d-mini { display: grid; grid-template-columns: 132px minmax(0, 1fr); gap: 16px; align-items: start; padding: 14px 0; border-bottom: 1px solid var(--hairline); text-decoration: none; color: inherit; }
.d-snapshot-side .d-mini:first-child { padding-top: 0; }
.d-mini-thumb { display: block; overflow: hidden; background: var(--paper); aspect-ratio: 4 / 3; }
.d-mini-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.d-mini-thumb.is-empty { background: var(--paper); }
.d-mini-hed { display: block; font-family: var(--serif); font-size: 19px; font-weight: 600; line-height: 1.2; }
.d-mini:hover .d-mini-hed { color: var(--magenta); }
.d-mini .d-rail-read { display: block; margin-top: 6px; }
@media (max-width: 820px) { .d-snapshot-grid { grid-template-columns: minmax(0, 1fr); gap: 24px; } }

/* Embeds inside article bodies. */
.d-embed { margin: 28px 0; width: 100%; }
.d-embed iframe { width: 100%; height: 100%; border: 0; display: block; }
.d-embed-x { margin: 28px 0; }
.d-inline-fig { margin: 28px 0; }
/* An inline photograph never dominates the column: a tall portrait is shown
   as a landscape band, cropped toward the top so faces stay in frame. */
.d-inline-fig img { width: 100%; display: block; max-height: 420px; object-fit: cover; object-position: center 18%; }
@media (max-width: 560px) { .d-inline-fig img { max-height: 300px; } }
.d-inline-fig figcaption { font-size: 12px; color: var(--ink-soft); margin-top: 8px; }
.d-pull { margin: 30px 0; padding: 4px 0 4px 20px; border-left: 4px solid var(--magenta); font-family: var(--serif); font-size: 22px; line-height: 1.35; }

/* Map hover cards position against the map itself. */
.racemap.has-tip { position: relative; }
/* Two chart panels side by side (borrowing costs and student loans). */
.d-duo-charts { display: grid; grid-template-columns: 1fr 1fr; gap: 36px; align-items: start; }
.d-duo-charts .d-market-chart svg { width: 100%; height: auto; }
@media (max-width: 720px) { .d-duo-charts { grid-template-columns: 1fr; } }
/* The jump menu: a slim bar that stays at the top while you scroll. */
.d-jump { position: sticky; top: 0; z-index: 30; display: flex; gap: 26px; overflow-x: auto; scrollbar-width: none;
  margin: -8px -24px 26px; padding: 12px 24px 0; background: var(--ground); border-bottom: 1px solid #e6e6e6;
  font-size: 11px; letter-spacing: .14em; text-transform: uppercase; }
.d-jump::-webkit-scrollbar { display: none; }
.d-jump a { color: var(--ink); text-decoration: none; white-space: nowrap; padding-bottom: 10px; border-bottom: 3px solid transparent; opacity: .62; transition: opacity .12s; }
.d-jump a:hover { opacity: 1; }
.d-jump a.is-on { opacity: 1; border-bottom-color: var(--gold); }
.d-jump[hidden] { display: none; }
.d-jump-target { scroll-margin-top: 58px; }

/* Hovering a block tints it the design's paper gray, so the eye can settle on
   one set of numbers. The tint is a spread shadow, so nothing shifts. */
.d-tile { transition: background .15s; border-radius: 4px; }
.d-tile:hover { background: var(--paper); }
.d-wall, .d-duo > div, .d-poll-features > *, .d-duo-charts > div {
  border-radius: 6px; transition: background .15s, box-shadow .15s;
}
.d-wall:hover, .d-duo > div:hover, .d-poll-features > *:hover, .d-duo-charts > div:hover {
  background: var(--paper); box-shadow: 0 0 0 18px var(--paper);
}

/* Instagram embeds: centred, at the width Instagram renders them. */
.d-embed-ig { margin: 28px auto; max-width: 540px; }
.d-embed-ig .instagram-media { margin: 0 auto !important; min-width: 0 !important; }

/* The slate KPI tiles keep their colour on hover, one shade lighter; the two
   panels at the top of the economy page tint like every other block. */
.d-kpi .d-tile:hover, .d-trump-tracker:hover { background: #5b7fb5; }
.d-hero-panel-main, .d-hero-panel-side { border-radius: 6px; transition: background .15s, box-shadow .15s; }
.d-hero-panel-main:hover, .d-hero-panel-side:hover { background: var(--paper); box-shadow: 0 0 0 14px var(--paper); }

/* Blocks that open a tracker page. */
[data-href] { cursor: pointer; }
.d-open { display: block; text-align: center; font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--slate); text-decoration: none; margin: -6px 0 14px; }
.d-open:hover { text-decoration: underline; }
/* The gas section highlights as one piece, not two. */
.d-one-block > div:hover { background: none; box-shadow: none; }
.d-one-block { border-radius: 6px; transition: background .15s, box-shadow .15s; }
.d-one-block:hover { background: var(--paper); box-shadow: 0 0 0 18px var(--paper); }
/* Tracker pages. */
.d-econ-detail { max-width: 960px; margin: 0 auto; }
.d-crumb-link { color: var(--slate); text-decoration: none; }
.d-crumb-link:hover { text-decoration: underline; }
.d-econ-detail .d-panel-nums { font-size: 22px; }
.d-detail-chart { margin: 18px 0 8px; }
.d-detail-chart svg { width: 100%; height: auto; display: block; }
.d-detail-chart .racemap { max-width: 760px; margin: 0 auto 8px; }
.d-readings { width: 100%; max-width: 560px; }
.d-readings td.num, .d-readings th.num { text-align: right; }

/* Paged readings tables. */
.d-paged { max-width: 560px; }
.d-river-paged { max-width: none; }
.d-river-paged .d-pager { margin: 22px 0 8px; }
.d-river-paged .d-pager-where { font-size: 12px; letter-spacing: .06em; }
.d-paged-search { margin: 6px 0 10px; }
.d-pager { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 10px 0 24px; font-size: 12px; color: var(--ink-soft); }
.d-pager button { font: inherit; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; background: none; border: 1px solid var(--hairline); padding: 6px 12px; cursor: pointer; color: var(--ink); }
.d-pager button:hover { background: var(--paper); }
.d-pager button:disabled { opacity: .35; cursor: default; }

/* On a phone the nav is one even line, not two ragged ones. */
@media (max-width: 600px) {
  .d-nav { flex-wrap: nowrap; justify-content: space-between; gap: 0; padding: 14px 2px 0; }
  .d-nav a { font-size: 10px; letter-spacing: 0.08em; white-space: nowrap; }
  .d-nav-long { display: none; }
}
@media (max-width: 360px) {
  .d-nav a { font-size: 9px; letter-spacing: 0.05em; }
}

/* The national debt page. */
.d-debt-live { display: block; margin: 4px 0 22px; }
.d-debt-live .d-hero-figure { display: block; font-family: var(--serif); font-size: clamp(30px, 5.4vw, 56px); font-weight: 600; letter-spacing: -.01em; line-height: 1.05; margin: 4px 0 6px; font-variant-numeric: tabular-nums; }
.d-debt-chart { width: 100%; height: auto; display: block; }
.d-debt-band { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; fill: #325d88; font-family: var(--sans, system-ui); }
.d-debt-axis { font-size: 11px; fill: #6b7280; font-family: var(--sans, system-ui); }
.d-debt-end { font-size: 13px; font-weight: 600; fill: #da0a70; font-family: var(--sans, system-ui); }
.d-pres-list { max-width: 760px; }
.d-pres { border-top: 1px solid var(--hairline); }
.d-pres:last-child { border-bottom: 1px solid var(--hairline); }
.d-pres summary { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 6px 18px; padding: 14px 0; cursor: pointer; list-style: none; }
.d-pres summary::-webkit-details-marker { display: none; }
.d-pres summary::before { content: '+'; font-family: var(--serif); font-size: 20px; line-height: 1; color: var(--gold); width: 18px; }
.d-pres[open] summary::before { content: '–'; }
.d-pres-name { font-family: var(--serif); font-size: 19px; font-weight: 600; flex: 1 1 200px; }
.d-pres-name small { font-family: var(--sans, system-ui); font-size: 11px; letter-spacing: .1em; color: var(--ink-soft); margin-left: 8px; }
.d-pres-figs { font-size: 14px; font-variant-numeric: tabular-nums; }
.d-pres-figs b.is-up { color: var(--bad); } .d-pres-figs b.is-down { color: var(--good); }
.d-pres-figs small { color: var(--ink-soft); }
.d-pres p { margin: 0 0 12px 18px; max-width: 62em; line-height: 1.6; font-size: 15px; }
.d-pres p.d-rail-cap { margin-bottom: 16px; }

.d-debt-wrap { cursor: crosshair; }
.d-tip-note { font-size: 10px; letter-spacing: .12em; text-transform: uppercase; color: #b8d80e; margin-top: 2px; }

/* Previous / next between sub-pages. */
.d-subnav { display: grid; grid-template-columns: 1fr auto 1fr; align-items: center; gap: 18px; margin-top: 56px; padding-top: 22px; border-top: 2px solid var(--ink); }
.d-subnav a { text-decoration: none; color: var(--ink); }
.d-subnav small { display: block; font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 4px; }
.d-subnav span { font-family: var(--serif); font-size: 19px; font-weight: 600; line-height: 1.2; }
.d-subnav a:hover span { color: var(--gold); }
.d-subnav-next { text-align: right; }
.d-subnav-all { font-size: 10px; letter-spacing: .16em; text-transform: uppercase; color: var(--slate); border: 1px solid var(--hairline); padding: 8px 14px; white-space: nowrap; }
.d-subnav-all:hover { background: var(--paper); }
@media (max-width: 600px) { .d-subnav { grid-template-columns: 1fr 1fr; } .d-subnav-all { grid-column: 1 / -1; justify-self: center; order: 3; } }
/* A tracker whose source has gone quiet says so. */
.d-stale { margin: -6px 0 18px; padding: 10px 14px; background: #fff7e6; border-left: 3px solid #d97706; font-size: 13.5px; line-height: 1.5; }
/* Wide tables scroll inside their own box rather than being clipped on a phone. */
.d-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.d-table-wrap table { min-width: 100%; }

/* Regular / diesel switch on the gas tracker page. */
.d-fuel-toggle { display: inline-flex; border: 1px solid var(--ink); margin: 0 0 18px; }
.d-fuel-toggle button { font: inherit; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; padding: 9px 16px; background: none; border: 0; color: var(--ink); cursor: pointer; }
.d-fuel-toggle button + button { border-left: 1px solid var(--ink); }
.d-fuel-toggle button.is-on { background: var(--ink); color: #fff; }
.d-fuel .d-panel-nums { margin-top: 4px; }

/* Headlines take Bodoni Moda's text cut (optical size 12) at weight 600 — the
   same face with sturdier hairlines. The masthead keeps the display cut. */
.d-article h1, .d-tracker header h1, .d-person-head h1, .d-section-head h1, .d-hero-text h1, .show-head h1, .ep-head h1,
.card h2, .d-brief h3, .d-rail-hed, .d-river-hed, .d-readmore-hed, .d-snapshot-hed, .d-mini-hed, .d-subnav span, .d-pres-name, .d-body h3 {
  font-weight: 600; font-variation-settings: 'opsz' 12;
}
/* The masthead, larger: on a phone it runs nearly edge to edge. */
.wordmark { font-size: clamp(30px, 9.2vw, 42px); }
@media (max-width: 600px) { .wordmark { letter-spacing: .22em; } }

.d-rail-big.is-c, .d-key-c { color: var(--slate); }
/* When the debt panel follows a section header, the header's rule is enough. */
.d-section-head + .d-hero-panel { border-top: 0; padding-top: 6px; }

/* Market indexes, one to a line. */
.d-mkt-lines { display: block; }
.d-mkt-line { display: block; font-family: var(--serif); font-size: 19px; line-height: 1.5; }
.d-mkt-line b { font-weight: 700; }

.d-nopoll { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); white-space: nowrap; }
.d-nopoll-note { margin: 18px 0; padding: 12px 14px; background: var(--paper); font-size: 14px; line-height: 1.5; }

/* "More from PolitiKool" on pages that would otherwise end. */
.d-explore { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; margin-top: 48px; padding-top: 22px; border-top: 2px solid var(--ink); }
.d-explore .d-rail-k { grid-column: 1 / -1; }
.d-explore a { display: block; text-decoration: none; color: var(--ink); padding: 12px 14px; background: var(--paper); border-radius: 6px; }
.d-explore a b { display: block; font-family: var(--serif); font-size: 19px; font-weight: 600; margin-bottom: 4px; }
.d-explore a span { font-size: 13px; color: var(--ink-soft); line-height: 1.4; }
.d-explore a:hover b { color: var(--gold); }
.d-person-links { font-size: 13px; margin: 6px 0 0; } .d-person-links a { color: var(--slate); }

.d-embed-truth { margin: 28px auto; max-width: 560px; }
.d-embed-fallback { display: block; font-size: 12px; margin-top: 6px; color: var(--slate); }

/* Headlines wrap in balanced lines, so a stray "of" never sits alone; deks
   avoid a single-word last line the same way. */
h1, .d-hero-text h1, .d-article h1, .d-tracker header h1, .d-person-head h1, .d-section-head h1,
/* Headlines fill their line and wrap only where they must; 'balance' split
   every two-line headline into equal halves, so one that nearly fit looked
   cut off early beside a one-liner (Jason, 4 Oct 2026). */
.card h2, .d-brief h3, .d-rail-hed, .d-river-hed, .d-readmore-hed, .d-snapshot-hed, .d-mini-hed { text-wrap: pretty; }
.d-dek, .d-article p, .d-body p { text-wrap: pretty; }
/* The home-page lead headline, one notch smaller, so a long one runs to four lines rather than five. */
.d-hero-text h1 { font-size: clamp(22px, 2.9vw, 31px); }

/* Grouped article bars: one row per item, a bar per reading, one legend. */
.d-legend { display: flex; flex-wrap: wrap; gap: 6px 18px; margin: 0 0 14px; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); }
.d-legend-item i { display: inline-block; width: 12px; height: 12px; margin-right: 6px; vertical-align: -1px; }
.d-bars.is-grouped { gap: 18px; }
.d-bar-group { display: grid; grid-template-columns: 150px minmax(0, 1fr); gap: 12px; align-items: start; }
.d-bar-group .d-bar-label { padding-top: 2px; }
.d-bar-set { display: flex; flex-direction: column; gap: 4px; }
.d-bar-mini { display: grid; grid-template-columns: 68px minmax(0, 1fr) 62px; gap: 10px; align-items: center; }
.d-bar-period { font-size: 11px; letter-spacing: .04em; color: var(--ink-soft); white-space: nowrap; }
.d-bar-group .d-bar-label { font-weight: 600; color: var(--ink); }
.d-bar-mini .d-bar-track { height: 16px; }
.d-bar-mini .d-bar-value { font-size: 14px; }
@media (max-width: 560px) { .d-bar-group { grid-template-columns: 96px minmax(0, 1fr); gap: 8px; } .d-bar-mini { grid-template-columns: 58px minmax(0, 1fr) 48px; gap: 6px; } .d-bar-period { font-size: 10px; } }

/* --- Tables in an article.
   A claims-versus-the-record table is real journalism, so the renderer draws
   one. It scrolls inside its own box rather than forcing the page sideways on
   a phone, which is the usual way a table breaks a column of text. */
.d-tablewrap {
  overflow-x: auto; -webkit-overflow-scrolling: touch;
  margin: 1.6em 0; border: 1px solid var(--hairline);
}
.d-table {
  border-collapse: collapse; width: 100%; min-width: 30em;
  font-family: var(--sans); font-size: 15px; line-height: 1.5;
  background: var(--ground);
}
.d-table th, .d-table td {
  padding: 11px 14px; text-align: left; vertical-align: top;
  border-bottom: 1px solid var(--hairline);
}
.d-table th {
  font-size: 11px; letter-spacing: .1em; text-transform: uppercase;
  font-weight: 700; color: var(--ink-soft); background: var(--paper);
  white-space: nowrap;
}
.d-table tr:last-child td { border-bottom: 0; }
.d-table td:first-child { font-weight: 600; color: var(--ink); }
.d-table a { color: var(--gold); border-bottom: 1px solid var(--hairline); }
.d-table a:hover { border-color: var(--gold); }
@media (max-width: 620px) {
  .d-table { font-size: 14px; min-width: 26em; }
  .d-table th, .d-table td { padding: 9px 11px; }
}

/* --- Latest News briefs.
   A wire item we could read gets a page of its own: what the outlet reported,
   summarised, with the way back to them. The card stands in for a photograph
   we do not have the rights to. */
.d-brief-hero { margin: 0 0 30px; }
.d-brief-art { display: block; width: 100%; height: auto; aspect-ratio: 1200 / 460; }
.d-brief .d-body > p:first-child { font-size: 1.06em; }
.d-brief-note {
  margin-top: 1.8em; padding-top: .9em; border-top: 1px solid var(--hairline);
  font-family: var(--sans); font-size: 13px; color: var(--ink-soft); font-style: italic;
}
.d-brief-full {
  margin: 0 0 22px; padding: 12px 16px; background: var(--paper); border-left: 3px solid var(--gold);
  font-family: var(--sans); font-size: 14px; line-height: 1.5;
}
.d-brief-full a { color: var(--ink); font-weight: 700; border-bottom: 1px solid var(--gold); }
.d-brief-note a { color: var(--ink); border-bottom: 1px solid var(--hairline); }
.d-brief-more {
  display: block; margin-top: .55em; font-style: normal; font-weight: 700;
  color: var(--gold) !important; border-bottom: 0 !important; font-size: 14px;
}
.d-brief-more:hover { text-decoration: underline; }
/* An item that leaves the site says so, quietly. */
.d-update-out { opacity: .55; }


/* The email signup: a card that slides up from the bottom corner on the third
   article, never over the text, never on load. */
.d-sub { position: fixed; right: 18px; bottom: 18px; z-index: 40; width: min(380px, calc(100vw - 36px)); background: #fff; color: var(--ink); border: 1px solid var(--hairline); border-top: 4px solid var(--gold); box-shadow: 0 12px 40px rgba(0,0,0,.14); padding: 18px 20px 16px; transform: translateY(24px); opacity: 0; transition: transform .35s ease, opacity .35s ease; }
.d-sub.is-in { transform: none; opacity: 1; }
.d-sub-form { display: block; position: relative; }
.d-sub-x { position: absolute; top: -8px; right: -8px; width: 32px; height: 32px; border: 0; background: none; font-size: 22px; line-height: 1; color: var(--ink-soft); cursor: pointer; }
.d-sub-x:hover { color: var(--ink); }
.d-sub-k { display: block; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--gold); margin-bottom: 6px; }
.d-sub-hed { display: block; font-family: var(--serif); font-size: 19px; font-weight: 700; line-height: 1.25; margin-bottom: 4px; }
.d-sub-dek { display: block; font-size: 13px; color: var(--ink-soft); margin-bottom: 12px; }
.d-sub-row { display: flex; gap: 8px; }
.d-sub-in { flex: 1; min-width: 0; font: inherit; font-size: 15px; padding: 10px 12px; border: 1px solid #bbb; }
.d-sub-in:focus { outline: 2px solid var(--gold); outline-offset: 1px; border-color: var(--gold); }
.d-sub-go { font: inherit; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; padding: 10px 16px; border: 0; background: var(--ink); color: #fff; cursor: pointer; }
.d-sub-go:hover { background: var(--gold); }
.d-sub-go:disabled { opacity: .6; cursor: default; }
.d-sub-no { display: block; margin: 10px 0 0; padding: 0; border: 0; background: none; font: inherit; font-size: 12px; color: var(--ink-soft); text-decoration: underline; cursor: pointer; }
.d-sub-no:hover { color: var(--ink); }
.d-sub-done { display: block; font-family: var(--serif); font-size: 17px; padding: 6px 0 2px; }
/* The card's own display rules must not defeat the hidden attribute: the
   thank-you showed before anyone had subscribed (24 Sept 2026). */
.d-sub [hidden] { display: none !important; }
.colophon-sub { color: var(--gold); text-decoration: underline; white-space: nowrap; }
.d-sub-page-form { display: flex; gap: 10px; max-width: 520px; margin-top: 22px; }
.d-sub-page-done { font-family: var(--serif); font-size: 22px; margin-top: 22px; }
.d-sub-page-err { color: var(--gold); margin-top: 18px; }
@media (max-width: 560px) {
  .d-sub { right: 10px; left: 10px; bottom: 10px; width: auto; padding: 16px 16px 14px; }
  .d-sub-row { flex-direction: column; }
  .d-sub-go { padding: 12px; }
}

/* Reaching us: under every article and on the About page. */
.d-contact { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 22px; margin: 40px 0 8px; padding: 22px 0; border-top: 2px solid var(--slate); border-bottom: 1px solid var(--hairline); }
.d-contact-hed { display: block; font-family: var(--serif); font-size: 19px; font-weight: 700; line-height: 1.25; margin-bottom: 5px; }
.d-contact-dek { display: block; font-size: 14px; color: var(--ink-soft); line-height: 1.5; }
.d-contact-dek a { color: var(--gold); font-weight: 600; text-decoration: none; }
.d-contact-dek a:hover { text-decoration: underline; }
.d-contact-form { max-width: 640px; margin-top: 22px; }
.d-contact-l { display: block; font-size: 11px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft); margin: 14px 0 6px; }
.d-contact-in { width: 100%; box-sizing: border-box; font: inherit; font-size: 15px; padding: 10px 12px; border: 1px solid #bbb; }
.d-contact-in:focus { outline: 2px solid var(--gold); outline-offset: 1px; border-color: var(--gold); }
.d-contact-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.d-contact-form .d-sub-go { margin-top: 18px; }
.d-contact-about { font-size: 14px; color: var(--ink-soft); }
.d-contact-done { font-family: var(--serif); font-size: 22px; margin-top: 22px; }
.d-contact-switch { margin-top: 26px; font-size: 14px; color: var(--ink-soft); }
.d-corrections { margin-top: 32px; padding: 16px 18px; background: var(--paper); border-left: 4px solid var(--gold); }
.d-corrections p { margin: 6px 0; font-size: 15px; }
@media (max-width: 560px) { .d-contact-row { grid-template-columns: 1fr; } }

.d-brief-withdrawn { font-family: var(--serif); font-size: 19px; color: var(--ink-soft); }

/* The About page ends with the three data sections, each with its picture. */
.d-about-sections { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 26px; margin-top: 36px; }
.d-about-sections .d-snapshot-hed { font-size: 22px; }
@media (max-width: 720px) { .d-about-sections { grid-template-columns: 1fr; } }

.d-snapshot-grid-plain { grid-template-columns: minmax(0, 1fr); }

/* The rail's debt clock is a link to the debt page. */
.d-debt-link { display: block; text-decoration: none; color: inherit; }
.d-debt-link:hover .d-rail-k, .d-debt-link:hover .d-rail-cap { color: var(--gold); }

/* The corrections record. */
.d-corrections-list { list-style: none; padding: 0; margin: 28px 0 0; }
.d-corrections-list li { padding: 18px 0; border-top: 1px solid var(--hairline); display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 6px 22px; }
.d-corrections-date { font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); padding-top: 3px; }
.d-corrections-hed { font-family: var(--serif); font-size: 19px; font-weight: 600; text-decoration: none; color: inherit; }
.d-corrections-hed:hover { color: var(--gold); }
.d-corrections-note { grid-column: 2; font-size: 15px; color: var(--ink); }
.d-corrections-none { margin-top: 26px; font-family: var(--serif); font-size: 19px; color: var(--ink-soft); }
.d-corrections-cta { margin-top: 30px; font-size: 14px; color: var(--ink-soft); }
.d-corrections-cta a { color: var(--gold); }
@media (max-width: 560px) { .d-corrections-list li { grid-template-columns: 1fr; } .d-corrections-note { grid-column: 1; } }

.d-updated { color: var(--gold); }

/* The dateline sits under the byline; an update is called out beside it. */
.d-dateline { margin-top: 6px; font-size: 10px; letter-spacing: 0.22em; text-transform: uppercase; color: var(--ink-soft); }
.d-dateline .d-updated { color: var(--gold); font-weight: 600; }

.d-pres-head { margin-top: 44px; }

/* The two election maps highlight one at a time (Jason, 28 Sept 2026). */
.d-wall-maps:hover { background: transparent; box-shadow: none; }
.d-map-module { border-radius: 6px; transition: background .15s, box-shadow .15s; }
.d-map-module:hover { background: var(--paper); box-shadow: 0 0 0 14px var(--paper); }

/* The 2028 field: the first six candidates show, the rest scroll inside the box (Jason, 28 Sept 2026). */
.d-field-scroll { max-height: 236px; overflow-y: auto; padding-right: 8px; scrollbar-gutter: stable; border-bottom: 1px solid var(--hairline); }
.d-field-scroll .d-bar-row { scroll-snap-align: start; }

/* Framed charts: bands across the top, values down the side; the aspect is
   the drawing's own, so labels never stretch. */
.d-chart.is-framed svg { width: 100%; height: auto; display: block; }
.d-tracker-spark .d-chart.is-framed svg, .d-spark .d-chart.is-framed svg { height: auto; }
.d-band-label { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; fill: #325d88; font-family: var(--sans, system-ui); }
.d-band-year { font-size: 14px; font-weight: 700; fill: #b8d80e; font-family: var(--sans, system-ui); letter-spacing: .04em; }
.d-axis-label { font-size: 12px; fill: #6b7280; font-family: var(--sans, system-ui); font-variant-numeric: tabular-nums; }
.d-chart.is-framed .d-chart-x { top: 42px; bottom: 8px; }

/* Embeds behind a notice for EU readers (public/embeds.js). */
.d-embed-gate { margin: 28px auto; max-width: 560px; }
.d-embed-gate-notice { border: 1px solid var(--hairline, #e3e6ea); border-radius: 10px; padding: 14px 16px; font-size: 14px; line-height: 1.5; background: rgba(255,255,255,.6); }
.d-embed-gate-notice p { margin: 0 0 8px; }
.d-embed-gate-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin: 0 !important; }
.d-embed-gate-row button { font: inherit; font-weight: 700; padding: 7px 14px; border-radius: 999px; border: 1px solid var(--ink, #111); background: var(--ink, #111); color: #fff; cursor: pointer; }
.d-embed-gate-row label { font-size: 13px; }
.d-embed-gate-row a { font-size: 13px; }
.d-sub-privacy { color: inherit; opacity: .75; text-decoration: underline; margin-left: 4px; }
.d-privacy .d-body h2 { margin-top: 26px; }

/* The editor's button on a story, shown only when signed in to the desk. */
.d-edit-btn { display: inline-block; margin: 0 0 14px; background: #da0a70; color: #fff; font: 700 13px/1 var(--sans, Helvetica, Arial, sans-serif); letter-spacing: .08em; text-transform: uppercase; padding: 10px 16px; border-radius: 999px; text-decoration: none; }
.d-edit-btn:hover { background: #b8085e; }


/* The spectrum quiz (/quiz) */
.d-quiz .d-kicker { font-size: 11px; letter-spacing: .18em; text-transform: uppercase; color: var(--magenta, #da0a70); margin: 0 0 10px; }
.d-quiz-camps { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 6px; margin: 4px 0 30px; }
.d-quiz-camp { background: var(--cream, #f6f1e7); border-top: 3px solid var(--slate, #325d88); padding: 10px 8px 9px; text-align: center; }
.d-quiz-camp:nth-child(1), .d-quiz-camp:nth-child(2) { border-top-color: var(--slate, #325d88); }
.d-quiz-camp:nth-child(3), .d-quiz-camp:nth-child(5) { border-top-color: var(--gold, #a8823c); }
.d-quiz-camp:nth-child(4) { border-top-color: var(--lime, #b8d80e); }
.d-quiz-camp:nth-child(6), .d-quiz-camp:nth-child(7) { border-top-color: var(--magenta, #da0a70); }
.d-quiz-camp-name { display: block; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink, #141414); }
.d-quiz-camp-face { display: block; font-size: 12px; color: var(--ink-soft, #6b6b6b); margin-top: 3px; }
.d-quiz-progress { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft, #6b6b6b); position: sticky; top: 0; background: #fff; padding: 10px 0; margin: 0; z-index: 2; border-bottom: 1px solid var(--rule, #e6e0d4); }
.d-quiz-list { list-style: none; margin: 0; padding: 0; }
.d-quiz-q { padding: 22px 0 20px; border-bottom: 1px solid var(--rule, #e6e0d4); }
.d-quiz-text { position: relative; padding-left: 36px; font-family: 'Bodoni Moda', 'Bodoni 72', Didot, serif; font-size: 22px; line-height: 1.25; margin: 0 0 14px; color: var(--ink, #141414); }
.d-quiz-n { position: absolute; left: 0; top: 3px; color: var(--magenta, #da0a70); font-size: 14px; letter-spacing: .08em; }
.d-quiz-scale { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.d-quiz-opt { position: relative; display: block; text-align: center; font-size: 12px; letter-spacing: .04em; padding: 11px 6px; border: 1px solid var(--rule, #d8d0c0); background: #fff; cursor: pointer; color: var(--ink, #141414); }
.d-quiz-opt input { position: absolute; opacity: 0; inset: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.d-quiz-opt:hover { border-color: var(--ink, #141414); }
.d-quiz-opt:has(input:checked) { color: #fff; border-color: transparent; }
.d-quiz-opt.v-2:has(input:checked), .d-quiz-opt.v-1:has(input:checked) { background: var(--slate, #325d88); }
.d-quiz-opt.v0:has(input:checked) { background: var(--gold, #a8823c); }
.d-quiz-opt.v1:has(input:checked), .d-quiz-opt.v2:has(input:checked) { background: var(--magenta, #da0a70); }
.d-quiz-actions { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; margin: 28px 0 10px; }
.d-quiz-btn { display: inline-block; background: var(--magenta, #da0a70); color: #fff; border: 0; border-radius: 999px; padding: 14px 26px; font-size: 13px; letter-spacing: .14em; text-transform: uppercase; cursor: pointer; text-decoration: none; }
.d-quiz-btn:hover { background: var(--ink, #141414); color: #fff; }
.d-quiz-again { background: none; border: 0; color: var(--ink-soft, #6b6b6b); text-decoration: underline; cursor: pointer; font-size: 13px; }
.d-quiz-note { font-size: 12px; color: var(--ink-soft, #6b6b6b); }
.d-quiz-result { margin: 40px 0 20px; padding: 32px 30px 26px; background: var(--cream, #f6f1e7); border-top: 4px solid var(--magenta, #da0a70); }
.d-quiz-result-hed { font-family: 'Bodoni Moda', 'Bodoni 72', Didot, serif; font-size: 40px; line-height: 1.05; margin: 0 0 10px; }
.d-quiz-result-hed em { font-style: normal; color: var(--magenta, #da0a70); }
.d-quiz-result-pct { font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: var(--ink-soft, #6b6b6b); margin: 0 0 18px; }
.d-quiz-result-blurb { font-size: 18px; line-height: 1.5; margin: 0 0 12px; }
.d-quiz-result-face { font-size: 15px; margin: 0 0 22px; color: var(--ink, #141414); }
.d-quiz-bars { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.d-quiz-bar { display: grid; grid-template-columns: 130px 1fr 46px; align-items: center; gap: 12px; font-size: 13px; }
.d-quiz-bar.top { font-weight: 600; }
.d-quiz-bar-track { height: 10px; background: #fff; border: 1px solid var(--rule, #d8d0c0); }
.d-quiz-bar-fill { display: block; height: 100%; background: var(--slate, #325d88); }
.d-quiz-bar.top .d-quiz-bar-fill { background: var(--magenta, #da0a70); }
.d-quiz-bar-pct { text-align: right; color: var(--ink-soft, #6b6b6b); }
@media (max-width: 720px) {
  .d-quiz-camps { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  .d-quiz-scale { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 4px; }
  .d-quiz-opt { font-size: 10px; padding: 10px 2px; letter-spacing: 0; }
  .d-quiz-text { font-size: 19px; }
  .d-quiz-result { padding: 24px 18px; }
  .d-quiz-result-hed { font-size: 30px; }
  .d-quiz-bar { grid-template-columns: 96px 1fr 40px; }
}

/* The written summary under a tracker, race or economy page's header: the
   plain-sentence version of the numbers (4 Oct 2026). */
.d-tracker-summary { margin: 6px 0 26px; max-width: 70ch; color: var(--ink, #141414); }
.d-tracker-lead { font-size: 17px; line-height: 1.5; margin: 0 0 10px; }
.d-tracker-facts { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.d-tracker-facts li { position: relative; padding-left: 18px; font-size: 15px; line-height: 1.5; color: var(--ink-soft, #4a4a4a); }
.d-tracker-facts li::before { content: ''; position: absolute; left: 0; top: .5em; width: 8px; height: 8px; background: var(--lime, #b8d80e); }
.d-quiz-camp-name { font-size: 12px; }
.d-quiz-about { margin-top: 48px; border-top: 1px solid var(--rule, #e6e0d4); padding-top: 8px; }
.d-quiz-about h2 { font-family: 'Bodoni Moda', 'Bodoni 72', Didot, serif; font-size: 26px; margin: 30px 0 10px; }
.d-quiz-about h3 { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--magenta, #da0a70); margin: 22px 0 4px; }
.d-quiz-about p { font-size: 17px; line-height: 1.55; margin: 0 0 10px; max-width: 70ch; }

/* The spectrum strip above the quiz: seven colour segments with the camp
   names beneath, nothing touching an edge (4 Oct 2026). */
.d-quiz-camps { display: none; }
.d-quiz-spectrum { margin: 6px 0 22px; }
.d-quiz-spectrum-bar { display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; height: 14px; }
.d-quiz-spectrum-bar .seg { display: block; }
.d-quiz-spectrum-bar .s0 { background: #1f3d5c; } .d-quiz-spectrum-bar .s1 { background: var(--slate, #325d88); } .d-quiz-spectrum-bar .s2 { background: #7a97b5; }
.d-quiz-spectrum-bar .s3 { background: var(--lime, #b8d80e); }
.d-quiz-spectrum-bar .s4 { background: #e58fba; } .d-quiz-spectrum-bar .s5 { background: var(--magenta, #da0a70); } .d-quiz-spectrum-bar .s6 { background: #8c0646; }
.d-quiz-spectrum-labels { list-style: none; margin: 8px 0 0; padding: 0; display: grid; grid-template-columns: repeat(7, 1fr); gap: 3px; }
.d-quiz-spectrum-labels li { font-size: 12px; line-height: 1.3; text-align: center; color: var(--ink, #141414); padding: 0 6px; }
.d-quiz-spectrum-ends { display: flex; justify-content: space-between; margin-top: 8px; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-soft, #6b6b6b); }
.d-quiz-upfront { font-size: 15px; color: var(--ink, #141414); margin: 0 0 18px; }
@media (max-width: 720px) {
  .d-quiz-spectrum-labels li { font-size: 10px; padding: 0 2px; }
}

/* The quiz card: the home page's permanent left card, framed to stand apart
   from the stories beside it (Jason, 4 Oct 2026). */
.d-quiz-card { background: var(--cream, #f6f1e7); border: 1px solid var(--ink, #141414); box-shadow: 6px 6px 0 var(--magenta, #da0a70); padding: 0 0 18px; }
.d-quiz-card .d-quiz-card-img { margin-bottom: 0; aspect-ratio: 2.2; }
.d-quiz-card .d-quiz-card-kicker { display: block; margin: 14px 18px 0; font-size: 10px; letter-spacing: .18em; text-transform: uppercase; color: var(--magenta, #da0a70); }
.d-quiz-card h2 { margin: 6px 18px 6px; }
.d-quiz-card .d-dek { margin: 0 18px; }
.d-quiz-card .d-quiz-card-cta { display: inline-block; margin: 14px 18px 0; font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink, #141414); border-bottom: 2px solid var(--lime, #b8d80e); padding-bottom: 2px; }
.d-quiz-card:hover { box-shadow: 6px 6px 0 var(--ink, #141414); }
.d-quiz-card:hover h2 { color: var(--ink, #141414); }

/* The race quizzes (/quiz/<state>-senate) */
.d-quiz-context { font-size: 13px; line-height: 1.5; color: var(--ink-soft, #6b6b6b); margin: -6px 0 12px 36px; max-width: 62ch; }
.d-racequiz .d-site-hero img { width: 100%; height: auto; display: block; }
.d-rq-h { font-size: 13px; letter-spacing: .14em; text-transform: uppercase; color: var(--magenta, #da0a70); margin: 26px 0 6px; }
.d-rq-list { list-style: none; margin: 0; padding: 0; }
.d-rq-list li { padding: 12px 0; border-top: 1px solid var(--rule, #e6e0d4); }
.d-rq-st { display: block; font-family: 'Bodoni Moda', 'Bodoni 72', Didot, serif; font-size: 18px; line-height: 1.3; }
.d-rq-you { display: block; font-size: 11px; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-soft, #6b6b6b); margin: 4px 0; }
.d-rq-ev { display: block; font-size: 14px; line-height: 1.5; }
.d-rq-ev a { color: var(--slate, #325d88); }
.d-rq-fine { font-size: 13px; color: var(--ink-soft, #6b6b6b); margin: 22px 0 0; }
