/* ===== #280 (2026-10-21): retired chains defined NATIVELY in this family's own sheet. Values are the canonical d3 set (the ones the retired bridge supplied). */
:root[data-theme="d3"] {
  /* desert chain (canonical values) */
  --desert-bg: #0C121B; --desert-bg-rgb: 12,18,27;
  --desert-card: #141F2C; --desert-card-rgb: 20,31,44;
  --desert-pressed: #1B2A3B; --desert-pressed-rgb: 27,42,59;
  --desert-ink: #C7D0DA; --desert-ink-rgb: 199,208,218;
  --desert-ink-dim: #A4B3C2; --desert-ink-faint: #8FA3B5;
  --desert-rule: #223343;
  --desert-accent: #F2BC68; --desert-accent-rgb: 242,188,104;
  --desert-accent-soft: rgba(242,188,104,.12);
  --desert-accent-faint: rgba(242,188,104,.08);
  --desert-accent-ember: #F2BC68;
  --desert-accent-glow: rgba(242,188,104,.35);
  --desert-accent-glow-lg: rgba(242,188,104,.55);
  --desert-accent-deep: #B07E2E; --desert-accent-deep-rgb: 176,126,46;
  --desert-glass: rgba(12,18,27,.92);
  --desert-shadow: rgba(0,0,0,.45); --desert-shadow-rgb: 0,0,0;
  --desert-scrim-strong: rgba(12,18,27,.95);
  --desert-scrim-mid: rgba(12,18,27,.55);
  --desert-scrim-soft: rgba(12,18,27,.35);
  --desert-win-wash: rgba(242,188,104,.08);
  /* brand chain */
  --brand-red: #F2BC68; --brand-red-deep: #B07E2E;
  --brand-red-rgb: 242,188,104; --brand-red-ember: #F2BC68;
  --brand-action: #F2BC68; --brand-bg: #0C121B;
  --brand-ink: #C7D0DA; --brand-secondary: #A4B3C2;
  /* color chain */
  --color-bg: #0C121B; --color-surface: #141F2C;
  --color-surface-deep: #0A0F16; --color-text: #C7D0DA;
  --color-text-dim: #A4B3C2; --color-text-faint: #8FA3B5;
  --color-line: #223343; --color-accent: #F2BC68;
  --color-accent-deep: #B07E2E; --color-on-accent: #0C121B;
  --color-live: #F46B62;
  /* bible chain (the subset bible.css components consume on d3 pages) */
  --bible-bg: #0C121B; --bible-card: #141F2C; --bible-ink: #C7D0DA;
  --bible-ink-soft: #A4B3C2; --bible-ink-dim: #8FA3B5;
  --bible-red: #F2BC68; --bible-red-deep: #B07E2E;
  --bible-rule: #223343; --bible-minibar: rgba(12,18,27,.97);
  --bible-indexbar: rgba(12,18,27,.96); --bible-tabbar: rgba(12,18,27,.97);
  --bible-white: #F9F8F3; --bible-cream: #F9F8F3;
  --bible-cream-dim: rgba(249,248,243,.82);
  --bible-serif: 'Previously Display',Georgia,serif;
  --bible-hero-a: #1B2A3B; --bible-hero-b: #0C121B;
  --bible-hero-c: #0A0F16; --bible-hero-d: #0A0F16;
  --bible-art-a: #223343; --bible-art-b: #141F2C; --bible-art-c: #0A0F16;
  /* display token: the family's measured value (bridge :root re-point) */
  --d3-font-display: 'Previously Display', 'Inter', sans-serif;
  /* pv + generic font pins (tokens.css aliases resolve through these) */
  --pv-serif: 'Previously Display',Georgia,serif;
  --pv-live: #F46B62;
  --font-serif: 'Previously Display',Georgia,serif;
  --font-serif: 'Previously Display',Georgia,serif;
  --color-info: #1D5FBF;
  --media-black: #000000;
  --pv-serif: 'Previously Display',Georgia,serif;
  --d3-font-display: 'Previously Display', 'Inter', sans-serif;
}
/* ============================================================
   PREVIOUSLY — THE VEGAS BOARD (vegas-board.css)
   Scoped entirely under .vb — Vegas styling never leaks out.
   Tokens: brand gold read from the sports token sheet
   (hub-unified.css): --gold #F2BC68 / --gold-deep #D9A44E.
/* #280 supplement: tokens the bridge supplied that the absorb set lacks. */
:root[data-theme="d3"] {
  --brand-action: #F2BC68;
  --brand-secondary: #A4B3C2;
  --pv-live: #F46B62;
  --d3-font-display: 'Previously Display', 'Inter', sans-serif;
}

