/* ============================================================================
   PREVIOUSLY SPORTS FRONT — D3 CINEMATIC HYBRID (Task E, 2026-10-15)
   Front-only stylesheet: linked ONLY from /sports/index.html.
   Every rule is scoped under html[data-theme="d3"] and consumes the D3
   tokens from /css/design-tokens-d3.css. League fronts carry no
   data-theme="d3", so nothing here can reach them. No shared file edited.
   Presentation only — no data, feed, or JS logic is touched.
   ========================================================================== */

/* ---------- Ground & legacy wrappers ---------- */
html[data-theme="d3"] body.b-scope,
html[data-theme="d3"] .b-legacy,
html[data-theme="d3"] main,
html[data-theme="d3"] .sp-home,
html[data-theme="d3"] .page {
  background: var(--d3-ground);
  color: var(--d3-text);
}
html[data-theme="d3"] body.b-scope { font-family: var(--d3-font-ui); }
html[data-theme="d3"] .b-scope h1,
html[data-theme="d3"] .b-scope h2,
html[data-theme="d3"] .b-scope h3 { color: var(--d3-text); }

/* ---------- Bible chrome (nav injected by bible.js) ---------- */
html[data-theme="d3"] .b-topbar {
  background: var(--d3-ground);
  border-bottom: 2px solid var(--d3-accent);
}
html[data-theme="d3"] .b-wordmark {
  font-family: var(--d3-font-display); color: var(--d3-text);
}
html[data-theme="d3"] .b-wordmark em { color: #E10600; font-style: normal; }
html[data-theme="d3"] .b-nav-link,
html[data-theme="d3"] .b-dateline { color: var(--d3-text-2); }
html[data-theme="d3"] .b-nav-link:hover { color: var(--d3-text); }
html[data-theme="d3"] .b-nav-link[aria-current],
html[data-theme="d3"] .b-topnav a[aria-current] { color: var(--d3-text); }
html[data-theme="d3"] .b-nav-dropmenu {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
/* SHEET GLASS (James, 2026-10-16): menu groups are NOT trays — the
   .b-drop-group half of this rule (surface fill + border + radius) is
   removed; groups separate by spacing + labels only, in sheets and in
   the desktop dropdown alike. The dropmenu panel keeps its surface. */
html[data-theme="d3"] .b-drop-glabel { color: var(--d3-text-3); }
html[data-theme="d3"] .b-drop-link { color: var(--d3-text-2); }
html[data-theme="d3"] .b-drop-link:hover { color: var(--d3-text); background: var(--d3-surface-2); }
html[data-theme="d3"] .pv-sg-btn { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-sg-btn:hover { color: var(--d3-text); }
/* Sign-in / sign-up — element preserved exactly as the shell ships it;
   D3 paints it as the primary brick button. */
html[data-theme="d3"] .pv-signin {
  background: var(--d3-accent); color: var(--d3-text);
  border: 1px solid var(--d3-accent); border-radius: var(--d3-radius);
  font-weight: 600;
}
html[data-theme="d3"] .pv-signin:hover { background: var(--d3-accent-deep); color: var(--d3-text); text-decoration: none; }
html[data-theme="d3"] .pv-bell { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-belldrop {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .pv-belldrop-title { color: var(--d3-text); }
html[data-theme="d3"] .b-m-head { background: var(--d3-ground); }
html[data-theme="d3"] .b-sec-strip { background: var(--d3-ground); border-bottom: 1px solid var(--d3-line); }
html[data-theme="d3"] .b-sec-strip a { color: var(--d3-text-2); }
html[data-theme="d3"] .b-tabbar,
html[data-theme="d3"] .b-bottomnav {
  background: var(--d3-surface-1); border-top: 1px solid var(--d3-line);
}
html[data-theme="d3"] .b-tabbar a,
html[data-theme="d3"] .b-bottomnav a { color: var(--d3-text-2); }

/* ---------- League dropdown nav ---------- */
html[data-theme="d3"] .pv-league-nav {
  background: var(--d3-surface-1); border-bottom: 1px solid var(--d3-line);
}
html[data-theme="d3"] .pv-league-nav a { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-league-nav a:hover { color: var(--d3-text); }
html[data-theme="d3"] .pv-league-nav [class*="drop"],
html[data-theme="d3"] .pv-league-nav [class*="menu"],
html[data-theme="d3"] .pv-league-nav [class*="panel"] {
  background: var(--d3-surface-1); border-color: var(--d3-line);
}

/* ---------- Masthead ---------- */
html[data-theme="d3"] .b-masthead { background: var(--d3-ground); border-bottom: 1px solid var(--d3-line); }
html[data-theme="d3"] .b-kicker {
  color: var(--d3-accent-text); text-transform: uppercase;
  letter-spacing: .08em; font-weight: 700; font-size: var(--d3-size-meta);
}
html[data-theme="d3"] .b-kdot { background: var(--d3-accent); }
html[data-theme="d3"] .b-masthead h1 {
  font-family: var(--d3-font-display); color: var(--d3-text); letter-spacing: -.015em;
}
html[data-theme="d3"] .b-fresh {
  background: var(--d3-inset); color: var(--d3-text);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .b-dot { background: var(--d3-accent); }
html[data-theme="d3"] .b-meta-note { color: var(--d3-text-3); }

/* ---------- Index bar — the numbered rail (01 · 02 · 03) ---------- */
html[data-theme="d3"] .b-indexbar {
  background: var(--d3-surface-1); border-bottom: 1px solid var(--d3-line);
}
html[data-theme="d3"] .b-ilink { color: var(--d3-text-2); }
html[data-theme="d3"] .b-ilink:hover { color: var(--d3-text); text-decoration: none; }
html[data-theme="d3"] .b-ilink .b-n {
  font-family: var(--d3-font-display); font-weight: 700;
  color: var(--d3-accent-text);
}

/* ---------- Zone hero (renders only while 2+ games live) ---------- */
html[data-theme="d3"] .zone-hero {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-left: 3px solid #E10600; border-radius: var(--d3-radius);
  color: var(--d3-text);
}
html[data-theme="d3"] .zone-hero__t { font-family: var(--d3-font-display); color: var(--d3-text); }
html[data-theme="d3"] .zone-hero__d { color: var(--d3-text-2); }
html[data-theme="d3"] .zone-hero__go { color: var(--d3-accent-text); font-weight: 600; }
html[data-theme="d3"] .b-live {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .b-live-dot { background: var(--d3-text); }

/* ---------- Scores strip ---------- */
html[data-theme="d3"] .sp-strip-sec { background: var(--d3-inset); border-bottom: 1px solid var(--d3-line); }
html[data-theme="d3"] .sp-strip-label { color: var(--d3-text-3); }
html[data-theme="d3"] .sp-strip-label b { color: var(--d3-text-2); }
html[data-theme="d3"] .ss-empty { color: var(--d3-text-3); }
html[data-theme="d3"] .ss-tile {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ss-lg {
  color: var(--d3-accent-text); font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
}
html[data-theme="d3"] .ss-team { color: var(--d3-text); }
html[data-theme="d3"] .ss-tname { color: var(--d3-text); }
html[data-theme="d3"] a.ss-team:hover .ss-tname { color: var(--d3-text); text-decoration: underline; text-underline-offset: 3px; }
html[data-theme="d3"] .ss-score { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .ss-status { color: var(--d3-text-3); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .ss-tile.is-live { border-color: var(--d3-accent); }
html[data-theme="d3"] .ss-tile.is-live .ss-status { color: var(--d3-accent-text); }
html[data-theme="d3"] .ss-tile.is-final .ss-status { color: var(--d3-text-2); }

/* ---------- League tab bar ---------- */
html[data-theme="d3"] .eh-leaguebar { background: var(--d3-ground); border-bottom: 1px solid var(--d3-line); }
html[data-theme="d3"] .eh-leaguebar a { color: var(--d3-text-2); }
html[data-theme="d3"] .eh-leaguebar a:hover { color: var(--d3-text); }
html[data-theme="d3"] .eh-leaguebar a[aria-current="page"] {
  color: var(--d3-text); border-bottom-color: var(--d3-accent);
}

/* ---------- ESPN hero (photo-led) ---------- */
html[data-theme="d3"] .eh-hero-main { background: var(--d3-inset); border-radius: var(--d3-radius); }
html[data-theme="d3"] .eh-hero-scrim {
  background: linear-gradient(to top, var(--d3-scrim-strong) 0%, var(--d3-scrim-strong) 22%, var(--d3-scrim-mid) 58%, var(--d3-scrim-none) 85%);
}
html[data-theme="d3"] .eh-kicker {
  color: var(--d3-accent-text); text-transform: uppercase;
  letter-spacing: .08em; font-weight: 700; font-size: var(--d3-size-meta);
}
html[data-theme="d3"] #ehHeroTitle {
  font-family: var(--d3-font-display); font-weight: 700;
  font-size: var(--d3-size-lead); line-height: 1.08; color: var(--d3-text);
}
html[data-theme="d3"] #ehHeroDek { color: var(--d3-text-2); }
html[data-theme="d3"] .eh-hero-side > * {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .eh-hero-side a { color: var(--d3-text); }
html[data-theme="d3"] .eh-hero-side [class*="kicker"],
html[data-theme="d3"] .eh-hero-side [class*="meta"] { color: var(--d3-text-3); }

/* ---------- Section heads (kickers + Fraunces) ---------- */
html[data-theme="d3"] .kicker,
html[data-theme="d3"] .sp-sec-head .kicker,
html[data-theme="d3"] .hub-sec .kicker,
html[data-theme="d3"] .sec-head .kicker {
  color: var(--d3-accent-text); text-transform: uppercase;
  letter-spacing: .08em; font-weight: 700; font-size: var(--d3-size-meta);
}
html[data-theme="d3"] .sp-sec-head h2,
html[data-theme="d3"] .hub-sec h2,
html[data-theme="d3"] .sec-head h2 {
  font-family: var(--d3-font-display); font-weight: 400;
  font-size: var(--d3-size-section); color: var(--d3-text);
}
html[data-theme="d3"] .sp-sec-head { border-top: 2px solid var(--d3-line); }
html[data-theme="d3"] .sp-more { color: var(--d3-accent-text); }
html[data-theme="d3"] #secBoard .sp-more { color: var(--d3-text-3) !important; }

/* ---------- The Ticket — numbered legs (AURIX motif) ---------- */
html[data-theme="d3"] .tk-mod {
  background: var(--d3-surface-1);
  border-top: 1px solid var(--d3-line); border-bottom: 1px solid var(--d3-line);
}
html[data-theme="d3"] .tk-mod__kicker {
  color: var(--d3-accent-text); text-transform: uppercase; letter-spacing: .08em;
}
html[data-theme="d3"] .tk-mod__title {
  font-family: var(--d3-font-display); font-weight: 700; color: var(--d3-text);
}
html[data-theme="d3"] .tk-mod__date { color: var(--d3-text-2); }
html[data-theme="d3"] .tk-mod__odds {
  background: var(--d3-inset); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); box-shadow: none;
}
html[data-theme="d3"] .tk-mod__odds-num {
  font-family: var(--d3-font-display); font-weight: 700;
  color: var(--d3-text); font-variant-numeric: tabular-nums;
}
html[data-theme="d3"] .tk-mod__odds-lbl { color: var(--d3-text-3); }
html[data-theme="d3"] .tk-mod__legs { counter-reset: tkleg; }
html[data-theme="d3"] .tk-leg {
  background: var(--d3-surface-2); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); box-shadow: none; counter-increment: tkleg;
}
html[data-theme="d3"] .tk-leg::before {
  content: counter(tkleg, decimal-leading-zero);
  font-family: var(--d3-font-display); font-weight: 400; font-size: 28px;
  line-height: 1; color: var(--d3-accent);
}
html[data-theme="d3"] .tk-leg__sport {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .tk-leg__grade { color: var(--d3-text-3); }
html[data-theme="d3"] .tk-leg__matchup {
  font-family: var(--d3-font-display); font-weight: 400; color: var(--d3-text);
}
html[data-theme="d3"] .tk-leg__pick { color: var(--d3-accent-text); }
html[data-theme="d3"] .tk-leg__line { color: var(--d3-text-2); }
html[data-theme="d3"] .tk-leg__take { color: var(--d3-text-2); }
html[data-theme="d3"] .tk-mod__loading,
html[data-theme="d3"] .tk-mod__unavail { color: var(--d3-text-2); }
html[data-theme="d3"] .tk-mod .tk-mod__cta {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .tk-mod .tk-mod__cta:hover { background: #B00500; }

/* ---------- Wire / top stories ---------- */
html[data-theme="d3"] .sw-lead {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .sw-lead-art { background: var(--d3-inset); }
html[data-theme="d3"] .sw-lead-kicker {
  color: var(--d3-accent-text); text-transform: uppercase; letter-spacing: .08em; font-weight: 700;
}
html[data-theme="d3"] .sw-lead-body b {
  font-family: var(--d3-font-display); font-weight: 600;
  font-size: var(--d3-size-card); color: var(--d3-text);
}
html[data-theme="d3"] .sw-lead-dek { color: var(--d3-text-2); }
html[data-theme="d3"] .sw-meta { color: var(--d3-text-3); }
html[data-theme="d3"] .sw-tile {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .sw-tile-art { background: var(--d3-inset); }
html[data-theme="d3"] .sw-tile .sw-tile-body b { color: var(--d3-text); }
html[data-theme="d3"] .sw-tile:hover .sw-tile-body b {
  color: var(--d3-text); text-decoration-color: var(--d3-accent);
}

/* ---------- The Board widget (odds-home compact) — inset well ---------- */
html[data-theme="d3"] .sp-widget {
  background: var(--d3-inset); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .sp-widget .sp-sec-head { border-top: 0; }
html[data-theme="d3"] .oh-meta-line { color: var(--d3-text-3) !important; }
html[data-theme="d3"] .oh-ct {
  font-family: var(--d3-font-display); font-weight: 600; color: var(--d3-text);
  text-transform: uppercase; letter-spacing: .08em;
}
html[data-theme="d3"] .oh-cu { color: var(--d3-text-3); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .oh-cday {
  background: var(--d3-surface-2); color: var(--d3-text);
  text-transform: uppercase; letter-spacing: .08em; font-weight: 700;
}
html[data-theme="d3"] .oh-cgame { border-bottom: 1px solid var(--d3-line); color: var(--d3-text); }
html[data-theme="d3"] .oh-cteams { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .oh-cmeta { color: var(--d3-text-3); }
html[data-theme="d3"] .oh-cline { color: var(--d3-text-2); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .oh-final-tag { color: var(--d3-accent-text); font-weight: 700; }
html[data-theme="d3"] .oh-live-dot { background: #E10600; }
html[data-theme="d3"] .oh-loading { color: var(--d3-text-2) !important; }
html[data-theme="d3"] .sp-rail .oh-more a { color: var(--d3-accent-text); }
html[data-theme="d3"] .oh-foot { color: var(--d3-text-3); }

/* ---------- League quick links ---------- */
html[data-theme="d3"] .sp-league {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .sp-league:hover { background: var(--d3-surface-2); text-decoration: none; }

/* ---------- Featured matchups ---------- */
html[data-theme="d3"] .mc-section { background: var(--d3-ground); }
html[data-theme="d3"] .mc-kicker {
  color: var(--d3-accent-text); text-transform: uppercase;
  letter-spacing: .08em; font-weight: 700; font-size: var(--d3-size-meta);
}
html[data-theme="d3"] .mc-title {
  font-family: var(--d3-font-display); font-weight: 400;
  font-size: var(--d3-size-section); color: var(--d3-text);
}
html[data-theme="d3"] .mc-sub { color: var(--d3-text-2); }
html[data-theme="d3"] .mc-card.ds-data-card,
html[data-theme="d3"] .mc-card {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .mc-card:hover { background: var(--d3-surface-2); }
html[data-theme="d3"] .mc-league {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .mc-kick { color: var(--d3-text-3); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .mc-team b { color: var(--d3-text); }
html[data-theme="d3"] .mc-at {
  font-family: var(--d3-font-display); font-style: italic; color: var(--d3-accent-text);
}
html[data-theme="d3"] .mc-odds-title { color: var(--d3-text-2); text-transform: uppercase; letter-spacing: .08em; }
html[data-theme="d3"] .mc-odds-src { color: var(--d3-text-3); }
html[data-theme="d3"] .mc-kickline { color: var(--d3-text); font-variant-numeric: tabular-nums; font-weight: 600; }
html[data-theme="d3"] .mc-venueline { color: var(--d3-text-3); }
html[data-theme="d3"] .mc-bigscore { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .mc-winner { color: var(--d3-text); }
html[data-theme="d3"] .mc-rec, html[data-theme="d3"] .mc-rank { color: var(--d3-text-3); }
html[data-theme="d3"] .mc-cta { color: var(--d3-accent-text); font-weight: 600; }
html[data-theme="d3"] .mc-disc { color: var(--d3-text-3); }
html[data-theme="d3"] .mc-loading { color: var(--d3-text-2) !important; }
html[data-theme="d3"] .mc-stale-note { color: var(--d3-text-3); }
html[data-theme="d3"] .mc-viewall a {
  color: var(--d3-accent-text); background: var(--d3-surface-1);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}

/* ---------- Full scoreboard — the big inset well ---------- */
html[data-theme="d3"] .scoreboard {
  background: var(--d3-inset); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .board-status { color: var(--d3-text-2); text-transform: uppercase; letter-spacing: .08em; }
html[data-theme="d3"] .updated { color: var(--d3-text-3); }
html[data-theme="d3"] .updated b { color: var(--d3-text); }
html[data-theme="d3"] .board-title {
  font-family: var(--d3-font-display); font-weight: 400; color: var(--d3-text);
}
html[data-theme="d3"] .scoreboard .lede { color: var(--d3-text-2); }
html[data-theme="d3"] .offhours-title {
  font-family: var(--d3-font-display); font-weight: 400; color: var(--d3-text);
}
html[data-theme="d3"] .offhours-sub { color: var(--d3-text-2); }
/* League filters — upcoming / live / final state treatments */
html[data-theme="d3"] .lg-filter,
html[data-theme="d3"] .lg-chip {
  background: transparent; color: var(--d3-text-2);
  border: 1px solid transparent; border-radius: var(--d3-radius);
  font-variant-numeric: tabular-nums;
}
html[data-theme="d3"] .lg-filter:hover,
html[data-theme="d3"] .lg-chip:hover { color: var(--d3-text); }
html[data-theme="d3"] .lg-filter[aria-pressed="true"],
html[data-theme="d3"] .lg-chip[aria-pressed="true"] { color: var(--d3-text); font-weight: 700; }
html[data-theme="d3"] .pv-filter-bar { background: var(--d3-line); }
/* Stage */
html[data-theme="d3"] .stage {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .stage.is-live {
  border-color: var(--d3-line); box-shadow: none;
}
html[data-theme="d3"] .team .score {
  font-family: var(--d3-font-display); color: var(--d3-text);
  font-variant-numeric: tabular-nums;
}
html[data-theme="d3"] .score.tbd { color: var(--d3-text-3); font-family: var(--d3-font-ui); }
html[data-theme="d3"] .team .meta { color: var(--d3-text); }
html[data-theme="d3"] .team .record { color: var(--d3-text-3); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .mid .at {
  font-family: var(--d3-font-display); font-style: italic; color: var(--d3-accent-text);
}
html[data-theme="d3"] .clockbox { background: var(--d3-inset); border-radius: var(--d3-radius); }
html[data-theme="d3"] .clockbox .clk { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .clockbox .per { color: var(--d3-text-2); }
html[data-theme="d3"] .live-tag { color: var(--d3-accent-text); font-weight: 700; }
html[data-theme="d3"] .down-dist { color: var(--d3-text-2); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .last-play { color: var(--d3-text-2); }
/* Linescore — data table inside the well */
html[data-theme="d3"] .linescore { background: var(--d3-inset); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .linescore .cell { color: var(--d3-text); border-color: var(--d3-line); }
html[data-theme="d3"] .linescore .qh { color: var(--d3-text-3); }
html[data-theme="d3"] .linescore .team-h { color: var(--d3-text-2); }
html[data-theme="d3"] .linescore .rowtot { background: var(--d3-surface-2); color: var(--d3-text); font-weight: 700; }
html[data-theme="d3"] .venue-net { color: var(--d3-text-2); }
html[data-theme="d3"] .venue-net b { color: var(--d3-text); }
html[data-theme="d3"] .ds-btn {
  background: var(--d3-surface-2); color: var(--d3-text);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ds-btn:hover { background: var(--d3-surface-1); }
/* Rail game chips */
html[data-theme="d3"] .rail-label { color: var(--d3-text-3); }
html[data-theme="d3"] .gchip {
  background: var(--d3-surface-2); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .gchip-shade {
  background: linear-gradient(180deg, rgba(13,10,7,.18) 0%, rgba(13,10,7,.55) 100%);
}
html[data-theme="d3"] .gchip:hover { border-color: var(--d3-text-3); }
html[data-theme="d3"] .gchip[aria-selected="true"] { border-color: #E10600; }
html[data-theme="d3"] .gchip .lg,
html[data-theme="d3"] .gchip .lg-league { color: var(--d3-accent-text); }
html[data-theme="d3"] .gchip .ms { color: var(--d3-text); }
html[data-theme="d3"] .gchip .tm-name { color: var(--d3-text); }
html[data-theme="d3"] .gchip .vs { color: var(--d3-text-3); }
html[data-theme="d3"] .gchip .sub { color: var(--d3-text-2); }
html[data-theme="d3"] .gchip .when { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .gchip .net { color: var(--d3-text-3); }
html[data-theme="d3"] .gchip .sc,
html[data-theme="d3"] .gchip .gscore { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .live-pill {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}

/* ---------- Live-game detail panel (live-game.js furniture) ---------- */
html[data-theme="d3"] .lg-panel,
html[data-theme="d3"] .lg-hero,
html[data-theme="d3"] .lg-teaser {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .lg-teaser__kick { color: var(--d3-accent-text); }
html[data-theme="d3"] .lg-score { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .lg-clock { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .lg-live-dot { background: #E10600; }
html[data-theme="d3"] .lg-note, html[data-theme="d3"] .lg-updated { color: var(--d3-text-3); }
html[data-theme="d3"] .lg-wp__bar { background: var(--d3-accent); }
html[data-theme="d3"] .lg-wp__lbl { color: var(--d3-text-2); }

/* ---------- Search ---------- */
html[data-theme="d3"] .pv-search__bar {
  background: var(--d3-inset); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .pv-search__input { background: transparent; color: var(--d3-text); }
html[data-theme="d3"] .pv-search__input::placeholder { color: var(--d3-text-3); }
html[data-theme="d3"] .pv-search__icon,
html[data-theme="d3"] .pv-search__clear { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-search__results,
html[data-theme="d3"] [class*="pv-search__drop"] {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .pv-search__results a { color: var(--d3-text); }
html[data-theme="d3"] .pv-search__noscript { color: var(--d3-text-2); }

/* ---------- Clips & highlights ---------- */
html[data-theme="d3"] button.ds-media-card,
html[data-theme="d3"] .ds-media-card {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .ds-media-card:hover { background: var(--d3-surface-2); }
html[data-theme="d3"] #secClipsHighlights .vthumb { background: var(--d3-inset); }
html[data-theme="d3"] #secClipsHighlights .clip-league {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ds-media-card__title {
  font-family: var(--d3-font-display); font-weight: 400; color: var(--d3-text);
}
html[data-theme="d3"] .ds-media-card__matchup { color: var(--d3-text-2); }
html[data-theme="d3"] .ds-media-card__meta { color: var(--d3-text-3); }
html[data-theme="d3"] .vplay { color: var(--d3-text); }

/* ---------- Tournament spotlight (inline desert <style> overridden) ---------- */
html[data-theme="d3"] .ts-spotlight {
  background: var(--d3-surface-1);
  border-top: 1px solid var(--d3-line); border-bottom: 1px solid var(--d3-line);
}
html[data-theme="d3"] .ts-tab {
  background: transparent; color: var(--d3-text-2);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ts-tab.active {
  background: var(--d3-accent); border-color: var(--d3-accent); color: var(--d3-text);
}
html[data-theme="d3"] .ts-subtab {
  background: var(--d3-inset); color: var(--d3-text-2);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ts-subtab.active {
  background: var(--d3-surface-2); border-color: var(--d3-line); color: var(--d3-text);
}
html[data-theme="d3"] .ts-kicker { color: var(--d3-accent-text); }
html[data-theme="d3"] .ts-title { font-family: var(--d3-font-display); color: var(--d3-text); }
html[data-theme="d3"] .ts-live-badge {
  background: #E10600; color: #FFFFFF; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ts-more { color: var(--d3-accent-text); }
html[data-theme="d3"] .ts-match,
html[data-theme="d3"] .ts-fixture,
html[data-theme="d3"] .ts-scorer {
  background: var(--d3-inset); border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ts-match.ts-live { border-color: #E10600; background: var(--d3-inset); }
html[data-theme="d3"] .ts-teams, html[data-theme="d3"] .ts-fx-teams { color: var(--d3-text); }
html[data-theme="d3"] .ts-score {
  font-family: var(--d3-font-display); color: var(--d3-text); font-variant-numeric: tabular-nums;
}
html[data-theme="d3"] .ts-status { color: var(--d3-text-3); }
html[data-theme="d3"] .ts-match.ts-live .ts-status { color: var(--d3-accent-text); }
html[data-theme="d3"] .ts-fx-vs { color: var(--d3-text-3); }
html[data-theme="d3"] .ts-fx-when { color: var(--d3-accent-text); }
html[data-theme="d3"] .ts-empty, html[data-theme="d3"] .ts-loading { color: var(--d3-text-2); }
html[data-theme="d3"] .ts-standings { background: var(--d3-inset); border-color: var(--d3-line); border-radius: var(--d3-radius); }
html[data-theme="d3"] .ts-standings th { color: var(--d3-text-3); border-bottom-color: var(--d3-line); }
html[data-theme="d3"] .ts-standings td { color: var(--d3-text); border-bottom-color: var(--d3-line); }
html[data-theme="d3"] .ts-st-pts { color: var(--d3-accent-text); }
html[data-theme="d3"] .ts-sc-rank {
  font-family: var(--d3-font-display); color: var(--d3-text-3);
}
html[data-theme="d3"] .ts-sc-name { color: var(--d3-text); }
html[data-theme="d3"] .ts-sc-team { color: var(--d3-text-3); }
html[data-theme="d3"] .ts-sc-goals { color: var(--d3-accent-text); }
html[data-theme="d3"] .ts-group-label { color: var(--d3-text-2); }
html[data-theme="d3"] .ts-group-select {
  background: var(--d3-inset); color: var(--d3-text);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .ts-src { color: var(--d3-text-3); }

/* ---------- House ads ---------- */
html[data-theme="d3"] .pv-hunit-label { color: var(--d3-text-3); }
html[data-theme="d3"] .pv-hunit-stage {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .pv-housead-word { font-family: var(--d3-font-display); color: var(--d3-text); }
html[data-theme="d3"] .pv-housead-word em { color: var(--d3-accent); font-style: normal; }
html[data-theme="d3"] .pv-housead-tag { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-housead-cta { color: var(--d3-accent-text); }

/* ---------- Sheet + video modal ---------- */
html[data-theme="d3"] .sheet-scrim { background: rgba(13,10,7,.72); }
html[data-theme="d3"] .sheet {
  background: var(--d3-surface-1); color: var(--d3-text);
  border-radius: var(--d3-radius); box-shadow: 0 30px 90px rgba(13,10,7,.6);
}
html[data-theme="d3"] .sheet .close { background: var(--d3-surface-2); color: var(--d3-text); border-radius: var(--d3-radius); }
html[data-theme="d3"] .sheet .sk { color: var(--d3-accent-text); }
html[data-theme="d3"] .sheet h3 { font-family: var(--d3-font-display); color: var(--d3-text); }
html[data-theme="d3"] .sheet-body { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-modal__card {
  background: var(--d3-surface-1); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); color: var(--d3-text);
}
html[data-theme="d3"] .pv-modal__card h2 { font-family: var(--d3-font-display); color: var(--d3-text); }
html[data-theme="d3"] .pv-modal__close { color: var(--d3-text-2); }
html[data-theme="d3"] .pv-modal__note { color: var(--d3-text-3); }

/* ---------- Fix round (proof-driven, 2026-10-15) ----------
   matchup-cards.css washes .mc-shade with a white gradient and panels
   .mc-score at rgba(255,255,255,.72) for the light theme; on D3 both go
   dark or the card's own text (now cream) vanishes. House-ad fallback
   creative gets its own D3 surface so it never depends on the stage. */
html[data-theme="d3"] .mc-shade {
  background-image: linear-gradient(180deg, rgba(13,10,7,.04) 0%, rgba(13,10,7,.16) 55%, rgba(13,10,7,.42) 100%);
}
html[data-theme="d3"] .mc-score {
  background: var(--d3-inset); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .mc-odds { background: transparent; }
html[data-theme="d3"] .mc-cell { color: var(--d3-text); }
html[data-theme="d3"] .pv-housead-creative {
  background: var(--d3-surface-1); border-radius: var(--d3-radius);
}
html[data-theme="d3"] .pv-hunit-stage ins.adsbygoogle { background: var(--d3-inset); }

/* ---------- Sheet fix round (proof-driven, 2026-10-15) ----------
   The game sheet is styled by ID-weighted legacy rules (#scrim .sheet
   paints it white, 14px radius, red CTA) that outrank class-scoped
   rules. Reclaim it with matching ID weight, still D3-scoped. */
/* live-game.css paints this sheet with !important rules in
   var(--color-warn) gold — the counters below carry !important too,
   at higher (ID-weighted) specificity, still fully D3-scoped. */
html[data-theme="d3"] #scrim .sheet {
  background: var(--d3-surface-1) !important; color: var(--d3-text) !important;
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius) !important;
  box-shadow: 0 30px 90px rgba(13,10,7,.65);
}
html[data-theme="d3"] #scrim .sheet .close {
  background: var(--d3-surface-2); color: var(--d3-text) !important;
  border: 1px solid var(--d3-line); border-color: var(--d3-line) !important;
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] #scrim .sheet .sk { color: var(--d3-accent-text) !important; }
html[data-theme="d3"] #shTitle {
  font-family: var(--d3-font-display) !important; font-weight: 400;
  color: var(--d3-text) !important; letter-spacing: normal !important;
}
html[data-theme="d3"] #scrim .sheet-full {
  background: #E10600; color: #FFFFFF !important;
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] #scrim .sheet-full:hover { background: #B00500; }
html[data-theme="d3"] .lg-modal-plays li { color: var(--d3-text-2); }
html[data-theme="d3"] .lg-modal-plays li .lg-pmeta { color: var(--d3-text-3); }
html[data-theme="d3"] #shArt,
html[data-theme="d3"] .sheet-art,
html[data-theme="d3"] .sheet-hero { background: var(--d3-inset); border-radius: var(--d3-radius) var(--d3-radius) 0 0; }
html[data-theme="d3"] .sheet-hero--duel {
  background: radial-gradient(120% 90% at 50% 0%, var(--d3-surface-2) 0%, var(--d3-ground) 58%, var(--d3-inset) 100%);
}
html[data-theme="d3"] #scrim .sheet .row {
  border-bottom: 1px solid var(--d3-line) !important; color: var(--d3-text-2);
  font-variant-numeric: tabular-nums;
}
html[data-theme="d3"] #scrim .sheet .row span:first-child {
  color: var(--d3-text-3) !important; text-transform: uppercase; letter-spacing: .08em;
}
html[data-theme="d3"] #scrim .sheet .row span:last-child { color: var(--d3-text) !important; }
html[data-theme="d3"] .sheet-section h4 { color: var(--d3-accent-text); }
html[data-theme="d3"] .sheet-score { color: var(--d3-text); font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .sheet .note { color: var(--d3-text-2); }
html[data-theme="d3"] .sheet-cta a:not(.sheet-full) { color: var(--d3-accent-text); }

/* ---------- Fix round 3 (mobile matchup + duel hero, 2026-10-15) ----------
   matchup-cards.css @media (max-width:760px) paints .mc-main with a
   white-to-cream gradient (desktop keeps it transparent, which is why
   1440 passed and 390 washed out). The sheet duel hero carries a light
   ::before overlay from sports.css. Both go dark here. */
html[data-theme="d3"] .mc-main { background: var(--d3-surface-1); }
html[data-theme="d3"] .mc-art { background: var(--d3-inset); }
html[data-theme="d3"] .sheet-hero--duel::before {
  background: linear-gradient(180deg, rgba(13,10,7,.18) 0%, rgba(13,10,7,.5) 100%);
}

/* ---------- Fix round 4 (sheet hero shade, 2026-10-15) ----------
   .sheet-hero-shade fades the duel hero into the sheet body with a
   cream gradient (250,246,238 at .85). On D3 it fades to surface-1. */
html[data-theme="d3"] .sheet-hero-shade {
  background: linear-gradient(180deg, rgba(13,10,7,0) 0%, rgba(13,10,7,.35) 60%, var(--d3-surface-1) 100%);
}
html[data-theme="d3"] .sheet-hero-vs { color: var(--d3-accent-text); }

/* ---------- Standings surface (wired 2026-10-15, Task E follow-up) ----------
   New front-only section #secStandings, rendered by
   /sports/js/front-d3-standings.js from the live 30-min endpoints
   /sports/data/hockey-nhl-standings.json + football-nfl-standings.json.
   Fail-closed in JS (hidden unless a full 32-team payload renders). */
html[data-theme="d3"] .std-sec {
  max-width: var(--pv-content-max, 1280px); margin: 0 auto;
  padding: 34px var(--d3-gutter) 8px;
}
html[data-theme="d3"] .std-sec .sp-sec-head { margin-bottom: 16px; }
html[data-theme="d3"] .std-updated { font-variant-numeric: tabular-nums; }
html[data-theme="d3"] .std-tabs { display: flex; gap: 4px; margin: 0 0 18px; }
html[data-theme="d3"] .std-tab {
  background: transparent; color: var(--d3-text-2);
  border: 1px solid var(--d3-line); border-radius: var(--d3-radius);
  font-family: var(--d3-font-ui); font-size: 12px; font-weight: 700;
  text-transform: uppercase; letter-spacing: .08em;
  padding: 9px 18px; cursor: pointer;
}
html[data-theme="d3"] .std-tab:hover { color: var(--d3-text); }
html[data-theme="d3"] .std-tab.is-active {
  background: #1B1B1B; border-color: #2C2C2C; color: #FFFFFF;
}
html[data-theme="d3"] .std-conf { margin: 0 0 22px; }
html[data-theme="d3"] .std-conf-name {
  font-family: var(--d3-font-display); font-weight: 400; font-size: 20px;
  color: var(--d3-text); margin: 0 0 10px;
}
html[data-theme="d3"] .std-well {
  background: var(--d3-inset); border: 1px solid var(--d3-line);
  border-radius: var(--d3-radius); overflow-x: auto;
}
html[data-theme="d3"] .std-table {
  width: 100%; border-collapse: collapse; min-width: 520px;
  font-family: var(--d3-font-ui); font-size: 15px; font-variant-numeric: tabular-nums;
}
html[data-theme="d3"] .std-table th {
  text-align: right; color: var(--d3-text-3); font-size: var(--d3-size-meta);
  font-weight: 600; text-transform: uppercase; letter-spacing: .08em;
  padding: 12px 16px; border-bottom: 1px solid var(--d3-line);
}
html[data-theme="d3"] .std-table th.std-team-h { text-align: left; }
html[data-theme="d3"] .std-table td {
  color: var(--d3-text); padding: 10px 16px; border-bottom: 1px solid var(--d3-line);
}
html[data-theme="d3"] .std-table tr:last-child td { border-bottom: 0; }
html[data-theme="d3"] .std-table td.std-num,
html[data-theme="d3"] .std-table th.std-num { text-align: right; }
html[data-theme="d3"] .std-team-name { font-weight: 600; }
html[data-theme="d3"] .std-team-abbr { color: var(--d3-text-3); margin-left: 10px; font-size: 12.5px; letter-spacing: .06em; }
html[data-theme="d3"] .std-loading { color: var(--d3-text-2); padding: 18px 4px; }
html[data-theme="d3"] .std-src { color: var(--d3-text-3); font-size: 12.5px; margin: 2px 0 0; }

/* ---------- Contrast fix round (site contrast guard, 2026-10-15) ----------
   Guard + own sweep findings on the converted front, all reclaimed
   with token pairings verified against the real rendered backgrounds:
   - .b-ilink.b-active was rgb(33,25,16) on surface-1 = 1.03:1 (bible
     ink wins the active state). Active now = cream on brick fill
     (4.77:1); its numeral goes cream too.
   - .pv-nl-btn was white on drift red #EC4634 = 3.82:1 -> brick fill.
   - .oh-cgame .at was --color-warn gold on inset = 3.34:1.
   - strip "reconnecting" <b>, search result count, clip-fresh line,
     footer headings/separators carried legacy ink/grays under AA. */
html[data-theme="d3"] .b-ilink.b-active {
  color: var(--d3-text) !important; background: #1B1B1B;
  border-bottom-color: #E10600; border-radius: var(--d3-radius);
}
html[data-theme="d3"] .b-ilink.b-active .b-n { color: var(--d3-text) !important; }
html[data-theme="d3"] .pv-nl-btn {
  background: #E10600 !important; color: #FFFFFF !important;
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] .pv-nl-btn:hover { background: #B00500 !important; }
html[data-theme="d3"] .oh-cgame .at { color: var(--d3-accent-text); }
html[data-theme="d3"] .sp-strip-label b { color: var(--d3-text-2) !important; }
html[data-theme="d3"] .pv-search strong { color: var(--d3-text); }
html[data-theme="d3"] .clip-fresh { color: var(--d3-text-3) !important; }
html[data-theme="d3"] .pvf-footer__heading { color: var(--d3-text-3) !important; }
html[data-theme="d3"] .pvf-footer__sep { color: var(--d3-text-3) !important; }

/* ---------- Footer ---------- */
html[data-theme="d3"] .pvf-footer {
  background: var(--d3-ground); border-top: 1px solid var(--d3-line); color: var(--d3-text-2);
}
html[data-theme="d3"] .pvf-footer__wordmark { font-family: var(--d3-font-display); color: var(--d3-text); }
html[data-theme="d3"] .pvf-footer__wordmark-dot { color: #E10600; }
html[data-theme="d3"] .pvf-footer__tagline { color: var(--d3-text-3); }
html[data-theme="d3"] .pvf-footer a { color: var(--d3-text-2); }
html[data-theme="d3"] .pvf-footer a:hover { color: var(--d3-text); }
html[data-theme="d3"] .pvf-footer__legal { color: var(--d3-text-3); }
/* ================= GATE 2 — SPORTS FAMILY ELEVATION (2026-10-15) =================
   ScorePulse board composition: the board is the page's hero zone.
   #secBoard is now ONE framed panel (moved in index.html to sit directly
   under the league bar): board head -> stage (MATCHUP hero) -> detail ->
   rail -> standings as the panel's lower tier. All rules D3-scoped and
   confined to this file (sports front only). */

/* ---------- The board panel ---------- */
html[data-theme="d3"] #secBoard {
  max-width: 1360px; margin: 26px auto 0;
  padding: 22px clamp(14px, 2.6vw, 36px) 26px;
  background: var(--d3-surface-1);
  border: 1px solid var(--d3-line); border-top: 3px solid var(--d3-line);
  border-radius: var(--d3-radius);
}
html[data-theme="d3"] #secBoard > .sp-sec-head { margin: 0 0 4px; }
html[data-theme="d3"] #secBoard > .sp-sec-head h2 {
  font-family: var(--d3-font-display); font-weight: 400;
  font-size: clamp(26px, 3vw, 36px); letter-spacing: -.01em;
}
html[data-theme="d3"] #secBoard .scoreboard {
  background: transparent; border: 0; border-radius: 0;
}
html[data-theme="d3"] #secBoard .scoreboard-inner { max-width: none; padding: 12px 0 4px; }
@media (max-width: 760px) {
  html[data-theme="d3"] #secBoard {
    margin: 20px 0 0; border-left: 0; border-right: 0;
    padding: 18px 14px 20px;
  }
}

/* ---------- Stage = the MATCHUP hero ----------
   The white app-icon crest boxes come off (base .tlogo paints a cream
   rounded square behind every logo). Crests ride bare on their team-tint
   aura; the center column drops its black box and reads as broadcast
   type; LIVE becomes the squared brick plate (homepage breaking-plate
   language), never a pill. */
html[data-theme="d3"] .stage {
  background:
    radial-gradient(120% 90% at 50% -10%, rgba(225,6,0,.12) 0%, rgba(225,6,0,0) 55%),
    linear-gradient(180deg, var(--d3-surface-2) 0%, var(--d3-surface-1) 72%);
  border: 1px solid var(--d3-line);
  box-shadow: 0 30px 80px rgba(13,10,7,.55), inset 0 1px 0 rgba(244,239,230,.05);
  padding: 52px 40px 38px;
}
html[data-theme="d3"] .stage.is-live { border-top: 3px solid var(--d3-line); }
html[data-theme="d3"] .team .tlogo {
  background: transparent; border-radius: 0; padding: 0;
  width: clamp(128px, 14.5vw, 196px);
  filter: drop-shadow(0 18px 38px rgba(13,10,7,.65));
}
html[data-theme="d3"] .team .crest .tint { opacity: .55; }
html[data-theme="d3"] .team .score { font-weight: 400; letter-spacing: -.03em; }
html[data-theme="d3"] .team .meta {
  font-family: var(--d3-font-display); font-weight: 600;
  font-size: clamp(18px, 2.1vw, 27px); letter-spacing: 0;
}
html[data-theme="d3"] .clockbox {
  background: transparent; border: 0; box-shadow: none;
  padding: 0; min-width: 0;
}
html[data-theme="d3"] .clockbox .clk {
  font-family: var(--d3-font-display); font-weight: 400;
  font-size: clamp(30px, 3.6vw, 46px); letter-spacing: 0;
}
html[data-theme="d3"] .clockbox .live-tag {
  background: #E10600; color: #FFFFFF;
  border-radius: var(--d3-radius);
}
@media (max-width: 760px) {
  html[data-theme="d3"] .stage { padding: 30px 10px 24px; gap: 8px; }
  html[data-theme="d3"] .team .tlogo { width: clamp(92px, 25vw, 120px); }
  html[data-theme="d3"] .team .crest { min-height: 0; }
  html[data-theme="d3"] .mid { min-width: 0; }
  html[data-theme="d3"] .clockbox .clk { font-size: 26px; }
}

/* Last play = ticker bar at the stage's foot */
html[data-theme="d3"] .last-play {
  background: var(--d3-inset); border-left: 3px solid #E10600;
  padding: 12px 16px; margin-top: 18px; font-size: 15px;
}

/* ---------- Standings = the board's lower tier ---------- */
html[data-theme="d3"] #secBoard .std-sec {
  max-width: none; margin: 0; padding: 24px 0 2px;
  border-top: 1px solid var(--d3-line);
}
html[data-theme="d3"] #secBoard .std-table { min-width: 0; }
@media (min-width: 1024px) {
  html[data-theme="d3"] #secBoard .std-body {
    display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px 30px;
  }
  html[data-theme="d3"] #secBoard .std-conf { margin-bottom: 6px; }
}

/* ---------- Strip tiles: no floating-card recipe ---------- */
html[data-theme="d3"] .ss-tile { box-shadow: none; }
html[data-theme="d3"] .ss-tile.is-live {
  border-color: var(--d3-line);
  box-shadow: inset 0 2px 0 #E10600;
}

/* ---------- Masthead LIVE plate: squared ---------- */
html[data-theme="d3"] .b-live { border-radius: var(--d3-radius); }

/* ---------- Sheet scorebug fix (inherited defect) ----------
   At phone widths the duel scorebug's fixed sizes (64px crests, 44px
   scores, 16px gaps) overflow the sheet's inner width and the two
   teams' blocks collide in the center. Scale the duel down as one
   composition under 640px; the flex duel (logos outside, scores
   inside) is preserved, nothing wraps or overlaps. */
@media (max-width: 640px) {
  html[data-theme="d3"] .sheet-hero-inner { padding: 26px 14px 16px; gap: 8px; }
  html[data-theme="d3"] .sheet-score {
    gap: 8px; width: 100%; flex-wrap: nowrap;
    justify-content: space-between;
  }
  html[data-theme="d3"] .sheet-score .tm { gap: 7px; min-width: 0; }
  html[data-theme="d3"] .sheet-score .tm img { width: 44px; height: 44px; }
  html[data-theme="d3"] .sheet-score .tm em { font-size: 13px; }
  html[data-theme="d3"] .sheet-score .tm b { font-size: 34px; }
  html[data-theme="d3"] .sheet-score .dash { font-size: 20px; }
  html[data-theme="d3"] .sheet-hero-teams { gap: 14px; }
  html[data-theme="d3"] .sheet-hero-teams img { width: 64px; height: 64px; }
}

/* Gate 2 fix round: one title per board (the panel head carries it; the
   scoreboard's own board-title/lede duplicate it), squared chips with
   bare crests (no cream app-icon tiles), squared live pills, stacked
   board head on phones. */
html[data-theme="d3"] #secBoard .scoreboard .board-title,
html[data-theme="d3"] #secBoard .scoreboard .lede { display: none; }
html[data-theme="d3"] .gchip { border-radius: var(--d3-radius); }
html[data-theme="d3"] .gchip .ms .cl {
  background: transparent; border-radius: 0; padding: 0;
}
html[data-theme="d3"] .live-pill { border-radius: var(--d3-radius); }
@media (max-width: 760px) {
  html[data-theme="d3"] #secBoard > .sp-sec-head {
    flex-direction: column; align-items: flex-start; gap: 2px;
  }
}

/* MARATHON FONT — PHASE 1 (sports front wordmarks): the shared header/footer WORDMARKS
   convert in Phase 1 even though the sports family display type
   (headlines via --d3-font-display) converts in the sports phase.
   Wordmark-only: no headline token is touched here. */
html[data-theme="d3"] .b-wordmark { font-family: "Previously Display", Georgia, serif; }
html[data-theme="d3"] .pvf-footer__wordmark { font-family: "Previously Display", Georgia, serif; }

/* ALL-RED WORDMARK (James, 2026-10-16 06:22 PT): sports lockup renders
   entirely in signal red #E10600 — letters and period. */
html[data-theme="d3"] .b-wordmark{color:#E10600}

/* ALL-RED WORDMARK STRAGGLER FIX 3 (James, 2026-10-16 06:22 PT): this
   file's d3 house-ad wordmark rules (lines ~545) — the brand lockup
   renders entirely in signal red #E10600, letters and period. */
html[data-theme="d3"] .pv-housead-word{color:#E10600}
html[data-theme="d3"] .pv-housead-word em{color:#E10600}

/* ================= RAIDERS PHASE 2 (2026-10-16) =================
   Accent-filled controls carry BLACK text on the white accent (silver on
   white was ~2.3:1); hover on accent-deep carries white. Brand chain and
   the masthead stripe resolve white on this family. */
html[data-theme="d3"]{--brand-red:#FFFFFF;--brand-red-rgb:255,255,255;--brand-red-ember:#D7DBDD}
html[data-theme="d3"] .b-masthead{border-top-color:#FFFFFF}
html[data-theme="d3"] .zone-hero__go{border-bottom-color:#FFFFFF}
html[data-theme="d3"] .pv-signin{color:#000000}
html[data-theme="d3"] .pv-signin:hover{color:#FFFFFF}
html[data-theme="d3"] .b-live{color:#000000}
html[data-theme="d3"] .b-live-dot{background:#000000}
html[data-theme="d3"] .pv-nl-btn{color:#FFFFFF!important}
html[data-theme="d3"] .pv-nl-btn:hover{color:#FFFFFF!important}

/* RAIDERS P2 residual: masthead kicker dot = white accent */
html[data-theme="d3"] .b-scope .b-kdot{background:#FFFFFF}

/* SPORTSTIDY 2026-10-17: visually-hidden utility (structural h1 after the
   masthead removal). */
.pv-sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* SPORTSTIDY 2026-10-17: the D3 token layer names Fraunces as the display
   face (retired scheme). On THIS page (the sports front — the only page
   that loads this sheet, last in its cascade) the display token takes the
   house face: Marathon Long Run Display 400 ('Previously Display'). */
:root[data-theme="d3"]{--d3-font-display:'Previously Display',sans-serif}

/* ===== Standings identity pass — 2026-10-17 stats-legibility crew =====
   Conference heading pinned to the house display face (never a serif,
   whatever the token layer does); team logos sized to the row; phone
   fit: the 520px table minimum is removed at <=720px, padding compacts,
   and the NFL ties column (near-always 0) drops on phone so PCT and
   STRK stay on screen — no sideways scrolling, nothing clipped. */
html[data-theme="d3"] .std-conf-name { font-family: 'Previously Display', sans-serif; font-weight: 400; }
html[data-theme="d3"] .std-team-logo { width: 24px; height: 24px; object-fit: contain; vertical-align: -7px; margin-right: 10px; }
@media (max-width: 720px) {
  html[data-theme="d3"] .std-table { min-width: 0; font-size: 14px; }
  html[data-theme="d3"] .std-table th,
  html[data-theme="d3"] .std-table td { padding: 9px 8px; }
  html[data-theme="d3"] .std-table th:first-child,
  html[data-theme="d3"] .std-table td:first-child { padding-left: 12px; }
  html[data-theme="d3"] .std-table th:last-child,
  html[data-theme="d3"] .std-table td:last-child { padding-right: 12px; }
  html[data-theme="d3"] .std-c-ties { display: none; }
  html[data-theme="d3"] .std-team-logo { width: 20px; height: 20px; vertical-align: -5px; margin-right: 8px; }
  html[data-theme="d3"] .std-team-abbr { margin-left: 6px; }
}
