/* ═══════════════════════════════════════════════════════════════════════════
   RadarPulse Fantasy Football Terminal 3.x
   Bloomberg × Apple × Formula 1
   Sprints: 1 design system · 2 live matchup · 3 draft · 4 identity · 5 player · 6 social
   ═══════════════════════════════════════════════════════════════════════════ */
:root{
  --fan-magenta:#FF2DAA; --fan-cyan:#00D4FF; --fan-violet:#7A5CFF;
  --fan-glass:rgba(17,21,32,.72); --fan-glass-2:rgba(13,16,24,.82);
  --fan-glow:0 12px 40px rgba(255,45,170,.14),0 2px 0 rgba(255,255,255,.03) inset;
  --fan-radius:16px; --fan-radius-sm:12px;
  --fan-ease:cubic-bezier(.34,1.15,.5,1); --fan-ease-out:cubic-bezier(.2,.7,.2,1);
}

/* ── Portal canvas ───────────────────────────────────────────────────────── */
#fan-portal-ov.fan-t3-on,#fan-hq-ov.fan-t3-on,#fan-player-ov.fan-t3-on{
  background:
    radial-gradient(900px 520px at 92% -8%, rgba(255,45,170,.14), transparent 58%),
    radial-gradient(700px 480px at -10% 110%, rgba(0,212,255,.08), transparent 55%),
    var(--ink) !important;
}
#fan-portal-ov .fan-t3-shell{
  min-height:100vh;padding-bottom:calc(78px + env(safe-area-inset-bottom,0px));
  animation:fanT3Enter .48s var(--fan-ease-out) both;
}
@keyframes fanT3Enter{from{opacity:0;transform:translateY(10px) scale(.992)}to{opacity:1;transform:none}}

#fan-portal-ov .fan-t3-header,#fan-hq-ov .fan-t3-header,#fan-player-ov .fan-t3-header{
  position:sticky;top:0;z-index:5;
  background:linear-gradient(180deg,rgba(255,45,170,.16),rgba(9,12,18,.88) 70%) !important;
  -webkit-backdrop-filter:blur(18px) saturate(1.25);backdrop-filter:blur(18px) saturate(1.25);
  border-bottom:1px solid rgba(255,45,170,.32) !important;
  box-shadow:0 10px 32px rgba(0,0,0,.35);
}
#fan-portal-ov .fan-t3-brand-mark,#fan-hq-ov .fan-t3-brand-mark{
  width:34px;height:34px;border-radius:11px;flex-shrink:0;
  background:linear-gradient(135deg,var(--fan-magenta),var(--fan-violet) 55%,var(--fan-cyan));
  display:flex;align-items:center;justify-content:center;
  font-weight:900;color:#04121c;font-size:15px;
  box-shadow:0 0 0 1px rgba(255,255,255,.12),0 6px 18px rgba(255,45,170,.35);
}
#fan-portal-ov .fan-t3-dock{
  position:fixed;left:0;right:0;bottom:0;z-index:8;display:flex;
  padding:6px 8px calc(6px + env(safe-area-inset-bottom,0px));
  background:linear-gradient(180deg,rgba(9,12,18,.55),rgba(9,12,18,.94));
  -webkit-backdrop-filter:blur(20px) saturate(1.2);backdrop-filter:blur(20px) saturate(1.2);
  border-top:1px solid rgba(255,45,170,.22);box-shadow:0 -12px 36px rgba(0,0,0,.45);
}
#fan-portal-ov .fan-t3-dock button{
  flex:1;background:transparent;border:none;color:var(--steel);font-size:10px;font-weight:600;
  padding:8px 0;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:3px;
  border-radius:12px;transition:color .15s,background .15s;
}
#fan-portal-ov .fan-t3-dock button.on{
  color:var(--fan-magenta);font-weight:800;
  background:linear-gradient(180deg,rgba(255,45,170,.14),transparent);
  box-shadow:0 0 0 1px rgba(255,45,170,.18) inset;
}
#fan-portal-ov .fan-t3-dock .fan-t3-ico{
  font-size:16px;line-height:1;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;
}
#fan-portal-ov .fan-t3-dock button.on .fan-t3-ico{background:rgba(255,45,170,.16);box-shadow:0 0 12px rgba(255,45,170,.25)}
#fan-portal-ov .fan-t3-frame{max-width:760px;margin:0 auto;padding:16px 16px 24px}
#fan-portal-ov .fan-t3-frame.wide{max-width:1600px}
#fan-portal-ov .fan-t3-frame > *{animation:fanT3Stagger .42s var(--fan-ease-out) both}
#fan-portal-ov .fan-t3-frame > *:nth-child(1){animation-delay:.02s}
#fan-portal-ov .fan-t3-frame > *:nth-child(2){animation-delay:.05s}
#fan-portal-ov .fan-t3-frame > *:nth-child(3){animation-delay:.08s}
#fan-portal-ov .fan-t3-frame > *:nth-child(4){animation-delay:.11s}
@keyframes fanT3Stagger{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}

