/* ══════════════════════════════════════════════════════════════════════
   OddsMunch NFL — the terminal world, shared by every NFL page.
   Bezel + scanlined screen, pixel-mono labels, phosphor-green liveness,
   file accents. Scoped to body.term. Table structure is untouched: this
   file changes type and chrome only — never overflow, th fills, collapse,
   or the sticky offsets (the bezel rides through --nav-h instead).
   ══════════════════════════════════════════════════════════════════════ */
@font-face { font-family: 'VT323'; font-style: normal; font-weight: 400;
  font-display: swap; src: url('/static/nfl/fonts/VT323-400-latin.woff2') format('woff2'); }

body.term{
  --mono:'VT323','Courier New',monospace;
  --f1:#FF7A45; --f2:#FF5C78; --f3:#FFD23F; --f4:#4FDB94; --f5:#45C4FF; --f6:#8B7CFF; --f7:#FF6BD6;
  --bezel:#030409; --screen:#07080F; --phos:#6FE8BC; --gridc:rgba(200,204,255,.12);
  --frame:18px; --rainbow:linear-gradient(90deg,#FF7A45,#FF5C78 30%,#8B7CFF 62%,#45C4FF);
  --nav-h:calc(var(--frame) + 56px);   /* sticky table headers derive from this */
  background:var(--bezel); padding:var(--frame); min-height:100vh;
}
body.term::before{content:'';position:fixed;inset:var(--frame);border-radius:6px;z-index:0;pointer-events:none;
  background:
    radial-gradient(circle at 1px 1px, var(--gridc) 1px, transparent 1.6px) 0 0/28px 28px,
    radial-gradient(1200px 620px at 50% -12%, rgba(90,74,227,.11), transparent 62%),
    radial-gradient(700px 400px at 100% 100%, rgba(111,232,188,.05), transparent 60%),
    var(--screen);
  box-shadow:inset 0 0 140px rgba(0,0,0,.6);}
body.term::after{content:'';position:fixed;inset:var(--frame);border-radius:6px;z-index:900;pointer-events:none;
  background:
    repeating-linear-gradient(0deg, rgba(0,0,0,.16) 0 1px, transparent 1px 3px),
    repeating-linear-gradient(90deg, rgba(255,60,60,.035) 0 1px, rgba(60,255,120,.03) 1px 2px, rgba(60,120,255,.035) 2px 3px);}
body.term .wrap,body.term .footnote{position:relative;z-index:2;}
.mono{font-family:var(--mono);letter-spacing:.08em;text-transform:uppercase;font-weight:400;}

/* ── header ── */
/* the nav owns the top bezel band (its rect must start at the viewport top:
   the site-wide account chip only docks into a bar that does) */
body.term .nflnav{top:0;margin-top:calc(-1 * var(--frame));padding:var(--frame) 16px 0;height:calc(56px + var(--frame));
  gap:16px;box-sizing:border-box;border-radius:0;border-bottom:1px solid var(--gridc);
  background:linear-gradient(180deg,var(--bezel) 0 var(--frame),rgba(8,10,26,.82) var(--frame));}
body.term .nflnav .brand{border:1.5px solid rgba(237,239,255,.6);border-radius:9px;padding:7px 12px;
  box-shadow:0 0 0 3px var(--screen),0 0 0 4px rgba(237,239,255,.22);}
body.term .tab{font-family:var(--mono);font-size:17px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;padding:0 12px;}
body.term .tab.on::after{left:8px;right:8px;height:2px;background:var(--phos);box-shadow:0 0 10px rgba(111,232,188,.7);}
body.term .nav-upd{font-family:var(--mono);font-size:15px;letter-spacing:.08em;text-transform:uppercase;}
body.term .nav-upd.stale .pulse{background:var(--tx-sub);box-shadow:none;}
body.term .nav-upd.stale .pulse::after{content:none;}
/* browser surfaces belong to the terminal too */
body.term ::selection{background:rgba(111,232,188,.32);color:var(--tx);}
body.term input{caret-color:var(--phos);}
body.term .tblwrap{scrollbar-width:thin;scrollbar-color:rgba(111,232,188,.45) transparent;}

/* ── desk switcher: one terminal, two desks (MLB home + every NFL page) ── */
.desk{display:inline-flex;flex:0 0 auto;border:1px solid var(--gridc);border-radius:4px;overflow:hidden;
  font-size:15px;letter-spacing:.12em;line-height:1;}
.desk a{display:flex;align-items:center;height:30px;padding:0 11px;color:var(--tx-mut);text-decoration:none;
  transition:color .15s,background-color .15s;}
.desk a+a{border-left:1px solid var(--gridc);}
.desk a:hover{color:var(--tx);}
.desk a.on{color:var(--phos);background:rgba(111,232,188,.14);cursor:default;}
.desk a:focus-visible{outline:2px solid var(--acc-border);outline-offset:-2px;}

[data-theme="day"] .desk a.on{background:rgba(11,125,92,.12);}
@media (max-width:760px){ .desk a{padding:0 9px;height:28px;} body.term.landing .desk{margin-right:auto;} }

/* ── page head + sections: every page is a numbered file ── */
body.term h1 .fcode{display:inline-block;margin-left:14px;vertical-align:middle;font-family:var(--mono);font-weight:400;
  font-size:16px;letter-spacing:.16em;color:var(--fx,var(--phos));text-shadow:0 0 12px color-mix(in srgb,var(--fx,var(--phos)) 45%,transparent);}
body.term h2{font-family:var(--mono);font-weight:400;font-size:19px;letter-spacing:.12em;color:var(--phos);
  text-shadow:0 0 14px rgba(111,232,188,.45);border-bottom:1px solid rgba(111,232,188,.3);padding-bottom:6px;}

/* ── controls ── */
body.term .filter input{border-radius:4px;border-color:var(--gridc);background:rgba(10,12,28,.7);}
body.term .filter input:focus{border-color:rgba(111,232,188,.6);box-shadow:0 0 0 3px rgba(111,232,188,.12);}
body.term .seg{border-radius:4px;border-color:var(--gridc);}
body.term .seg button{font-family:var(--mono);font-size:16px;font-weight:400;letter-spacing:.08em;text-transform:uppercase;}
body.term .seg button.on{background:rgba(111,232,188,.14);color:var(--phos);}
body.term .count-note,body.term .legend{font-family:var(--mono);font-size:15px;letter-spacing:.08em;text-transform:uppercase;}

/* ── tables: type and chrome only ── */
body.term .tblcard{border-color:var(--gridc);border-radius:6px;}
body.term table.data th{font-family:var(--mono);font-size:15px;font-weight:400;letter-spacing:.1em;}
body.term table.data th:first-child{border-top-left-radius:5px;}
body.term table.data th:last-child{border-top-right-radius:5px;}
body.term table.data th.sorted .arr{color:var(--phos);}
body.term .pos,body.term .badge,body.term .mcard .mbook{font-family:var(--mono);font-size:13px;font-weight:400;letter-spacing:.1em;}
body.term .howto,body.term .mcard{border-color:var(--gridc);}
body.term .mcard{border-radius:6px;}

/* ── states ── */
body.term .empty .big,body.term .darkcard .big{font-family:var(--mono);font-weight:400;letter-spacing:.14em;
  color:var(--phos);text-shadow:0 0 14px rgba(111,232,188,.45);}
body.term .darkcard{border:1px dashed var(--gridc);border-bottom:3px solid var(--fx,var(--f7));border-radius:6px;
  background:linear-gradient(180deg,rgba(16,19,43,.92),rgba(10,12,28,.92));}

/* ── cursor ring (fine pointers, term.js) + phosphor sweep ── */
.cur{position:fixed;left:-8px;top:-8px;pointer-events:none;z-index:6000;opacity:0;mix-blend-mode:screen;will-change:transform;transition:opacity .3s;}
.cur i{display:block;width:16px;height:16px;border:1.5px solid var(--phos);border-radius:50%;transition:transform .2s,border-color .2s;}
.cur.on{opacity:.9;} .cur.big i{transform:scale(2.3);border-color:#fff;}
.sweep{display:none;}
@media (prefers-reduced-motion: no-preference){
  .sweep{display:block;position:fixed;left:var(--frame);right:var(--frame);top:0;height:140px;z-index:901;pointer-events:none;
    background:linear-gradient(180deg,transparent,rgba(111,232,188,.018) 50%,transparent);animation:sweep 9s linear infinite;}
  @keyframes sweep{from{transform:translateY(-140px)}to{transform:translateY(100vh)}}
}

/* ── responsive ── */
@media (max-width:760px){
  body.term{--frame:8px;--nav-h:calc(var(--frame) + 54px);}
  body.term .nflnav{height:calc(54px + var(--frame));gap:10px;padding:var(--frame) 10px 0;}
  body.term .nflnav .brand{padding:5px 9px;}
  body.term .tab{font-size:16px;padding:0 10px;}
  body.term .tabs{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 28px),transparent);}
  body.term .nav-upd{display:flex;padding-left:6px;}   /* the dot stays so the account chip can dock inline */
  body.term .nav-upd .upd-t{display:none;}
  body.term .tblwrap{max-height:calc(100dvh - var(--nav-h) - 28px);}
}