/* ============================================================
   NBA Cup Hub — component layer (v3, 2026-10-29 owner fix)
   - Gold edge/side/top bars: REMOVED as a class. Gold survives
     only as accent text and numerals. No container carries a
     gold border, gold header band, or gold side stripe.
   - The single-team watch band is gone; the slot is now the
     league-wide Marquee Board.
   - Visual life comes from verified team colors (ESPN team
     records, carried in the Cup data file): washes on matchup
     cards, color markers in tables, seed blocks on the Road.
   Display type: 'Previously Headline' (Anton) for section and
   matchup type; the hero title stays Marathon ('Previously
   Display'); body stays Inter.
   ============================================================ */
*{box-sizing:border-box}
html{background:var(--desert-bg)}
body{margin:0;background:var(--desert-bg);color:var(--desert-ink);
  font-family:'Inter',-apple-system,'Segoe UI',sans-serif;-webkit-font-smoothing:antialiased}
a{color:var(--desert-accent)}
.cup-wrap{max-width:1100px;margin:0 auto;padding:0 16px 48px}
.cup-section{margin-top:48px}
.sec-head{border-bottom:1px solid var(--desert-rule);padding-bottom:10px;margin-bottom:18px}
.sec-head h2{margin:0;font-size:27px;letter-spacing:.015em;color:#F9F8F3;
  font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;text-transform:uppercase}
.sec-num{color:var(--desert-accent);font-size:20px;margin-right:10px;vertical-align:1px;
  font-family:'Previously Headline',Anton,Impact,sans-serif}
.sec-sub{margin:8px 0 0;color:var(--desert-ink-dim);font-size:15px;line-height:1.5}
.cup-updated{margin-top:10px;font-size:12px;color:var(--desert-ink-faint)}

/* hero — Marathon title over washes of the marquee matchup's two
   team colors (set from data by JS; neutral gradient by default) */
.cup-hero{background:linear-gradient(150deg,#1B2A3B 0%,#0C121B 68%);border:1px solid var(--desert-rule);
  border-radius:18px;padding:44px 28px 34px;margin-top:24px;text-align:center;position:relative;overflow:hidden}
.cup-hero .kicker{font-size:12px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--desert-accent);margin:0 0 10px;font-weight:700}
.cup-hero h1{margin:0;font-size:clamp(34px,6vw,54px);line-height:1.05;color:#F9F8F3;
  font-family:var(--d3-font-display);font-weight:600}
.cup-hero h1 span{color:var(--desert-accent)}
.cup-hero .dek{max-width:640px;margin:14px auto 0;font-size:17px;line-height:1.55;color:var(--desert-ink)}
.cup-countdown{margin-top:22px}
.cup-countdown .cd-label{font-size:11px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--desert-ink-dim);margin-bottom:8px;font-weight:700}
.cup-countdown .cd-num{display:inline-block;min-width:64px;background:var(--desert-pressed);
  border:1px solid var(--desert-rule);border-radius:12px;padding:10px 6px;margin:0 5px}
.cup-countdown .cd-num b{display:block;font-size:30px;color:var(--desert-accent);
  font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;font-variant-numeric:tabular-nums}
.cup-countdown .cd-num i{font-style:normal;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--desert-ink-dim)}
.cup-meta{margin:16px 0 0;font-size:13px;color:var(--desert-ink-dim)}
.hero-logos{display:flex;flex-wrap:wrap;justify-content:center;gap:9px 12px;margin-top:22px}
.hero-logos img{width:27px;height:27px;object-fit:contain;opacity:.92}

/* team bits */
.tlogo{width:22px;height:22px;object-fit:contain;vertical-align:-6px;margin-right:8px}
.tlogo-lg{width:44px;height:44px;object-fit:contain}
.tname{color:var(--desert-ink);text-decoration:none;font-weight:600}
.tname:hover{color:var(--desert-accent)}
.tm-dot{display:inline-block;width:10px;height:10px;border-radius:3px;flex:none}
.tcell{display:flex;align-items:center;gap:8px}

/* marquee board — the league-wide spotlight that replaced the
   single-team watch band. Face-off card washed in the two teams'
   own colors, fading to the center seam (homepage matchup canon). */