/* Glass cards */
#fan-portal-ov .fan-elev,#fan-hq-ov .fan-elev,#fan-portal-ov .fdr-panel,#fan-portal-ov .g-hero{
  border-radius:var(--fan-radius) !important;
  background:linear-gradient(165deg,rgba(255,45,170,.10),rgba(255,255,255,.02) 42%,var(--panel)) !important;
  border:1px solid rgba(255,45,170,.22) !important;box-shadow:var(--fan-glow) !important;
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  transition:transform .16s var(--fan-ease),box-shadow .18s,border-color .16s;
}
#fan-portal-ov .fan-elev:hover,#fan-portal-ov .fan-tile:hover{
  border-color:rgba(255,45,170,.48) !important;
  box-shadow:0 16px 44px rgba(255,45,170,.2),0 2px 0 rgba(255,255,255,.04) inset !important;
}
#fan-portal-ov .fan-tile{
  background:linear-gradient(158deg,rgba(255,45,170,.18),rgba(122,92,255,.06) 45%,rgba(255,255,255,.02)) !important;
  border-radius:var(--fan-radius) !important;
}
#fan-portal-ov input[type="text"],#fan-portal-ov input[type="search"],#fan-portal-ov input:not([type]),
#fan-portal-ov select,#fan-portal-ov textarea{
  background:var(--fan-glass-2) !important;border:1px solid rgba(255,255,255,.08) !important;border-radius:12px !important;
  transition:border-color .15s,box-shadow .15s;
}
#fan-portal-ov input:focus,#fan-portal-ov select:focus,#fan-portal-ov textarea:focus{
  border-color:rgba(255,45,170,.55) !important;box-shadow:0 0 0 3px rgba(255,45,170,.14) !important;outline:none;
}

