/* ============================================================
   GridIronUI — "Vegas at night" design system
   Deep charcoal/navy · felt green · gold · glassmorphism
   ============================================================ */
:root{
  --bg:#0a0d13;
  --bg-2:#0e1219;
  --bg-3:#131926;
  --card:rgba(255,255,255,.045);
  --card-solid:#121722;
  --line:rgba(255,255,255,.09);
  --line-soft:rgba(255,255,255,.055);
  --text:#eef2f7;
  --muted:#9aa6bb;
  --faint:#6b7690;
  --green:#17c964;          /* felt green */
  --green-dim:#0e7a4f;
  --green-glow:rgba(23,201,100,.35);
  --gold:#f0b429;
  --gold-soft:#ffd970;
  --gold-glow:rgba(240,180,41,.35);
  --red:#f04452;
  --blue:#4aa8ff;
  --radius:14px;
  --radius-sm:9px;
  --font-display:"Archivo",system-ui,sans-serif;
  --font-body:"Inter",system-ui,sans-serif;
  --shadow:0 18px 50px -18px rgba(0,0,0,.65);
  --maxw:1200px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--bg);color:var(--text);
  font-family:var(--font-body);font-size:16px;line-height:1.65;
  -webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(1100px 500px at 85% -5%, rgba(240,180,41,.07), transparent 60%),
    radial-gradient(900px 480px at 8% 0%, rgba(23,201,100,.06), transparent 60%);
  background-attachment:fixed;
}
::selection{background:rgba(240,180,41,.35)}
img{max-width:100%;display:block}
a{color:var(--gold-soft);text-decoration:none}
a:hover{color:var(--gold)}
h1,h2,h3,h4{font-family:var(--font-display);line-height:1.15;letter-spacing:-.01em;margin:0 0 .6em}
h1{font-size:clamp(2rem,5vw,3.4rem);font-weight:800}
h2{font-size:clamp(1.4rem,3vw,2rem);font-weight:750}
h3{font-size:1.15rem;font-weight:700}
p{margin:0 0 1em}
.num,.odds{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 22px}
section.block{padding:56px 0}
.kicker{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-display);font-size:.78rem;font-weight:700;
  letter-spacing:.16em;text-transform:uppercase;color:var(--gold);margin-bottom:10px;
}
.kicker::before{content:"";width:26px;height:2px;background:var(--gold);border-radius:2px}
.lede{color:var(--muted);font-size:1.06rem;max-width:62ch}
.section-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:26px;flex-wrap:wrap}
.section-head h2{margin:0}

/* ---------- header ---------- */
.site-header{
  position:sticky;top:0;z-index:60;
  background:rgba(10,13,19,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line-soft);
}
.header-inner{display:flex;align-items:center;gap:18px;height:66px}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--font-display);font-weight:850;font-size:1.25rem;letter-spacing:-.02em;color:var(--text)}
.brand:hover{color:var(--text)}
.brand-mark{
  width:34px;height:34px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:linear-gradient(135deg,var(--gold),#b97f0e);color:#131007;
  font-weight:900;font-size:1.05rem;box-shadow:0 4px 18px -4px var(--gold-glow);
}
.brand em{font-style:normal;color:var(--gold)}
.main-nav{display:flex;gap:2px;margin-left:auto;align-items:center}
.main-nav a{
  color:var(--muted);font-size:.86rem;font-weight:600;padding:8px 11px;border-radius:8px;white-space:nowrap;
}
.main-nav a:hover{color:var(--text);background:rgba(255,255,255,.06)}
.main-nav a.active{color:var(--gold);background:rgba(240,180,41,.1)}
.feed-pill{
  display:inline-flex;align-items:center;gap:7px;font-size:.72rem;font-weight:700;letter-spacing:.08em;
  padding:6px 12px;border-radius:999px;border:1px solid var(--line);color:var(--muted);margin-left:8px;white-space:nowrap;
}
.feed-dot{width:8px;height:8px;border-radius:50%;background:var(--faint)}
.feed-pill.ok .feed-dot{background:var(--green);box-shadow:0 0 10px var(--green-glow);animation:pulse 2s infinite}
.feed-pill.ok{color:var(--green);border-color:rgba(23,201,100,.35)}
.feed-pill.warn .feed-dot{background:var(--gold)}
.feed-pill.warn{color:var(--gold-soft);border-color:rgba(240,180,41,.35)}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.45}}
.nav-toggle{display:none;margin-left:auto;background:none;border:1px solid var(--line);color:var(--text);border-radius:9px;padding:8px 11px;font-size:1.05rem;cursor:pointer}
/* smooth-collapsing sticky header: the ticker + headlines strips shrink instead of
   snapping, so crossing the compact threshold never lurches the page (no layout-shift jank) */
.site-header .ticker,
.site-header .headlines{
  max-height:64px;overflow:hidden;
  transition:max-height .28s ease,opacity .22s ease,border-bottom-width .28s ease,padding-top .28s ease,padding-bottom .28s ease;
}
.site-header.compact .ticker,
.site-header.compact .headlines{max-height:0;opacity:0;border-bottom-width:0}
.site-header.compact .headlines{padding-top:0;padding-bottom:0}
@media (prefers-reduced-motion:reduce){
  .site-header .ticker,.site-header .headlines{transition:none}
}

/* ---------- ticker tape ---------- */
.ticker{
  border-bottom:1px solid var(--line-soft);background:rgba(0,0,0,.35);
  overflow:hidden;white-space:nowrap;position:relative;
}
.ticker-track{display:inline-flex;gap:0;padding:9px 0;animation:tick 60s linear infinite;will-change:transform}
.ticker:hover .ticker-track{animation-play-state:paused}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tick-item{display:inline-flex;align-items:center;gap:8px;padding:0 22px;font-size:.82rem;color:var(--muted);border-right:1px solid var(--line-soft)}
.tick-item b{color:var(--text);font-weight:700}
.tick-item .live-dot{width:7px;height:7px;border-radius:50%;background:var(--red);animation:pulse 1.4s infinite}
.tick-item .t-score{color:var(--gold-soft);font-weight:700;font-variant-numeric:tabular-nums}

