/* BetEdge — NIGHTFALL (static site). Spec: betedge_cards/BRAND.md, direction B.
   The webfonts are loaded by a <link> in shell(), not by an @import here: an
   @import inside a hard-cached stylesheet costs an extra serial round trip
   before any text can paint, and the head link is preconnected. */
:root{
/* ── PALETTE ─────────────────────────────────────────────────────────────────
   Signal Surge (near-black + terminal green) is retired. These are the Nightfall
   tokens verbatim from BRAND.md; everything below them is an ALIAS.
   The old variable names are kept and re-pointed rather than renamed, because
   --green/--amber alone have ~80 call sites in this stylesheet and several
   hundred more in the per-page inline styles. Read the aliases as ROLES:
     --green = PRIMARY ACCENT   (violet)  links, buttons, focus, hover, borders
     --amber = SECONDARY ACCENT (pink)    promos, "hot" nav, attention
   Anything with a real semantic meaning uses the real token instead:
   --mint for a hit/positive delta, --red for a miss, --gold for a WIN. */
--ink:#0a0715;--ink-2:#140d24;
--violet:#7c3aed;--violet-lt:#a78bfa;--magenta:#db2777;--pink:#f472b6;
--mint:#34d399;
/* GOLD IS RESERVED FOR WINS. Not headings, not buttons, not nav, not borders.
   It appears on a settled winning result and nowhere else; that scarcity is the
   whole point, and it is what makes a win read as an event. */
--gold:#fbbf24;
--txt:#f5f3ff;--txt-dim:#a99fc9;
/* legacy aliases — same names, Nightfall values */
--bg:var(--ink);--panel:var(--ink-2);
--line:rgba(255,255,255,.10);--faint:rgba(255,255,255,.06);
--green:var(--violet-lt);--amber:var(--pink);--red:#fb7185;
--dim:var(--txt-dim);--fg:var(--txt);
/* ── SURFACE ────────────────────────────────────────────────────────────────
   Glass over gradient: depth comes from layered light, not from borders. */
--glass:rgba(255,255,255,.045);--glass-line:rgba(255,255,255,.10);--glass-r:17px;
/* The signature gradient. ONE per view — the hero word or the win number. */
--grad:linear-gradient(94deg,#a78bfa 10%,#f472b6 55%,#fbbf24 95%);
--grad-2:linear-gradient(92deg,#a78bfa,#f472b6);
/* TWO REGISTERS, WHICH IS THE WHOLE POINT OF THE SYSTEM.
   --font-display carries VOICE (headlines, prose, buttons): Inter 800, tight.
   --font-mono stays the DATA face: tables, prices, ranks, labels. It remains the
   body default so every existing table stays column-aligned; the display face is
   applied only where prose lives. */
--font-display:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;
--font-mono:'JetBrains Mono',ui-monospace,Menlo,monospace;}
*{box-sizing:border-box}
/* The field is a gradient, not a flat fill — that is what stops the page reading
   as a terminal. Fixed so it does not tile or scroll away on long pages. */
body{background:var(--ink);color:var(--fg);margin:0;min-height:100vh;
background-image:radial-gradient(1100px 600px at 12% -8%,rgba(76,29,149,.55) 0,transparent 62%),
radial-gradient(900px 520px at 92% 4%,rgba(190,24,93,.38) 0,transparent 58%);
background-repeat:no-repeat;background-attachment:fixed;
font-family:var(--font-mono);font-size:14px;line-height:1.55}
a{color:var(--green);text-decoration:none}
.dim{color:var(--dim)}
.site-head{display:flex;justify-content:space-between;align-items:baseline;
padding:20px 28px;border-bottom:1px solid var(--faint)}
/* BRAND.md: never letterspace display type. 5px of tracking on the wordmark is
   exactly the terminal-readout tic the old system was built on. */
.brand{font-size:21px;letter-spacing:-.4px;font-weight:800;color:var(--fg);
font-family:var(--font-display)}
.site-head nav{display:flex;flex-wrap:wrap;gap:6px 20px;justify-content:flex-end;
align-items:baseline;max-width:640px}
/* NAV HAD NO HIERARCHY: 11 links, identical weight, wrapping to three lines, so
   the eye had nothing to land on. Tracking comes down (2px on a wrapping nav is
   what forced the third line), the display face replaces mono, and the hot item
   keeps the only accent. Same links, a legible order. */
.site-head nav a{color:var(--dim);font-family:var(--font-display);font-size:13px;
letter-spacing:.4px;margin-left:0;white-space:nowrap;transition:color .15s ease}
.site-head nav a:hover{color:var(--green)}
.site-head nav a.nav-hot{color:var(--amber);font-weight:700;letter-spacing:.6px}
.site-head nav a.nav-hot:hover{color:var(--green)}
.hero{text-align:center;padding:64px 20px 28px}
.hero.small{padding:40px 20px 16px}
/* GLOW IS A HERO EFFECT, NOT A HEADLINE TREATMENT. The old rule bloomed EVERY
   letter of a full sentence, which BRAND.md forbids outright: one glow per
   composition, and it belongs on the hero NUMBER. No text-shadow here at all. */
.hero h1{font-family:var(--font-display);font-weight:800;
font-size:66px;letter-spacing:-2.4px;margin:0;color:var(--fg);line-height:1.03}
h2,h3,.lede,.hero p,.sec-intro{font-family:var(--font-display)}
h2{letter-spacing:-.4px;font-weight:800}
.lede,.hero p{font-size:17px;line-height:1.6}
/* THE ONE GRADIENT WORD PER VIEW. Every hero marks a single span.glow; that span
   is the only place the signature gradient appears on the page. */
.hero h1 .glow{background:var(--grad);-webkit-background-clip:text;
background-clip:text;color:transparent;text-shadow:none}
/* Data stays mono, explicitly, so the two registers never drift. */
table,.num,.mono,.dr-tier,.bt-big,.rbig,code,pre{font-family:var(--font-mono)}
.hero.small h1{font-size:44px;letter-spacing:-1.4px}
.tagline{color:var(--dim);letter-spacing:3px;font-size:13px;margin-top:10px}
.acct{margin-top:8px;font-size:13px}
.linkbtn{background:none;border:none;color:var(--green);cursor:pointer;font:inherit;padding:0;text-decoration:underline}
#auth input{display:block;width:100%;max-width:320px;margin:8px auto;padding:10px;
background:#0a0715;border:1px solid #2f2450;border-radius:4px;color:var(--fg);font:inherit;box-sizing:border-box}
.authmsg{color:var(--amber);font-size:13px;min-height:16px;margin:6px 0}
/* Fantasy showcase — shows the real rendered card art */
.fantasy{max-width:1100px;margin:36px auto;padding:26px 20px;border:1px solid var(--line);
border-radius:12px;background:linear-gradient(180deg,#17102a,#0a0715)}
.fx-head h2{font-size:20px;letter-spacing:1px;margin:0 0 4px}
.fx-head .dim{font-size:13px;max-width:640px;margin:0 0 18px}
.fx-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.fx-tile{margin:0;border:1px solid var(--line);border-radius:10px;overflow:hidden;
background:var(--bg);transition:border-color .2s,box-shadow .2s}
.fx-tile:hover{border-color:var(--green);box-shadow:0 0 20px rgba(167,139,250,.18)}
.fx-tile img{width:100%;display:block;aspect-ratio:16/9;object-fit:cover}
.fx-tile figcaption{padding:12px 14px;display:flex;flex-direction:column;gap:4px}
.fx-tile figcaption b{font-size:14px}
.fx-tile figcaption .dim{font-size:12px;line-height:1.5}
.fx-strip{display:flex;gap:12px;overflow-x:auto;padding:18px 2px 6px;scroll-snap-type:x mandatory}
.fx-card{height:150px;border-radius:8px;border:1px solid var(--line);scroll-snap-align:start;
flex:0 0 auto;transition:transform .2s}
.fx-card:hover{transform:translateY(-3px)}
.fx-cta{display:flex;gap:12px;flex-wrap:wrap;justify-content:center;margin-top:16px}
.buy.ghost{background:var(--glass);border:1px solid var(--glass-line);color:var(--fg);
box-shadow:none;backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px)}
@media(max-width:720px){.fx-grid{grid-template-columns:1fr}.fx-card{height:120px}}
.value{max-width:1040px;margin:34px auto;padding:0 20px}
.value h2{color:var(--dim);letter-spacing:2px;font-size:14px;margin-bottom:14px}
.value-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.value-card{border:1px solid #2f2450;background:#140d24;border-radius:6px;padding:18px}
.value-card p{font-size:13px;line-height:1.5;color:#cfc6ea;margin:10px 0 0}
.vc-big{font-size:44px;font-weight:800;letter-spacing:-1.6px;color:var(--violet-lt);
font-family:var(--font-display)}
.vc-label{color:var(--dim);letter-spacing:2px;font-size:12px;margin-bottom:8px}
.top3{list-style:none;padding:0;margin:0}
.top3 li{padding:5px 0;border-bottom:1px solid #1d1533;font-size:15px}
.top3 .rk{color:var(--green);font-weight:bold;margin-right:8px}
@media(max-width:720px){.value-grid{grid-template-columns:1fr}}
.record-strip{display:flex;gap:14px;justify-content:center;align-items:baseline;
flex-wrap:wrap;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
padding:14px 20px;margin:24px 0}
.record-strip .label{color:var(--dim);letter-spacing:2px;font-size:12px}
.record{font-size:26px;font-weight:bold}
/* SEMANTIC, not decorative: a graded record is a hit/miss, so it takes --mint /
   --red, never the violet accent. No bloom — glows are spent on the hero number. */
.record.green{color:var(--mint)}
.record.red{color:var(--red)}
/* ── homepage sports hub ──────────────────────────────────────────────── */
.sect-h{font-size:12px;letter-spacing:3px;color:var(--dim);text-align:center;
margin:0 0 20px}
.hero.home{position:relative;overflow:hidden;padding:0;
border-bottom:1px solid var(--faint)}
.hero-art{position:absolute;inset:0;width:100%;height:100%;z-index:0;opacity:.9}
.hero-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
object-position:center 42%;z-index:0;opacity:.62;filter:saturate(1.1) contrast(1.05)}
/* Direction-B hero field: the violet/magenta radials sit OVER the photo, so the
   backdrop is tinted into the brand instead of just being darkened by a scrim. */
.hero.home::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
background:radial-gradient(1100px 600px at 12% -8%,rgba(76,29,149,.85) 0,transparent 62%),
radial-gradient(900px 520px at 92% 8%,rgba(190,24,93,.6) 0,transparent 58%)}
.hero.home::after{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
background:linear-gradient(90deg,rgba(10,7,21,.92) 6%,rgba(10,7,21,.66) 42%,rgba(10,7,21,.2) 74%,rgba(10,7,21,.5) 100%),
linear-gradient(180deg,rgba(10,7,21,.3),rgba(10,7,21,.08) 42%,var(--ink) 100%)}
.hero-grid{position:relative;z-index:1;max-width:1100px;margin:0 auto;
padding:88px 20px 66px;display:grid;grid-template-columns:1.1fr .9fr;gap:40px;align-items:center}
.hero-copy{text-align:left}
/* Glass pill, per the direction-B mockup. */
.hero-badge{display:inline-flex;align-items:center;gap:8px;
border:1px solid rgba(167,139,250,.4);background:rgba(167,139,250,.11);
backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);
color:#c4b5fd;font-size:11px;letter-spacing:1.6px;text-transform:uppercase;
padding:7px 15px;border-radius:999px;margin-bottom:20px}
.hero-badge .dot{width:8px;height:8px;border-radius:50%;background:var(--mint)}
/* Tracking was +6px here. Display type is never letterspaced under Nightfall. */
.hero.home .hero-copy h1{font-size:60px;letter-spacing:-2.2px;text-align:left;line-height:1.02}
.hero-sub{margin:22px 0 0;max-width:520px;color:#d9d2f0;font-size:17px;line-height:1.6;
font-family:var(--font-display)}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:26px}
.hero-fine{margin-top:16px;color:var(--dim);font-size:11px}
.buy.big{font-size:14px;padding:14px 22px}
.buy.ghost{background:var(--glass);border:1px solid var(--glass-line);color:var(--fg);
box-shadow:none;backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px)}
.buy.ghost:hover{border-color:rgba(167,139,250,.55)}
.hero-proof{position:relative;border-radius:var(--glass-r);padding:24px;
animation:floaty 6s ease-in-out infinite}
.hp-lab{color:var(--dim);font-size:11px;letter-spacing:2px}
.hp-big{display:flex;align-items:flex-end;gap:12px;margin-top:10px}
/* THE ONE GLOW. This is the hero number — the units the model actually returned
   — and BRAND.md allows exactly one glow per composition, right here. */
.hp-big .num{font-size:46px;font-weight:800;color:var(--violet-lt);line-height:1;
font-family:var(--font-display);letter-spacing:-1.6px;
font-variant-numeric:tabular-nums;text-shadow:0 0 34px rgba(167,139,250,.55)}
.hp-sub{color:#cfc6ea;font-size:13px;padding-bottom:5px}
.hp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px;text-align:center}
.hp-grid>div{border:1px solid var(--line);border-radius:10px;padding:12px 6px}
.hp-grid b{display:block;font-size:18px;color:var(--fg);font-variant-numeric:tabular-nums}
.hp-grid span{font-size:10px;letter-spacing:1px;color:var(--dim)}
.hp-note{margin-top:14px;color:#8e84b3;font-size:11px}
@keyframes floaty{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.proof-slim{border-top:1px solid var(--faint);border-bottom:1px solid var(--faint);
background:var(--panel)}
.ps-row{max-width:1000px;margin:0 auto;display:flex;flex-wrap:wrap;justify-content:center;
gap:14px 34px;padding:18px 20px 6px}
.ps-cell{display:flex;align-items:baseline;gap:8px}
.ps-num{font-size:20px;font-weight:800;color:var(--green);font-variant-numeric:tabular-nums}
.ps-lab{font-size:11px;letter-spacing:1px;color:var(--dim);text-transform:uppercase}
.ps-note{max-width:1000px;margin:0 auto;text-align:center;color:#8e84b3;font-size:10.5px;
padding:0 20px 16px}
/* interactive engine explorer */
.eng-panel{max-width:1040px;margin:16px auto 0;display:none}
.eng-panel.open{display:block}
.eng-chips{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.eng-chip{border:1px solid var(--line);background:var(--bg);border-radius:10px;
padding:14px 12px;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s}
.eng-chip:hover{border-color:#4a3b73}
.eng-chip .ec-name{font-size:14px;font-weight:800;letter-spacing:1px;color:var(--fg)}
.eng-chip .ec-tier{font-size:10px;letter-spacing:1px;color:var(--dim);text-transform:uppercase;margin-top:4px}
.eng-chip.amber .ec-name{color:var(--amber)}
.eng-chip.on{border-color:var(--green);box-shadow:0 0 0 1px rgba(167,139,250,.25);
background:linear-gradient(180deg,#17102a,#0a0715)}
.eng-chip.on .ec-name{color:var(--green)}
.eng-panel{border:1px solid var(--line);border-radius:12px;padding:22px;
background:linear-gradient(180deg,#140d24,#0a0715)}
.eng-panel h3{margin:0;font-size:22px;letter-spacing:-.5px;color:var(--fg);display:flex;
align-items:center;gap:10px}
.eng-panel .ep-tier{font-size:10px;letter-spacing:1px;color:var(--green);
border:1px solid var(--green);border-radius:999px;padding:2px 8px;text-transform:uppercase}
.eng-panel .ep-desc{color:#cfc6ea;font-size:14px;line-height:1.6;margin:12px 0 0}
.eng-panel ul{list-style:none;padding:0;margin:14px 0 0}
.eng-panel li{color:var(--dim);font-size:13.5px;margin:8px 0;padding-left:18px;position:relative}
.eng-panel li::before{content:"▸";position:absolute;left:0;color:var(--green)}
.eng-panel .ep-cta{display:inline-block;margin-top:18px}
/* homepage draft-season band */
.szn-band{max-width:1040px;margin:22px auto 0;padding:0 20px}
.szn-band a{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
border:1px solid #4a1b3a;border-left:3px solid var(--amber);border-radius:12px;
padding:16px 18px;background:linear-gradient(90deg,rgba(244,114,182,.08),rgba(10,7,21,0));
transition:box-shadow .18s,border-color .18s}
.szn-band a:hover{box-shadow:0 0 22px rgba(244,114,182,.22);border-color:var(--amber)}
.szn-flag{border:1px solid var(--amber);color:var(--amber);border-radius:999px;
padding:4px 11px;font-size:11px;letter-spacing:2px;white-space:nowrap}
.szn-band b{color:var(--fg);font-size:15px}
.szn-sub{color:var(--dim);font-size:12.5px;flex:1;min-width:200px;line-height:1.5}
.szn-go{color:var(--amber);font-size:12px;letter-spacing:2px;font-weight:bold;white-space:nowrap}
.prod-filter{display:flex;gap:6px;justify-content:center;margin:0 0 18px}
.pf-btn{border:1px solid var(--line);background:transparent;color:var(--dim);
font-family:inherit;font-size:12px;font-weight:bold;letter-spacing:2px;
padding:8px 16px;border-radius:8px;cursor:pointer;transition:all .15s}
.pf-btn:hover{color:var(--fg);border-color:#4a3b73}
.pf-btn.on{background:var(--green);color:#14082a;border-color:var(--green)}
.hero-inner{position:relative;z-index:1;text-align:center;
padding:96px 20px 72px}
.posters{max-width:1100px;margin:8px auto 0;padding:0 20px 8px}
.poster-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.poster-tile{position:relative;display:block;border-radius:10px;overflow:hidden;
border:1px solid var(--faint);aspect-ratio:1080/1528;text-decoration:none;
transition:transform .18s ease,box-shadow .18s ease}
.poster-tile img{width:100%;height:100%;object-fit:cover;display:block}
.poster-tile:hover{transform:translateY(-3px);
box-shadow:0 10px 30px rgba(167,139,250,.18)}
.poster-lab{position:absolute;left:10px;bottom:9px;font-size:11px;letter-spacing:2px;
color:var(--fg);text-shadow:0 1px 6px rgba(0,0,0,.9)}
@media(max-width:640px){.poster-row{grid-template-columns:repeat(2,1fr)}}
/* +8px tracking and a two-layer bloom on every letter — both retired. */
.hero.home h1{font-size:56px;letter-spacing:-2.2px;line-height:1.04;margin:0;
color:var(--fg);font-weight:800}
.hero.home h1 .glow{background:var(--grad);-webkit-background-clip:text;
background-clip:text;color:transparent;text-shadow:none}
.hero.home .tagline{margin-top:18px;font-size:12px;letter-spacing:2px}
.proof{max-width:1040px;margin:34px auto 8px;padding:0 20px}
.proof-row{display:grid;grid-template-columns:repeat(3,1fr);gap:22px 14px;
border-top:1px solid var(--line);border-bottom:1px solid var(--line);
padding:22px 0}
.proof-cell{text-align:center}
.proof-num{font-size:38px;font-weight:800;color:var(--fg);line-height:1;
font-family:var(--font-display);letter-spacing:-1.4px}
/* Positive result -> mint. Not the brand accent, and not gold: gold is a WIN. */
.proof-num.green{color:var(--mint)}
.proof-lab{font-size:11px;letter-spacing:1.5px;margin-top:8px}
.proof-note{text-align:center;font-size:11px;margin:12px auto 0;max-width:760px;
line-height:1.6}
.sports,.engine,.tiers,.value{max-width:1040px;margin:44px auto;padding:0 20px}
.sport-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.sport-card{border:1px solid var(--line);background:var(--panel);border-radius:6px;
padding:22px 18px;text-align:center;transition:border-color .18s,box-shadow .18s;
border-top-width:3px}
.sport-card.nfl,.sport-card.soccer{border-top-color:var(--green)}
.sport-card.mlb{border-top-color:var(--amber)}
.sport-card.nba{border-top-color:var(--dim)}
.sport-card:hover{border-color:var(--green);
box-shadow:0 0 18px rgba(167,139,250,.18)}
.sport-card.soon{opacity:.6}
.sport-card.soon:hover{border-color:var(--dim);box-shadow:none}
.emblem{width:56px;height:56px;display:block;margin:0 auto 12px}
.sport-name{font-size:17px;letter-spacing:-.3px;font-weight:800;font-family:var(--font-display)}
.sport-cover{font-size:12px;line-height:1.5;margin:10px 0 14px}
.status{font-size:11px;letter-spacing:2px}
.status .dot{display:inline-block;width:7px;height:7px;border-radius:50%;
margin-right:6px;vertical-align:middle}
/* "live" is a state, not branding — semantic mint, and no glow. */
.status.live{color:var(--mint)}
.status.live .dot{background:var(--mint)}
.status.soon{color:var(--dim)}
.status.soon .dot{background:var(--dim)}
.engine-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.engine-card{border:1px solid var(--line);background:var(--panel);border-radius:5px;
padding:16px 12px;text-align:center;transition:border-color .18s,box-shadow .18s;
font-family:inherit;cursor:pointer;width:100%;display:block}
.engine-card.on{border-color:var(--green);box-shadow:0 0 16px rgba(167,139,250,.22)}
.engine-card.on .engine-name{color:var(--green)}
.engine-card:hover{border-color:var(--green);
box-shadow:0 0 14px rgba(167,139,250,.16)}
.engine-name{font-size:14px;letter-spacing:2px;font-weight:bold;color:var(--fg)}
.engine-card.amber .engine-name{color:var(--amber)}
.engine-card.amber:hover{border-color:var(--amber);
box-shadow:0 0 14px rgba(244,114,182,.18)}
.engine-desc{font-size:11px;letter-spacing:.5px;margin-top:6px}
.tier-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;
align-items:stretch}
.tier-card{position:relative;display:flex;flex-direction:column;
border:1px solid var(--line);background:var(--panel);border-radius:6px;
padding:22px 18px;transition:border-color .18s,box-shadow .18s}
.tier-card:hover{border-color:var(--green);
box-shadow:0 0 18px rgba(167,139,250,.2)}
.tier-card.popular{border-color:var(--green);
box-shadow:0 0 22px rgba(167,139,250,.28)}
.tier-card.amber:hover{border-color:var(--amber);
box-shadow:0 0 18px rgba(244,114,182,.22)}
.tier-badge{position:absolute;top:-10px;right:14px;background:var(--green);
color:var(--bg);font-size:10px;letter-spacing:2px;font-weight:bold;
padding:3px 8px;border-radius:3px}
.tier-name{font-size:14px;letter-spacing:2px;color:var(--dim)}
.tier-price{font-size:26px;font-weight:800;color:var(--violet-lt);margin:6px 0;
font-family:var(--font-display);letter-spacing:-1px}
.tier-card.free .tier-price,.tier-card.amber .tier-price{color:var(--fg)}
.tier-card.amber .tier-price{color:var(--pink)}
.tier-blurb{font-size:12px;line-height:1.5;flex:1;margin:0 0 14px}
.tier-cta{color:var(--green);font-size:12px;letter-spacing:1px}
.freepicks{max-width:1040px;margin:32px auto;padding:0 20px}
.freepicks a{display:block;text-align:center;letter-spacing:1.2px;font-size:13px;
padding:16px;border:1px solid var(--amber);border-radius:5px;color:var(--amber);
background:rgba(244,114,182,.05);transition:box-shadow .18s}
.freepicks a:hover{box-shadow:0 0 18px rgba(244,114,182,.3)}
.cta{text-align:center;margin:36px auto;padding:0 20px}
.buy.big{font-size:15px;padding:16px 34px;letter-spacing:.2px}
#products,.promo,.analyzer,.legal{max-width:1080px;margin:0 auto;padding:24px 28px}
#products h2,.promo h2{font-size:13px;letter-spacing:3px;color:var(--dim)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.product{border:1px solid var(--line);background:var(--panel);padding:18px;
border-radius:4px;display:flex;flex-direction:column}
.p-name{font-size:13px;letter-spacing:2px;color:var(--dim)}
.p-price{font-size:32px;font-weight:800;color:var(--violet-lt);margin:6px 0;
font-family:var(--font-display);letter-spacing:-1.2px}
.compliance{grid-column:1/-1;color:var(--dim);font-size:12px;letter-spacing:1px;margin:6px 0}
.product.picks .p-price{color:var(--pink)}
.p-blurb{color:var(--fg);font-size:13px;flex:1}
.rec-line{color:var(--dim);font-size:12px;border-left:3px solid var(--amber);
padding-left:10px;margin-bottom:12px}
/* Primary action = the violet→magenta gradient from direction B. NOT gold: a
   button is not a win. The lift on hover replaces the old glow-on-hover. */
.buy{display:inline-block;border:1px solid transparent;color:#fff;
background:linear-gradient(94deg,var(--violet),var(--magenta));
font-family:var(--font-display);font-weight:700;
padding:12px 24px;letter-spacing:.2px;font-size:13px;text-align:center;
border-radius:13px;margin-top:auto;
box-shadow:0 12px 40px -8px rgba(219,39,119,.5);
transition:transform .15s ease,box-shadow .15s ease}
.buy:hover{transform:translateY(-1px);
box-shadow:0 16px 46px -8px rgba(219,39,119,.7)}
.buy.wide{width:100%;margin:18px 0;cursor:pointer;font-size:15px}
.promo{border:1px solid var(--line);background:var(--panel);border-radius:4px;
margin:28px auto;text-align:center}
.tr-intro{max-width:760px;margin:2px auto 22px;text-align:center;color:#cfc6ea;
font-size:15px;line-height:1.6}
.trade-cols{display:grid;grid-template-columns:1fr auto 1fr;gap:18px;align-items:start}
.side{border:1px solid var(--line);border-radius:12px;padding:16px 16px 18px;
background:linear-gradient(180deg,#140d24,#0a0715)}
.side.give{border-color:#5c2440}.side.get{border-color:#1f5540}
.side h2{font-size:13px;letter-spacing:3px;color:var(--dim);
border-bottom:2px solid var(--line);padding-bottom:6px}
/* give/get is a semantic pair (what you lose vs what you gain), so it takes
   --red / --mint, not the brand accent. */
.side.give h2{color:var(--red)}.side.get h2{color:var(--mint)}
.vs{align-self:center;font-size:24px;color:var(--dim);border:1px solid var(--line);
border-radius:50%;width:44px;height:44px;display:flex;align-items:center;justify-content:center;
background:var(--panel);margin-top:38px}
/* live balance meter */
.balance{max-width:520px;margin:16px auto 4px;text-align:left}
.bal-item{margin:10px 0}
.bal-head{display:flex;justify-content:space-between;font-size:12px;letter-spacing:1px;
color:var(--dim);margin-bottom:4px}
.bal-head b{color:var(--fg);font-variant-numeric:tabular-nums}
.bl.give{color:var(--red)}.bl.get{color:var(--mint)}
.bal-track{height:10px;background:rgba(255,255,255,.09);border-radius:99px;overflow:hidden}
.bar{display:block;height:100%;width:0;border-radius:99px;
transition:width .5s cubic-bezier(.2,.8,.2,1)}
.bar.give{background:linear-gradient(90deg,#7f1d3a,#fb7185)}
.bar.get{background:linear-gradient(90deg,#059669,#34d399)}
.bal-delta{margin-top:12px;text-align:center;font-size:14px;font-weight:bold;letter-spacing:1px}
/* A favourable trade is a WIN, and a win is the one thing gold is for. */
.bal-delta.win{color:var(--gold)}.bal-delta.lose{color:var(--red)}.bal-delta.flip{color:var(--fg)}
/* two-way funnel */
.xsell{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px;text-align:left}
.xs-card{border:1px solid var(--line);border-radius:12px;padding:18px;background:var(--bg)}
.xs-card.alt{border-color:#342a52}
.xs-h{font-size:14px;font-weight:bold;letter-spacing:1px;color:var(--fg)}
.xs-p{margin:8px 0 14px;font-size:12.5px;line-height:1.55;color:var(--dim)}
.xs-card .buy{width:100%;text-align:center}
.share-row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:6px 0 4px}
.share-row .buy{margin-top:0}
.share-hint{font-size:12px;margin:8px 0 0}
@media(max-width:640px){.xsell{grid-template-columns:1fr}.vs{display:none}}
.ac-wrap{position:relative;margin:10px 0}
input.pname{width:100%;background:var(--panel);border:1px solid var(--line);
color:var(--fg);font-family:inherit;font-size:15px;padding:10px 12px;
border-radius:3px}
input.pname:focus{outline:none;border-color:var(--green);
box-shadow:0 0 10px rgba(167,139,250,.25)}
.ac-box{position:absolute;left:0;right:0;top:100%;z-index:5;background:#191130;
border:1px solid var(--line);max-height:220px;overflow-y:auto}
.ac-item{padding:8px 12px;font-size:13px;cursor:pointer}
.ac-item:hover{background:var(--faint);color:var(--green)}
.hidden{display:none}
.result{text-align:center;border-radius:var(--glass-r);padding:26px}
/* Display type: no tracking (was +4px). This headline IS the composition on the
   analyzer page, so the WIN state is the one place gold and the one glow land. */
.verdict{font-size:54px;font-weight:800;letter-spacing:-2px;
font-family:var(--font-display)}
.verdict.win{color:var(--gold);text-shadow:0 0 34px rgba(251,191,36,.45)}
.verdict.flip{color:var(--fg)}
.detail{color:var(--fg);margin:10px 0}
.unmatched{color:var(--amber);font-size:12px;margin:6px 0}
.tier-note{color:var(--dim);font-size:12px;margin:12px 0;letter-spacing:.5px}
#card{width:100%;max-width:540px;height:auto;border:1px solid var(--line);
margin:16px auto;display:block}
.upgrade{text-align:center;border:1px solid var(--amber);background:var(--panel);
padding:28px;border-radius:4px;margin-top:20px}
.upgrade h2{color:var(--pink);letter-spacing:-.4px}
.legal h1{font-size:30px;letter-spacing:-1px;font-weight:800}
.legal h2{font-size:14px;letter-spacing:2px;color:var(--green);margin-top:22px}
.legal .effective{letter-spacing:2px;font-size:12px;margin-bottom:14px}
footer{border-top:1px solid var(--faint);margin-top:48px;padding:24px 28px;
color:var(--dim);font-size:12px;max-width:1080px;margin-left:auto;margin-right:auto}
.legal-links{margin-top:10px;letter-spacing:1px}
.legal-links a{color:var(--dim)}
.legal-links a:hover{color:var(--green)}
@media (max-width:720px){
/* Tracking scales WITH size under Nightfall: a 38px headline takes less negative
   tracking than a 66px one, but it never goes positive. */
.hero h1{font-size:38px;letter-spacing:-1.2px;line-height:1.06}
.hero.small h1{font-size:32px;letter-spacing:-.9px}
.hero.home h1{font-size:36px;letter-spacing:-1.1px;line-height:1.06}
.hero.home .hero-copy h1{font-size:40px;letter-spacing:-1.3px;line-height:1.05}
.hero-inner{padding:64px 18px 48px}
.hero-grid{grid-template-columns:1fr;padding:56px 18px 44px;gap:26px}
.eng-explorer{grid-template-columns:1fr}
.trade-cols{grid-template-columns:1fr}
.grid{grid-template-columns:1fr}
.record{font-size:20px}
.site-head{flex-direction:column;gap:8px;align-items:flex-start}
.brand{font-size:19px}
.verdict{font-size:34px;letter-spacing:-1.2px}
.hp-big .num{font-size:38px;letter-spacing:-1.2px}
.proof-row{grid-template-columns:repeat(2,1fr);gap:18px 14px}
.proof-num{font-size:32px;letter-spacing:-1px}
.vc-big{font-size:36px;letter-spacing:-1.2px}
.sport-grid{grid-template-columns:repeat(2,1fr)}
.engine-grid{grid-template-columns:repeat(2,1fr)}
.tier-grid{grid-template-columns:1fr}
.value-grid{grid-template-columns:1fr}
}
@media (max-width:1000px) and (min-width:721px){
.engine-grid{grid-template-columns:repeat(3,1fr)}
}
/* ── live draft board ─────────────────────────────────────────────────────── */
.db-wrap{max-width:820px;margin:0 auto;padding:0 16px 8px}
.db-controls{display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-bottom:8px;
position:sticky;top:0;background:var(--bg);padding:8px 0;z-index:3}
.db-pf{font:inherit;cursor:pointer;border:1px solid var(--line);background:#1c1435;
color:var(--fg);border-radius:6px;padding:6px 11px}
.db-pf:hover{border-color:var(--green)}
.db-pf.active{background:var(--green);color:#14082a;border-color:var(--green);font-weight:bold}
#dbq{font:inherit;background:#0a0715;border:1px solid var(--line);color:var(--fg);
border-radius:6px;padding:6px 10px;flex:1;min-width:130px}
.db-tg{color:var(--dim);font-size:12px;display:flex;align-items:center;gap:5px;cursor:pointer}
/* ── Draft War Room: league config, on-the-clock strip, tier cliffs ── */
.db-cfg{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:0 0 14px;
  padding:10px 14px;border:1px solid #2a2044;border-radius:10px;background:#140d24}
.db-cfg label{font-size:.85rem;color:#cfc6ea;display:flex;gap:6px;align-items:center}
.db-cfg select{background:#0a0715;color:#f5f3ff;border:1px solid #342a52;
  border-radius:6px;padding:4px 8px;font:inherit;font-size:.85rem}
.db-cfg .linkbtn{margin-left:auto}
.db-header{margin:0 0 12px}
.dh-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}
.dh-cell{border:1px solid #2a2044;border-radius:10px;padding:10px 14px;background:#140d24}
.dh-cell.hot{border-color:#a78bfa;box-shadow:0 0 0 1px rgba(167,139,250,.25)}
.dh-cell b{display:block;font-size:1.35rem;line-height:1.2;color:#f5f3ff}
.dh-cell.hot b{color:#a78bfa}
.dh-big{display:block;font-size:2.1rem;line-height:1.05;font-weight:800;color:#f5f3ff;
  font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.dh-big i{font-style:normal;color:#6d6294}
.dh-big i.u{font-size:.9rem;font-weight:600;color:#8e84b3;margin-left:4px;letter-spacing:0}
.dh-big.go{color:var(--mint)}
.dh-cell.now{border-color:#3a2f5c}
.dh-cell.hot .dh-big{color:#a78bfa}
.db-strip{margin:0 0 14px}
.strip-lab{font-size:.66rem;letter-spacing:.11em;color:#8e84b3;margin-bottom:5px}
.strip-lab i{font-style:normal;color:#6d6294}
.strip{display:flex;flex-wrap:wrap;gap:4px}
.pk{min-width:30px;text-align:center;padding:4px 5px;border-radius:5px;
  font-size:.72rem;font-variant-numeric:tabular-nums;border:1px solid #2a2044;
  color:#8e84b3;background:#140d24}
.pk.done{opacity:.38}
.pk.me{border-color:#a78bfa;color:#a78bfa;background:rgba(167,139,250,.08);font-weight:700}
.pk.on{border-color:#f472b6;color:#0a0715;background:#f472b6;font-weight:800}
.pk.on.me{background:#a78bfa;border-color:#a78bfa}
.dh-lab{display:block;font-size:.68rem;letter-spacing:.09em;color:#8e84b3;margin-bottom:2px}
.dh-sub{display:block;font-size:.78rem;color:#a99fc9;margin-top:2px}
.db-cliffs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 14px}
.cliff{font-size:.78rem;padding:4px 10px;border-radius:999px;
  border:1px solid #f472b6;color:#f472b6;background:rgba(244,114,182,.07)}
.cliff.flat{border-color:#342a52;color:#a99fc9;background:transparent}
.cliff b{color:inherit;margin-right:4px}
.st-badge{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;
  font-size:.62rem;letter-spacing:.06em;font-weight:700;vertical-align:middle;
  border:1px solid #fb7185;color:#fb7185;background:rgba(251,113,133,.10);cursor:help}
.st-badge.md{border-color:#f472b6;color:#f472b6;background:rgba(244,114,182,.10)}
.dr-war{margin:0 0 26px}
.dr-lead2{font-size:1.02rem;color:#cfc6ea;margin:0 0 18px;max-width:70ch}
.dr-feat{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:12px;margin:0 0 20px}
.df{border:1px solid #2a2044;border-radius:11px;padding:14px 16px;background:#140d24}
.df b{display:block;font-size:.72rem;letter-spacing:.1em;color:#a78bfa;margin-bottom:5px}
.df span{font-size:.9rem;color:#b3a9d4;line-height:1.45}
.mt-tbl{width:100%;border-collapse:collapse;font-size:.88rem}
.mt-tbl th{text-align:left;font-size:.68rem;letter-spacing:.08em;color:#8e84b3;
  font-weight:600;padding:4px 8px 4px 0;border-bottom:1px solid #2a2044}
.mt-tbl td{padding:5px 8px 5px 0;border-bottom:1px solid #1d1533;color:#cfc6ea}
.mt-pk{color:#a78bfa;font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:620px){.db-cfg{gap:10px}.db-cfg .linkbtn{margin-left:0}}
.db-table{width:100%;border-collapse:collapse}
.db-table th{text-align:left;color:var(--dim);font-size:11px;padding:6px;border-bottom:1px solid var(--line)}
.db-table td{padding:6px;border-bottom:1px solid #1d1533}
.db-row:hover{background:#191130}
.db-row.tk{opacity:.32}
.db-row.mn{background:#241546}
.db-pos{display:inline-block;min-width:30px;text-align:center;border-radius:4px;
padding:1px 4px;font-size:11px;font-weight:bold;color:#14082a;background:var(--dim)}
.db-pos.QB{background:#fb7185}.db-pos.RB{background:#34d399}.db-pos.WR{background:#60a5fa}
.db-pos.TE{background:#f472b6}.db-pos.DST,.db-pos.DEF{background:#c4b5fd}.db-pos.K{background:#8b83ad}
.db-act{display:flex;gap:4px;justify-content:flex-end}
.db-mini{font:inherit;cursor:pointer;border:1px solid var(--line);background:#1c1435;
color:var(--fg);border-radius:5px;padding:3px 9px;font-size:12px}
.db-mini.m:hover{border-color:var(--green)}
.rook{font-size:9px;font-weight:bold;color:#14082a;background:var(--amber);
border-radius:3px;padding:0 3px;vertical-align:middle}
.acctpage{max-width:440px;margin:0 auto;padding:8px 20px 40px;text-align:center}
.acctpage input{display:block;width:100%;margin:8px 0;padding:11px;background:#0a0715;
border:1px solid var(--line);border-radius:6px;color:var(--fg);font:inherit}
.tabs{display:flex;gap:8px;justify-content:center;margin:14px 0}
.tabbtn{flex:1;font:inherit;cursor:pointer;border:1px solid var(--line);background:#1c1435;
color:var(--dim);border-radius:6px;padding:9px}
.tabbtn.active{background:var(--green);color:#14082a;border-color:var(--green);font-weight:bold}
.access-grid{max-width:400px;margin:8px auto;text-align:left}
.access-row{display:flex;justify-content:space-between;padding:9px 2px;
border-bottom:1px solid var(--faint)}
.access-row b{color:var(--mint)}
.db-roster{margin-top:10px;padding:10px 12px;border:1px solid var(--line);border-radius:8px;
background:var(--panel);font-size:13px;line-height:1.7}
.db-roster .green{margin-right:8px}.db-roster .amber{margin-right:8px}
.db-lock{max-width:820px;margin:18px auto 0;padding:22px 20px;text-align:center;
border:1px solid var(--line);border-radius:10px;background:var(--panel)}
.db-lock h2{font-size:22px;letter-spacing:-.5px;margin:0 0 8px}
.db-cta{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin:14px 0}
.db-login{margin-top:14px;border-top:1px solid var(--faint);padding-top:12px}
.db-login input{display:block;width:100%;max-width:300px;margin:6px auto;padding:9px;
background:#0a0715;border:1px solid var(--line);border-radius:5px;color:var(--fg);font:inherit}
/* ── GLASS SURFACE LAYER (BRAND.md "Surface") ────────────────────────────────
   Deliberately LAST in the sheet so it wins the background/border-colour/radius
   of every card-like block above without needing 20 individual edits. It sets
   background, border-COLOUR and radius only — never the `border` shorthand —
   because .sport-card carries a 3px top edge and .tier-card.popular a violet
   ring, and both must survive. Hover and .popular states are more specific, so
   they still override this. Depth here is layered light, not heavier borders. */
.hero-proof,.value-card,.sport-card,.tier-card,.product,.eng-chip,.eng-panel,
.xs-card,.side,.result,.db-lock,.db-roster,.df,.dh-cell,.promo,.fx-tile,
.db-cfg,.fantasy,.hp-grid>div{
background:var(--glass);border-color:var(--glass-line);
backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px)}
.hero-proof,.value-card,.sport-card,.tier-card,.product,.eng-chip,.eng-panel,
.xs-card,.side,.result,.db-lock,.promo,.fx-tile,.db-cfg,.fantasy{
border-radius:var(--glass-r)}
/* These two lost their `border` shorthand when they were restyled above. */
.hero-proof,.result{border:1px solid var(--glass-line)}
/* The upsell block is the one card that keeps a coloured edge — pink, not gold. */
.upgrade{background:rgba(244,114,182,.07);border:1px solid rgba(244,114,182,.35);
border-radius:var(--glass-r);backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px)}

.pl-wrap{max-width:860px;margin:0 auto;padding:26px 18px 44px}
.pl-crumb{font-size:12px;color:#5e7062;margin-bottom:18px;letter-spacing:1px}
.pl-crumb a{color:#8aa090}
.pl-h1{font-size:40px;letter-spacing:2px;margin:0;color:#e8f0e9}
.pl-sub{color:#8aa090;font-size:13px;letter-spacing:2px;margin:8px 0 22px;text-transform:uppercase}
.pl-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:20px}
.pl-card{border:1px solid #1c2620;border-radius:12px;padding:16px 12px;text-align:center;
background:linear-gradient(180deg,#0d110e,#0a0d0a)}
.pl-card .pl-lab{display:block;font-size:10px;letter-spacing:1.5px;color:#5e7062}
.pl-card b{display:block;font-size:30px;margin:8px 0 4px;color:#e8f0e9;font-variant-numeric:tabular-nums}
.pl-card b.green,.pl-card b.up{color:#22ff8a}
.pl-card b.down{color:#ffb84a}
.pl-card .pl-note{font-size:10.5px;color:#5e7062}
.pl-verdict{border:1px solid #1c2620;border-left:3px solid #5e7062;border-radius:12px;
padding:16px 18px;margin-bottom:26px;background:#0c110d}
.pl-verdict.up{border-left-color:#22ff8a}
.pl-verdict.down{border-left-color:#ffb84a}
.pl-verdict b{color:#e8f0e9;letter-spacing:1px;font-size:13px}
.pl-verdict p{margin:8px 0 0;color:#c3d0c5;font-size:14px;line-height:1.65}
.pl-wrap h2{font-size:13px;letter-spacing:2px;color:#5e7062;margin:26px 0 10px;text-transform:uppercase}
.pl-body{color:#c3d0c5;font-size:15px;line-height:1.75;margin:0 0 12px}
.pl-near{list-style:none;padding:0;margin:0}
.pl-near li{padding:8px 0;border-bottom:1px solid #141a15;font-size:14px}
.pl-cta{border:1px solid #2a3a2f;border-radius:14px;padding:22px;margin:28px 0 18px;
background:linear-gradient(180deg,#0e130d,#0a0d0a)}
.pl-cta b{display:block;font-size:17px;color:#e8f0e9;margin-bottom:6px}
.pl-cta .buy{margin-right:10px;margin-top:12px}
.pl-legal{font-size:11px;line-height:1.7}
.pi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin:20px 0}
.pi-col h2{margin-top:0}
.pi-list{list-style:none;padding:0;margin:0;counter-reset:n}
.pi-list li{padding:5px 0;border-bottom:1px solid #141a15;font-size:13.5px}
@media(max-width:760px){.pl-cards{grid-template-columns:repeat(2,1fr)}
.pi-grid{grid-template-columns:repeat(2,1fr)}.pl-h1{font-size:30px}}