/* ── Sprint 2: Live matchup terminal ─────────────────────────────────────── */
.fan-t3-mc{
  position:relative;overflow:hidden;border-radius:var(--fan-radius);
  border:1px solid rgba(255,45,170,.28);
  background:
    radial-gradient(80% 120% at 0% 50%, rgba(255,45,170,.10), transparent 55%),
    radial-gradient(80% 120% at 100% 50%, rgba(0,212,255,.08), transparent 55%),
    linear-gradient(180deg,rgba(17,21,32,.95),rgba(9,12,18,.98));
  box-shadow:var(--fan-glow);padding:16px 14px 12px;margin-bottom:14px;
  animation:fanT3Enter .5s var(--fan-ease-out) both;
}
.fan-t3-mc::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.03) 50%,transparent 60%);
  transform:translateX(-120%);animation:fanT3Sheen 4.5s ease-in-out infinite;
}
@keyframes fanT3Sheen{0%,70%{transform:translateX(-120%)}100%{transform:translateX(120%)}}
.fan-t3-mc.fan-t3-live{border-color:rgba(46,204,143,.45);box-shadow:0 0 0 1px rgba(46,204,143,.2),var(--fan-glow)}
.fan-t3-score{
  font-size:28px;font-weight:900;letter-spacing:-.03em;font-variant-numeric:tabular-nums;line-height:1;
  transition:color .35s,text-shadow .35s,transform .35s var(--fan-ease);
}
.fan-t3-score.lead{color:var(--fan-magenta);text-shadow:0 0 22px rgba(255,45,170,.45)}
.fan-t3-score.trail{color:var(--steel)}
.fan-t3-score.fan-t3-pulse{animation:fanT3ScorePulse .55s var(--fan-ease)}
@keyframes fanT3ScorePulse{
  0%{transform:scale(1)}
  35%{transform:scale(1.1);color:var(--fan-cyan);text-shadow:0 0 18px rgba(0,212,255,.5)}
  100%{transform:scale(1)}
}
.fan-t3-wp{
  height:6px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.06);margin:4px 0 10px;
  box-shadow:0 0 0 1px rgba(255,255,255,.04) inset;
}
.fan-t3-wp > i,.fan-t3-wp > span{
  display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--fan-magenta),var(--fan-violet),var(--fan-cyan));
  box-shadow:0 0 12px rgba(255,45,170,.45);transition:width .7s var(--fan-ease-out);
}
/* Injected live chrome strip */
.fan-t3-livebar{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 0 12px;padding:8px 10px;border-radius:12px;
  background:linear-gradient(90deg,rgba(46,204,143,.1),rgba(255,45,170,.06));
  border:1px solid rgba(46,204,143,.28);
}
.fan-t3-live-pill{
  display:inline-flex;align-items:center;gap:6px;font-size:10px;font-weight:800;
  letter-spacing:.1em;text-transform:uppercase;color:#ff5b7a;
  border:1px solid rgba(255,91,122,.4);background:rgba(255,91,122,.1);
  border-radius:999px;padding:3px 10px;
}
.fan-t3-live-pill .dot{
  width:7px;height:7px;border-radius:50%;background:#ff3b57;animation:flrPulse 1.4s ease-out infinite;
}
.fan-t3-livebar .fan-t3-live-meta{font-size:11px;color:var(--steel);flex:1;min-width:140px}
.fan-t3-momentum{
  display:flex;gap:3px;align-items:flex-end;height:26px;width:100%;margin:8px 0 2px;
}
.fan-t3-momentum span{
  flex:1;border-radius:3px 3px 0 0;min-height:4px;
  background:linear-gradient(180deg,rgba(255,45,170,.6),rgba(255,45,170,.12));
  transform-origin:bottom;animation:fanT3Bar .75s var(--fan-ease-out) both;
}
.fan-t3-momentum span.opp{background:linear-gradient(180deg,rgba(0,212,255,.55),rgba(0,212,255,.1))}
.fan-t3-momentum span:nth-child(1){animation-delay:.02s}
.fan-t3-momentum span:nth-child(2){animation-delay:.05s}
.fan-t3-momentum span:nth-child(3){animation-delay:.08s}
.fan-t3-momentum span:nth-child(4){animation-delay:.11s}
.fan-t3-momentum span:nth-child(5){animation-delay:.14s}
.fan-t3-momentum span:nth-child(6){animation-delay:.17s}
.fan-t3-momentum span:nth-child(7){animation-delay:.2s}
.fan-t3-momentum span:nth-child(8){animation-delay:.23s}
@keyframes fanT3Bar{from{transform:scaleY(0);opacity:.25}to{transform:scaleY(1);opacity:1}}
.fan-t3-proj{
  display:flex;justify-content:space-between;gap:8px;margin-top:8px;
  font-size:10.5px;color:var(--steel);font-variant-numeric:tabular-nums;
}
.fan-t3-proj b{color:var(--white);font-weight:800}
.fan-t3-boom{box-shadow:inset 3px 0 0 var(--call) !important;background:rgba(46,204,143,.06) !important}
.fan-t3-bust{box-shadow:inset 3px 0 0 var(--put) !important;background:rgba(255,77,109,.05) !important}
.fan-t3-timeline{
  display:flex;gap:0;margin:10px 0 4px;height:3px;border-radius:999px;overflow:hidden;background:rgba(255,255,255,.06);
}
.fan-t3-timeline i{flex:1;background:transparent;transition:background .4s}
.fan-t3-timeline i.on{background:linear-gradient(90deg,var(--fan-magenta),var(--fan-cyan))}
.fan-t3-timeline i.now{background:var(--call);box-shadow:0 0 8px rgba(46,204,143,.6)}