/* ---------- headline strip ---------- */
.headlines{
  display:flex;align-items:center;gap:14px;padding:9px 18px;
  background:linear-gradient(90deg,rgba(212,164,55,.10),rgba(0,0,0,0) 60%);
  border-bottom:1px solid var(--line-soft);overflow:hidden;white-space:nowrap;
}
.hl-label{
  flex:none;font-size:.72rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold-soft);border:1px solid var(--gold);border-radius:999px;padding:4px 12px;
}
.hl-text{
  font-size:.86rem;color:var(--muted);text-decoration:none;overflow:hidden;text-overflow:ellipsis;
  transition:opacity .22s ease;
}
.hl-text:hover{color:var(--text)}
.hl-fade{opacity:0}

/* ---------- hero ---------- */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-soft)}
.hero-pulse{position:absolute;inset:0;width:100%;height:100%;opacity:.85;pointer-events:none}
.hero{
  background:
    radial-gradient(1100px 520px at 82% -8%, rgba(240,180,41,.12), transparent 60%),
    radial-gradient(900px 480px at 6% 4%, rgba(23,201,100,.10), transparent 60%),
    linear-gradient(180deg,#0b0f16 0%,#0a0d13 70%,var(--bg) 100%);
}
.hero::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:110px;pointer-events:none;
  background:linear-gradient(180deg,transparent,var(--bg));
}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;transform:scale(1.02)}
.hero-bg::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(10,13,19,.55) 0%,rgba(10,13,19,.82) 62%,var(--bg) 100%),
             linear-gradient(100deg,rgba(10,13,19,.75),transparent 65%);
}
.hero-inner{position:relative;z-index:2;padding:88px 0 64px}
.hero h1{max-width:16ch}
.hero h1 .accent{color:var(--gold)}
.hero-cta{display:flex;gap:12px;flex-wrap:wrap;margin-top:26px}
.btn{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--font-display);font-weight:700;font-size:.95rem;
  padding:13px 24px;border-radius:12px;border:1px solid transparent;cursor:pointer;transition:transform .15s ease,box-shadow .15s ease,background .15s;
}
.btn:active{transform:translateY(1px)}
.btn-gold{background:linear-gradient(135deg,#ffd970,var(--gold) 60%,#d99a12);color:#1a1206;box-shadow:0 10px 30px -10px var(--gold-glow)}
.btn-gold:hover{transform:translateY(-2px);box-shadow:0 16px 36px -10px var(--gold-glow);color:#1a1206}
.btn-ghost{background:rgba(255,255,255,.06);border-color:var(--line);color:var(--text)}
.btn-ghost:hover{background:rgba(255,255,255,.11);transform:translateY(-2px);color:var(--text)}
.btn-green{background:linear-gradient(135deg,#2bd97c,var(--green-dim));color:#04120a;box-shadow:0 10px 30px -10px var(--green-glow)}
.btn-green:hover{transform:translateY(-2px);color:#04120a}
.btn-sm{padding:9px 16px;font-size:.85rem;border-radius:10px}
.hero-stats{display:flex;gap:34px;margin-top:38px;flex-wrap:wrap}
.hstat b{display:block;font-family:var(--font-display);font-size:1.7rem;font-weight:800;color:var(--gold);font-variant-numeric:tabular-nums}
.hstat span{font-size:.8rem;color:var(--muted);letter-spacing:.06em;text-transform:uppercase}

/* page hero (interior) */
.page-hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line-soft)}
.page-hero .hero-inner{padding:64px 0 46px}

/* ---------- cards / grids ---------- */
.grid{display:grid;gap:18px}
.grid-2{grid-template-columns:repeat(2,1fr)}
.grid-3{grid-template-columns:repeat(3,1fr)}
.grid-4{grid-template-columns:repeat(4,1fr)}
.card{
  background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);
  padding:24px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  transition:transform .18s ease,border-color .18s,box-shadow .18s;
}
a.card{color:var(--text);display:block}
a.card:hover{transform:translateY(-4px);border-color:rgba(240,180,41,.4);box-shadow:var(--shadow);color:var(--text)}
.card h3{margin-top:0}
.card p{color:var(--muted);font-size:.94rem;margin-bottom:.6em}
.card .card-img{border-radius:10px;margin:-24px -24px 18px;height:150px;object-fit:cover;width:calc(100% + 48px)}
.card-icon{font-size:1.7rem;margin-bottom:10px}
.tag{
  display:inline-block;font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  padding:4px 10px;border-radius:999px;background:rgba(240,180,41,.12);color:var(--gold-soft);border:1px solid rgba(240,180,41,.3);
}
.tag.green{background:rgba(23,201,100,.12);color:#7dedaa;border-color:rgba(23,201,100,.3)}
.tag.red{background:rgba(240,68,82,.12);color:#ff9aa3;border-color:rgba(240,68,82,.3)}
.tag.blue{background:rgba(74,168,255,.12);color:#a8d4ff;border-color:rgba(74,168,255,.3)}

/* ---------- tables (odds board etc.) ---------- */
.table-scroll{overflow-x:auto;border:1px solid var(--line-soft);border-radius:var(--radius);background:rgba(0,0,0,.25)}
table.data{width:100%;border-collapse:collapse;font-size:.9rem;min-width:640px}
table.data th{
  text-align:left;font-family:var(--font-display);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--faint);padding:13px 14px;border-bottom:1px solid var(--line);background:rgba(255,255,255,.02);white-space:nowrap;
}
table.data td{padding:12px 14px;border-bottom:1px solid var(--line-soft);vertical-align:middle}
table.data tr:last-child td{border-bottom:none}
table.data tbody tr{transition:background .15s}
table.data tbody tr:hover{background:rgba(255,255,255,.03)}
td.best,span.best{
  background:rgba(23,201,100,.14)!important;color:#7dedaa;font-weight:800;
  box-shadow:inset 0 0 0 1px rgba(23,201,100,.55);border-radius:8px;
}
@keyframes flash{0%{background:rgba(240,180,41,.4)}100%{background:transparent}}
td.flash{animation:flash 1.2s ease-out}
.mv-up{color:var(--green);font-weight:700}
.mv-dn{color:var(--red);font-weight:700}
/* market consensus line + off-market flag on the odds board */
.cons-line{margin:-8px 0 14px;font-size:.84rem}
.cons-line span{color:var(--gold-soft)}
.open-line{color:var(--faint)!important;font-size:.8rem}
.offmkt{color:var(--gold);font-weight:700;cursor:help}

/* steam watch: biggest line movers strip on the odds board */
.movers-card{margin-bottom:20px;border-color:rgba(240,180,41,.35)}
.movers{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px}
.mover{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid rgba(255,255,255,.09);
  border-radius:10px;background:rgba(255,255,255,.02);color:inherit;text-decoration:none;
  transition:border-color .18s,background .18s,transform .18s}
.mover:hover{border-color:rgba(240,180,41,.6);background:rgba(240,180,41,.06)}
.mover:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.mover-title{font-weight:700;font-size:.92rem}
.mover-d{font-size:.84rem;color:var(--gold-soft)}
@media(prefers-reduced-motion:reduce){.mover{transition:none}}
/* sure bets: cross-book arbitrage strip on the odds board */
.arb-card{margin-bottom:20px;border-color:rgba(46,204,113,.4)}
.arb{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid rgba(255,255,255,.09);
 border-radius:10px;color:inherit;text-decoration:none;transition:border-color .18s,background .18s}
.arb:hover{border-color:rgba(46,204,113,.65);background:rgba(46,204,113,.06)}
.arb:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.arb-mkt{font-size:.76rem;font-weight:600;color:var(--faint);border:1px solid rgba(255,255,255,.14);
 border-radius:99px;padding:1px 8px;margin-left:6px;vertical-align:2px;white-space:nowrap}
.arb-legs{font-size:.84rem;color:var(--muted)}
.arb-profit{font-size:.92rem;font-weight:700;color:var(--green)}
.arb-sub{font-weight:400;color:var(--faint);font-size:.8rem}
.arb-flag{margin:0 0 10px;display:flex;gap:8px;flex-wrap:wrap}
.arb-chip{display:inline-block;font-size:.8rem;font-weight:700;color:var(--green);
 border:1px solid rgba(46,204,113,.5);border-radius:99px;padding:3px 10px;
 background:rgba(46,204,113,.08)}
@media(prefers-reduced-motion:reduce){.arb{transition:none}}

/* v1.38.0 — market check: Polymarket's live moneyline vs what the best book
   prices imply, on NFL odds-board game cards. A quiet one-liner next to the
   consensus line; the gap chip only appears when the market and the books
   disagree by 5+ points — that's where edge lives. */
.pm-check{margin:-8px 0 14px;font-size:.84rem}
.pm-gap{display:inline-block;margin-left:8px;padding:2px 9px;border-radius:999px;
 font-size:.72rem;font-weight:700;letter-spacing:.02em;white-space:nowrap;
 color:var(--gold);border:1px solid rgba(240,180,41,.5);background:rgba(240,180,41,.12)}

/* line-movement sparklines on odds game cards: the consensus path since this
   browser first tracked the game. Static SVG (no motion to reduce). */
.spark-row{display:flex;gap:16px 22px;flex-wrap:wrap;align-items:flex-end;margin:10px 0 2px}
.spark-cell{display:flex;flex-direction:column;gap:3px}
.spark-lab{font-size:.74rem;color:var(--muted);font-weight:600;letter-spacing:.03em;text-transform:uppercase}
.spark-vals{display:flex;justify-content:space-between;width:132px;font-size:.72rem;color:var(--faint)}
.spark-line{fill:none;stroke:var(--gold);stroke-width:1.8;stroke-linejoin:round;stroke-linecap:round}
.spark-area{fill:rgba(240,180,41,.13);stroke:none}
.spark-dot{fill:var(--gold)}
.spark-cap{flex-basis:100%;font-size:.74rem;color:var(--faint)}

/* game-day weather badge (odds board, NFL tab) — wind moves totals */
.wx-badge{margin:2px 0 12px;padding:10px 14px;border:1px solid var(--line-soft);
  border-left:3px solid var(--gold);border-radius:var(--radius);
  background:rgba(212,175,55,.06);font-size:.86rem;line-height:1.7}
.wx-badge .wx-venue{font-weight:700;color:var(--text)}
.wx-badge .tag{margin:0 2px}
.wx-badge a{margin-left:8px;font-size:.82rem;white-space:nowrap}

/* cross-book edge: where Polymarket and Kalshi disagree (markets page, NFL tab) */
.disagree-card{margin-bottom:20px;border-color:rgba(23,201,100,.35)}
.disagree-note{font-size:.82rem;color:var(--faint);margin:2px 0 14px;max-width:70ch}
.disagree-rows{display:flex;flex-direction:column;gap:8px}
.disagree-row{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;
  border:1px solid rgba(255,255,255,.09);border-radius:10px;background:rgba(255,255,255,.02);
  transition:border-color .18s,background .18s}
.disagree-row:hover{border-color:rgba(23,201,100,.55);background:rgba(23,201,100,.05)}
.disagree-row:focus-visible{outline:2px solid var(--green);outline-offset:2px}
.disagree-teams{display:flex;align-items:center;gap:8px;min-width:170px}
.disagree-nums{display:flex;align-items:baseline;gap:6px;font-size:.9rem}
.disagree-src{font-size:.68rem;color:var(--faint);text-transform:uppercase;letter-spacing:.08em;margin-right:6px}
.disagree-agree{color:var(--faint);font-size:.88rem}
@media(prefers-reduced-motion:reduce){.disagree-row{transition:none}}

/* ---------- reveal on scroll ---------- */
.rv{opacity:0;transform:translateY(14px);transition:opacity .55s ease,transform .55s cubic-bezier(.22,.8,.3,1)}
.rv.in{opacity:1;transform:none}

/* ---------- forms ---------- */
.field{margin-bottom:16px}
label{display:block;font-size:.82rem;font-weight:600;color:var(--muted);margin-bottom:7px;letter-spacing:.03em}
input[type=text],input[type=number],input[type=email],select,textarea{
  width:100%;background:rgba(0,0,0,.35);border:1px solid var(--line);color:var(--text);
  border-radius:10px;padding:11px 13px;font-size:.95rem;font-family:var(--font-body);
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(240,180,41,.18)}
/* visible keyboard focus for links, buttons and cards (keyboard/screen-reader users) */
:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:6px}
/* placeholders are examples only — keep them visibly "ghost" so they never read as real values */
::placeholder{color:#5b657d;font-style:italic;opacity:1}
:-ms-input-placeholder{color:#5b657d;font-style:italic}
::-ms-input-placeholder{color:#5b657d;font-style:italic}
select option{background:#141a26}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.result-box{
  background:rgba(23,201,100,.07);border:1px solid rgba(23,201,100,.3);border-radius:var(--radius-sm);
  padding:18px;margin-top:16px;
}
.result-box .big{font-family:var(--font-display);font-size:1.9rem;font-weight:800;color:var(--green)}
.result-box .big.gold{color:var(--gold)}
.calc{margin-bottom:22px}
.calc h3{margin-bottom:4px}
.calc .hint{font-size:.85rem;color:var(--faint);margin-bottom:14px}

/* ---------- skeleton / loading ---------- */
.skel{position:relative;overflow:hidden;background:rgba(255,255,255,.05);border-radius:8px;min-height:20px}
.skel::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(100deg,transparent 20%,rgba(255,255,255,.09) 50%,transparent 80%);
  animation:shimmer 1.4s infinite;
}
@keyframes shimmer{from{transform:translateX(-100%)}to{transform:translateX(100%)}}
.spinner{
  width:38px;height:38px;border-radius:50%;margin:26px auto;
  border:3px solid var(--line);border-top-color:var(--gold);animation:spin 0.9s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}
.notice{
  border:1px solid var(--line);border-left:4px solid var(--gold);background:rgba(240,180,41,.06);
  border-radius:10px;padding:15px 18px;margin:18px 0;font-size:.93rem;color:var(--muted);
}
.notice.green{border-left-color:var(--green);background:rgba(23,201,100,.06)}
.notice.red{border-left-color:var(--red);background:rgba(240,68,82,.06)}
.notice strong{color:var(--text)}
.empty{padding:44px 20px;text-align:center;color:var(--faint)}

/* ---------- article / guide typography ---------- */
.article{max-width:760px}
.article h2{margin-top:2.2em;padding-top:.4em;border-top:1px solid var(--line-soft)}
.article h2:first-of-type{margin-top:1.4em}
.article ul,.article ol{color:#cdd6e4;padding-left:1.3em}
.article li{margin-bottom:.55em}
.example{
  background:rgba(74,168,255,.06);border:1px solid rgba(74,168,255,.25);border-radius:10px;
  padding:16px 18px;margin:16px 0;font-size:.94rem;
}
.example b{color:#a8d4ff}
.formula{
  font-family:var(--font-display);background:rgba(0,0,0,.4);border:1px solid var(--line);
  border-radius:10px;padding:14px 18px;margin:14px 0;color:var(--gold-soft);font-size:1.02rem;
}
.toc{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);padding:20px 24px;margin:24px 0}
.toc b{font-family:var(--font-display);font-size:.8rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold)}
.toc ol{margin:.7em 0 0;padding-left:1.2em;color:var(--muted)}
.toc a{color:var(--muted)}
.toc a:hover{color:var(--gold-soft)}
.gloss-term{border-bottom:1px solid var(--line-soft);padding:16px 0}
.gloss-term h3{margin:0 0 4px;color:var(--gold-soft)}
.gloss-term p{margin:0;color:var(--muted);font-size:.95rem}
.alpha-nav{display:flex;flex-wrap:wrap;gap:8px;margin:22px 0}
.alpha-nav a{padding:6px 12px;border:1px solid var(--line);border-radius:8px;font-weight:700;font-size:.85rem;color:var(--muted)}
.alpha-nav a:hover{color:var(--gold);border-color:var(--gold)}

/* ---------- live badges / game cards ---------- */
.live-badge{
  display:inline-flex;align-items:center;gap:6px;font-size:.7rem;font-weight:800;letter-spacing:.12em;
  color:#ff8f98;background:rgba(240,68,82,.14);border:1px solid rgba(240,68,82,.4);
  padding:4px 10px;border-radius:999px;text-transform:uppercase;
}
.live-badge i{width:7px;height:7px;border-radius:50%;background:var(--red);animation:pulse 1.4s infinite}
/* scores page auto-refresh status */
.live-status{display:inline-flex;align-items:center;gap:7px;font-size:.8rem;font-weight:600;color:var(--green);min-height:22px}
.live-status.paused{color:var(--muted)}
.live-dot{width:8px;height:8px;border-radius:50%;background:var(--green);animation:pulse 1.4s infinite}
.game-card{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);padding:18px}
.game-card .teams{display:flex;justify-content:space-between;align-items:center;gap:10px;margin:8px 0}
.team{display:flex;align-items:center;gap:10px}
.team .abbr{
  width:44px;height:44px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:rgba(255,255,255,.07);font-family:var(--font-display);font-weight:800;font-size:.85rem;
}
.team .nm{font-weight:700;font-size:.95rem}
.team .sc{font-family:var(--font-display);font-weight:800;font-size:1.3rem;margin-left:auto}
.team-logo{width:40px;height:40px;object-fit:contain;flex:none;filter:drop-shadow(0 2px 5px rgba(0,0,0,.45))}
@media(max-width:640px){.team-logo{width:34px;height:34px}}
/* Weather page matchup header — two GameDay team identities with an "at" between */
.wx-matchup{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:10px 0 4px}
.wx-matchup .nm{font-size:1.02rem;max-width:230px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.wx-matchup .at{color:var(--faint);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em}
@media(max-width:640px){.wx-matchup .nm{max-width:148px;font-size:.95rem}}
/* GameDay versus header: logo + team-color chip + short name on both sides.
   Used on markets (Polymarket + Kalshi), predictions and injuries cards. */
.vs-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.vs-side{display:inline-flex;align-items:center;gap:8px;min-width:0}
.vs-side .team-logo{width:30px;height:30px}
.vs-side .nm{font-size:1.02rem;font-weight:600;max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vs-x{color:var(--faint);font-size:.75rem;font-weight:800;text-transform:uppercase;letter-spacing:.14em}
@media(max-width:640px){.vs-side .nm{max-width:140px;font-size:.95rem}}
.game-meta{font-size:.78rem;color:var(--faint);display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.leaders{margin-top:12px;padding-top:10px;border-top:1px solid var(--line-soft);display:flex;gap:8px 16px;flex-wrap:wrap;font-size:.8rem;color:var(--muted)}
.leaders b{color:var(--gold-soft);font-weight:700;margin-right:4px;text-transform:uppercase;font-size:.68rem;letter-spacing:.07em}

/* ---------- RG banner ---------- */
.rg-banner{
  background:linear-gradient(120deg,rgba(23,201,100,.14),rgba(23,201,100,.04));
  border:1px solid rgba(23,201,100,.35);border-radius:var(--radius);padding:26px;
  display:flex;gap:18px;align-items:center;flex-wrap:wrap;
}
.rg-banner .rg-num{font-family:var(--font-display);font-weight:800;font-size:1.5rem;color:var(--green)}
.rg-banner p{margin:0;color:var(--muted);font-size:.92rem;flex:1;min-width:220px}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--line);margin-top:70px;background:#080b10}
.footer-compliance{
  border-bottom:1px solid var(--line-soft);padding:26px 0;text-align:center;
}
.footer-compliance .age{
  display:inline-grid;place-items:center;width:52px;height:52px;border-radius:50%;
  border:2px solid var(--red);color:#ff8f98;font-family:var(--font-display);font-weight:800;margin-bottom:10px;
}
.footer-compliance p{max-width:70ch;margin:8px auto;color:var(--muted);font-size:.86rem}
.footer-compliance .helpline{font-family:var(--font-display);font-weight:800;color:var(--text);font-size:1.05rem}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:30px;padding:44px 0}
.footer-grid h4{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);margin-bottom:14px}
.footer-grid ul{list-style:none;margin:0;padding:0}
.footer-grid li{margin-bottom:9px}
.footer-grid a{color:var(--muted);font-size:.9rem}
.footer-grid a:hover{color:var(--gold-soft)}
.donate-box{background:rgba(240,180,41,.06);border:1px solid rgba(240,180,41,.25);border-radius:12px;padding:16px;font-size:.8rem;color:var(--muted)}
.donate-box code{display:block;word-break:break-all;color:var(--gold-soft);font-size:.72rem;margin:8px 0;background:rgba(0,0,0,.4);padding:8px;border-radius:8px}
.footer-bottom{border-top:1px solid var(--line-soft);padding:20px 0;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;color:var(--faint);font-size:.8rem}
.copy-btn{background:rgba(255,255,255,.07);border:1px solid var(--line);color:var(--text);border-radius:8px;padding:6px 12px;font-size:.75rem;cursor:pointer;font-weight:600}
.copy-btn:hover{border-color:var(--gold);color:var(--gold)}

/* DFS lock / exclude pool controls */
.mini-btn{background:rgba(255,255,255,.05);border:1px solid var(--line);border-radius:8px;padding:6px 9px;font-size:.85rem;cursor:pointer;line-height:1;filter:grayscale(1);opacity:.55;transition:filter .15s,opacity .15s,border-color .15s,box-shadow .15s}
.mini-btn:hover{border-color:var(--gold);opacity:1}
.mini-btn.on{filter:none;opacity:1;border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset,0 0 10px rgba(230,168,76,.25)}
tr.row-locked td{background:rgba(230,168,76,.07)}
tr.row-locked td:first-child{box-shadow:inset 3px 0 0 var(--gold)}
tr.row-banned td{opacity:.42}
tr.row-banned td:nth-child(2){text-decoration:line-through}

/* ---------- misc ---------- */
.divider{height:1px;background:var(--line-soft);margin:34px 0;border:none}
.tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.tab{background:rgba(255,255,255,.05);border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:9px 18px;font-size:.86rem;font-weight:600;cursor:pointer;font-family:var(--font-body)}
.tab:hover{color:var(--text)}
.tab.active{background:rgba(240,180,41,.14);border-color:rgba(240,180,41,.5);color:var(--gold-soft)}
.video-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.video-card{background:var(--card);border:1px solid var(--line-soft);border-radius:var(--radius);overflow:hidden}
.video-card .v-head{padding:16px 18px 6px}
.video-card h3{margin:0 0 2px;font-size:1rem}
.video-card .v-sub{font-size:.8rem;color:var(--faint);margin-bottom:8px}
.video-card iframe{width:100%;aspect-ratio:16/9;border:0;display:block;background:#000}
.embed-note{padding:10px 18px 20px;color:var(--muted);font-size:.9rem}
.embed-note p{margin:0 0 12px}
.embed-note strong{color:var(--text)}
.prose-links{font-size:.9rem;color:var(--muted)}
.back-link{display:inline-flex;align-items:center;gap:6px;font-size:.86rem;color:var(--muted);margin-bottom:18px}
.back-link:hover{color:var(--gold)}
details.faq{border:1px solid var(--line-soft);border-radius:10px;padding:14px 18px;margin-bottom:10px;background:var(--card)}
details.faq summary{cursor:pointer;font-weight:700;font-family:var(--font-display)}
details.faq p{margin:.7em 0 0;color:var(--muted);font-size:.93rem}

/* ---------- bet slip ---------- */
[hidden]{display:none!important}
.pick-btn{
  background:none;border:0;color:inherit;font:inherit;cursor:pointer;
  padding:5px 8px;border-radius:7px;width:100%;text-align:left;
  transition:background .15s,box-shadow .15s;
}
.pick-btn:hover{background:rgba(240,180,41,.14)}
.pick-btn.picked{background:rgba(240,180,41,.16);box-shadow:inset 0 0 0 2px var(--gold)}
td.best .pick-btn.picked{box-shadow:inset 0 0 0 2px var(--gold)}
.slip-toggle{
  position:fixed;right:18px;bottom:18px;z-index:80;
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--font-display);font-weight:800;font-size:.92rem;
  padding:13px 20px;border-radius:999px;border:1px solid rgba(240,180,41,.5);
  background:linear-gradient(135deg,#ffd970,var(--gold) 60%,#d99a12);color:#1a1206;
  box-shadow:0 12px 34px -8px var(--gold-glow);cursor:pointer;
}
.slip-toggle:hover{transform:translateY(-2px)}
.slip-toggle #slipCount{
  min-width:24px;height:24px;border-radius:999px;display:grid;place-items:center;
  background:#1a1206;color:var(--gold-soft);font-size:.8rem;padding:0 6px;
}
.slip{
  position:fixed;right:18px;bottom:78px;z-index:80;
  width:min(370px,calc(100vw - 36px));max-height:min(62vh,540px);overflow-y:auto;
  background:#10151f;border:1px solid var(--line);border-radius:16px;
  box-shadow:var(--shadow);padding:18px;
}
.slip-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}
.slip-head b{font-family:var(--font-display);font-size:1.05rem}
.slip-leg{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:11px 0;border-bottom:1px solid var(--line-soft)}
.slip-leg b{font-size:.92rem}
.slip-sub{font-size:.76rem;color:var(--faint);margin-top:2px}
.slip-x{background:none;border:0;color:var(--muted);font-size:1rem;cursor:pointer;padding:4px 6px;border-radius:6px;line-height:1}
.slip-x:hover{color:var(--red)}
/* GameDay identity on slip legs: real ESPN logo + team-color chip */
.slip-id{display:inline-flex;align-items:center;gap:5px;margin-right:3px;vertical-align:middle}
.slip-id .team-logo{width:22px;height:22px}
.slip-id .abbr{font-size:.68rem;font-weight:800;letter-spacing:.05em;padding:3px 7px;border-radius:7px}
.slip-totals{background:rgba(23,201,100,.07);border:1px solid rgba(23,201,100,.3);border-radius:10px;padding:12px 14px;margin-top:10px}
.slip-totals>div{display:flex;justify-content:space-between;align-items:baseline;padding:3px 0;font-size:.9rem}
.slip-totals span{color:var(--muted)}
.slip-totals b{font-family:var(--font-display)}
.slip-note{font-size:.76rem;color:var(--faint);margin:12px 0 0;line-height:1.5}
/* v1.31.0 — same-game correlation warning on the slip (static note, no motion) */
.slip-warn{background:rgba(240,180,41,.08);border:1px solid rgba(240,180,41,.45);border-radius:10px;padding:10px 12px;margin:12px 0;font-size:.82rem;color:var(--muted);line-height:1.5}
.slip-warn b{color:var(--gold-soft)}
/* v1.39.0 — shared-slip banner (static note, no motion) */
.slip-shared{background:rgba(240,180,41,.08);border:1px solid rgba(240,180,41,.45);border-radius:10px;padding:10px 12px;margin:0 0 12px;font-size:.82rem;color:var(--muted);line-height:1.5}
.slip-shared b{color:var(--gold-soft)}
.slip-shared-bad{background:rgba(255,92,92,.08);border-color:rgba(255,92,92,.45)}
/* v1.40.0 — line-move alert toasts (empty container takes no space) */
.alert-toasts{display:flex;flex-direction:column;gap:8px;margin:0}
.alert-toasts:empty{display:none}
.alert-toast{display:flex;gap:10px;align-items:center;background:rgba(240,180,41,.08);border:1px solid rgba(240,180,41,.45);border-left:3px solid var(--gold);border-radius:10px;padding:9px 12px;font-size:.86rem;color:var(--text);line-height:1.45;animation:alertIn .22s ease-out}
.alert-toast b{color:var(--gold-soft)}
.alert-toast a{font-weight:600}
.alert-toast .mv-up{color:var(--green)}
.alert-toast .mv-dn{color:var(--red)}
.alert-x{margin-left:auto;background:none;border:1px solid transparent;border-radius:6px;color:var(--faint);font-size:1.05rem;line-height:1;padding:2px 8px;cursor:pointer;flex:none}
.alert-x:hover,.alert-x:focus-visible{color:var(--text);border-color:var(--gold-glow);outline:none}
@keyframes alertIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.alert-toast{animation:none}}

/* ---------- responsive ---------- */
@media(max-width:1020px){
  .grid-4{grid-template-columns:repeat(2,1fr)}
  .grid-3{grid-template-columns:repeat(2,1fr)}
  .video-grid{grid-template-columns:1fr}
  .footer-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:860px){
  .main-nav{
    display:none;position:absolute;top:66px;left:0;right:0;flex-direction:column;align-items:stretch;
    background:#0c1017;border-bottom:1px solid var(--line);padding:10px 16px 16px;gap:2px;
  }
  .main-nav.open{display:flex}
  .main-nav a{padding:11px 10px;font-size:.95rem}
  .nav-toggle{display:block}
  .feed-pill{margin-left:0}
  .header-inner{gap:10px}
}
@media(max-width:640px){
  .grid-2,.grid-3,.grid-4{grid-template-columns:1fr}
  .form-row{grid-template-columns:1fr}
  .hero-inner{padding:64px 0 48px}
  section.block{padding:40px 0}
  .footer-grid{grid-template-columns:1fr}
  .ticker-track{animation-duration:40s}
  .slip{left:12px;right:12px;bottom:76px;width:auto}
  .slip-toggle{right:12px;bottom:12px}
}

/* ---------- reduced motion ---------- */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;animation-iteration-count:1!important;transition-duration:.001s!important}
  html{scroll-behavior:auto}
  .ticker-track{animation:none;flex-wrap:nowrap}
}

/* coach build version stamp — small, muted, quotable in bug reports */
.coach-ver{font-size:.72rem;opacity:.55;letter-spacing:.04em;white-space:nowrap}

/* ---- scores game detail (v1.28.0) ---- */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.gd-toggle{display:inline-flex;align-items:center;gap:7px;margin-top:12px;background:none;border:1px solid var(--line-soft);color:var(--text);border-radius:999px;padding:7px 15px;font:600 .8rem Inter,sans-serif;cursor:pointer}
.gd-toggle:hover{border-color:var(--gold);color:var(--gold)}
.gd-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.gd-toggle .gd-chev{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);transition:transform .18s ease}
.gd-toggle[aria-expanded="true"] .gd-chev{transform:rotate(-135deg) translateY(1px)}
.gd-detail{margin-top:12px;border-top:1px solid var(--line-soft);padding-top:12px}
.gd-detail[hidden]{display:none}
.gd-ptable{width:100%;border-collapse:collapse;font-size:.82rem;margin-bottom:6px}
.gd-ptable th,.gd-ptable td{padding:5px 7px;text-align:center;border-bottom:1px solid var(--line-soft)}
.gd-ptable thead th:first-child,.gd-ptable tbody th{text-align:left;color:var(--muted);font-weight:600}
.gd-ph{margin:10px 0 2px;font:700 .78rem Archivo,sans-serif;color:var(--gold);letter-spacing:.06em}
.gd-play{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px dashed var(--line-soft);font-size:.83rem}
.gd-play:last-child{border-bottom:none}
.gd-clock{color:var(--muted);min-width:52px;flex:none;font-variant-numeric:tabular-nums}
.gd-text{flex:1;min-width:0}
.gd-score{margin-left:auto;flex:none;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums;font-size:.78rem}
.gd-stats{width:100%;border-collapse:collapse;font-size:.84rem;margin:12px 0 4px}
.gd-stats th{font:700 .8rem Archivo,sans-serif;padding:6px 8px;text-align:center;border-bottom:1px solid var(--line-soft)}
.gd-stats th:first-child{text-align:left}
.gd-stats td{padding:6px 8px;border-bottom:1px solid var(--line-soft);text-align:center;font-variant-numeric:tabular-nums}
.gd-stats td:first-child{text-align:left;color:var(--muted)}
.gd-src{font-size:.74rem;color:var(--muted);margin-top:10px}
@media (prefers-reduced-motion:reduce){
  .gd-toggle .gd-chev{transition:none}
}