.cup-spotlight{margin-top:28px}
.spot-card{position:relative;border:1px solid var(--desert-rule);border-radius:18px;
  overflow:hidden;background:var(--desert-card)}
.spot-wash{position:absolute;inset:0;pointer-events:none}
.spot-in{position:relative;padding:22px 22px 18px}
.spot-kicker{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--desert-accent);
  font-weight:800;text-align:center;margin:0}
.spot-face{display:flex;align-items:center;gap:10px;margin-top:14px}
.spot-team{flex:1;text-align:center;min-width:0}
.spot-team img{width:84px;height:84px;object-fit:contain}
.spot-team .st-name{font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;
  font-size:24px;text-transform:uppercase;color:#F9F8F3;line-height:1.1;margin-top:8px}
.spot-team .st-rec{font-size:12px;color:var(--desert-ink-dim);margin-top:4px;letter-spacing:.04em}
.spot-vs{font-family:'Previously Headline',Anton,Impact,sans-serif;font-size:30px;color:var(--desert-accent)}
.spot-meta{text-align:center;margin-top:14px;font-size:14px;color:var(--desert-ink)}
.spot-meta .g-link{margin-top:6px}
.spot-tv{position:relative;border-top:1px solid var(--desert-rule);padding:12px 22px 16px}
.spot-tv h3{margin:0 0 6px;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--desert-ink-dim)}
.spot-tvrow{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:14px;
  border-bottom:1px solid var(--desert-pressed)}
.spot-tvrow:last-child{border-bottom:0}
.spot-tvrow .tv-teams{display:flex;align-items:center;gap:6px;flex:1;min-width:0}
.spot-tvrow .tv-names{min-width:0}
.spot-tvrow .tv-net{font-size:12px;color:var(--desert-accent);font-weight:700;
  letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}
.spot-tvrow .tlogo{width:26px;height:26px;flex:none}

/* schedule */
.night-head{display:flex;justify-content:space-between;align-items:baseline;margin:26px 0 12px;
  border-bottom:1px solid var(--desert-rule);padding-bottom:8px}
.night-head h3{margin:0;font-size:19px;color:#F9F8F3;
  font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;text-transform:uppercase;letter-spacing:.015em}
.night-count{font-size:12px;color:var(--desert-ink-faint);text-transform:uppercase;letter-spacing:.08em;font-weight:700}
.cup-games{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:14px}
.game-card{background-color:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;padding:16px;position:relative}
.game-card.live{border-color:var(--pv-live)}
.game-card .g-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px}
.game-card .g-group{font-size:10px;font-weight:800;letter-spacing:.13em;text-transform:uppercase;color:var(--desert-accent)}
.game-card .g-status{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--desert-ink-dim);text-align:right}
.game-card.live .g-status{color:var(--pv-live)}
.game-card .g-status .dot{display:inline-block;width:8px;height:8px;border-radius:50%;
  background:var(--pv-live);margin-right:6px;animation:pulse 1.6s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.game-card .g-teams{margin-top:8px}
.game-card .g-row{display:flex;justify-content:space-between;align-items:center;padding:7px 0;
  border-bottom:1px dashed var(--desert-rule);font-size:15px}
.game-card .g-row:last-child{border-bottom:0}
.game-card .g-row.win{font-weight:700}
.game-card .g-row .tlogo{width:34px;height:34px;margin-right:10px;vertical-align:middle}
.game-card .g-score{font-weight:400;font-size:22px;font-variant-numeric:tabular-nums;
  font-family:'Previously Headline',Anton,Impact,sans-serif}
.g-team{display:flex;align-items:center}
.g-link{display:inline-block;margin-top:10px;font-size:13px;font-weight:700;text-decoration:none}
.g-link:hover{text-decoration:underline}
.empty-note{background:var(--desert-card);border:1px dashed var(--desert-rule);border-radius:14px;
  padding:26px;text-align:center;color:var(--desert-ink-dim)}
.nights-more{display:none}
.nights-more.open{display:block}
.viewall-wrap{text-align:center;margin-top:22px}
.viewall-btn{background:transparent;border:1px solid var(--desert-rule);border-radius:10px;
  color:var(--desert-accent);font:700 14px 'Inter',sans-serif;padding:12px 22px;cursor:pointer}
.viewall-btn:hover{border-color:var(--desert-accent)}

/* group tables */
.cup-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px}
.group-card{background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;overflow:hidden}
.group-card h3{margin:0;padding:12px 16px;background:var(--desert-pressed);color:#F9F8F3;
  font-size:17px;font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;
  text-transform:uppercase;letter-spacing:.02em}