/* Result cards */
.fan-t3-result{
  position:relative;overflow:hidden;border-radius:var(--fan-radius);
  padding:16px;margin-bottom:14px;animation:fanT3Enter .55s var(--fan-ease-out) both;
}
.fan-t3-result.win{
  border:1px solid rgba(46,204,143,.45);
  background:radial-gradient(120% 100% at 50% 0%,rgba(46,204,143,.18),transparent 55%),linear-gradient(180deg,rgba(46,204,143,.08),rgba(9,12,18,.4));
  box-shadow:0 14px 40px rgba(46,204,143,.12);
}
.fan-t3-result.loss{
  border:1px solid rgba(255,77,109,.4);
  background:radial-gradient(120% 100% at 50% 0%,rgba(255,77,109,.12),transparent 55%),linear-gradient(180deg,rgba(255,77,109,.06),rgba(9,12,18,.4));
}
.fan-t3-result.tie{
  border:1px solid rgba(245,166,35,.4);
  background:radial-gradient(120% 100% at 50% 0%,rgba(245,166,35,.12),transparent 55%),var(--panel);
}

/* ── Sprint 3: Draft room broadcast ──────────────────────────────────────── */
#fan-portal-ov .fdr-grid .fdr-panel{transition:border-color .16s,box-shadow .18s}
#fan-portal-ov .fdr-grid .fdr-panel:hover{border-color:rgba(255,45,170,.35) !important}
#fan-portal-ov table td > div{
  transition:border-color .15s,box-shadow .18s,transform .14s var(--fan-ease),background .15s;
}
#fan-portal-ov table td > div[style*="border:1px solid #FF2DAA"],
#fan-portal-ov .fan-t3-on-clock{
  animation:fanT3Clock 1.2s ease-in-out infinite;
  box-shadow:0 0 0 1px rgba(255,45,170,.55),0 0 18px rgba(255,45,170,.35) !important;
}
@keyframes fanT3Clock{
  0%,100%{box-shadow:0 0 0 1px rgba(255,45,170,.45),0 0 12px rgba(255,45,170,.25)}
  50%{box-shadow:0 0 0 2px rgba(255,45,170,.8),0 0 22px rgba(255,45,170,.5)}
}
.fan-t3-draft-banner{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  margin:0 0 12px;padding:10px 12px;border-radius:14px;
  background:linear-gradient(100deg,rgba(255,45,170,.16),rgba(0,212,255,.08));
  border:1px solid rgba(255,45,170,.35);
}
.fan-t3-draft-banner .kicker{
  font-size:10px;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--fan-magenta);
}
.fan-t3-draft-banner .title{font-size:14px;font-weight:800;color:var(--white);flex:1}
.fan-t3-timer{
  font-variant-numeric:tabular-nums;font-weight:900;font-size:18px;color:var(--fan-cyan);
  min-width:48px;text-align:right;text-shadow:0 0 14px rgba(0,212,255,.4);
}
.fan-t3-timer.urgent{color:var(--put);animation:fanT3ScorePulse .8s ease infinite}
.fan-t3-pick-flash{animation:fanT3PickFlash .7s var(--fan-ease)}
@keyframes fanT3PickFlash{
  0%{background:rgba(255,45,170,.35)}
  100%{background:transparent}
}