/* ============================================================
   v1.29.0 — display-ad slots (AdSense-ready) + referral cards.
   .ad-slot marks a placement; it stays an empty div until AdSense
   goes live (initAds in js/site.js removes unfilled slots entirely,
   so the page is clean while ad-unit IDs are still pending).
   .ref-row/.ref-card are the Polymarket/Kalshi partner CTAs — they
   render only when referral links are configured. Gold leading edge
   ignites on hover/focus, visible focus ring, reduced-motion snaps.
   ============================================================ */
.ad-slot{margin:26px auto;max-width:970px;padding:0 12px}
.ad-slot.is-live::before{content:"Advertisement";display:block;text-align:center;font-size:10px;letter-spacing:2px;text-transform:uppercase;color:rgba(154,166,187,.5);margin-bottom:6px}
.ad-slot.is-live{border-top:1px solid rgba(255,255,255,.06);border-bottom:1px solid rgba(255,255,255,.06);padding-top:10px;padding-bottom:12px;min-height:90px}
.ad-slot .adsbygoogle{background:rgba(255,255,255,.015)}

.ref-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin:18px auto 6px;max-width:970px;padding:0 12px}
.ref-card{position:relative;border-radius:12px;background:linear-gradient(180deg,rgba(19,25,38,.9),rgba(14,18,25,.9));border:1px solid rgba(154,166,187,.16);overflow:hidden;transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}
.ref-card::before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:linear-gradient(180deg,rgba(240,180,41,.28),rgba(240,180,41,.06));transition:background .22s ease,box-shadow .22s ease}
.ref-card:hover,.ref-card:focus-within{transform:translateY(-2px);border-color:rgba(240,180,41,.4);box-shadow:0 10px 24px rgba(0,0,0,.35)}
.ref-card:hover::before,.ref-card:focus-within::before{background:linear-gradient(180deg,var(--gold-soft),var(--gold));box-shadow:0 0 12px var(--gold-glow)}
.ref-link{display:flex;align-items:center;gap:12px;padding:14px 16px;color:inherit;text-decoration:none}
.ref-link:focus-visible{outline:2px solid var(--gold);outline-offset:2px;border-radius:12px}
.ref-badge{flex:none;font-size:10px;letter-spacing:1.5px;text-transform:uppercase;color:rgba(154,166,187,.65);border:1px solid rgba(154,166,187,.28);border-radius:999px;padding:3px 8px}
.ref-text{display:flex;flex-direction:column;gap:2px}
.ref-text strong{font-size:15px;color:#fff}
.ref-text small{font-size:12px;color:rgba(154,166,187,.8)}
@media (prefers-reduced-motion:reduce){
  .ref-card,.ref-card::before{transition:none}
  .ref-card:hover,.ref-card:focus-within{transform:none}
}

/* ============================================================
   v1.30.0 — sports imagery backgrounds.
   Tasteful, atmospheric depth for the dark-sportsbook identity:
   - homepage hero: floodlight glows + drifting crowd bokeh (static
     under prefers-reduced-motion; canvas stays the star)
   - interior page heroes: ultra-subtle hand-authored SVG line art
     per sport (yard lines / court / diamond / rink / pitch) under
     a dark readability overlay — zero extra HTTP requests
   - photo heroes now self-hosted in img/heroes/ (no hotlinking)
   - empty states: warm glow + film grain instead of flat color
   - cards: 1px gold hairline top accent
   Readability rule: if a background ever fights text, the
   background loses — every treatment sits under a dark overlay.
   ============================================================ */

/* ---------- homepage hero atmosphere ---------- */
.hero::before{
  content:"";position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    radial-gradient(360px 210px at 10% -4%, rgba(255,240,200,.13), transparent 65%),
    radial-gradient(360px 210px at 90% -4%, rgba(255,240,200,.13), transparent 65%),
    radial-gradient(120% 100% at 50% 50%, transparent 58%, rgba(3,5,9,.62) 100%);
}
.hero-bokeh{
  position:absolute;inset:-6%;z-index:1;pointer-events:none;opacity:.5;
  background-image:
    radial-gradient(2.5px 2.5px at 20px 30px, rgba(255,214,130,.55), transparent 70%),
    radial-gradient(2px 2px at 120px 90px, rgba(160,200,255,.4), transparent 70%),
    radial-gradient(3px 3px at 260px 40px, rgba(255,214,130,.4), transparent 70%),
    radial-gradient(2px 2px at 380px 120px, rgba(140,255,180,.35), transparent 70%),
    radial-gradient(2.5px 2.5px at 60px 180px, rgba(160,200,255,.35), transparent 70%),
    radial-gradient(4px 4px at 300px 200px, rgba(255,214,130,.3), transparent 70%),
    radial-gradient(3px 3px at 200px 260px, rgba(255,255,255,.3), transparent 70%),
    radial-gradient(2px 2px at 440px 60px, rgba(255,214,130,.4), transparent 70%);
  background-size:480px 300px;
}
@media (prefers-reduced-motion:no-preference){
  .hero-bokeh{animation:hero-bokeh-drift 75s ease-in-out infinite alternate}
}
@keyframes hero-bokeh-drift{
  from{transform:translate3d(-1.5%,1%,0)}
  to{transform:translate3d(1.5%,-1%,0)}
}

/* ---------- per-sport line-art page heroes ---------- */
.page-hero[class*="sport-"]{isolation:isolate}
.page-hero[class*="sport-"]::before{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background-repeat:no-repeat;background-position:center;background-size:cover;
}
.page-hero.sport-nfl::before{background-image:linear-gradient(180deg, rgba(8,11,17,.78) 0%, rgba(8,11,17,.88) 58%, var(--bg) 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='800' height='360' viewBox='0 0 800 360'%3E%3Cg stroke='%23ffffff' stroke-width='5'%3E%3Cline x1='60' y1='0' x2='60' y2='360' stroke-opacity='.45'/%3E%3Cline x1='140' y1='0' x2='140' y2='360' stroke-opacity='.45'/%3E%3Cline x1='220' y1='0' x2='220' y2='360' stroke-opacity='.45'/%3E%3Cline x1='300' y1='0' x2='300' y2='360' stroke-opacity='.45'/%3E%3Cline x1='380' y1='0' x2='380' y2='360' stroke-opacity='.45'/%3E%3Cline x1='460' y1='0' x2='460' y2='360' stroke-opacity='.45'/%3E%3Cline x1='540' y1='0' x2='540' y2='360' stroke-opacity='.45'/%3E%3Cline x1='620' y1='0' x2='620' y2='360' stroke-opacity='.45'/%3E%3Cline x1='700' y1='0' x2='700' y2='360' stroke-opacity='.45'/%3E%3C/g%3E%3Cg stroke='%23ffffff' stroke-width='3' stroke-opacity='.28'%3E%3Cline x1='40' y1='150' x2='760' y2='150' stroke-dasharray='12 16'/%3E%3Cline x1='40' y1='210' x2='760' y2='210' stroke-dasharray='12 16'/%3E%3C/g%3E%3C/svg%3E")}
.page-hero.sport-nba::before{background-image:linear-gradient(180deg, rgba(8,11,17,.78) 0%, rgba(8,11,17,.88) 58%, var(--bg) 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='600' height='500' viewBox='0 0 600 500'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='4'%3E%3Crect x='24' y='24' width='552' height='452' stroke-opacity='.45'/%3E%3Cline x1='300' y1='24' x2='300' y2='476' stroke-opacity='.45'/%3E%3Ccircle cx='300' cy='250' r='62' stroke-opacity='.45'/%3E%3Crect x='24' y='170' width='130' height='160' stroke-opacity='.4'/%3E%3Crect x='446' y='170' width='130' height='160' stroke-opacity='.4'/%3E%3Cpath d='M154 128 Q300 250 154 372' stroke-opacity='.4'/%3E%3Cpath d='M446 128 Q300 250 446 372' stroke-opacity='.4'/%3E%3Ccircle cx='154' cy='250' r='62' stroke-opacity='.35'/%3E%3Ccircle cx='446' cy='250' r='62' stroke-opacity='.35'/%3E%3C/g%3E%3C/svg%3E")}
.page-hero.sport-mlb::before{background-image:linear-gradient(180deg, rgba(8,11,17,.78) 0%, rgba(8,11,17,.88) 58%, var(--bg) 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='520' height='520' viewBox='0 0 520 520'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='4'%3E%3Cpath d='M260 430 L110 280 L260 130 L410 280 Z' stroke-opacity='.45'/%3E%3Cpath d='M52 300 A 232 232 0 0 1 468 300' stroke-opacity='.4'/%3E%3Ccircle cx='260' cy='280' r='10' stroke-opacity='.4'/%3E%3Cline x1='110' y1='280' x2='40' y2='210' stroke-opacity='.35'/%3E%3Cline x1='410' y1='280' x2='480' y2='210' stroke-opacity='.35'/%3E%3C/g%3E%3C/svg%3E")}
.page-hero.sport-nhl::before{background-image:linear-gradient(180deg, rgba(8,11,17,.78) 0%, rgba(8,11,17,.88) 58%, var(--bg) 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='700' height='400' viewBox='0 0 700 400'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='4'%3E%3Crect x='24' y='24' width='652' height='352' rx='88' stroke-opacity='.45'/%3E%3Cline x1='350' y1='24' x2='350' y2='376' stroke-opacity='.45'/%3E%3Ccircle cx='350' cy='200' r='52' stroke-opacity='.4'/%3E%3Ccircle cx='160' cy='112' r='40' stroke-opacity='.35'/%3E%3Ccircle cx='160' cy='288' r='40' stroke-opacity='.35'/%3E%3Ccircle cx='540' cy='112' r='40' stroke-opacity='.35'/%3E%3Ccircle cx='540' cy='288' r='40' stroke-opacity='.35'/%3E%3C/g%3E%3C/svg%3E")}
.page-hero.sport-soccer::before{background-image:linear-gradient(180deg, rgba(8,11,17,.78) 0%, rgba(8,11,17,.88) 58%, var(--bg) 100%), url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='700' height='460' viewBox='0 0 700 460'%3E%3Cg fill='none' stroke='%23ffffff' stroke-width='4'%3E%3Crect x='24' y='24' width='652' height='412' stroke-opacity='.45'/%3E%3Cline x1='350' y1='24' x2='350' y2='436' stroke-opacity='.45'/%3E%3Ccircle cx='350' cy='230' r='62' stroke-opacity='.4'/%3E%3Crect x='24' y='130' width='112' height='200' stroke-opacity='.4'/%3E%3Crect x='564' y='130' width='112' height='200' stroke-opacity='.4'/%3E%3Crect x='24' y='180' width='42' height='100' stroke-opacity='.35'/%3E%3Crect x='634' y='180' width='42' height='100' stroke-opacity='.35'/%3E%3C/g%3E%3C/svg%3E")}

/* ---------- empty states: glow + grain, never flat ---------- */
.empty{
  padding:44px 20px;text-align:center;color:var(--faint);
  background:
    radial-gradient(560px 170px at 50% 0%, rgba(240,180,41,.07), transparent 70%),
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");
  border:1px dashed var(--line-soft);
  border-radius:var(--radius);
}

/* ---------- cards: hairline gold top accent ---------- */
.card{position:relative}
.card::before{
  content:"";position:absolute;top:-1px;left:26px;right:26px;height:1px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(240,180,41,.38),transparent);
  border-radius:1px;
}
@media (prefers-reduced-motion:reduce){
  .hero-bokeh{animation:none}
}

/* ---------- DFS Lab: ESPN injury cross-check ---------- */
.inj-chip{display:inline-block;margin-left:8px;padding:2px 8px;border-radius:999px;
  font-size:.68rem;font-weight:700;letter-spacing:.05em;vertical-align:2px;border:1px solid;white-space:nowrap}
.inj-chip.sev3{background:rgba(240,68,82,.12);color:#ff9aa3;border-color:rgba(240,68,82,.45)}
.inj-chip.sev2{background:rgba(255,150,60,.10);color:#ffc38a;border-color:rgba(255,150,60,.40)}
.inj-chip.sev1{background:rgba(255,214,90,.10);color:#ffe08a;border-color:rgba(255,214,90,.38)}
tr.row-inj-out td:first-child{box-shadow:inset 3px 0 0 var(--red)}
.inj-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  background:rgba(240,68,82,.05);border:1px solid rgba(240,68,82,.28);border-left:4px solid var(--red);
  border-radius:10px;padding:10px 14px;margin:0 0 14px;font-size:.86rem;color:var(--muted)}
.inj-banner.ok{background:rgba(23,201,100,.05);border-color:rgba(23,201,100,.28);border-left-color:var(--green)}
.inj-banner.idle{background:rgba(255,255,255,.02);border-color:rgba(255,255,255,.10);border-left-color:var(--faint)}
.inj-banner b{color:var(--text)}
.inj-banner a{white-space:nowrap}