.group-card h3 .gc-sub{display:block;font-family:'Inter',sans-serif;font-size:11px;font-weight:600;
  letter-spacing:.05em;text-transform:none;color:var(--desert-ink-dim);margin-top:3px}
.group-card table,.wc-panel table{width:100%;border-collapse:collapse;font-size:13px;table-layout:fixed}
.group-card th:first-child,.wc-panel th:first-child{width:52%}
.group-card td:first-child .tname,.wc-panel td:first-child .tname{display:inline-flex;align-items:center;min-width:0}
.group-card td:first-child .tname span,.wc-panel td:first-child .tname span{min-width:0}
.group-card td:first-child .tname img,.wc-panel td:first-child .tname img{flex:none}
.group-card th,.wc-panel th{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--desert-ink-dim);
  text-align:left;padding:8px 10px;border-bottom:1px solid var(--desert-rule)}
.group-card td,.wc-panel td{padding:9px 10px;border-bottom:1px solid var(--desert-pressed)}
.group-card tr:last-child td,.wc-panel tr:last-child td{border-bottom:0}
.group-card .tlogo,.wc-panel .tlogo{width:26px;height:26px;vertical-align:-8px}
td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}
tr.leader td{font-weight:700}
.wc-chip{font-size:9px;font-weight:800;letter-spacing:.1em;color:var(--desert-accent);
  margin-left:7px;vertical-align:2px;white-space:nowrap}
.cup-wcrace{margin-top:22px}
.wc-head h3{margin:0 0 4px;font-size:20px;color:#F9F8F3;
  font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;text-transform:uppercase}
.wc-head p{margin:0 0 14px;color:var(--desert-ink-dim);font-size:14px}
.wc-panel{background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;
  overflow:hidden;margin-bottom:14px}
.wc-panel h4{margin:0;padding:11px 16px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--desert-accent);border-bottom:1px solid var(--desert-rule)}
.wc-panel td,.wc-panel th{padding-left:10px;padding-right:10px}
.wc-rank{display:inline-block;min-width:20px;font-family:'Previously Headline',Anton,Impact,sans-serif;
  font-size:15px;color:var(--desert-ink-dim);margin-right:4px}

/* road to the finals — a track, not a list: stages ride a
   connector line, the current stage carries a gold-wash stage
   card, and the projected eight carry team-color seed blocks. */
.road-track{display:flex;align-items:stretch;gap:8px;position:relative}
.road-track::before{content:"";position:absolute;left:3%;right:3%;top:50%;height:2px;
  background:var(--desert-rule);z-index:0}
.road-stage{flex:1;background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;
  padding:16px;position:relative;z-index:1}
.road-stage.now{background:linear-gradient(165deg,rgba(242,188,104,.16),var(--desert-card) 58%)}
.road-stage.done{opacity:.75}
.road-stage.done .rs-name::before{content:"✓ ";color:var(--desert-accent)}
.rs-num{font-family:'Previously Headline',Anton,Impact,sans-serif;font-size:12px;
  letter-spacing:.14em;color:var(--desert-ink-faint)}