/* ── Sprint 4: Franchise identity ────────────────────────────────────────── */
.fan-t3-stadium{
  position:relative;overflow:hidden;border-radius:18px;padding:20px 16px;margin-bottom:16px;
  border:1px solid rgba(255,45,170,.3);
  background:
    radial-gradient(120% 100% at 80% 0%,rgba(255,45,170,.22),transparent 50%),
    radial-gradient(80% 80% at 10% 100%,rgba(0,212,255,.12),transparent 50%),
    linear-gradient(165deg,rgba(17,21,32,.98),rgba(9,12,18,.98));
  box-shadow:var(--fan-glow);
}
.fan-t3-stadium::after{
  content:"";position:absolute;inset:auto 0 0 0;height:40%;
  background:linear-gradient(0deg,rgba(0,0,0,.35),transparent);pointer-events:none;
}
.fan-t3-stadium .fan-t3-franchise{
  display:flex;align-items:center;gap:14px;position:relative;z-index:1;
}
.fan-t3-stadium h2{
  margin:0;font-size:24px;font-weight:900;letter-spacing:-.03em;color:var(--white);line-height:1.1;
}
.fan-t3-stadium .fan-t3-record{
  font-size:12px;color:var(--steel);margin-top:4px;font-variant-numeric:tabular-nums;
}
.fan-t3-rings{
  display:flex;gap:10px;flex-wrap:wrap;justify-content:center;padding:14px 8px;margin:8px 0 14px;
}
.fan-t3-ring{
  width:56px;height:56px;border-radius:50%;
  border:2px solid rgba(245,166,35,.55);
  background:radial-gradient(circle at 35% 30%,rgba(255,255,255,.2),transparent 40%),
    linear-gradient(145deg,rgba(245,166,35,.35),rgba(255,45,170,.2));
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 0 18px rgba(245,166,35,.25),0 4px 12px rgba(0,0,0,.35);
  font-size:11px;font-weight:900;color:#04121c;
}
.fan-t3-timeline-rail{
  position:relative;padding:8px 0 8px 18px;margin:10px 0 18px;
  border-left:2px solid rgba(255,45,170,.25);
}
.fan-t3-timeline-rail .ev{
  position:relative;padding:8px 0 12px 4px;
}
.fan-t3-timeline-rail .ev::before{
  content:"";position:absolute;left:-23px;top:12px;width:10px;height:10px;border-radius:50%;
  background:var(--fan-magenta);box-shadow:0 0 10px rgba(255,45,170,.55);
}
.fan-t3-timeline-rail .ev .when{font-size:10px;font-weight:800;color:var(--steel);letter-spacing:.06em;text-transform:uppercase}
.fan-t3-timeline-rail .ev .what{font-size:13px;font-weight:700;color:var(--white);margin-top:2px}
#fan-hq-ov .fan-t3-badge,#fan-hq-ov [style*="border-radius:12px"][style*="text-align:center"]{
  transition:transform .16s var(--fan-ease),border-color .16s;
}
#fan-hq-ov .fan-t3-badge:hover{transform:translateY(-3px) scale(1.02)}

/* ── Sprint 5: Player scouting terminal ──────────────────────────────────── */
#fan-player-ov .fan-t3-scout,
.fan-t3-scout{
  max-width:760px;margin:0 auto;
}
.fan-t3-scout-head{
  display:flex;align-items:center;gap:14px;padding:16px;margin-bottom:14px;border-radius:16px;
  border:1px solid rgba(255,45,170,.28);
  background:linear-gradient(135deg,rgba(255,45,170,.14),rgba(0,212,255,.06));
  box-shadow:var(--fan-glow);
}
.fan-t3-meters{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0}
.fan-t3-meter{
  background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:12px;
}
.fan-t3-meter .lbl{
  font-size:9px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--steel);margin-bottom:6px;
}
.fan-t3-meter .track{
  height:8px;border-radius:999px;background:rgba(255,255,255,.06);overflow:hidden;
}
.fan-t3-meter .fill{
  height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--fan-cyan),var(--fan-violet),var(--fan-magenta));
  box-shadow:0 0 10px rgba(0,212,255,.35);
  transition:width .8s var(--fan-ease-out);
}
.fan-t3-meter .val{
  font-size:18px;font-weight:900;color:var(--white);margin-top:6px;font-variant-numeric:tabular-nums;
}
.fan-t3-heat{
  display:grid;grid-template-columns:repeat(8,1fr);gap:4px;margin:10px 0;
}
.fan-t3-heat i{
  aspect-ratio:1;border-radius:4px;
  background:rgba(255,45,170,.08);border:1px solid rgba(255,255,255,.04);
}
.fan-t3-heat i.h1{background:rgba(255,45,170,.18)}
.fan-t3-heat i.h2{background:rgba(255,45,170,.32)}
.fan-t3-heat i.h3{background:rgba(255,45,170,.5);box-shadow:0 0 8px rgba(255,45,170,.35)}
.fan-t3-heat i.h4{background:linear-gradient(135deg,var(--fan-magenta),var(--fan-cyan));box-shadow:0 0 10px rgba(0,212,255,.35)}
#fan-player-ov [style*="border-radius:11px"][style*="text-align:center"]{
  transition:transform .14s var(--fan-ease),border-color .15s;
}
#fan-player-ov [style*="border-radius:11px"][style*="text-align:center"]:hover{
  transform:translateY(-2px);border-color:rgba(255,45,170,.4) !important;
}

/* ── Sprint 6: League social ─────────────────────────────────────────────── */
.fan-t3-chat-shell{max-width:760px;margin:0 auto}
.fan-t3-chat-msg{
  display:flex;gap:9px;align-items:flex-start;padding:10px 8px;border-radius:12px;
  border-bottom:none !important;margin-bottom:6px;
  background:rgba(255,255,255,.02);transition:background .14s;
}
.fan-t3-chat-msg:hover{background:rgba(255,45,170,.05)}
.fan-t3-chat-msg.mine{
  background:linear-gradient(90deg,rgba(255,45,170,.1),transparent);
  border:1px solid rgba(255,45,170,.18);
}
.fan-t3-reacts{display:flex;gap:6px;margin-top:6px;flex-wrap:wrap}
.fan-t3-react{
  font-size:11px;font-weight:700;color:var(--steel);border:1px solid var(--line);
  background:var(--panel2);border-radius:999px;padding:2px 8px;cursor:pointer;
  transition:border-color .14s,color .14s,transform .12s;
}
.fan-t3-react:hover{border-color:var(--fan-magenta);color:var(--white);transform:translateY(-1px)}
.fan-t3-react.on{border-color:var(--fan-magenta);color:var(--fan-magenta);background:rgba(255,45,170,.1)}
.fan-t3-recap{
  border-radius:16px;padding:14px 16px;margin:12px 0;
  border:1px solid rgba(255,45,170,.25);
  background:linear-gradient(160deg,rgba(255,45,170,.1),rgba(0,212,255,.05));
  box-shadow:var(--fan-glow);
}
.fan-t3-recap .kicker{font-size:10px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--fan-magenta)}
.fan-t3-recap h3{margin:4px 0 6px;font-size:16px;font-weight:800;color:var(--white)}
.fan-t3-poll{
  border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0;background:var(--panel2);
}
.fan-t3-poll .opt{
  display:flex;align-items:center;gap:8px;padding:8px 10px;margin-top:6px;border-radius:10px;
  border:1px solid var(--line);cursor:pointer;transition:border-color .14s,background .14s;
}
.fan-t3-poll .opt:hover{border-color:rgba(255,45,170,.4);background:rgba(255,45,170,.06)}