.road-stage.now .rs-num{color:var(--desert-accent)}
.rs-name{font-family:'Previously Headline',Anton,Impact,sans-serif;font-size:18px;font-weight:400;
  text-transform:uppercase;color:#F9F8F3;margin-top:4px}
.rs-when{font-size:12px;color:var(--desert-accent);margin-top:5px;font-weight:700;letter-spacing:.03em}
.rs-note{font-size:13px;color:var(--desert-ink-dim);margin-top:6px;line-height:1.45}
.road-arrow{align-self:center;color:var(--desert-accent);font-size:20px;font-weight:700;position:relative;z-index:1}
.road-eight{margin-top:20px}
.road-eight h3{font-family:'Previously Headline',Anton,Impact,sans-serif;font-weight:400;
  font-size:20px;text-transform:uppercase;color:#F9F8F3;margin:0 0 12px}
.eight-cols{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.eight-col{background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;padding:14px 16px}
.eight-col h4{margin:0 0 10px;font-size:12px;letter-spacing:.12em;text-transform:uppercase;color:var(--desert-ink-dim)}
.eight-row{display:flex;align-items:center;gap:2px;padding:7px 0;border-bottom:1px solid var(--desert-pressed);font-size:15px}
.eight-row:last-child{border-bottom:0}
.eight-row .tlogo{width:28px;height:28px}
.eight-row em{margin-left:auto;font-style:normal;font-size:11px;color:var(--desert-ink-faint);
  text-transform:uppercase;letter-spacing:.06em;font-weight:700;text-align:right}
.eight-row.wc em{color:var(--desert-accent)}
.seed{display:inline-flex;width:23px;height:23px;border-radius:6px;align-items:center;justify-content:center;
  font-family:'Previously Headline',Anton,Impact,sans-serif;font-size:13px;margin-right:9px;flex:none}
.road-champ{margin-top:18px;background:var(--desert-win-wash);border:1px solid var(--desert-rule);
  border-radius:14px;padding:16px;text-align:center;font-size:17px}

/* how it works */
.how-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:14px}
.how-card{background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;padding:18px}
.how-num{font-family:'Previously Headline',Anton,Impact,sans-serif;font-size:27px;color:var(--desert-accent);line-height:1}
.how-card h3{margin:8px 0;font-size:17px;font-family:var(--d3-font-display);font-weight:600;color:#F9F8F3}
.how-card p,.how-card li{font-size:14px;line-height:1.55;color:var(--desert-ink)}
.how-card ul{margin:0;padding-left:18px}
.how-card p{margin:0}

/* bracket */
.cup-bracket{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px}
.br-round{background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;padding:14px}
.br-round h4{margin:0 0 10px;font-size:13px;letter-spacing:.1em;text-transform:uppercase;color:var(--desert-accent)}
.br-match{padding:10px;border:1px solid var(--desert-rule);border-radius:10px;margin-bottom:10px;font-size:15px}
.br-match .br-date{font-size:12px;color:var(--desert-ink-dim)}
.br-match .br-winner{font-weight:700;color:var(--desert-accent)}

/* stories */
.cup-stories{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px}
.story-card{display:block;background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;
  overflow:hidden;text-decoration:none;color:var(--desert-ink)}
.story-card img{width:100%;height:160px;object-fit:cover;display:block;background:var(--desert-pressed)}
.story-card .s-body{padding:14px}
.story-card .s-kicker{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--desert-accent)}
.story-card h4{margin:8px 0;font-size:17px;line-height:1.35}
.story-card p{margin:0;font-size:14px;color:var(--desert-ink-dim);line-height:1.5}

/* history */
.cup-history{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}
.champ-card{background:var(--desert-card);border:1px solid var(--desert-rule);border-radius:14px;padding:18px;text-align:center}
.champ-card img{width:54px;height:54px;object-fit:contain}
.champ-card .c-year{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--desert-ink-dim)}
.champ-card .c-team{font-size:20px;margin:8px 0 4px;font-family:var(--d3-font-display);color:#F9F8F3}
.champ-card .c-mvp{font-size:14px;color:var(--desert-ink-dim)}
.champ-card .c-venue{font-size:12px;color:var(--desert-ink-faint);margin-top:6px}

.cup-foot{max-width:1100px;margin:0 auto;padding:24px 16px 60px;color:var(--desert-ink-dim);font-size:14px}
.cup-foot .fine{font-size:12px;color:var(--desert-ink-faint);line-height:1.5}

@media(max-width:720px){
  .road-track{flex-direction:column}
  .road-track::before{left:50%;right:auto;top:3%;bottom:3%;width:2px;height:auto}
  .road-arrow{transform:rotate(90deg)}
  .eight-cols{grid-template-columns:1fr}
  .cup-hero{padding:34px 18px 28px}
  .sec-head h2{font-size:22px}
  .group-card td,.group-card th{padding:8px 7px}
  .tlogo{width:19px;height:19px;margin-right:6px}
  .group-card .tlogo,.wc-panel .tlogo{width:23px;height:23px}
  .spot-team img{width:60px;height:60px}
  .spot-team .st-name{font-size:18px}
  .spot-vs{font-size:22px}
  .spot-in{padding:18px 14px 14px}
  .spot-tv{padding:10px 14px 14px}
  .spot-tvrow{flex-direction:column;align-items:flex-start;gap:3px}
  .spot-tvrow .tv-net{white-space:normal}
  .game-card .g-row .tlogo{width:30px;height:30px}
}