/* Desk hero / empty / toast */
#fantasy-section .fan-t3-hero{
  position:relative;overflow:hidden;border-radius:18px;padding:22px 20px;margin-bottom:14px;
  border:1px solid rgba(255,45,170,.32);
  background:
    radial-gradient(90% 120% at 100% 0%,rgba(255,45,170,.22),transparent 55%),
    radial-gradient(70% 100% at 0% 100%,rgba(0,212,255,.1),transparent 50%),
    linear-gradient(165deg,rgba(17,21,32,.98),rgba(9,12,18,.98));
  box-shadow:var(--fan-glow);
}
#fantasy-section .fan-t3-cta{
  margin-top:15px;background:linear-gradient(120deg,var(--fan-magenta),#c026a3);
  color:#04121c;border:none;border-radius:12px;padding:12px 20px;font-size:13.5px;font-weight:800;cursor:pointer;
  box-shadow:0 8px 24px rgba(255,45,170,.35);transition:transform .14s var(--fan-ease),box-shadow .16s;
}
#fantasy-section .fan-t3-cta:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(255,45,170,.45)}
.fan-t3-empty{
  text-align:center;padding:28px 16px;border:1px dashed rgba(255,45,170,.28);border-radius:var(--fan-radius);
  background:linear-gradient(180deg,rgba(255,45,170,.06),transparent);
}
.fan-t3-toast{
  position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom,0px));
  transform:translateX(-50%) translateY(12px);z-index:10060;
  background:linear-gradient(135deg,rgba(17,21,32,.96),rgba(9,12,18,.98));
  border:1px solid rgba(255,45,170,.4);border-radius:999px;padding:10px 18px;
  font-size:12.5px;font-weight:700;color:var(--white);
  box-shadow:0 12px 32px rgba(0,0,0,.45),0 0 20px rgba(255,45,170,.15);
  opacity:0;pointer-events:none;transition:opacity .22s,transform .28s var(--fan-ease);
  max-width:min(92vw,380px);text-align:center;
}
.fan-t3-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}
canvas.fan-confetti,canvas.fan-t3-fx{position:fixed;inset:0;width:100%;height:100%;pointer-events:none;z-index:99999}

/* Row hover polish */
#fan-portal-ov .fan-t3-frame [style*="display:flex"][style*="padding"]:hover{
  background:rgba(255,45,170,.04);border-radius:10px;
}

@media (min-width:1024px){
  #fan-portal-ov .fan-t3-frame{padding:20px 22px 32px}
  #fan-portal-ov .fan-t3-score{font-size:34px}
  .fan-t3-meters{grid-template-columns:1fr 1fr 1fr 1fr}
}
@media (max-width:640px){
  #fan-portal-ov .fan-t3-score{font-size:24px}
  .fan-t3-meters{grid-template-columns:1fr 1fr}
  #fantasy-section .fan-t3-hero h2{font-size:22px}
}
#fan-portal-ov button:focus-visible,#fan-hq-ov button:focus-visible,#fan-player-ov button:focus-visible{
  outline:2px solid var(--fan-cyan);outline-offset:2px;
}
@media (prefers-reduced-motion:reduce){
  #fan-portal-ov .fan-t3-shell,.fan-t3-mc,.fan-t3-result,#fan-hq-ov.fan-t3-on{animation:none}
  #fan-portal-ov .fan-t3-frame > *{animation:none}
  .fan-t3-mc::before,.fan-t3-score.fan-t3-pulse,.fan-t3-momentum span,
  #fan-portal-ov .fan-t3-on-clock,.fan-t3-timer.urgent,.fan-t3-pick-flash{animation:none !important}
  .fan-t3-live-pill .dot{animation:none}
}

/* ═══════════════════════════════════════════════════════════════════════════
   HOUSE-DISCIPLINE RECONCILIATION (owner 2026-07-19) — conform the Fantasy
   Terminal to the Markets/Politics + /nvda bar. Keep the magenta ACCENT (the
   house fantasy tint) but drop the heavy glass / neon-glow / saturation so
   Fantasy reads as the same product, not a separate app. Every rule is scoped
   to #fan-*-ov / #fantasy-section — it CANNOT touch /nvda or Politics. Matches
   the original selectors' specificity + sits last, so it wins by source order.
   ═══════════════════════════════════════════════════════════════════════════ */
:root{ --fan-glow:0 6px 20px rgba(0,0,0,.30),0 1px 0 rgba(255,255,255,.02) inset; }

/* Content cards → house panel + thin --line hairline (no magenta glass gradient) */
#fan-portal-ov .fan-elev,#fan-hq-ov .fan-elev,#fan-portal-ov .fdr-panel,#fan-portal-ov .fan-tile,#fan-player-ov .fan-elev{
  background:var(--panel) !important;border:1px solid var(--line) !important;
  box-shadow:0 4px 16px rgba(0,0,0,.26) !important;
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;
}
#fan-portal-ov .fan-elev:hover,#fan-portal-ov .fan-tile:hover{
  border-color:rgba(255,45,170,.30) !important;box-shadow:0 8px 22px rgba(0,0,0,.32) !important;
}
/* Hero / feature cards → restrained house .g-hero (panel base · soft accent glow · tinted border) */
#fan-portal-ov .g-hero,#fan-hq-ov .g-hero,#fantasy-section .fan-t3-hero,.fan-t3-scout-head,.fan-t3-recap,.fan-t3-stadium{
  background:var(--panel) !important;border:1px solid rgba(255,45,170,.28) !important;
  box-shadow:0 8px 28px rgba(255,45,170,.08) !important;
  -webkit-backdrop-filter:none !important;backdrop-filter:none !important;
}
/* Sticky header + dock → drop the saturation boost + magenta border (house chrome, not lit glass) */
#fan-portal-ov .fan-t3-header,#fan-hq-ov .fan-t3-header,#fan-player-ov .fan-t3-header{
  background:linear-gradient(180deg,rgba(255,45,170,.05),rgba(9,12,18,.92) 72%) !important;
  -webkit-backdrop-filter:blur(16px) !important;backdrop-filter:blur(16px) !important;
  border-bottom:1px solid var(--line) !important;
}
#fan-portal-ov .fan-t3-dock{
  -webkit-backdrop-filter:blur(16px) !important;backdrop-filter:blur(16px) !important;
  border-top:1px solid var(--line);
}
/* Matchup terminal → calm the twin radial magenta wash to one restrained tint on panel */
.fan-t3-mc{
  background:radial-gradient(80% 120% at 0% 40%,rgba(255,45,170,.06),transparent 55%),linear-gradient(180deg,var(--panel),rgba(9,12,18,.98)) !important;
  border:1px solid var(--line) !important;
}
.fan-t3-draft-banner,.fan-t3-livebar{ background:var(--panel2) !important;border:1px solid var(--line) !important; }
/* One solid-accent CTA (house pattern) — keep the fill, drop the magenta bloom */
#fantasy-section .fan-t3-cta{ box-shadow:0 6px 16px rgba(0,0,0,.30) !important; }
#fantasy-section .fan-t3-cta:hover{ box-shadow:0 8px 20px rgba(0,0,0,.36) !important; }
/* Drop the decorative neon glows on data (scores · timer · meters · rings · heat · win-prob) */
.fan-t3-score.lead{ text-shadow:none; }
.fan-t3-timer{ text-shadow:none; }
.fan-t3-wp > i,.fan-t3-wp > span{ box-shadow:none; }
.fan-t3-meter .fill{ box-shadow:none; }
.fan-t3-heat i.h3,.fan-t3-heat i.h4{ box-shadow:none; }
.fan-t3-timeline i.now{ box-shadow:none; }
.fan-t3-ring{ box-shadow:0 4px 12px rgba(0,0,0,.35);border-color:rgba(245,166,35,.40); }
.fan-t3-brand-mark{ box-shadow:0 0 0 1px rgba(255,255,255,.10),0 4px 12px rgba(0,0,0,.30) !important; }
.fan-t3-toast{ box-shadow:0 12px 32px rgba(0,0,0,.45) !important; }
/* Remove the bolted-on standalone ticker/marquee (no other terminal has one) — also cuts the
   top-of-frame insert that shoves content down on load (a chunk of the CLS). */
.fan-t3-pulse-rail{ display:none !important; }
