
/* ============================================================
   THEME SYSTEM
   Every color in this stylesheet resolves through the semantic
   tokens below. A theme only has to redefine the semantic layer;
   the legacy names (--felt, --gold, --parchment ...) are aliases
   kept so the existing 900 lines of CSS keep working untouched.
   Set the active theme in data/theme.js.
   ============================================================ */
:root{
  /* --- semantic layer: BROADCAST (default, NFL-network look) --- */
  --t-ink:#0B1016;          /* body text            */
  --t-surface:#12202E;      /* primary dark surface */
  --t-surface-deep:#0A1219; /* deepest chrome       */
  --t-accent:#0E7C7B;       /* primary accent       */
  --t-accent-bright:#3FC6C4;
  --t-accent-dim:#0A5A59;
  --t-bg:#EEF1F4;           /* page background      */
  --t-card:#FFFFFF;
  --t-neg:#C8102E;          /* losses / down        */
  --t-pos:#1B7F3B;          /* wins / up            */
  --t-rule:rgba(11,16,22,.14);
  --t-stripe:transparent;   /* decorative header stripe */
  /* metal: brushed steel that picks up a hint of the accent hue */
  --t-metal-1:#2B3A4B; --t-metal-2:#16222F; --t-metal-3:#3D5064; --t-metal-edge:#6E8399;
  --t-glow:rgba(63,198,196,.55);

  /* --- legacy aliases: do not remove, the rest of the file uses these --- */
  --ink:var(--t-ink);
  --felt:var(--t-surface);
  --felt-deep:var(--t-surface-deep);
  --gold:var(--t-accent);
  --gold-bright:var(--t-accent-bright);
  --gold-dim:var(--t-accent-dim);
  --parchment:var(--t-bg);
  --card:var(--t-card);
  --rust:var(--t-neg);
  --sage:var(--t-pos);
  --rule:var(--t-rule);

  --display:'Bricolage Grotesque','Archivo Black','Helvetica Neue Condensed',Impact,system-ui,sans-serif;
  --body:'Hanken Grotesk','Segoe UI',system-ui,-apple-system,Helvetica,Arial,sans-serif;
  --mono:'JetBrains Mono',ui-monospace,SFMono-Regular,'Roboto Mono',Menlo,monospace;
}

/* ---------- TRIBUTE WEEK: red, white and blue ----------
   A patriotic tribute palette. Inspired by the red/navy/cream
   look of American BBQ-joint signage; no third-party logo,
   wordmark or trademark is reproduced anywhere on the site. */
[data-league-theme="tribute"]{
  --t-ink:#131A26;
  --t-surface:#1B2A4A;
  --t-surface-deep:#0F1A30;
  --t-accent:#B22234;        /* Old Glory red   */
  --t-accent-bright:#E4574C;
  --t-accent-dim:#7C1622;
  --t-bg:#F4F1EA;
  --t-card:#FFFFFF;
  --t-neg:#9E1B2F;
  --t-pos:#1F6B4A;
  --t-rule:rgba(19,26,38,.16);
  --t-stripe:repeating-linear-gradient(90deg,#B22234 0 46px,#FFFFFF 46px 92px,#1B2A4A 92px 138px);
  --t-metal-1:#33405E; --t-metal-2:#151F38; --t-metal-3:#4A5B80; --t-metal-edge:#7C8FB8;
  --t-glow:rgba(228,87,76,.5);
}

/* ---------- HERITAGE: the original record-book green ---------- */
[data-league-theme="heritage"]{
  --t-ink:#0A1A10;
  --t-surface:#14331F;
  --t-surface-deep:#0C2214;
  --t-accent:#C8A24A;
  --t-accent-bright:#E6C878;
  --t-accent-dim:#7A6329;
  --t-bg:#EFEADB;
  --t-card:#FBF9F2;
  --t-neg:#8C3A2E;
  --t-pos:#3F6B44;
  --t-rule:rgba(10,26,16,.16);
  --t-stripe:transparent;
  --t-metal-1:#2E3A28; --t-metal-2:#16210F; --t-metal-3:#43523A; --t-metal-edge:#6E7F5E;
  --t-glow:rgba(230,200,120,.5);
}

/* ---------- PERSIA: teal and gold, Persian-tile inspired ---------- */
[data-league-theme="persia"]{
  --t-ink:#0F2422;
  --t-surface:#0E3B36;
  --t-surface-deep:#082521;
  --t-accent:#0F7A6A;
  --t-accent-bright:#3FD9C4;
  --t-accent-dim:#0A5A4E;
  --t-bg:#F6EFDD;
  --t-card:#FFFDF6;
  --t-neg:#B8203C;
  --t-pos:#1E9E8B;
  --t-rule:rgba(15,36,34,.16);
  --t-stripe:repeating-linear-gradient(45deg,#1E9E8B 0 26px,#D8AE4C 26px 30px,#0E3B36 30px 56px,#D8AE4C 56px 60px);
  --t-metal-1:#155E54; --t-metal-2:#082521; --t-metal-3:#1E7D70; --t-metal-edge:#4FB3A3;
  --t-glow:rgba(63,217,196,.5);

}

/* TERMINATOR — gunmetal and Skynet red, cold steel paper */
[data-league-theme="terminator"]{
  --t-ink:#0B0E12;
  --t-surface:#141A21;
  --t-surface-deep:#07090C;
  --t-accent:#C8202B;
  --t-accent-bright:#FF4A4A;
  --t-accent-dim:#8E1119;
  --t-bg:#E6E9ED;
  --t-card:#F8F9FB;
  --t-neg:#C8202B;
  --t-pos:#1C8FB0;
  --t-rule:rgba(11,14,18,.16);
  --t-stripe:repeating-linear-gradient(135deg,#C8202B 0 16px,#0B0E12 16px 32px);
  --t-metal-1:#3A4450; --t-metal-2:#0E1318; --t-metal-3:#5A6675; --t-metal-edge:#C9D3DD;
  --t-glow:rgba(255,74,74,.55);
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body,html{overflow-x:hidden;max-width:100%}
/* clip (not hidden) so the page isn't a scroll container — hidden silently breaks the sticky nav */
@supports (overflow:clip){body,html{overflow-x:clip}}
body{
  margin:0;
  background:var(--parchment);
  color:var(--ink);
  font-family:var(--body);
  font-size:17px;
  line-height:1.6;
  background-image:radial-gradient(circle at 50% 0,rgba(20,51,31,.06),transparent 60%);
}
/* hidden always wins: several components set display on their class, which would
   otherwise override the hidden attribute (it broke the Reveal button and Punch countdown) */
[hidden]{display:none !important}
.wrap{max-width:1120px;margin:0 auto;padding:0 22px}
a{color:var(--felt)}
:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:2px}

/* ---------- masthead ---------- */
.masthead{background:var(--felt-deep);color:var(--parchment);padding:38px 0 30px;border-bottom:3px solid var(--gold)}
.crest{text-align:center}
.crest .sub{font-family:var(--mono);font-size:clamp(9px,2.2vw,12px);letter-spacing:.3em;text-transform:uppercase;color:rgba(239,234,219,.72)}
/* ---------- hero: ring shelf ---------- */
.hero{background:var(--felt);color:var(--parchment);padding:44px 0 52px}
.hero .thesis{font-family:var(--display);font-size:clamp(24px,4.6vw,40px);line-height:1.22;text-align:center;max-width:20ch;margin:0 auto 6px;color:#fff}
.hero .thesis em{color:var(--gold-bright);font-style:italic}
.hero .thesis-sub{text-align:center;color:rgba(239,234,219,.66);font-size:15px;max-width:56ch;margin:14px auto 0}
.shelf{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:34px auto 0;max-width:900px}
.holder{
  border:1px solid rgba(200,162,74,.42);background:rgba(0,0,0,.19);
  padding:12px 15px 11px;min-width:112px;text-align:center;
  opacity:0;transform:translateY(12px);animation:rise .55s ease forwards;
}
.holder .nm{font-family:var(--display);font-size:19px;font-weight:600;letter-spacing:.02em}
.holder .rings{margin-top:7px;letter-spacing:.16em;font-size:14px;color:var(--gold-bright)}
@keyframes rise{to{opacity:1;transform:none}}
.chasing{text-align:center;font-family:var(--mono);font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:var(--gold-dim);margin:30px 0 12px}

/* ---------- sections ---------- */
section{padding:66px 0}
section:nth-of-type(even){background:linear-gradient(180deg,rgba(20,51,31,.045),rgba(20,51,31,.015))}
.eyebrow{display:flex;align-items:center;gap:16px;margin:0 0 8px}
.eyebrow::after{content:"";flex:1;height:1px;background:var(--rule)}
.eyebrow span{font-family:var(--mono);font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--felt);opacity:.72}
h2{font-family:var(--display);font-size:clamp(30px,5vw,46px);font-weight:600;margin:.1em 0 .3em;letter-spacing:.01em}
.lede{max-width:62ch;color:rgba(10,26,16,.74);margin:0 0 30px}

/* ---------- throne room ---------- */
.thrones{display:grid;grid-template-columns:repeat(auto-fit,minmax(232px,1fr));gap:16px}
.throne{background:var(--card);border:1px solid var(--rule);border-top:3px solid var(--felt);padding:20px 20px 18px}
.throne.bad{border-top-color:var(--rust)}
.throne .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:rgba(10,26,16,.5)}
.throne .who{font-family:var(--display);font-size:32px;font-weight:600;line-height:1.1;margin:8px 0 6px}
.throne.bad .who{color:var(--rust)}
.throne .det{font-size:14.5px;color:rgba(10,26,16,.66);line-height:1.45}
.throne .det b{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--ink)}

/* ---------- ladder ---------- */
.tablewrap{overflow-x:auto;border:1px solid var(--rule);background:var(--card)}
table{border-collapse:collapse;width:100%;min-width:660px}
thead th{touch-action:manipulation;
  background:var(--felt);color:var(--gold-bright);font-family:var(--mono);
  font-size:10px;letter-spacing:.16em;text-transform:uppercase;font-weight:500;
  padding:11px 10px;text-align:right;white-space:nowrap;cursor:pointer;user-select:none;
}
thead th:first-child,thead th:nth-child(2){text-align:left}
thead th[aria-sort]{color:#fff}
thead th .car{opacity:.45;font-size:9px;margin-left:4px}
tbody td{padding:11px 10px;text-align:right;font-family:var(--mono);font-size:14px;border-top:1px solid rgba(10,26,16,.09)}
tbody td:first-child{text-align:left;color:rgba(10,26,16,.45);font-size:12px;width:44px}
tbody td.nm{text-align:left;font-family:var(--display);font-size:19px;font-weight:600}
tbody tr:hover{background:rgba(200,162,74,.09)}
tr.gold td{background:rgba(200,162,74,.16)}
tr.gold:hover td{background:rgba(200,162,74,.22)}
tr.stool td{background:rgba(140,58,46,.08)}
td.pos{color:var(--sage);font-weight:600}
td.neg{color:var(--rust);font-weight:600}
td.rings{color:var(--gold-dim);font-weight:600}
.msort{display:none;margin:0 0 14px}
.msort select{max-width:320px}
.msort .cap{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(10,26,16,.5);margin-bottom:6px}
.msort select{background:var(--card);border:1px solid var(--rule);color:var(--ink);
  background-image:linear-gradient(45deg,transparent 50%,var(--felt) 50%),linear-gradient(135deg,var(--felt) 50%,transparent 50%);
  background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.method{font-size:13.5px;color:rgba(10,26,16,.6);margin:14px 0 0;font-style:italic}
.notecards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;margin-top:26px}
.note{border-left:3px solid var(--gold);padding:2px 0 2px 15px;font-size:14.5px;color:rgba(10,26,16,.78)}
.note b{font-family:var(--display);font-size:17px}

/* ---------- luck meter ---------- */
.luck{background:var(--card);border:1px solid var(--rule);padding:8px 0}
.lrow{display:grid;grid-template-columns:88px 1fr 128px;align-items:center;gap:12px;padding:9px 18px;border-bottom:1px solid rgba(10,26,16,.07)}
.lrow:last-child{border-bottom:0}
.lrow .who{font-family:var(--display);font-size:18px;font-weight:600}
.bars{position:relative;height:22px}
.bars::before{content:"";position:absolute;left:50%;top:-4px;bottom:-4px;width:1px;background:rgba(10,26,16,.22)}
.bar{position:absolute;top:3px;height:16px;background:var(--rust)}
.bar.p{background:var(--sage)}
.bar span{position:absolute;top:0;line-height:16px;font-family:var(--mono);font-size:11px;color:rgba(10,26,16,.6)}
.bar.n span{right:calc(100% + 6px)}
.bar.p span{left:calc(100% + 6px)}
.verdict{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;text-align:right}
.verdict.rob{color:var(--sage);font-weight:600}
.verdict.waste{color:var(--rust);font-weight:600}
.verdict.mid{color:rgba(10,26,16,.45)}
.corr{margin-top:26px;background:var(--felt);color:var(--parchment);padding:26px 26px 22px;display:flex;flex-wrap:wrap;align-items:center;gap:26px}
.corr.corr2{margin-top:12px;background:rgba(20,51,31,.92);border:1px solid rgba(200,162,74,.35)}
.corr .big.small{font-size:clamp(30px,6vw,46px)}
.corrnote{margin-top:14px;font-size:14px;font-style:italic;color:rgba(10,26,16,.6)}
.corr .big{font-family:var(--mono);font-size:clamp(38px,8vw,62px);color:var(--gold-bright);line-height:1;font-weight:500}
.corr .txt{flex:1;min-width:260px;font-size:15px;color:rgba(239,234,219,.82)}
.corr .txt b{color:#fff}

/* ---------- ledger ---------- */
.ledger{display:grid;grid-template-columns:repeat(auto-fit,minmax(184px,1fr));gap:12px}
.yr{background:var(--card);border:1px solid var(--rule);padding:16px 16px 14px;position:relative}
.yr .y{font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--gold-dim);font-weight:600}
.yr .rec{font-family:var(--display);font-size:30px;font-weight:600;margin:4px 0 2px}
.yr .by{font-size:14.5px;color:rgba(10,26,16,.66)}
.yr .tag{position:absolute;top:14px;right:14px;font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:rgba(10,26,16,.36)}

/* ---------- tape ---------- */
.tape{background:var(--felt-deep);padding:0;border:1px solid rgba(200,162,74,.3)}
.tape video{display:block;width:100%;height:auto;background:#000}
.tape .cap{padding:16px 20px;font-size:14px;color:rgba(239,234,219,.7);display:flex;flex-wrap:wrap;gap:8px 20px;justify-content:space-between}
.tape .cap b{color:var(--gold-bright);font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase}
.videofallback{display:none;padding:34px 24px;text-align:center;color:rgba(239,234,219,.8);font-size:15px}
.videofallback code{font-family:var(--mono);font-size:13px;color:var(--gold-bright);background:rgba(0,0,0,.3);padding:2px 6px}
.tape.failed video{display:none}
.tape.failed .videofallback{display:block}

/* ---------- gauntlet ---------- */
#gauntlet{background:var(--felt);color:var(--parchment);border-top:3px solid var(--gold);border-bottom:3px solid var(--gold)}
#gauntlet .eyebrow::after{background:rgba(200,162,74,.3)}
#gauntlet .eyebrow span{color:var(--gold);opacity:1}
#gauntlet h2{color:#fff}
#gauntlet .lede{color:rgba(239,234,219,.72)}
.panel{background:rgba(0,0,0,.2);border:1px solid rgba(200,162,74,.28);padding:20px}
.panel + .panel{margin-top:14px}
.panel h3{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin:0 0 14px;font-weight:500}
.panel h3 .h3note{float:right;letter-spacing:.08em;color:rgba(239,234,219,.4);text-transform:none;font-size:10px}
.btn.ghost{border-color:rgba(200,162,74,.4);color:rgba(239,234,219,.6)}
.btn.ghost:hover:not(:disabled){background:rgba(200,162,74,.15);color:var(--gold-bright);border-color:var(--gold)}
.ctl{display:grid;grid-template-columns:repeat(auto-fit,minmax(214px,1fr));gap:14px;align-items:end}
label.fld{display:block}
label.fld .cap{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(239,234,219,.55);margin-bottom:6px}
input[type=text],select{
  width:100%;background:rgba(0,0,0,.32);border:1px solid rgba(200,162,74,.36);
  color:var(--parchment);font-family:var(--mono);font-size:14px;padding:10px 12px;border-radius:0;
}
select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--gold) 50%),linear-gradient(135deg,var(--gold) 50%,transparent 50%);background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
input[type=text]::placeholder{color:rgba(239,234,219,.32)}
.btn{
  font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;
  padding:11px 20px;border:1px solid var(--gold);background:transparent;color:var(--gold-bright);
  cursor:pointer;transition:background .18s,color .18s;border-radius:0;
}
.btn:hover:not(:disabled){background:var(--gold);color:var(--felt-deep)}
.btn:disabled{opacity:.38;cursor:not-allowed}
.btn.primary{background:var(--gold);color:var(--felt-deep);font-weight:600}
.btn.primary:hover:not(:disabled){background:var(--gold-bright)}
.btn.sm{padding:10px 15px;font-size:10.5px;letter-spacing:.12em}
.btnrow{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px;align-items:center}
.lock{font-family:var(--mono);font-size:12px;color:rgba(239,234,219,.6);margin-top:14px;line-height:1.7}
.lock b{color:var(--gold-bright);font-size:14px;letter-spacing:.1em}

/* roster chips */
.chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:14px}
.chip{display:inline-flex;align-items:center;gap:8px;background:rgba(0,0,0,.28);border:1px solid rgba(200,162,74,.3);padding:6px 8px 6px 12px;font-size:15px;font-family:var(--body)}
.chip .odds{font-family:var(--mono);font-size:10.5px;color:var(--gold);letter-spacing:.04em}
.chip button{background:none;border:0;color:rgba(239,234,219,.45);cursor:pointer;
  font-size:17px;line-height:1;padding:8px 10px;margin:-6px -4px -6px 0;min-width:34px}
.chip button:hover{color:var(--rust)}
.addrow{display:flex;gap:8px;max-width:380px}

/* field */
.fieldwrap{margin-top:16px;position:relative;background:linear-gradient(180deg,#0E2A18,#0A2113);border:1px solid rgba(200,162,74,.28);overflow:hidden}
.fieldwrap{--gutter:98px}
.yardlines{position:absolute;top:0;bottom:0;left:var(--gutter);right:30px;pointer-events:none}
.yardlines i{position:absolute;top:0;bottom:0;width:1px;background:rgba(239,234,219,.09)}
.yardlines i.ten{background:rgba(239,234,219,.16)}
.yardlines i::after{content:attr(data-y);position:absolute;bottom:4px;left:4px;font-family:var(--mono);font-size:9px;color:rgba(239,234,219,.22)}
.endzone{position:absolute;top:0;bottom:0;right:0;width:26px;background:repeating-linear-gradient(45deg,rgba(200,162,74,.16) 0 6px,transparent 6px 12px);border-left:2px solid var(--gold)}
.lanes{position:relative;padding:10px 30px 10px var(--gutter)}
.lane{position:relative;height:30px;display:flex;align-items:center}
.lane + .lane{border-top:1px solid rgba(239,234,219,.05)}
.lane .tag{position:absolute;right:calc(100% + 10px);width:calc(var(--gutter) - 18px);text-align:right;font-family:var(--mono);font-size:11px;color:rgba(239,234,219,.55);z-index:3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.runner{
  position:absolute;left:0;width:28px;height:28px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  z-index:2;will-change:transform;overflow:visible;
}
.runner .rimg{width:28px;height:28px;border-radius:50%;object-fit:cover;display:block;
  border:2px solid rgba(239,234,219,.35);background:var(--felt-deep)}
.runner .noface{width:28px;height:28px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;background:var(--gold);color:var(--felt-deep);
  font-family:var(--mono);font-size:10px;font-weight:600}
.runner.lead .rimg,.runner.lead .noface{border-color:#fff;box-shadow:0 0 14px rgba(255,255,255,.7)}
.runner.lead{z-index:4}
.runner.fin .rimg,.runner.fin .noface{border-color:var(--gold-bright);box-shadow:0 0 16px rgba(230,200,120,.75)}
.runner.fin{z-index:5}
.runner .place{
  position:absolute;top:-7px;right:-7px;min-width:15px;height:15px;padding:0 2px;
  background:var(--gold-bright);color:var(--felt-deep);border-radius:8px;
  font-family:var(--mono);font-size:9px;font-weight:600;line-height:15px;text-align:center;
  opacity:0;transform:scale(.4);transition:opacity .2s,transform .2s}
.runner.fin .place{opacity:1;transform:scale(1)}
.lane.done .tag{color:var(--gold-bright)}
.callfeed p em{color:var(--gold-bright);font-style:italic}
.countdown{
  position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  background:rgba(10,33,19,.86);z-index:9;font-family:var(--display);
  font-size:clamp(50px,13vw,110px);color:var(--gold-bright);font-weight:800;letter-spacing:.06em;
}
.countdown.on{display:flex}

.gcols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:14px;align-items:start}
@media(max-width:820px){.gcols{grid-template-columns:minmax(0,1fr)}}
.callfeed{height:164px;overflow:hidden;display:flex;flex-direction:column;justify-content:flex-end;gap:7px;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 26%);mask-image:linear-gradient(180deg,transparent 0,#000 26%)}
.callfeed p{margin:0;font-size:14.5px;color:rgba(239,234,219,.78);animation:fadein .3s ease}
.callfeed p b{color:var(--gold-bright);font-family:var(--display);font-weight:600}
.callfeed .empty{color:rgba(239,234,219,.32);font-style:italic}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.board{list-style:none;margin:0;padding:0;counter-reset:pick}
.board li{
  display:grid;grid-template-columns:34px 1fr auto;gap:10px;align-items:center;
  padding:8px 10px;border-bottom:1px solid rgba(239,234,219,.07);animation:fadein .35s ease;
}
.board li .p{font-family:var(--mono);font-size:12px;color:var(--gold);letter-spacing:.06em}
.board li .n{font-family:var(--display);font-size:19px;font-weight:600;color:#fff}
.board li .t{font-family:var(--mono);font-size:10.5px;color:rgba(239,234,219,.4)}
.board li:first-child{background:rgba(200,162,74,.15)}
.board li:first-child .n{color:var(--gold-bright)}
.placeholder{color:rgba(239,234,219,.3);font-style:italic;padding:10px 0;font-size:14px}

.snake{margin-top:16px;font-family:var(--mono);font-size:12.5px;color:rgba(239,234,219,.6);line-height:1.9}
.snake b{color:var(--gold);letter-spacing:.16em;text-transform:uppercase;font-size:10px;display:block;margin-bottom:4px}
.copied{font-family:var(--mono);font-size:11px;color:var(--sage);letter-spacing:.1em}

/* footer */
footer{background:var(--felt-deep);color:rgba(239,234,219,.6);padding:46px 0 54px;font-size:14.5px}
footer h4{font-family:var(--mono);font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold);margin:0 0 12px;font-weight:500}
footer ol{margin:0;padding-left:20px}
footer li{margin-bottom:7px}
footer .cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:34px}
footer .sig{margin-top:38px;padding-top:20px;border-top:1px solid rgba(200,162,74,.2);font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:rgba(239,234,219,.34);text-align:center}

/* phone: the all-time ladder becomes cards (its cells carry data-label).
   Scoped to #ladder so other tables keep scrolling sideways instead. */
@media(max-width:700px){
  .msort{display:block}
  .ladderwrap{overflow:visible;border:0;background:transparent}
  #ladder{min-width:0;width:100%}
  #ladder thead{display:none}
  #ladder tbody tr{display:grid;grid-template-columns:repeat(3,1fr);gap:9px 8px;
    background:var(--card);border:1px solid var(--rule);padding:13px 15px;margin-bottom:9px}
  #ladder tbody tr.gold{border:2px solid var(--gold)}
  #ladder tbody tr.stool{border:1px solid rgba(140,58,46,.45)}
  #ladder tbody tr:hover,#ladder tr.gold td,#ladder tr.gold:hover td,#ladder tr.stool td{background:transparent}
  #ladder tbody td{border:0;padding:0;text-align:left;display:flex;flex-direction:column-reverse;
    align-items:flex-start;gap:2px;font-size:15px}
  #ladder tbody td::before{content:attr(data-label);font-family:var(--mono);font-size:9px;
    letter-spacing:.14em;text-transform:uppercase;color:rgba(10,26,16,.42)}
  #ladder tbody td:first-child{grid-column:1;width:auto;font-family:var(--display);
    font-size:27px;font-weight:600;color:var(--gold-dim);line-height:1}
  #ladder tbody td.nm{grid-column:2/4;font-size:25px;line-height:1.1}
  #ladder tbody td:last-child{color:var(--felt);font-weight:600}
}
@media(max-width:640px){
  body{font-size:16px}
  section{padding:48px 0}
  .lrow{grid-template-columns:70px 1fr;row-gap:2px}
  .lrow .verdict{grid-column:1/-1;text-align:left;font-size:9.5px}
  .fieldwrap{--gutter:70px}
  .lane{height:26px}
  .runner{width:20px;height:20px;font-size:8.5px}
  .lane .tag{font-size:9.5px}
  .yardlines i::after{display:none}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;transition-duration:.01ms !important}
  .holder{opacity:1;transform:none}
}

/* ============ site nav ============ */
.nav{background:var(--felt-deep);border-bottom:1px solid rgba(200,162,74,.28);position:sticky;top:0;z-index:40}
.nav .wrap{display:flex;gap:2px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.nav .wrap::-webkit-scrollbar{display:none}
.nav a{
  flex:0 0 auto;padding:14px 16px;color:rgba(239,234,219,.6);text-decoration:none;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;
  border-bottom:2px solid transparent;white-space:nowrap;
}
.nav a:hover{color:var(--gold-bright)}
.nav a.on{color:var(--gold-bright);border-bottom-color:var(--gold)}
.masthead.slim{padding:24px 0 20px}
.masthead.slim h1{font-size:clamp(34px,8vw,58px)}
.masthead.slim /* ============ weekly power rankings ============ */
.weekbar{display:flex;flex-wrap:wrap;gap:12px;align-items:flex-end;margin-bottom:26px}
.weekbar label{display:block}
.weekbar .cap{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(10,26,16,.5);margin-bottom:6px}
.weekbar select{background:var(--card);border:1px solid var(--rule);color:var(--ink);
  font-family:var(--mono);font-size:14px;padding:10px 34px 10px 12px;border-radius:0;appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--felt) 50%),linear-gradient(135deg,var(--felt) 50%,transparent 50%);
  background-position:calc(100% - 17px) 50%,calc(100% - 12px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}
.stamp{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(10,26,16,.45);padding-bottom:11px}

.commnote{background:var(--felt);color:var(--parchment);padding:24px 26px;margin-bottom:28px;border-left:4px solid var(--gold)}
.commnote .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-bright);margin-bottom:9px}
.commnote p{margin:0;font-size:16px;line-height:1.65;color:rgba(239,234,219,.9)}
.commnote.after{margin:28px 0 0}
.blurb a,.rvBlurb a,.commnote a,.mgrblurb a{color:inherit;text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:3px}
.commnote p + p{margin-top:12px}

.movers{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:14px;margin-bottom:28px}
.mover{background:var(--card);border:1px solid var(--rule);padding:16px 18px;border-top:3px solid var(--sage)}
.mover.down{border-top-color:var(--rust)}
.mover .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:rgba(10,26,16,.5)}
.mover .nm{font-family:var(--display);font-size:26px;font-weight:600;margin:5px 0 2px}
.mover .mv{font-family:var(--mono);font-size:13px;color:var(--sage);font-weight:600}
.mover.down .mv{color:var(--rust)}

.ranks{display:flex;flex-direction:column;gap:10px}
.rank{display:grid;grid-template-columns:60px 46px 1fr;gap:16px;align-items:start;
  background:var(--card);border:1px solid var(--rule);padding:18px 20px}
.rank.top{border:2px solid var(--gold);background:linear-gradient(90deg,rgba(200,162,74,.13),var(--card) 55%)}
.rank.bottom{border-color:rgba(140,58,46,.4)}
.rank .num{font-family:var(--display);font-size:40px;font-weight:600;line-height:.9;color:var(--gold-dim)}
.rank.top .num{color:var(--gold-dim)}
.rank.bottom .num{color:rgba(140,58,46,.65)}
.rank .mv{font-family:var(--mono);font-size:12px;font-weight:600;line-height:1;padding-top:9px;white-space:nowrap}
.rank .mv.up{color:var(--sage)}
.rank .mv.dn{color:var(--rust)}
.rank .mv.fl{color:rgba(10,26,16,.3)}
.rank .mv.nw{color:var(--gold-dim);font-size:10px;letter-spacing:.1em}
.rank .who{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}
.rank .nm{font-family:var(--display);font-size:26px;font-weight:600;line-height:1.1}
.rank .rec{font-family:var(--mono);font-size:13px;color:rgba(10,26,16,.5)}
.rank .blurb{margin:8px 0 0;font-size:15.5px;line-height:1.6;color:rgba(10,26,16,.8)}
.rank .blurb:empty{display:none}
.emptystate{background:var(--card);border:1px dashed var(--rule);padding:40px 24px;text-align:center;color:rgba(10,26,16,.55)}
.emptystate b{display:block;font-family:var(--display);font-size:22px;color:var(--ink);margin-bottom:8px}

/* ============ commissioner's desk (editor) ============ */
.desk{background:var(--felt);color:var(--parchment);min-height:60vh}
.desk .eyebrow::after{background:rgba(200,162,74,.3)}
.desk .eyebrow span{color:var(--gold);opacity:1}
.desk h2{color:#fff}
.desk .lede{color:rgba(239,234,219,.72)}
.deskgrid{display:grid;grid-template-columns:1fr 340px;gap:16px;align-items:start}
@media(max-width:900px){.deskgrid{grid-template-columns:1fr}}
.desk textarea{width:100%;background:rgba(0,0,0,.32);border:1px solid rgba(200,162,74,.36);
  color:var(--parchment);font-family:var(--body);font-size:15px;padding:10px 12px;border-radius:0;
  line-height:1.5;resize:vertical}
.desk textarea::placeholder{color:rgba(239,234,219,.3)}
.desk input[type=text]{font-family:var(--body)}
.desk input.mono{font-family:var(--mono)}
.erow{display:grid;grid-template-columns:34px 1fr;gap:12px;align-items:start;
  padding:12px;border:1px solid rgba(200,162,74,.18);background:rgba(0,0,0,.16);margin-bottom:8px}
.erow.drag{border-color:var(--gold);background:rgba(200,162,74,.1)}
.erow .pos{font-family:var(--display);font-size:24px;font-weight:600;color:var(--gold);text-align:center;line-height:1.2}
.erow .fields{display:grid;gap:7px}
.erow .top{display:grid;grid-template-columns:1fr 92px auto auto auto;gap:7px;align-items:center}
@media(max-width:560px){.erow .top{grid-template-columns:1fr 78px;grid-auto-flow:row}
  .erow .top .mini{grid-column:span 1}}
.mini{background:rgba(0,0,0,.3);border:1px solid rgba(200,162,74,.3);color:var(--gold-bright);
  font-family:var(--mono);font-size:14px;line-height:1;padding:9px 11px;cursor:pointer;min-width:38px}
.mini:hover{background:var(--gold);color:var(--felt-deep)}
.mini.x:hover{background:var(--rust);color:#fff;border-color:var(--rust)}
.hint{font-family:var(--mono);font-size:11px;color:rgba(239,234,219,.45);line-height:1.7;margin-top:10px}
.hint b{color:var(--gold-bright)}
/* the Commissioner's Desk output box; scoped so it can never catch a game's fade-out class */
textarea.out,pre.out{width:100%;height:220px;font-family:var(--mono);font-size:11px;line-height:1.45;white-space:pre;overflow:auto}
.ok{font-family:var(--mono);font-size:11px;color:var(--sage);letter-spacing:.1em}
.warn{font-family:var(--mono);font-size:11px;color:#E8A87C;letter-spacing:.06em;line-height:1.7}
.filein{font-family:var(--mono);font-size:12px;color:rgba(239,234,219,.6)}
.filein::file-selector-button{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;
  text-transform:uppercase;padding:9px 14px;margin-right:12px;border:1px solid var(--gold);
  background:transparent;color:var(--gold-bright);cursor:pointer}

/* ============ readme / steps ============ */
.steps{counter-reset:st;list-style:none;padding:0;margin:0}
.steps li{counter-increment:st;position:relative;padding:0 0 18px 44px;font-size:15.5px}
.steps li::before{content:counter(st);position:absolute;left:0;top:-2px;width:29px;height:29px;
  border:1px solid var(--gold);color:var(--gold-dim);font-family:var(--mono);font-size:12px;
  display:flex;align-items:center;justify-content:center}
.steps code{font-family:var(--mono);font-size:13px;background:rgba(20,51,31,.09);padding:2px 6px}

@media(max-width:640px){
  .rank{grid-template-columns:44px 40px 1fr;gap:11px;padding:15px 14px}
  .rank .num{font-size:31px}
  .rank .nm{font-size:22px}
  .rank .blurb{font-size:15px}
  .commnote{padding:20px}
}

/* ============ rank card extras ============ */
.rank .meta{font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;color:rgba(10,26,16,.5);margin-top:3px}
.res{font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.1em;padding:3px 7px;line-height:1;
  border:1px solid currentColor}
.res.w{color:var(--sage)}
.res.l{color:var(--rust)}

/* ============ season sheets ============ */
.sheetwrap{overflow-x:auto;border:1px solid var(--rule);background:var(--card)}
table.sheet{border-collapse:collapse;width:100%;min-width:620px}
table.sheet thead th{background:var(--felt);color:var(--gold-bright);font-family:var(--mono);font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;font-weight:500;padding:11px 10px;text-align:right;white-space:nowrap}
table.sheet thead th:nth-child(2),table.sheet thead th:nth-child(3){text-align:left}
table.sheet thead th:first-child{text-align:left;width:42px}
table.sheet td{padding:11px 10px;text-align:right;font-size:14px;border-top:1px solid rgba(10,26,16,.09)}
table.sheet td.mono{font-family:var(--mono)}
table.sheet td.rkc{text-align:left;color:rgba(10,26,16,.42);font-size:12px}
table.sheet td.nm{text-align:left;font-family:var(--display);font-size:19px;font-weight:600;line-height:1.15}
table.sheet td.own{text-align:left;font-family:var(--mono);font-size:12px;color:rgba(10,26,16,.55);white-space:nowrap}
table.sheet tr.gold td{background:rgba(200,162,74,.16)}
table.sheet tr.stool td{background:rgba(140,58,46,.08)}
table.sheet tr:hover td{background:rgba(200,162,74,.09)}
.champcard{background:var(--felt);color:var(--parchment);padding:22px 24px;margin-bottom:18px;border-left:4px solid var(--gold)}
.champcard .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold)}
.champcard .nm{font-family:var(--display);font-size:34px;font-weight:600;color:#fff;line-height:1.1;margin:5px 0 3px}
.champcard .mv{font-family:var(--mono);font-size:12px;color:rgba(239,234,219,.6)}
.franchise{border-left:3px solid var(--gold);padding:4px 0 4px 15px;margin-bottom:20px}
.franchise .fh{display:flex;align-items:baseline;gap:10px;margin-bottom:5px}
.franchise .fo{font-family:var(--display);font-size:21px;font-weight:600}
.franchise .fc{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(10,26,16,.42)}
.franchise .fl{font-size:15px;line-height:1.85;color:rgba(10,26,16,.8)}
.franchise .fy{font-family:var(--mono);font-size:10.5px;color:var(--gold-dim);margin-right:3px}
.franchise .fsep{color:rgba(10,26,16,.25);margin:0 9px}

/* ============ desk stat row ============ */
.erow .stats{display:grid;grid-template-columns:1.6fr .7fr .7fr .7fr 1fr 1fr;gap:6px}
.erow .stats select{padding:9px 6px;font-size:13px;background-position:calc(100% - 9px) 50%,calc(100% - 6px) 50%}
.erow .top{display:grid;grid-template-columns:1fr auto auto auto;gap:7px;align-items:center}
@media(max-width:640px){
  .erow .stats{grid-template-columns:1fr 1fr 1fr}
  table.sheet{min-width:540px}
  table.sheet td.nm{font-size:16px}
  .champcard .nm{font-size:27px}
}

/* ============ faces ============ */
.roster{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}
.rmgr{text-align:center;position:relative}
.rface{width:62px;height:62px;border-radius:50%;object-fit:cover;
  border:2px solid rgba(200,162,74,.45);background:var(--felt-deep);display:block;margin:0 auto 7px}
.rmgr .noface{width:62px;height:62px;border-radius:50%;margin:0 auto 7px;display:flex;
  align-items:center;justify-content:center;background:var(--gold);color:var(--felt-deep);
  font-family:var(--mono);font-weight:600}
.rname{display:block;font-family:var(--display);font-size:16px;font-weight:600;color:var(--parchment);line-height:1.2}
.rmgr .ex{display:block;font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold);margin-top:3px}
.board li{grid-template-columns:30px 30px 1fr auto}
.bface{width:30px;height:30px;border-radius:50%;object-fit:cover;
  border:1px solid rgba(200,162,74,.4);display:block}
.board li .noface{width:30px;height:30px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;background:var(--gold);color:var(--felt-deep);font-family:var(--mono);font-size:10px}

/* ============ trust bar ============ */
.trustbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:14px;margin:26px 0 30px}
.tb{background:rgba(0,0,0,.22);border:1px solid rgba(200,162,74,.3);padding:18px 20px}
.tbn{font-family:var(--display);font-size:34px;font-weight:600;color:var(--gold-bright);line-height:1}
.tbl{font-size:14px;color:rgba(239,234,219,.7);margin-top:7px;line-height:1.45}
.runrow{margin:16px 0 0;align-items:center}
.btn.big{padding:15px 30px;font-size:13px}

/* ============ the disclaimer ============ */
.proof{background:var(--parchment);border-top:3px solid var(--gold)}
.proofgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;margin-top:8px}
.proofcard{background:var(--card);border:1px solid var(--rule);border-top:3px solid var(--felt);padding:24px 24px 22px;position:relative}
.pnum{font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--gold-dim);margin-bottom:10px}
.proofcard h4{font-family:var(--display);font-size:24px;font-weight:600;margin:0 0 12px;line-height:1.2}
.proofcard p{margin:0 0 12px;font-size:15.5px;line-height:1.62;color:rgba(10,26,16,.82)}
.proofcard p:last-child{margin-bottom:0}
.proofcard b{color:var(--ink);font-weight:600}
.klyshnote{background:rgba(200,162,74,.14);border-left:3px solid var(--gold);padding:11px 14px;font-size:14.5px !important}
.seedbox{background:var(--felt-deep);padding:14px 16px;margin-top:14px;overflow:hidden}
.slbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:6px}
.seedbox code{display:block;font-family:var(--mono);font-size:11px;line-height:1.65;color:rgba(239,234,219,.85);
  word-break:break-all;white-space:pre-wrap}
.seedbox code.lockc{font-size:17px;letter-spacing:.14em;color:var(--gold-bright)}
.fineprint{margin-top:22px;background:rgba(20,51,31,.07);border-left:3px solid rgba(20,51,31,.3);padding:20px 24px}
.fineprint h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--felt);margin:0 0 12px;font-weight:500}
.fineprint p{margin:0 0 12px;font-size:15px;line-height:1.6;color:rgba(10,26,16,.75)}
.fineprint p:last-child{margin-bottom:0}

/* ============ odds lab ============ */
.oddsout:empty{display:none}
.oddsout{margin-top:16px;border-top:1px solid var(--rule);padding-top:14px}
.oddshead{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(10,26,16,.5);margin-bottom:10px}
.oddsrow{display:grid;grid-template-columns:66px 1fr 46px;gap:9px;align-items:center;margin-bottom:5px}
.oddsrow .on{font-family:var(--display);font-size:15px;font-weight:600}
.oddsrow .ob{background:rgba(20,51,31,.1);height:13px;display:block}
.oddsrow .ob i{display:block;height:13px;background:var(--felt);transition:width .4s ease}
.oddsrow .op{font-family:var(--mono);font-size:12px;text-align:right;color:rgba(10,26,16,.65)}
.oddsrow.ex .on{color:var(--gold-dim)}
.oddsrow.ex .ob i{background:var(--gold-dim)}
.oddsfoot{font-size:14px;line-height:1.6;color:rgba(10,26,16,.7);margin-top:12px;font-style:italic}

@media(max-width:640px){
  .rface,.rmgr .noface{width:52px;height:52px}
  .rname{font-size:14px}
  .roster{grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:10px}
  .runner,.runner .rimg,.runner .noface{width:22px;height:22px}
  .tbn{font-size:28px}
  .proofcard{padding:20px 18px}
  .proofcard h4{font-size:21px}
  .btn.big{width:100%}
  .seedbox code{font-size:10px}
}

/* ============ faces in weekly rankings ============ */
.rank.hasface{grid-template-columns:60px 46px 46px 1fr}
.rkfacewrap{padding-top:2px}
.rkface{width:44px;height:44px;border-radius:50%;object-fit:cover;
  border:2px solid rgba(10,26,16,.15);display:block;background:var(--parchment)}
.rank.top .rkface{border-color:var(--gold)}
@media(max-width:640px){
  .rank.hasface{grid-template-columns:44px 40px 38px 1fr;gap:9px}
  .rkface{width:36px;height:36px}
}

/* ============ faces in season standings ============ */
table.sheet td.own{white-space:nowrap}
.ownface{width:22px;height:22px;border-radius:50%;object-fit:cover;vertical-align:middle;
  margin-right:7px;border:1px solid rgba(10,26,16,.18)}

/* ============ photo runners ============ */
.runner{
  background-size:cover;background-position:center 22%;
  border:2px solid var(--gold);width:30px;height:30px;
  text-indent:-9999px;overflow:visible;
}
.runner::after{content:"";position:absolute;inset:0;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.35)}
.runner.lead{box-shadow:0 0 0 3px #fff,0 0 16px rgba(255,255,255,.7);z-index:4}
.runner.fin{box-shadow:0 0 0 3px var(--gold-bright),0 0 18px rgba(230,200,120,.8);z-index:5}
.runner .place{text-indent:0;top:-8px;right:-8px;min-width:17px;height:17px;line-height:17px;font-size:9.5px;z-index:6}
.lane{height:36px}
.fieldwrap{--gutter:104px}

/* ============ locked field cards ============ */
.facegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:12px}
.facecard{text-align:center}
.facecard .fimg{
  display:block;width:100%;aspect-ratio:1;background-size:cover;background-position:center 22%;
  border-radius:50%;border:2px solid rgba(200,162,74,.45);margin-bottom:7px;
}
.facecard.klysh .fimg{border-color:var(--gold-bright);box-shadow:0 0 0 3px rgba(230,200,120,.22)}
.facecard .fn{display:block;font-family:var(--display);font-size:16px;font-weight:600;color:#fff;line-height:1.15}
.facecard .fs{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;color:rgba(239,234,219,.42);margin-top:2px}

/* ============ board photos ============ */
.board li{grid-template-columns:30px 30px 1fr auto}
.board li .bimg{width:30px;height:30px;border-radius:50%;background-size:cover;background-position:center 22%;border:1px solid rgba(200,162,74,.4)}

/* ============ fairness / disclaimer ============ */
.fairness{background:rgba(0,0,0,.24);border:1px solid rgba(200,162,74,.34);padding:26px 26px 22px;margin:8px 0 22px}
.fairhead{border-bottom:1px solid rgba(200,162,74,.25);padding-bottom:14px;margin-bottom:20px}
.fairtag{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:7px}
.fairness h3{font-family:var(--display);font-size:clamp(24px,4vw,34px);font-weight:600;color:#fff;margin:0;letter-spacing:0;text-transform:none}
.fairgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(258px,1fr));gap:20px}
.fairitem{position:relative;padding-left:40px}
.fairitem .fnum{position:absolute;left:0;top:1px;font-family:var(--mono);font-size:11px;color:var(--gold-dim);letter-spacing:.08em}
.fairitem h4{font-family:var(--display);font-size:19px;font-weight:600;color:var(--gold-bright);margin:0 0 6px}
.fairitem p{margin:0;font-size:14.5px;line-height:1.6;color:rgba(239,234,219,.78)}
.fairitem code{font-family:var(--mono);font-size:12.5px;background:rgba(0,0,0,.4);padding:1px 5px;color:var(--gold-bright)}

.correlation{display:flex;flex-wrap:wrap;gap:26px;align-items:flex-start;
  margin-top:24px;padding:22px;background:rgba(200,162,74,.09);border-left:4px solid var(--gold)}
.corrbig{font-family:var(--mono);font-size:clamp(40px,9vw,66px);color:var(--gold-bright);line-height:1;font-weight:500}
.corrtext{flex:1;min-width:250px}
.corrtext p{margin:0 0 10px;font-size:15px;line-height:1.6;color:rgba(239,234,219,.85)}
.corrtext p:last-child{margin-bottom:0}
.corrkicker{color:#fff !important;font-family:var(--display);font-size:16.5px !important;font-style:italic}

.auditbox{margin-top:24px;padding-top:20px;border-top:1px solid rgba(200,162,74,.25)}
.auditbox h4{font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin:0 0 14px;font-weight:500}
.auditrun{font-family:var(--mono);font-size:12px;color:rgba(239,234,219,.5)}
.auditgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:5px 22px}
.auditrow{display:grid;grid-template-columns:74px 1fr 46px;align-items:center;gap:9px;padding:3px 0}
.auditrow .an{font-family:var(--body);font-size:14px;color:rgba(239,234,219,.8)}
.auditrow .abar{height:7px;background:rgba(239,234,219,.09);position:relative;overflow:hidden}
.auditrow .abar i{position:absolute;left:0;top:0;bottom:0;background:var(--gold-dim);display:block}
.auditrow .ap{font-family:var(--mono);font-size:12px;color:rgba(239,234,219,.6);text-align:right}
.auditrow.klysh .an{color:var(--gold-bright);font-weight:600}
.auditrow.klysh .abar i{background:var(--gold-bright)}
.auditrow.klysh .ap{color:var(--gold-bright)}
.auditnote{margin:14px 0 0;font-size:13.5px;line-height:1.6;color:rgba(239,234,219,.6)}

/* ============ run bar + receipt ============ */
.runbar{display:flex;flex-wrap:wrap;align-items:center;gap:16px;margin:0 0 16px}
.btn.big{font-size:14px;padding:16px 34px;letter-spacing:.2em}
.runnote{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:rgba(239,234,219,.42)}
.receipt{margin-top:14px;padding:12px 14px;background:rgba(0,0,0,.28);border:1px solid rgba(200,162,74,.3)}
.receipt .rl{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin-bottom:4px}
.receipt b{font-family:var(--mono);font-size:18px;color:var(--gold-bright);letter-spacing:.1em}
.receipt .rn{display:block;font-size:12px;color:rgba(239,234,219,.5);margin-top:6px;line-height:1.5}

@media(max-width:640px){
  .lane{height:31px}
  .runner{width:25px;height:25px;border-width:2px}
  .fieldwrap{--gutter:74px}
  .facegrid{grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:10px}
  .facecard .fn{font-size:13.5px}
  .facecard .fs{font-size:8px}
  .fairness{padding:20px 18px}
  .fairitem{padding-left:32px}
  .correlation{padding:18px;gap:14px}
  .board li{grid-template-columns:26px 26px 1fr auto;gap:8px}
  .board li .bimg{width:26px;height:26px}
  .btn.big{width:100%;text-align:center}
}

/* ============ faces on the record book ============ */
.holder .holderface{width:46px;height:46px;border-radius:50%;object-fit:cover;display:block;
  margin:0 auto 8px;border:2px solid rgba(200,162,74,.5)}
td.nm .ladface{width:26px;height:26px;border-radius:50%;object-fit:cover;
  vertical-align:middle;margin-right:9px;border:1px solid rgba(10,26,16,.15)}
@media(max-width:700px){
  td.nm .ladface{width:30px;height:30px;margin-right:10px}
}
.whorow{display:flex;align-items:center;gap:12px;margin:8px 0 6px}
.whorow .throneface{width:52px;height:52px;border-radius:50%;object-fit:cover;
  border:2px solid rgba(200,162,74,.55);flex:0 0 auto}
.whorow .who{margin:0}

/* ============ seal status ============ */
.sealline{margin-top:14px;padding:10px 14px;font-family:var(--mono);font-size:11px;letter-spacing:.06em;
  color:var(--sage);border:1px solid rgba(63,107,68,.5);background:rgba(63,107,68,.12)}
.sealline.broken{color:#E8A87C;border-color:rgba(140,58,46,.6);background:rgba(140,58,46,.15)}
.luckface{width:30px;height:30px;border-radius:50%;object-fit:cover;
  vertical-align:middle;margin-right:10px;border:1px solid rgba(10,26,16,.15)}

/* ============ schedule page ============ */
.weeks{display:flex;flex-direction:column;gap:14px}
.weekcard{background:var(--card);border:1px solid var(--rule);padding:16px 18px}
.weekcard.eve{border-color:var(--gold);border-width:2px;background:linear-gradient(90deg,rgba(200,162,74,.1),var(--card) 40%)}
.weekcard .wk{font-family:var(--display);font-size:19px;font-weight:600;margin-bottom:10px;display:flex;align-items:center;gap:10px}
.wktag{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-dim);
  border:1px solid rgba(200,162,74,.5);padding:2px 7px}
.weekcard .games{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px 20px}
.gm{display:flex;align-items:center;gap:8px;font-size:14.5px;flex-wrap:wrap}
.gm .side{display:flex;align-items:center;gap:6px;font-family:var(--body)}
.gm .at{font-family:var(--mono);font-size:10px;color:rgba(10,26,16,.4);text-transform:uppercase}
.gmface{width:22px;height:22px;border-radius:50%;object-fit:cover;border:1px solid rgba(10,26,16,.15)}

.teampicker,.teamsched{margin-top:4px}
.teamsched{display:flex;flex-direction:column;gap:6px}
.tsrow{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--rule);padding:10px 14px;font-size:14.5px}
.tsrow.eve{border-color:var(--gold);border-width:2px}
.tswk{font-family:var(--mono);font-size:11px;color:rgba(10,26,16,.45);width:44px;flex:0 0 auto}
.tsvs{font-family:var(--mono);font-size:10px;text-transform:uppercase;color:rgba(10,26,16,.4);width:24px;flex:0 0 auto}
.tsopp{font-family:var(--display);font-size:17px;font-weight:600}

/* ============ strength of schedule ============ */
.sosgrid{display:flex;flex-direction:column;gap:8px}
.sosrow{display:grid;grid-template-columns:28px 30px 1fr 120px 44px;gap:12px;align-items:center;
  background:var(--card);border:1px solid var(--rule);padding:10px 14px}
.sosrank{font-family:var(--display);font-weight:600;color:var(--gold-dim);font-size:17px}
.sosface{width:30px;height:30px;border-radius:50%;object-fit:cover;border:1px solid rgba(10,26,16,.15)}
.soswho{display:flex;flex-direction:column;line-height:1.3}
.soswho .nm{font-family:var(--display);font-size:16.5px;font-weight:600}
.soswho .own{font-family:var(--mono);font-size:10.5px;color:rgba(10,26,16,.45)}
.sosbar{height:8px;background:rgba(10,26,16,.08);position:relative}
.sosbar .fill{position:absolute;left:0;top:0;bottom:0;background:var(--felt)}
.sosval{font-family:var(--mono);font-size:13px;text-align:right}
.sostag{grid-column:1/-1;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--gold-dim);margin-top:-4px}
@media(max-width:640px){
  .sosrow{grid-template-columns:22px 26px 1fr 44px;grid-template-areas:"rank face who val" "tag tag tag tag";}
  .sosbar{display:none}
}

/* ============ this week's matchups ============ */
.matchups{margin-bottom:28px}
.eyebrow.small{margin-bottom:12px}
.matchgrid{display:flex;flex-direction:column;gap:10px}
.matchcard{display:grid;grid-template-columns:1fr 90px 1fr;align-items:center;gap:10px;
  background:var(--card);border:1px solid var(--rule);padding:14px 16px}
.matchcard.close{border-color:var(--gold);border-width:2px;background:linear-gradient(90deg,rgba(200,162,74,.08),var(--card) 50%,rgba(200,162,74,.08))}
.mteam{display:flex;align-items:center;gap:8px;min-width:0}
.mteam.fav .mnm{color:var(--felt);font-weight:700}
.mface{width:28px;height:28px;border-radius:50%;object-fit:cover;border:1px solid rgba(10,26,16,.15);flex:0 0 auto}
.mnm{font-family:var(--display);font-size:15.5px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mproj{font-family:var(--mono);font-size:12px;color:rgba(10,26,16,.5);margin-left:auto;flex:0 0 auto;padding-left:6px}
.mvs{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-align:center;color:rgba(10,26,16,.4);white-space:nowrap}
.matchcard.close .mvs{color:var(--gold-dim);font-weight:600}
@media(max-width:640px){
  .matchcard{grid-template-columns:1fr;gap:6px;text-align:left}
  .mvs{text-align:left}
}

/* ============ commissioner: matchups editor ============ */
#matchrows{display:flex;flex-direction:column;gap:8px}
.matchrow{display:grid;grid-template-columns:1fr 60px auto 1fr 60px auto;gap:7px;align-items:center;
  background:rgba(0,0,0,.16);border:1px solid rgba(200,162,74,.18);padding:9px 10px}
.matchrow select,.matchrow input{background:rgba(0,0,0,.32);border:1px solid rgba(200,162,74,.36);
  color:var(--parchment);font-family:var(--body);font-size:13px;padding:7px 8px}
.matchrow input{font-family:var(--mono);text-align:center}
.matchat{font-family:var(--mono);font-size:10px;color:rgba(239,234,219,.4);text-transform:uppercase;text-align:center}
@media(max-width:640px){
  .matchrow{grid-template-columns:1fr 50px;grid-template-areas:"away awayp" "at at" "home homep" "rm rm"}
}

/* ============================================================
   TYPE REFINEMENT — tuned for the grotesque family.
   The old scale was set for a Didone serif; sans-serif needs
   tighter tracking on display sizes and slightly less on caps.
   ============================================================ */
h2{letter-spacing:-.022em;font-weight:700}
.throne .who,.rank .nm,.mnm,.soswho .nm,td.nm,table.sheet td.nm,
.tsopp,.holder .nm,.champcard .nm,.mover .nm,.franchise .fo,.lrow .who{letter-spacing:-.015em}
.rank .num,.sosrank{letter-spacing:-.03em}
.eyebrow span{letter-spacing:.26em;font-weight:500}
.crest .sub{letter-spacing:.24em}
.nav a{letter-spacing:.14em;font-weight:500}
.panel h3{letter-spacing:.18em}
.btn{letter-spacing:.1em;font-weight:600}
.verdict,.wktag,.fairtag{letter-spacing:.08em}
.chasing{letter-spacing:.18em}
body{font-size:16.5px;line-height:1.62;-webkit-font-smoothing:antialiased}
.lede{font-size:17px;line-height:1.6}
strong,b{font-weight:700}

/* ============ rank the league: ballot ============ */
.panel.light{background:var(--card);border:1px solid var(--rule);padding:20px}
.panel.light .cap{color:rgba(10,26,16,.5)}
.panel.light input[type=text],.panel.light textarea{background:#fff;border:1px solid var(--rule);color:var(--ink)}
.ballotlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.ballotrow{display:grid;grid-template-columns:32px 22px 34px 1fr auto;gap:10px;align-items:center;
  background:var(--card);border:1px solid var(--rule);padding:9px 12px;cursor:grab}
.ballotrow.dragging{opacity:.4}
.ballotrow.dragover{border-color:var(--gold);border-width:2px;background:rgba(200,162,74,.12)}
.brank{font-family:var(--display);font-size:19px;font-weight:700;color:var(--gold-dim)}
.bletter{font-family:var(--mono);font-size:11px;color:rgba(10,26,16,.35);text-align:center}
.bface{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid rgba(10,26,16,.15)}
.bteam{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.btn-name{font-family:var(--display);font-size:16px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bown{font-family:var(--mono);font-size:10.5px;color:rgba(10,26,16,.45)}
.bctl{display:flex;gap:4px}
.bctl .mini{background:rgba(10,26,16,.06);border:1px solid var(--rule);color:var(--felt);padding:7px 9px;min-width:32px}
.bctl .mini:hover{background:var(--felt);color:var(--parchment)}
.codeout{font-family:var(--mono);font-size:16px;letter-spacing:.08em;background:var(--felt);color:var(--gold-bright);
  padding:14px 16px;margin:14px 0 0;word-break:break-all}

/* ============ tally ============ */
.tallyhead{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(10,26,16,.5);margin:22px 0 10px}
.consensus{display:flex;flex-direction:column;gap:6px}
.crow{display:grid;grid-template-columns:30px 34px 1fr 110px 42px;gap:11px;align-items:center;
  background:var(--card);border:1px solid var(--rule);padding:10px 13px}
.crow.top{border:2px solid var(--gold);background:linear-gradient(90deg,rgba(200,162,74,.12),var(--card) 55%)}
.crow.bottom{border-color:rgba(140,58,46,.4)}
.cpos{font-family:var(--display);font-size:20px;font-weight:700;color:var(--gold-dim)}
.cface{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid rgba(10,26,16,.15)}
.cwho{display:flex;flex-direction:column;line-height:1.25;min-width:0}
.cnm{font-family:var(--display);font-size:16.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cmeta{font-family:var(--mono);font-size:10.5px;color:rgba(10,26,16,.45)}
.cbar{height:8px;background:rgba(10,26,16,.08);position:relative}
.cfill{position:absolute;left:0;top:0;bottom:0;background:var(--felt)}
.cpts{font-family:var(--mono);font-size:13px;text-align:right}
.ctag{grid-column:1/-1;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--rust);margin-top:-2px}
.voterlist{display:flex;flex-direction:column;gap:6px}
.vrow{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;background:var(--card);
  border-left:3px solid var(--gold);padding:10px 14px;font-size:14.5px}
.vnm{font-family:var(--display);font-size:17px;font-weight:700}
.vdist{font-family:var(--mono);font-size:11.5px;color:rgba(10,26,16,.5)}
.vtag{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-dim)}
.homer{flex-basis:100%;font-size:13.5px;font-style:italic;color:var(--rust)}
#tallyout{margin-top:6px}
#ballotin{width:100%;background:#fff;border:1px solid var(--rule);color:var(--ink);
  font-family:var(--mono);font-size:13px;padding:11px 13px;line-height:1.5;resize:vertical}
@media(max-width:640px){
  .ballotrow{grid-template-columns:26px 18px 30px 1fr auto;gap:7px;padding:8px 9px}
  .crow{grid-template-columns:24px 30px 1fr 42px;gap:8px}
  .cbar{display:none}
}

/* ============ manager files ============ */
.mgrpicker{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:22px}
.mgrchip{display:inline-flex;align-items:center;gap:8px;background:var(--card);border:1px solid var(--rule);
  padding:6px 13px 6px 6px;font-family:var(--body);font-size:14.5px;font-weight:600;color:var(--ink);cursor:pointer}
.mgrchip:hover{border-color:var(--gold)}
.mgrchip.on{background:var(--felt);color:var(--parchment);border-color:var(--felt)}
.mgrchipface{width:26px;height:26px;border-radius:50%;object-fit:cover}
.mgrhead{display:flex;align-items:center;gap:18px;margin-bottom:20px}
.mgrbigface{width:88px;height:88px;border-radius:50%;object-fit:cover;border:3px solid var(--gold);flex:0 0 auto}
.mgrname{font-family:var(--display);font-size:clamp(28px,5vw,40px);font-weight:800;line-height:1.05;letter-spacing:-.025em}
.mgrsub{font-family:var(--mono);font-size:12px;color:rgba(10,26,16,.5);margin-top:5px}
.statstrip{display:grid;grid-template-columns:repeat(auto-fit,minmax(104px,1fr));gap:8px;margin-bottom:16px}
.sc{background:var(--card);border:1px solid var(--rule);padding:12px 10px;text-align:center}
.sc.gold{border-color:var(--gold);background:rgba(200,162,74,.12)}
.sc.pos .sv{color:var(--sage)}
.sc.neg .sv{color:var(--rust)}
.sc .sv{display:block;font-family:var(--display);font-size:22px;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.sc .sl{display:block;font-family:var(--mono);font-size:9px;letter-spacing:.1em;text-transform:uppercase;
  color:rgba(10,26,16,.45);margin-top:5px}
.verdictline{background:var(--felt);color:var(--parchment);padding:16px 18px;font-size:15.5px;margin-bottom:16px}
.mgrblurb{border-left:3px solid var(--gold);padding:4px 0 4px 16px;margin-bottom:20px}
.mgrblurb .lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;
  color:rgba(10,26,16,.45);margin-bottom:5px}
.mgrblurb p{margin:0;font-size:15.5px;line-height:1.6}
.mgrseasons{overflow-x:auto;border:1px solid var(--rule);background:var(--card)}
.ringdot{font-family:var(--mono);font-size:9px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-dim)}

/* ============ superlatives ============ */
.suplist{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:12px}
.supcard{background:var(--card);border:1px solid var(--rule);border-top:3px solid var(--sage);padding:16px 18px}
.supcard.bad{border-top-color:var(--rust)}
.suptitle{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(10,26,16,.5);margin-bottom:10px}
.supwho{display:flex;align-items:center;gap:9px;margin-bottom:6px}
.supface{width:34px;height:34px;border-radius:50%;object-fit:cover;border:1px solid rgba(10,26,16,.15)}
.supnm{font-family:var(--display);font-size:21px;font-weight:800;letter-spacing:-.02em}
.supyr{font-family:var(--mono);font-size:11px;color:rgba(10,26,16,.45)}
.supval{font-family:var(--mono);font-size:14px;font-weight:600;color:var(--felt);margin-bottom:7px}
.supdesc{font-size:14.5px;line-height:1.55;color:rgba(10,26,16,.75)}
@media(max-width:640px){
  .mgrbigface{width:64px;height:64px}
  .statstrip{grid-template-columns:repeat(3,1fr)}
  .mgrseasons table.sheet{min-width:520px}
}

/* ============ tally: official comparison + agreement ============ */
.crow{grid-template-columns:30px 34px 34px 1fr 110px 42px}
.cshift{font-family:var(--mono);font-size:11px;font-weight:600;text-align:center}
.cshift.up{color:var(--sage)}
.cshift.dn{color:var(--rust)}
.cshift.flat{color:rgba(10,26,16,.25)}
.ctag.div{color:var(--rust)}
.ctag.agree{color:var(--sage)}
.verdictpair{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin-top:18px}
.vp{background:var(--card);border:1px solid var(--rule);border-top:3px solid var(--sage);padding:15px 17px}
.vp.dn{border-top-color:var(--rust)}
.vplbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(10,26,16,.5);margin-bottom:7px}
.vpnm{font-family:var(--display);font-size:21px;font-weight:800;letter-spacing:-.02em;margin-bottom:5px}
.vpd{font-size:14.5px;line-height:1.55;color:rgba(10,26,16,.75)}
.vrow{display:grid;grid-template-columns:auto 1fr auto auto;gap:12px;align-items:center}
.vbar{height:8px;background:rgba(10,26,16,.08);position:relative;min-width:60px}
.vfill{position:absolute;left:0;top:0;bottom:0;background:var(--felt)}
.homer.humble{color:var(--sage)}
@media(max-width:640px){
  .crow{grid-template-columns:24px 26px 30px 1fr 42px}
  .vrow{grid-template-columns:1fr auto}
  .vbar{grid-column:1/-1;order:5}
}
.hintline{font-family:var(--mono);font-size:11px;letter-spacing:.04em;color:rgba(10,26,16,.45);margin:0 0 10px}
.ballotrow:focus-visible{outline:3px solid var(--gold);outline-offset:2px}
a.btn{text-decoration:none;display:inline-block}

/* ============ punch the commish ============ */
.gamewrap .lede{max-width:60ch}
.hud{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:0 0 14px}
.hudcell{background:var(--card);border:1px solid var(--rule);padding:11px 8px;text-align:center}
.hudcell .hv{display:block;font-family:var(--display);font-size:26px;font-weight:800;letter-spacing:-.02em;line-height:1.05}
.hudcell .hl{display:block;font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(10,26,16,.45);margin-top:4px}

.pcBoard{position:relative;display:grid;grid-template-columns:repeat(3,1fr);gap:12px;max-width:470px;margin:0 auto;
  padding:16px;border:2px solid rgba(200,162,74,.4);border-radius:6px;
  background:radial-gradient(120% 90% at 50% 0%,#1C4A2E 0%,#0E2A18 55%,#081A0F 100%);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.06),0 18px 34px -20px rgba(0,0,0,.8);
  transition:box-shadow .3s,border-color .3s;user-select:none;-webkit-user-select:none}
.pcBoard.live{border-color:rgba(200,162,74,.7)}
.pcBoard.ot{border-color:#E4574C;animation:pcOt .5s ease-in-out infinite alternate}
@keyframes pcOt{to{box-shadow:inset 0 0 0 2px rgba(228,87,76,.35),0 0 26px rgba(228,87,76,.4)}}
.pcBoard.fever{border-color:#FFD873;background:radial-gradient(120% 90% at 50% 0%,#6B4A12 0%,#3A2A0A 55%,#1A1206 100%);
  box-shadow:0 0 0 3px rgba(255,216,115,.3),0 0 40px rgba(255,190,80,.45)}
.pcBoard.shake{animation:pcShake .18s linear}
.pcBoard.shakeBig{animation:pcShake .3s linear}
@keyframes pcShake{25%{transform:translate(3px,-2px)}50%{transform:translate(-3px,2px)}75%{transform:translate(2px,1px)}}

/* each hole: pit, a mask that clips the rising face, a rim in front */
.pcHole{position:relative;aspect-ratio:1;border:0;padding:0;background:transparent;cursor:pointer;
  -webkit-tap-highlight-color:transparent;touch-action:manipulation}
.pcHole:focus-visible{outline:3px solid var(--gold);outline-offset:3px;border-radius:50%}
.pcPit{position:absolute;left:4%;right:4%;bottom:6%;height:34%;border-radius:50%;
  background:radial-gradient(ellipse at 50% 35%,#000 0%,#050C07 60%,#1A3322 100%);box-shadow:inset 0 6px 10px rgba(0,0,0,.8)}
.pcMask{position:absolute;left:0;right:0;top:-12%;bottom:23%;overflow:hidden;border-radius:0 0 46% 46% / 0 0 30% 30%}
.pcRiser{position:absolute;left:10%;right:10%;bottom:0;aspect-ratio:1;transform:translateY(110%);
  transition:transform .14s cubic-bezier(.3,1.5,.5,1)}
.pcHole.up .pcRiser{transform:translateY(8%)}
.pcHole.down .pcRiser{transform:translateY(110%);transition-duration:.12s;transition-timing-function:ease-in}
.pcFace{display:block;width:100%;height:100%;border-radius:50%;object-fit:cover;pointer-events:none;
  border:3px solid rgba(200,162,74,.65);box-shadow:0 6px 14px rgba(0,0,0,.5);background:#1A3322}
.pcRim{position:absolute;left:0;right:0;bottom:2%;height:26%;border-radius:50%;pointer-events:none;
  background:linear-gradient(180deg,#3E6B4C 0%,#1E3F2A 60%,#12281A 100%);
  box-shadow:inset 0 2px 0 rgba(255,255,255,.18),0 4px 8px rgba(0,0,0,.5);
  -webkit-mask:radial-gradient(ellipse 44% 38% at 50% 28%,transparent 98%,#000 100%);
          mask:radial-gradient(ellipse 44% 38% at 50% 28%,transparent 98%,#000 100%)}
.pcBadge{position:absolute;right:-4%;top:-2%;font-size:clamp(16px,4vw,22px);line-height:1;filter:drop-shadow(0 2px 3px rgba(0,0,0,.6))}
/* kinds */
.pcHole.k-gold .pcFace{border-color:#FFD873;box-shadow:0 0 0 3px rgba(255,216,115,.45),0 0 24px rgba(255,216,115,.75);
  filter:sepia(.6) saturate(1.8) brightness(1.1)}
.pcHole.k-shield .pcFace{border-color:#9FB3C8;box-shadow:0 0 0 4px rgba(159,179,200,.55),inset 0 0 0 4px rgba(255,255,255,.25)}
.pcHole.k-shield.cracked .pcFace{border-color:#fff;box-shadow:0 0 0 2px rgba(255,255,255,.6)}
.pcHole.k-bystander .pcFace{border-color:rgba(239,234,219,.35)}
.pcHole.k-clock .pcFace{display:none}
.pcHole.k-clock .pcBadge{inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-size:clamp(34px,9vw,52px);border-radius:50%;background:radial-gradient(circle,#2FB3A6,#0E5E63);
  border:3px solid #9FE3DA;box-shadow:0 0 20px rgba(47,179,166,.6)}
.pcHole.k-clock .pcBadge small{font:800 clamp(11px,2.8vw,14px)/1 var(--mono);color:#fff;margin-top:2px}
/* reactions */
.pcHole.hit .pcRiser{transform:translateY(22%) rotate(-14deg) scale(.86);transition-duration:.08s}
.pcHole.hit .pcFace{filter:brightness(1.35) saturate(.6)}
.pcHole.oops .pcFace{filter:grayscale(1) brightness(.8);border-color:#E4574C}
.pcPow{position:absolute;left:50%;top:22%;z-index:5;pointer-events:none;opacity:0;
  font:900 clamp(15px,4.2vw,22px)/1 var(--display);letter-spacing:.02em;color:#1B1B1F;
  padding:.8em 1em;background:#FFD873;
  clip-path:polygon(50% 0,61% 22%,86% 8%,78% 36%,100% 46%,78% 60%,90% 88%,62% 76%,50% 100%,38% 76%,10% 90%,22% 62%,0 48%,22% 36%,12% 10%,39% 22%);
  transform:translate(-50%,-50%) scale(.3) rotate(-12deg)}
.pcPow.show{animation:pcPow .42s cubic-bezier(.2,1.6,.4,1) forwards}
@keyframes pcPow{0%{opacity:1;transform:translate(-50%,-50%) scale(.3) rotate(-12deg)}
  45%{opacity:1;transform:translate(-50%,-50%) scale(1.15) rotate(6deg)}
  100%{opacity:0;transform:translate(-50%,-50%) scale(1) rotate(0)}}
.pcFx{position:absolute;left:50%;top:0;transform:translateX(-50%);font:700 15px/1 var(--mono);
  color:var(--gold-bright);opacity:0;pointer-events:none;text-shadow:0 2px 6px rgba(0,0,0,.8);z-index:6;white-space:nowrap}
.pcFx.show{animation:pcRise .7s ease-out forwards}
.pcFx.bad{color:#FF9E86}
.pcFx.gold{color:#FFD873;font-size:19px}
.pcFx.fever{color:#FFB347;font-size:17px}
.pcFx.clock{color:#9FE3DA;font-size:18px}
@keyframes pcRise{0%{opacity:1;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-150%)}}
/* 3-2-1 */
.pcCount{position:absolute;inset:0;z-index:8;display:flex;align-items:center;justify-content:center;pointer-events:none;
  font:900 clamp(70px,20vw,120px)/1 var(--display);color:#fff;text-shadow:0 0 30px rgba(255,216,115,.7),0 6px 0 rgba(0,0,0,.4)}
.pcCount[hidden]{display:none}
.pcCount.go{color:#FFD873;font-size:clamp(46px,13vw,80px);letter-spacing:.04em}
.pcCount.show{animation:pcCount .6s ease-out}
@keyframes pcCount{from{transform:scale(1.8);opacity:0}30%{transform:scale(1);opacity:1}to{transform:scale(.9);opacity:.85}}
.pcTimeBar{max-width:470px;height:6px;margin:10px auto 0;background:rgba(10,26,16,.12);border-radius:3px;overflow:hidden}
.pcTimeBar span{display:block;height:100%;width:100%;background:linear-gradient(90deg,var(--gold-dim),var(--gold-bright));transition:width 1s linear}
.pcBoard.ot + .pcTimeBar span{background:#E4574C}
.gsound{margin-left:4px}
@media(prefers-reduced-motion:reduce){
  .pcRiser,.pcPow,.pcFx,.pcCount,.pcBoard{transition:none !important;animation:none !important}
  .pcFx.show{opacity:1}
}
.gamebar{display:flex;flex-wrap:wrap;align-items:center;gap:14px;justify-content:center;margin:18px 0 6px}
.btn.big{font-size:14px;padding:15px 40px}
.gcall{font-size:15px;font-style:italic;color:rgba(10,26,16,.65);min-height:1.4em;text-align:center}
.rules{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:8px;margin-top:22px}
.rule{background:var(--card);border:1px solid var(--rule);padding:10px 13px;font-size:14px;
  display:flex;align-items:baseline;gap:10px}
.rk{font-family:var(--mono);font-size:13px;font-weight:700;color:var(--felt);flex:0 0 auto}
.rk.gold{color:var(--gold-dim)}
.rk.bad{color:var(--rust)}

.overcard{background:var(--felt);color:var(--parchment);padding:24px;margin-top:18px;text-align:center;
  border:2px solid var(--gold)}
.overlbl{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
.overscore{font-family:var(--display);font-size:clamp(46px,12vw,72px);font-weight:800;color:var(--gold-bright);
  line-height:1;letter-spacing:-.03em;margin:4px 0 8px}
.overrank{font-family:var(--display);font-size:clamp(21px,5vw,28px);font-weight:700;color:#fff;letter-spacing:-.02em}
.overdesc{font-size:15px;color:rgba(239,234,219,.8);max-width:44ch;margin:8px auto 0;line-height:1.55}
.overstats{font-family:var(--mono);font-size:11.5px;color:rgba(239,234,219,.55);margin-top:12px}
.overcard .btnrow{justify-content:center;margin-top:16px}
@media(max-width:640px){
  .hud{grid-template-columns:repeat(4,1fr);gap:5px}
  .hudcell{padding:9px 3px}
  .hudcell .hv{font-size:20px}
  .hudcell .hl{font-size:7.5px;letter-spacing:.07em}
  .pcBoard{gap:8px;padding:10px;max-width:100%}
  .pcFx{font-size:13px}
}

/* ============================================================
   BROADCAST CHROME — the "pro league site" layer.
   Denser, squarer, more scoreboard than record book.
   ============================================================ */

/* --- masthead: network-style bar with a live accent rule --- */
.masthead{position:relative;padding:20px 0 16px;border-bottom:0}
.masthead::after{content:"";position:absolute;left:0;right:0;bottom:0;height:5px;
  background:var(--t-stripe);background-color:var(--gold)}
.masthead.slim{padding:16px 0 13px}
.crest .sub{font-weight:600}
/* --- nav: scoreboard tab strip --- */
.nav{background:var(--felt-deep);border-bottom:1px solid rgba(255,255,255,.09)}
.nav a{padding:13px 15px;font-weight:600;font-size:10px;border-bottom:3px solid transparent;position:relative}
.nav a.on{color:#fff;border-bottom-color:var(--gold-bright);background:rgba(255,255,255,.05)}

/* --- section headers as broadcast lower-thirds --- */
.eyebrow{gap:0;margin-bottom:6px}
.eyebrow::after{display:none}
.eyebrow span{background:var(--felt);color:#fff;padding:6px 13px;font-weight:700;
  letter-spacing:.2em;font-size:10px;display:inline-block}
.eyebrow.small span{padding:5px 10px}
h2{text-transform:uppercase;letter-spacing:-.03em;font-weight:800;
  border-bottom:3px solid var(--rule);padding-bottom:10px;margin-bottom:16px}

/* --- cards get a team-color style accent edge --- */
.throne,.note,.yr,.mover,.supcard,.vp,.weekcard,.matchcard,.sosrow,.crow,.rank,.tsrow{
  border-radius:0}
.rank{border-left:4px solid var(--rule)}
.rank.top{border-left-color:var(--gold)}
.rank.bottom{border-left-color:var(--rust)}

/* --- tables: tighter, zebra, broadcast stat-sheet feel --- */
table.sheet tbody tr:nth-child(odd) td,#ladder tbody tr:nth-child(odd) td{background:rgba(11,16,22,.028)}
table.sheet td,#ladder tbody td{padding:9px 10px}
thead th,table.sheet thead th{font-weight:700;letter-spacing:.13em;font-size:9.5px}

/* --- numerals: tabular everywhere so columns line up --- */
.mono,td,.sv,.hv,.cpts,.sosval,.mproj,.overscore,.corrbig,.big,.num,.cpos,.brank{
  font-variant-numeric:tabular-nums}

/* --- score pills --- */
.res{border-radius:2px;font-weight:700}

/* ============================================================
   TRIBUTE WEEK dressing — only renders when the theme is on
   ============================================================ */
.tributebar{display:none}
.tributebar[data-banner]{
  display:block;background:var(--felt-deep);color:#fff;border-bottom:4px solid var(--gold);
  font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.tributebar[data-banner] .wrap{display:flex;align-items:center;justify-content:center;
  gap:12px;padding:9px 22px;text-align:center;flex-wrap:wrap}
.tributebar[data-banner] .stars{letter-spacing:.3em;color:var(--gold-bright)}
[data-league-theme="tribute"] .masthead{background:var(--felt-deep)}
[data-league-theme="tribute"] .masthead::after{height:7px}
[data-league-theme="tribute"] .eyebrow span{background:var(--gold)}
[data-league-theme="tribute"] h2{border-bottom-color:var(--gold)}
[data-league-theme="tribute"] body{
  background-image:linear-gradient(180deg,rgba(178,34,52,.05),transparent 340px)}
[data-league-theme="tribute"] .rank.top{border-left-color:var(--gold)}
[data-league-theme="tribute"] footer{border-top:6px solid var(--gold)}
[data-league-theme="tribute"] footer::before{content:"";display:block;height:4px;
  background:var(--t-stripe);margin-bottom:26px}

@media(max-width:640px){
  .eyebrow span{font-size:9px;padding:5px 10px}
  .nav a{padding:12px 11px}
  .tributebar[data-banner]{font-size:9.5px}
  .tributebar[data-banner] .wrap{padding:8px 14px;gap:8px}
}

/* ============================================================
   STUDIO — brushed metal, glass, bevels and specular light.
   Everything below is built from the --t-metal-* tokens, so it
   re-skins automatically with the theme.
   ============================================================ */

/* ---- brushed metal utility: fine vertical grain + diagonal sheen ---- */
.masthead,
.nav,
.verdictline,
.champcard,
.corr,
.overcard,
.commnote{
  background-image:
    /* specular sweep */
    linear-gradient(115deg,rgba(255,255,255,.14) 0%,rgba(255,255,255,0) 32%,
                    rgba(255,255,255,0) 64%,rgba(255,255,255,.07) 100%),
    /* brushed grain */
    repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,rgba(0,0,0,.035) 1px 2px),
    /* body of the metal */
    linear-gradient(180deg,var(--t-metal-3) 0%,var(--t-metal-1) 42%,var(--t-metal-2) 100%);
  background-color:var(--felt-deep);
}

/* ---- masthead: polished plate with a lit top edge and deep drop ---- */
.masthead{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),
             inset 0 -1px 0 rgba(0,0,0,.5),
             0 10px 26px -12px rgba(0,0,0,.65);
  overflow:hidden;
}
/* slow travelling glint across the plate */
.masthead::before{
  content:"";position:absolute;top:0;bottom:0;left:-60%;width:45%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.16),transparent);
  transform:skewX(-18deg);animation:glint 9s ease-in-out infinite;pointer-events:none;
}
@keyframes glint{0%,72%{left:-60%}100%{left:130%}}

/* ---- accent rule under the masthead: lit strip, not flat ---- */
.masthead::after{
  box-shadow:0 0 14px var(--t-glow),inset 0 1px 0 rgba(255,255,255,.4);
}

/* ---- nav: smoked glass rail ---- */
.nav{
  position:sticky;top:0;z-index:40;
  -webkit-backdrop-filter:saturate(150%) blur(10px);backdrop-filter:saturate(150%) blur(10px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 6px 18px -10px rgba(0,0,0,.7);
}
.nav a{transition:background .18s,color .18s,box-shadow .18s}
.nav a:hover{background:rgba(255,255,255,.07)}
.nav a.on{
  background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,0));
  box-shadow:inset 0 -3px 0 var(--gold-bright),0 0 18px -6px var(--t-glow);
}

/* ---- lower-third eyebrow: angled cut + gloss, like a broadcast bug ---- */
.eyebrow span{
  position:relative;overflow:hidden;
  background-image:linear-gradient(180deg,rgba(255,255,255,.22),rgba(255,255,255,0) 55%),
                   linear-gradient(90deg,var(--gold),var(--gold-dim));
  clip-path:polygon(0 0,100% 0,calc(100% - 11px) 100%,0 100%);
  padding-right:20px;
  box-shadow:0 2px 10px -4px rgba(0,0,0,.6);
  color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.4);
}

/* ---- headline: subtle engraved edge ---- */
h2{text-shadow:0 1px 0 rgba(255,255,255,.55)}
h2::after{content:"";display:block;height:3px;margin-top:10px;margin-bottom:-13px;
  background:linear-gradient(90deg,var(--gold),transparent 62%)}

/* ---- cards: beveled glass panels that lift on hover ---- */
.throne,.yr,.mover,.supcard,.vp,.weekcard,.matchcard,.sosrow,.crow,.rank,.tsrow,
.hudcell,.sc,.ballotrow,.mgrchip,.vrow,.extgrade{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 1px 2px rgba(11,16,22,.07),
             0 6px 16px -12px rgba(11,16,22,.4);
  transition:transform .16s ease,box-shadow .16s ease;
}
.rank:hover,.crow:hover,.matchcard:hover,.supcard:hover,.sosrow:hover{
  transform:translateY(-2px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 2px 4px rgba(11,16,22,.08),
             0 16px 30px -18px rgba(11,16,22,.55);
}

/* ---- the leader card gets a lit edge ---- */
.rank.top,.crow.top,.weekcard.eve{
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 0 0 1px var(--gold),
             0 12px 30px -16px var(--t-glow);
}

/* ---- big numerals: scoreboard LED with bloom ---- */
.rank .num,.cpos,.sosrank,.brank,.overscore,.corrbig,.corr .big,.sc .sv,.hudcell .hv{
  text-shadow:0 0 18px var(--t-glow),0 1px 0 rgba(255,255,255,.6);
}
.overscore,.corrbig{filter:drop-shadow(0 0 22px var(--t-glow))}

/* ---- progress bars: glossy capsule fills ---- */
.cbar,.sosbar,.vbar,.bars,.abar{border-radius:99px;overflow:hidden;
  box-shadow:inset 0 1px 3px rgba(11,16,22,.28)}
.cfill,.sosbar .fill,.vfill,.bar,.abar>span{
  background-image:linear-gradient(180deg,rgba(255,255,255,.4),rgba(255,255,255,0) 58%);
  box-shadow:0 0 12px -2px var(--t-glow);
}

/* ---- buttons: machined, with a pressed state ---- */
.btn{
  position:relative;overflow:hidden;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.28),0 2px 8px -4px rgba(0,0,0,.5);
}
.btn.primary{
  background-image:linear-gradient(180deg,rgba(255,255,255,.3),rgba(255,255,255,0) 55%),
                   linear-gradient(180deg,var(--gold-bright),var(--gold));
  border-color:var(--gold);color:#101820;
}
.btn:active{transform:translateY(1px);box-shadow:inset 0 2px 6px rgba(0,0,0,.35)}
.btn.big::after{
  content:"";position:absolute;top:0;bottom:0;left:-40%;width:30%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);
  transform:skewX(-20deg);animation:glint 5.5s ease-in-out infinite;
}

/* ---- dark panels inside the Gauntlet get the same glass treatment ---- */
.panel{
  -webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 10px 24px -18px #000;
}

/* ---- footer: plate with a lit top edge ---- */
footer{box-shadow:inset 0 1px 0 rgba(255,255,255,.14)}

/* ---- tribute bar: lacquered ---- */
.tributebar[data-banner]{
  background-image:linear-gradient(180deg,rgba(255,255,255,.16),rgba(255,255,255,0) 60%),
                   linear-gradient(180deg,var(--t-metal-3),var(--t-metal-2));
  box-shadow:inset 0 -1px 0 rgba(0,0,0,.5),0 4px 14px -8px rgba(0,0,0,.6);
}
.tributebar[data-banner] .stars{text-shadow:0 0 12px var(--t-glow)}

/* ---- motion off for anyone who asked ---- */
@media(prefers-reduced-motion:reduce){
  .masthead::before,.btn.big::after{animation:none;display:none}
  .rank,.crow,.matchcard,.supcard,.sosrow{transition:none}
  .rank:hover,.crow:hover,.matchcard:hover,.supcard:hover,.sosrow:hover{transform:none}
}

/* ---- mobile: drop the expensive blurs, keep the look ---- */
@media(max-width:640px){
  .nav{-webkit-backdrop-filter:none;backdrop-filter:none;background-color:var(--felt-deep)}
  .panel{-webkit-backdrop-filter:none;backdrop-filter:none}
  .masthead::before{display:none}
}

/* ============================================================
   NO FLY ZONE
   ============================================================ */
.sky{position:relative;height:clamp(340px,52vh,470px);overflow:hidden;
  border:2px solid rgba(200,162,74,.35);
  background:
    radial-gradient(120% 80% at 50% 110%,rgba(255,255,255,.14),transparent 60%),
    linear-gradient(180deg,#0B1A2B 0%,#17304A 46%,#2E4F6B 78%,#48708C 100%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),inset 0 -40px 80px -40px rgba(0,0,0,.6);
  touch-action:manipulation;user-select:none;-webkit-user-select:none}
.sky.shake{animation:skyshake .26s ease}
@keyframes skyshake{0%,100%{transform:translateX(0)}25%{transform:translateX(-5px)}75%{transform:translateX(5px)}}

/* city silhouette along the bottom */
.skyline{position:absolute;left:0;right:0;bottom:0;height:86px;pointer-events:none;opacity:.85;
  background:
    linear-gradient(90deg,transparent 0 3%,#0A1219 3% 9%,transparent 9% 12%,#0A1219 12% 16%,
      transparent 16% 21%,#0A1219 21% 26%,transparent 26% 31%,#0A1219 31% 35%,
      transparent 35% 64%,#0A1219 64% 69%,transparent 69% 73%,#0A1219 73% 79%,
      transparent 79% 83%,#0A1219 83% 89%,transparent 89% 93%,#0A1219 93% 98%,transparent 98%);
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 42%);
  mask-image:linear-gradient(180deg,transparent,#000 42%)}

/* the tower */
.tower{position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:104px;text-align:center;z-index:3}
.towerTop{width:72px;height:72px;margin:0 auto;border-radius:50%;overflow:hidden;
  border:3px solid var(--gold);background:var(--felt-deep);
  box-shadow:0 0 22px -4px var(--t-glow),inset 0 2px 0 rgba(255,255,255,.35)}
.towerFace{width:100%;height:100%;object-fit:cover;display:block}
.towerBody{width:64px;margin:-4px auto 0;height:120px;
  background:linear-gradient(90deg,#1A2739,#31465F 48%,#16222F);
  border:1px solid rgba(255,255,255,.14);border-bottom:0;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.3);display:flex;align-items:flex-start;justify-content:center}
.towerBody span{font-family:var(--mono);font-size:8.5px;letter-spacing:.14em;color:var(--gold-bright);
  writing-mode:vertical-rl;margin-top:9px;opacity:.9}

/* approval strip */
.approvalWrap{position:absolute;left:14px;right:14px;top:10px;height:7px;border-radius:99px;
  background:rgba(0,0,0,.42);overflow:hidden;box-shadow:inset 0 1px 3px rgba(0,0,0,.5);z-index:4}
.approvalBar{height:100%;width:100%;border-radius:99px;transition:width .25s ease;
  background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%),
             linear-gradient(90deg,var(--t-pos),#57C98A)}
.approvalBar.warn{background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%),
  linear-gradient(90deg,#C08A2E,#E8B75A)}
.approvalBar.crit{background:linear-gradient(180deg,rgba(255,255,255,.45),rgba(255,255,255,0) 60%),
  linear-gradient(90deg,var(--t-neg),#E4574C)}

/* planes + banners */
.plane{position:absolute;top:0;left:0;display:flex;align-items:center;gap:7px;cursor:pointer;
  will-change:transform;z-index:2;padding:6px 2px}
.plane .jet{font-size:23px;line-height:1;flex:0 0 auto;filter:drop-shadow(0 2px 3px rgba(0,0,0,.5));
  transform:rotate(0deg);color:#EAF1F6}
.plane .banner{font-family:var(--mono);font-size:10.5px;line-height:1.35;letter-spacing:.04em;
  font-weight:700;text-transform:uppercase;color:#15202C;
  background:linear-gradient(180deg,#FFFFFF,#DCE4EA);
  padding:6px 11px;border:1px solid rgba(0,0,0,.25);
  box-shadow:0 2px 6px -2px rgba(0,0,0,.6);position:relative;
  white-space:normal;max-width:min(64vw,420px);width:max-content}
.plane .banner::before{content:"";position:absolute;left:-7px;top:18px;width:7px;height:1px;
  background:rgba(255,255,255,.6)}
.plane .who{font-family:var(--mono);font-size:8.5px;letter-spacing:.12em;text-transform:uppercase;
  color:rgba(255,255,255,.62);flex:0 0 auto;align-self:flex-start;margin-top:5px}
.plane.rtl .banner,.plane.rtl .who{transform:scaleX(-1)}
.plane.gold .banner{background:linear-gradient(180deg,#FFE9A8,#E8C56A);border-color:#A5822B}
.plane.gold .jet{color:#FFD873;filter:drop-shadow(0 0 10px rgba(255,216,115,.85))}
.plane.downed{opacity:.35;transition:opacity .4s}
.plane.downed .banner{text-decoration:line-through;background:#9AA7B1}

/* tracer + score pop */
.tracer{position:absolute;height:2px;transform-origin:0 50%;z-index:5;pointer-events:none;
  background:linear-gradient(90deg,rgba(255,255,255,.95),var(--gold-bright));
  box-shadow:0 0 10px var(--t-glow);animation:tracerFade .2s ease-out forwards}
@keyframes tracerFade{from{opacity:1}to{opacity:0}}
.pop{position:absolute;top:0;left:0;font-family:var(--mono);font-size:14px;font-weight:700;
  color:var(--gold-bright);text-shadow:0 2px 6px rgba(0,0,0,.8);z-index:6;pointer-events:none;
  animation:popRise .7s ease-out forwards}
.pop.gold{color:#FFD873;font-size:17px}
@keyframes popRise{0%{opacity:1}100%{opacity:0;margin-top:-34px}}

/* wave flash */
.waveFlash{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-size:clamp(34px,9vw,62px);font-weight:800;letter-spacing:-.03em;
  color:#fff;text-shadow:0 0 28px var(--t-glow);opacity:0;pointer-events:none;z-index:7;
  transition:opacity .3s}
.waveFlash.on{opacity:1}

@media(max-width:640px){
  .sky{height:clamp(300px,46vh,380px)}
  .plane .banner{font-size:9px;line-height:1.3;padding:5px 8px;max-width:60vw}
  .plane .jet{font-size:19px}
  .plane .who{display:none}
  .towerTop{width:58px;height:58px}
  .towerBody{width:52px;height:92px}
}
@media(prefers-reduced-motion:reduce){
  .sky.shake{animation:none}
  .pop{animation:none;opacity:1}
  .tracer{animation:none;opacity:.9}
}

/* ============================================================
   THE REVEAL — cinematic click-through rankings presentation
   ============================================================ */
.reveal-cta{display:inline-flex;align-items:center;gap:8px;margin:2px 0 22px}

.revealStage{
  position:fixed;inset:0;z-index:200;
  background:
    radial-gradient(120% 90% at 50% -10%,rgba(255,255,255,.08),transparent 55%),
    linear-gradient(180deg,var(--felt-deep) 0%,var(--felt) 60%,var(--felt-deep) 100%);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  overflow:hidden;touch-action:pan-y;
}
.revealStage[hidden]{display:none}
.revealProgress{position:absolute;top:16px;left:50%;transform:translateX(-50%);
  display:flex;gap:6px;z-index:4;max-width:88vw;flex-wrap:wrap;justify-content:center}
.pdot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.22);transition:background .2s}
.pdot.done{background:var(--gold-dim)}
.pdot.on{background:var(--gold-bright);box-shadow:0 0 8px var(--t-glow)}
.revealClose{position:absolute;top:12px;right:14px;z-index:5;background:rgba(0,0,0,.3);
  border:1px solid rgba(255,255,255,.25);color:#fff;font-size:22px;line-height:1;width:38px;height:38px;
  border-radius:50%;cursor:pointer}
.revealClose:hover{background:rgba(255,255,255,.15)}
.revealZoneL,.revealZoneR{position:absolute;top:0;bottom:64px;width:38%;z-index:2;cursor:pointer}
.revealZoneL{left:0}
.revealZoneR{right:0}
.revealSlide{position:relative;z-index:3;width:100%;max-width:640px;padding:26px 26px 0;
  text-align:center;opacity:0;transform:translateY(18px) scale(.98);transition:none;
  max-height:calc(100vh - 130px);max-height:calc(100dvh - 130px);overflow-y:auto;overscroll-behavior:contain}
/* when a slide's text runs past the fold: a fade and a bouncing cue until it's been scrolled */
.revealSlide.more{-webkit-mask-image:linear-gradient(180deg,#000 calc(100% - 70px),transparent);mask-image:linear-gradient(180deg,#000 calc(100% - 70px),transparent)}
.revealSlide.more::after{content:"\2193 more";position:sticky;display:block;bottom:4px;margin:0 auto;width:max-content;padding:3px 10px;
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-bright);
  animation:rvMore 1.2s ease-in-out infinite}
@keyframes rvMore{50%{transform:translateY(3px)}}
/* compact headers for long commentary */
.rvTeam.long .rvRankNum{font-size:clamp(56px,13vw,96px)}
.rvTeam.long .rvRes{margin-bottom:10px}
.rvTeam.long .rvFace{width:68px;height:68px;margin-bottom:10px}
.rvTeam.long .rvName{margin-bottom:6px}
.rvTeam.long .rvMeta{margin-bottom:12px}
.rvTeam.long .rvBlurb{font-size:15px;line-height:1.58;max-width:60ch}
.rvTeam.xlong .rvRankNum{font-size:clamp(48px,11vw,80px)}
.rvTeam.xlong .rvFace{width:58px;height:58px}
.rvTeam.xlong .rvBlurb{font-size:14.5px;line-height:1.55}
.revealSlide.in{opacity:1;transform:none;transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1)}
.revealNav{position:relative;z-index:3;display:flex;align-items:center;gap:16px;
  padding:16px 20px calc(16px + env(safe-area-inset-bottom));width:100%;max-width:640px;justify-content:space-between}
.revealHint{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:rgba(255,255,255,.4);
  text-align:center;flex:1}

/* intro / outro cards */
.rvKicker{font-family:var(--mono);font-size:11px;letter-spacing:.28em;text-transform:uppercase;
  color:var(--gold);margin-bottom:10px}
.rvTitle{font-family:var(--display);font-weight:800;font-size:clamp(26px,6vw,42px);
  letter-spacing:-.03em;text-transform:uppercase;color:#fff;margin-bottom:22px;
  text-shadow:0 0 24px var(--t-glow)}
.rvNoteCard{background:rgba(255,255,255,.04);border:1px solid rgba(255,255,255,.16);
  padding:26px 24px;box-shadow:inset 0 1px 0 rgba(255,255,255,.14),0 20px 40px -20px rgba(0,0,0,.7)}
.rvNoteText{margin:0;font-family:var(--body);font-size:clamp(16px,3vw,19px);line-height:1.6;
  color:rgba(255,255,255,.92);white-space:pre-wrap}
.rvStart{margin-top:26px;font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  color:rgba(255,255,255,.4)}

/* team slides */
.rvTeam{display:flex;flex-direction:column;align-items:center}
.rvRankNum{font-family:var(--display);font-weight:800;font-size:clamp(70px,20vw,150px);line-height:.85;
  letter-spacing:-.04em;
  background:linear-gradient(180deg,#fff 0%,var(--t-metal-edge) 46%,var(--gold-bright) 60%,#fff 82%,var(--t-metal-edge) 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 4px 2px rgba(0,0,0,.5)) drop-shadow(0 0 30px var(--t-glow));
  margin-bottom:6px}
.rvRes{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.14em;
  padding:3px 11px;border:1px solid currentColor;margin-bottom:14px}
.rvRes.w{color:#57C98A}
.rvRes.l{color:#E4574C}
.rvFace{width:92px;height:92px;border-radius:50%;object-fit:cover;border:3px solid var(--gold);
  box-shadow:0 0 26px -6px var(--t-glow);margin-bottom:16px}
.rvName{font-family:var(--display);font-weight:800;font-size:clamp(22px,5vw,32px);color:#fff;
  letter-spacing:-.02em;margin-bottom:8px}
.rvMeta{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:rgba(255,255,255,.55);
  margin-bottom:16px}
.rvBlurb{margin:0;font-size:15.5px;line-height:1.65;color:rgba(255,255,255,.85);max-width:52ch}
.rvBlurb.rvPending{font-style:italic;color:rgba(255,255,255,.35);border:1px dashed rgba(255,255,255,.25);
  padding:10px 16px;display:inline-block}

/* outro recap list */
.rvFinal{list-style:none;margin:6px 0 26px;padding:0;text-align:left;max-width:340px;
  margin-left:auto;margin-right:auto;counter-reset:rvf}
.rvFinal li{counter-increment:rvf;display:flex;align-items:center;gap:10px;padding:6px 0;
  border-bottom:1px solid rgba(255,255,255,.08);color:rgba(255,255,255,.85);font-size:14.5px}
.rvFinal li::before{content:counter(rvf)".";font-family:var(--mono);font-size:12px;color:var(--gold-dim);
  width:20px;flex:0 0 auto;text-align:right}
.rvMiniFace{width:26px;height:26px;border-radius:50%;object-fit:cover;flex:0 0 auto}

@media(max-width:640px){
  .revealSlide{padding:18px 16px 0;max-height:calc(100vh - 118px);max-height:calc(100dvh - 118px)}
  .rvTeam.long .rvBlurb{font-size:14.5px;line-height:1.52}
  .rvTeam.xlong .rvBlurb{font-size:14px}
  .pdot{width:6px;height:6px}
  .revealProgress{gap:4px;max-width:calc(100vw - 110px);top:20px}
  .rvNoteCard{padding:20px 16px}
  .rvFace{width:76px;height:76px}
  .revealNav{padding:12px 14px calc(12px + env(safe-area-inset-bottom));gap:10px}
  .revealHint{display:none}
}
@media(prefers-reduced-motion:reduce){
  .revealSlide{transition:none !important;opacity:1;transform:none}
}

/* ============================================================
   THREE-PAGE SECTIONS — First / Second / Third Page Boys.
   Tones run hot (front page) to cold (last page).
   ============================================================ */
.tone-first  { --tone: var(--gold-bright); --toneGlow: var(--t-glow); }
.tone-second { --tone: #7C8FB8;            --toneGlow: rgba(124,143,184,.45); }
.tone-third  { --tone: var(--t-neg);       --toneGlow: rgba(178,34,52,.4); }

/* --- divider in the normal scrollable list --- */
.pageBreak{display:flex;align-items:center;gap:14px;margin:26px 0 12px;
  padding:9px 15px;background:var(--felt);color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 6px 16px -12px rgba(0,0,0,.6);
  border-left:5px solid var(--tone)}
.pageBreak:first-child{margin-top:4px}
.pbName{font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:-.01em;
  text-transform:uppercase;flex:1}
.pbRange{font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--tone)}
.rank.tone-first{border-left-color:var(--gold)}
.rank.tone-second{border-left-color:#7C8FB8}
.rank.tone-third{border-left-color:var(--t-neg)}

/* --- full-screen page card in the Reveal --- */
.rvPage{display:flex;flex-direction:column;align-items:center;gap:14px;padding:20px 0}
.rvPageRule{width:min(340px,70vw);height:3px;background:linear-gradient(90deg,transparent,var(--tone),transparent);
  box-shadow:0 0 16px var(--toneGlow)}
.rvPageLabel{font-family:var(--mono);font-size:12px;letter-spacing:.3em;color:var(--tone)}
.rvPageName{font-family:var(--display);font-weight:800;font-size:clamp(30px,8vw,58px);
  letter-spacing:-.035em;text-transform:uppercase;color:#fff;line-height:1;
  text-shadow:0 0 32px var(--toneGlow)}
.rvPageSub{font-family:var(--body);font-size:15px;color:rgba(255,255,255,.55);font-style:italic}

/* --- section tag on each team slide --- */
.rvTeamPage{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--tone);margin-bottom:12px}
.rvTeam.tone-first .rvFace{border-color:var(--gold)}
.rvTeam.tone-second .rvFace{border-color:#7C8FB8}
.rvTeam.tone-third .rvFace{border-color:var(--t-neg)}

/* --- grouped outro recap --- */
.rvFinal{counter-reset:none}
.rvFinal li::before{content:none}
.rvFinalHead{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--tone);border-bottom:0 !important;padding:14px 0 4px !important;display:block !important}
.rvFinalRow{display:flex;align-items:center;gap:10px}
.rvFinalRank{font-family:var(--mono);font-size:12px;color:rgba(255,255,255,.4);width:20px;
  flex:0 0 auto;text-align:right}

@media(max-width:640px){
  .pageBreak{margin:20px 0 10px;padding:8px 12px;gap:10px}
  .pbName{font-size:15px}
}

/* ============================================================
   SEALED RANKINGS GATE
   ============================================================ */
.revealGate{margin:6px 0 26px;padding:28px 26px;text-align:center;
  background:var(--felt);color:#fff;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 18px 40px -22px rgba(0,0,0,.7);
  border:1px solid rgba(255,255,255,.1)}
.revealGate.sealed{border-color:rgba(200,162,74,.45)}
.revealGate[hidden]{display:none}
.gateLock{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.28em;
  color:var(--gold-bright);padding:4px 12px;border:1px solid rgba(200,162,74,.5);margin-bottom:14px;
  text-shadow:0 0 12px var(--t-glow)}
.gateLock.open{color:#57C98A;border-color:rgba(87,201,138,.5);text-shadow:0 0 12px rgba(87,201,138,.5)}
.gateTitle{font-family:var(--display);font-weight:800;font-size:clamp(22px,4.5vw,32px);
  letter-spacing:-.025em;text-transform:uppercase;margin-bottom:8px}
.gateSub{font-size:15px;color:rgba(255,255,255,.65);max-width:48ch;margin:0 auto 20px;line-height:1.55}
.revealGate .btn.big{font-size:14px;padding:15px 36px}

/* ============================================================
   MOBILE MENU (hamburger + sheet)
   ============================================================ */
.menuBtn{display:none;margin-left:auto;background:transparent;border:1px solid rgba(255,255,255,.22);
  width:42px;height:38px;border-radius:4px;cursor:pointer;padding:9px 10px;flex-direction:column;
  justify-content:space-between;flex:0 0 auto}
.menuBtn span{display:block;height:2px;background:#fff;border-radius:2px;transition:transform .2s,opacity .2s}
.menuBtn[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.menuBtn[aria-expanded="true"] span:nth-child(2){opacity:0}
.menuBtn[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.menuSheet{position:fixed;inset:0;z-index:300;background:rgba(0,0,0,.55);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);display:flex;justify-content:flex-end}
.menuSheet[hidden]{display:none}
.menuInner{width:min(360px,88vw);height:100%;background:var(--felt-deep);color:#fff;
  display:flex;flex-direction:column;box-shadow:-20px 0 50px rgba(0,0,0,.6);
  animation:sheetIn .28s cubic-bezier(.2,.8,.2,1)}
@keyframes sheetIn{from{transform:translateX(40px);opacity:0}to{transform:none;opacity:1}}
.menuHead{display:flex;align-items:center;justify-content:space-between;padding:18px 20px;
  border-bottom:1px solid rgba(255,255,255,.1)}
.menuBrand{font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:-.03em;color:var(--gold-bright)}
.menuClose{background:transparent;border:1px solid rgba(255,255,255,.25);color:#fff;font-size:22px;
  width:38px;height:38px;border-radius:50%;cursor:pointer;line-height:1}
.menuLinks{display:flex;flex-direction:column;padding:10px 0;flex:1;overflow-y:auto}
.menuLinks a{padding:15px 22px;color:rgba(255,255,255,.85);text-decoration:none;
  font-family:var(--display);font-weight:700;font-size:18px;letter-spacing:-.01em;
  border-left:4px solid transparent;transition:background .15s}
.menuLinks a:hover{background:rgba(255,255,255,.06)}
.menuLinks a.on{color:#fff;border-left-color:var(--gold-bright);background:rgba(255,255,255,.08)}
.menuFoot{padding:16px 22px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;
  text-transform:uppercase;color:rgba(255,255,255,.35);border-top:1px solid rgba(255,255,255,.1)}
@media(max-width:760px){
  .nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:8px}
  .nav .wrap>a{display:none}
  .nav .wrap>a.on{display:inline-block;font-size:11px}
  .menuBtn{display:flex}
}

/* ============================================================
   RESULTS TICKER
   ============================================================ */
.ticker{display:flex;align-items:stretch;background:var(--felt-deep);color:#fff;
  border-bottom:1px solid rgba(255,255,255,.08);overflow:hidden;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.08)}
.tkLabel{flex:0 0 auto;padding:8px 14px;font-family:var(--mono);font-size:10px;letter-spacing:.2em;
  text-transform:uppercase;background:var(--gold);color:#101820;display:flex;align-items:center;
  font-weight:700;white-space:nowrap}
.tkTrack{flex:1;overflow:hidden;position:relative}
.tkReel{display:inline-flex;white-space:nowrap;animation:tickerRun 48s linear infinite;
  padding:8px 0;will-change:transform}
.tkTrack:hover .tkReel{animation-play-state:paused}
.tkItem{font-family:var(--mono);font-size:12px;padding:0 26px;letter-spacing:.02em;
  border-right:1px solid rgba(255,255,255,.12);color:rgba(255,255,255,.82)}
.tkItem b{color:#fff}
.tkItem i{font-style:normal;color:var(--gold-bright);margin:0 4px}
@keyframes tickerRun{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media(prefers-reduced-motion:reduce){.tkReel{animation:none}}
@media(max-width:640px){.tkLabel{font-size:9px;padding:7px 10px}.tkItem{font-size:11px;padding:0 16px}}

/* ============================================================
   SCROLL PROGRESS + BACK TO TOP
   ============================================================ */
.scrollBar{position:fixed;top:0;left:0;height:3px;width:0;z-index:400;
  background:linear-gradient(90deg,var(--gold),var(--gold-bright));box-shadow:0 0 10px var(--t-glow);
  pointer-events:none;transition:width .1s linear}
.toTop{position:fixed;right:18px;bottom:calc(18px + env(safe-area-inset-bottom));z-index:150;
  width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.25);
  background:var(--felt);color:#fff;font-size:18px;cursor:pointer;
  box-shadow:0 8px 24px -8px rgba(0,0,0,.7),inset 0 1px 0 rgba(255,255,255,.2)}
.toTop[hidden]{display:none}
.toTop:hover{background:var(--gold);color:#101820}

/* ============================================================
   SCROLL-IN ANIMATION
   ============================================================ */
.rise{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.8,.2,1)}
.rise.seen{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.rise{opacity:1;transform:none;transition:none}}

/* ============================================================
   MANAGER CROSS-LINKS
   ============================================================ */
.rank .nm.linky{cursor:pointer;text-decoration:underline;text-decoration-color:rgba(10,26,16,.18);
  text-underline-offset:3px;transition:text-decoration-color .15s}
.rank .nm.linky:hover{text-decoration-color:var(--gold)}

/* ============================================================
   THE REVEAL — tribute slide (original illustration, not a photo)
   and the standalone "Our rankings are as follows." transition.
   ============================================================ */
.rvTribute{display:flex;flex-direction:column;align-items:center;gap:6px}
.cultureSvg{width:min(92vw,460px);height:auto;filter:drop-shadow(0 10px 18px rgba(0,0,0,.5));margin-bottom:6px}
/* opacity only: a CSS transform here would override each <g>'s transform attribute
   and stack every item in the top-left corner */
.cultureItem{opacity:0;animation:cultIn .55s ease forwards}
@keyframes cultIn{to{opacity:1}}
.ci1{animation-delay:.05s}.ci2{animation-delay:.22s}.ci3{animation-delay:.40s}
.ci4{animation-delay:.55s}.ci5{animation-delay:.68s}.ci6{animation-delay:.80s}
@keyframes bbqIn{to{opacity:1;transform:translateY(0) scale(1)}}
.rvFlagRule{width:min(300px,60vw);height:5px;margin:10px 0 16px;border-radius:2px;
  background:repeating-linear-gradient(90deg,#B22234 0 20px,#FFFFFF 20px 40px,#3C3B6E 40px 60px);
  box-shadow:0 0 16px rgba(178,34,52,.5);
  opacity:0;animation:bbqIn .5s ease forwards;animation-delay:.95s}
.rvKicker.trib{opacity:0;animation:bbqIn .5s ease forwards;animation-delay:1.05s;color:#E4574C}
.rvTitle.trib{opacity:0;animation:bbqIn .5s ease forwards;animation-delay:1.15s;
  text-shadow:0 0 24px rgba(178,34,52,.55)}
.rvTributeText{opacity:0;animation:bbqIn .6s ease forwards;animation-delay:1.3s;
  margin:0;font-size:16px;line-height:1.65;color:rgba(255,255,255,.88);max-width:46ch}

.rvLead{display:flex;align-items:center;justify-content:center;min-height:30vh}
.rvLeadText{font-family:var(--display);font-weight:800;font-size:clamp(28px,7vw,50px);
  letter-spacing:-.03em;color:#fff;text-align:center;text-shadow:0 0 28px var(--t-glow);
  opacity:0;transform:translateY(10px);animation:bbqIn .6s cubic-bezier(.2,.8,.2,1) forwards .1s}

@media(prefers-reduced-motion:reduce){
  .bbqItem,.rvFlagRule,.rvKicker.trib,.rvTitle.trib,.rvTributeText,.rvLeadText{
    animation:none !important;opacity:1 !important;transform:none !important}
}
@media(max-width:640px){
  .rvTributeText{font-size:14.5px}
}

/* ============================================================
   IDENTITY — crest lockup replaces the stacked text masthead
   ============================================================ */
.crest{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.crestLink{display:inline-flex;align-items:center;gap:14px;text-decoration:none;color:inherit;
  transition:transform .25s cubic-bezier(.2,.8,.2,1)}
.crestLink:hover{transform:translateY(-1px)}
.crestMark{width:46px;height:46px;flex:0 0 auto;color:var(--gold-bright);
  filter:drop-shadow(0 2px 6px rgba(0,0,0,.45))}
.masthead .crestMark{animation:crestIn .7s cubic-bezier(.2,.8,.2,1) both}
@keyframes crestIn{from{opacity:0;transform:translateY(6px) rotate(-6deg) scale(.9)}to{opacity:1;transform:none}}
.crestType{display:flex;flex-direction:column;align-items:flex-start;text-align:left;line-height:1}
.crestName{font-family:var(--display);font-weight:800;font-size:clamp(26px,5.2vw,40px);
  letter-spacing:-.045em;text-transform:uppercase;
  background:linear-gradient(180deg,#fff 0%,var(--t-metal-edge) 48%,var(--gold-bright) 62%,#fff 82%,var(--t-metal-edge) 100%);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.5))}
.crestEst{font-family:var(--mono);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;
  color:rgba(255,255,255,.5);margin-top:6px}
.crest .sub{margin-left:auto;font-family:var(--mono);font-size:10.5px;letter-spacing:.24em;
  text-transform:uppercase;color:var(--gold);padding:6px 0 6px 18px;
  border-left:1px solid rgba(255,255,255,.16);align-self:center}
/* footer signature */
.sig{display:flex;flex-direction:column;gap:5px;align-items:center;text-align:center}
.sigName{font-family:var(--display);font-weight:800;font-size:19px;letter-spacing:-.03em;
  color:var(--gold-bright);text-transform:uppercase}
.sigMeta{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(255,255,255,.4)}

@media(max-width:640px){
  .crest{gap:10px}
  .crestMark{width:36px;height:36px}
  .crestEst{font-size:8.5px;letter-spacing:.16em}
  .crest .sub{margin-left:0;border-left:0;padding:0;font-size:9.5px;flex-basis:100%}
}

/* ============================================================
   SURFACE — real paper/field texture instead of a flat wash
   ============================================================ */
body{
  background-image:
    /* fine grain */
    repeating-linear-gradient(0deg,rgba(11,16,22,.014) 0 1px,transparent 1px 3px),
    /* soft corner light */
    radial-gradient(90% 60% at 12% -8%,rgba(255,255,255,.55),transparent 60%),
    radial-gradient(70% 50% at 100% 0%,var(--t-glow),transparent 55%),
    linear-gradient(180deg,var(--t-bg) 0%,var(--t-bg) 100%);
  background-attachment:fixed,fixed,fixed,fixed;
}
[data-league-theme="tribute"] body{
  background-image:
    repeating-linear-gradient(0deg,rgba(19,26,38,.014) 0 1px,transparent 1px 3px),
    radial-gradient(90% 60% at 12% -8%,rgba(255,255,255,.5),transparent 60%),
    radial-gradient(70% 50% at 100% 0%,rgba(178,34,52,.13),transparent 55%),
    linear-gradient(180deg,var(--t-bg) 0%,var(--t-bg) 100%);
}
/* dark chrome gets a subtle grain too so it doesn't read as flat fill */
/* .revealStage and .nav deliberately excluded: the stage must stay position:fixed and
   the nav position:sticky, and a later position:relative would silently undo both */
.masthead,footer{position:relative}
.masthead::before,footer::after{pointer-events:none}
footer{position:relative;overflow:hidden}
footer::after{content:"";position:absolute;inset:0;
  background:repeating-linear-gradient(90deg,rgba(255,255,255,.02) 0 1px,transparent 1px 2px);}

/* ============================================================
   TYPE — tighter rhythm, better measure, real small-caps labels
   ============================================================ */
.lede{max-width:66ch;color:rgba(11,16,22,.78)}
h2{margin-bottom:14px}
.eyebrow span{position:relative}
section{padding:40px 0}
section + section{padding-top:14px}
.cap,.hl,.sl{font-variant-numeric:tabular-nums}
.blurb{max-width:72ch;color:rgba(11,16,22,.8)}
table.sheet,#ladder{font-variant-numeric:tabular-nums}

/* ============================================================
   MOTION — staggered entrance so content assembles, not pops
   ============================================================ */
.rise{transition-delay:calc(var(--i, 0) * 45ms)}
.eyebrow{opacity:0;animation:ebIn .5s ease forwards}
@keyframes ebIn{to{opacity:1}}
.ticker{animation:tkDrop .55s cubic-bezier(.2,.8,.2,1) both .1s}
@keyframes tkDrop{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  .masthead .crestMark,.ticker,.eyebrow{animation:none;opacity:1;transform:none}
  .rise{transition-delay:0ms}
}
.menuBrand{display:inline-flex;align-items:center;gap:10px}
.menuBrand .crestMark{width:28px;height:28px;color:var(--gold-bright)}

/* ============================================================
   WORLD NEWS TICKER — separate from the game-results ticker,
   strictly factual headlines, no editorializing.
   ============================================================ */
.worldticker{display:flex;align-items:stretch;background:var(--t-surface-deep);color:#fff;
  border-bottom:1px solid rgba(255,255,255,.1);overflow:hidden}
.worldticker .wrap{display:flex;align-items:stretch;width:100%}
.worldticker .wtLabel{flex:0 0 auto;padding:7px 13px;font-family:var(--mono);font-size:9.5px;
  letter-spacing:.2em;text-transform:uppercase;background:rgba(255,255,255,.08);color:rgba(255,255,255,.7);
  display:flex;align-items:center;white-space:nowrap;border-right:1px solid rgba(255,255,255,.1)}
.worldticker .wtTrack{flex:1;overflow:hidden;position:relative}
.worldticker .wtReel{display:inline-flex;white-space:nowrap;animation:tickerRun 62s linear infinite;
  padding:7px 0}
.worldticker .wtTrack:hover .wtReel{animation-play-state:paused}
.worldticker .wtItem{font-family:var(--mono);font-size:11px;padding:0 22px;letter-spacing:.01em;
  color:rgba(255,255,255,.68);border-right:1px solid rgba(255,255,255,.1)}
@media(prefers-reduced-motion:reduce){.worldticker .wtReel{animation:none}}
@media(max-width:640px){
  .worldticker .wtLabel{font-size:8.5px;padding:6px 9px}
  .worldticker .wtItem{font-size:10px;padding:0 14px}
}

/* ============================================================
   PERSIA WEEK dressing — mirrors the tribute-week treatment so
   the theme feels finished, not just recolored.
   ============================================================ */
[data-league-theme="persia"] .masthead{background:var(--felt-deep)}
[data-league-theme="persia"] .masthead::after{height:7px}
[data-league-theme="persia"] .eyebrow span{background:var(--gold)}
[data-league-theme="persia"] h2{border-bottom-color:var(--gold)}
[data-league-theme="persia"] body{
  background-image:
    linear-gradient(180deg,rgba(15,122,106,.06),transparent 340px),
    /* faint tile lattice, fixed so it reads as paper texture not wallpaper */
    repeating-linear-gradient(45deg,rgba(15,122,106,.045) 0 1px,transparent 1px 22px),
    repeating-linear-gradient(-45deg,rgba(216,174,76,.05) 0 1px,transparent 1px 22px);
  background-attachment:fixed}
[data-league-theme="persia"] .rank.top{border-left-color:var(--gold)}
[data-league-theme="persia"] footer{border-top:6px solid var(--gold)}
[data-league-theme="persia"] footer::before{content:"";display:block;height:4px;
  background:var(--t-stripe);margin-bottom:26px}

/* ============================================================
   PERSIA THEME — site-wide dressing (only when data-league-theme=persia)
   ============================================================ */
/* banner strip */
[data-league-theme="persia"] .tributebar{display:block;color:#fff;font-family:var(--mono);font-size:11px;
  letter-spacing:.16em;text-transform:uppercase;border-bottom:3px solid #D8AE4C;
  background-image:linear-gradient(180deg,rgba(255,255,255,.12),rgba(255,255,255,0) 60%),
                   linear-gradient(180deg,var(--t-metal-3),var(--t-metal-2));
  box-shadow:inset 0 -1px 0 rgba(0,0,0,.45),0 4px 14px -8px rgba(0,0,0,.6)}
[data-league-theme="persia"] .tributebar .wrap{display:flex;align-items:center;justify-content:center;
  gap:12px;padding:9px 22px;text-align:center}
.pStar{width:14px;height:14px;flex:0 0 auto}
.pStar rect{fill:none;stroke:#FBE3A0;stroke-width:1.6}

/* faint eight-point tile lattice behind the whole page */
[data-league-theme="persia"] body{
  background-color:var(--t-bg);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='64' viewBox='0 0 64 64'%3E%3Cg fill='none' stroke='%230F7A6A' stroke-opacity='.07' stroke-width='1.2'%3E%3Crect x='20' y='20' width='24' height='24'/%3E%3Crect x='20' y='20' width='24' height='24' transform='rotate(45 32 32)'/%3E%3Ccircle cx='32' cy='32' r='5'/%3E%3Cpath d='M0 0 L12 12 M64 0 L52 12 M0 64 L12 52 M64 64 L52 52'/%3E%3C/g%3E%3C/svg%3E");
  background-size:64px 64px}

/* masthead: same lattice in gold, over the metal plate */
[data-league-theme="persia"] .masthead{position:relative}
[data-league-theme="persia"] .masthead .crest{position:relative;z-index:1}
[data-league-theme="persia"] .masthead::before{
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='48' height='48' viewBox='0 0 48 48'%3E%3Cg fill='none' stroke='%23D8AE4C' stroke-opacity='.16' stroke-width='1'%3E%3Crect x='15' y='15' width='18' height='18'/%3E%3Crect x='15' y='15' width='18' height='18' transform='rotate(45 24 24)'/%3E%3C/g%3E%3C/svg%3E");
  background-size:48px 48px;left:0;right:0;width:auto;transform:none;animation:none;opacity:1}
[data-league-theme="persia"] .masthead::after{height:6px}
[data-league-theme="persia"] footer{border-top:4px solid #D8AE4C}
[data-league-theme="persia"] footer::before{content:"";display:block;height:4px;background:var(--t-stripe);margin-bottom:26px}
[data-league-theme="persia"] .eyebrow span{background-image:linear-gradient(180deg,rgba(255,255,255,.2),rgba(255,255,255,0) 55%),
  linear-gradient(90deg,var(--gold),var(--gold-dim))}


@media(max-width:640px){
  [data-league-theme="persia"] .tributebar{font-size:9.5px}
  [data-league-theme="persia"] .tributebar .wrap{padding:8px 14px;gap:8px}
}

/* ============================================================
   HAMPTON INN TEHRAN
   ============================================================ */
.hotelGame{max-width:680px;margin:0 auto}
.hSprite{image-rendering:pixelated;image-rendering:crisp-edges;display:block;width:72px;height:72px;
  box-shadow:0 6px 16px -8px rgba(0,0,0,.6)}
.hSprite.big{width:108px;height:108px}
.hSprite.sm{width:52px;height:52px}

.hTitleScreen{text-align:center}
.hOwner{display:flex;align-items:center;gap:16px;text-align:left;margin:18px auto 14px;max-width:520px;
  background:var(--felt);color:#fff;padding:14px 16px;box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}
.hOwner p{margin:4px 0 0;font-size:14px;color:rgba(255,255,255,.72)}
.hOwnerName{font-family:var(--display);font-weight:800;font-size:22px;letter-spacing:-.02em}
.hK{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:rgba(10,26,16,.5)}
.hOwner .hK{color:var(--gold-bright)}
.hBest{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--gold-dim);margin:6px 0 12px}

.hHud{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-bottom:8px}
.hCell{background:var(--card);border:1px solid var(--rule);padding:8px 8px 9px;display:flex;flex-direction:column;gap:4px;min-width:0}
.hCell.wide{grid-column:span 1}
.hV{font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:-.02em;white-space:nowrap}
.hV small{font-size:11px;color:rgba(10,26,16,.45);font-weight:600}
.hV.sm{font-size:14px}
.hV.warn{color:var(--rust)}
.hBar{display:block;height:8px;border-radius:99px;background:rgba(10,26,16,.1);overflow:hidden;margin-top:5px}
.hBar span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,var(--gold-dim),var(--gold));transition:width .35s ease}
.hBar.staff span{background:linear-gradient(90deg,#8C6A2E,#D8AE4C)}
.hStars{position:relative;display:inline-block;font-size:15px;letter-spacing:1px;line-height:1}
.hStarsBase{color:rgba(10,26,16,.18)}
.hStarsFill{position:absolute;left:0;top:0;overflow:hidden;white-space:nowrap;color:#D8AE4C;
  text-shadow:0 0 8px rgba(216,174,76,.55)}
.hUps{font-family:var(--mono);font-size:10.5px;color:rgba(10,26,16,.55);margin:0 0 10px}

.hCard{background:var(--card);border:1px solid var(--rule);padding:18px 18px 16px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.9),0 12px 28px -20px rgba(0,0,0,.5)}
.hCard.anim{animation:hIn .35s cubic-bezier(.2,.8,.2,1)}
@keyframes hIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.hCardHead{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--gold-dim);border-bottom:1px solid var(--rule);padding-bottom:9px;margin-bottom:14px}
.hStep{color:rgba(10,26,16,.4)}
.hCardBody{display:flex;gap:16px;align-items:flex-start}
.hArtCol{flex:0 0 auto}
.hTextCol{flex:1;min-width:0}
.hTitle{font-family:var(--display);font-weight:800;font-size:21px;letter-spacing:-.02em;line-height:1.2;margin-bottom:6px}
.hBody{font-size:15px;line-height:1.55;margin:0 0 10px;color:rgba(10,26,16,.8)}
.hQuote{margin:0 0 12px;padding:10px 14px;background:rgba(10,26,16,.04);border-left:3px solid var(--gold);
  font-size:15.5px;line-height:1.5;font-style:italic}
.hQuote.lost{border-left-color:#7C8FB8;background:rgba(124,143,184,.08)}
.hOpts{display:flex;flex-wrap:wrap;gap:8px;margin-top:6px}
.hOpt{flex:1 1 180px;text-align:center;padding:13px 14px;font-size:13px}
.hResult{margin-top:6px;padding-top:12px;border-top:1px dashed var(--rule)}
.hResult p{margin:0 0 10px;font-size:15px;line-height:1.5}
.hChips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px}
.hChip{font-family:var(--mono);font-size:11px;padding:3px 9px;border:1px solid var(--rule);background:rgba(10,26,16,.04)}
.hChip.up{color:var(--sage);border-color:rgba(63,107,68,.35)}
.hChip.dn{color:var(--rust);border-color:rgba(140,58,46,.35)}

.hLedger{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:14px}
.hLedger div{display:flex;flex-direction:column;gap:3px;background:rgba(10,26,16,.04);padding:8px}
.hLedger span{font-family:var(--mono);font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:rgba(10,26,16,.5)}
.hLedger b{font-family:var(--display);font-size:16px}
.hLedger b.up{color:var(--sage)} .hLedger b.dn{color:var(--rust)}
.hReview{display:flex;gap:12px;align-items:center;background:var(--felt);color:#fff;padding:12px 14px;margin-bottom:14px}
.hReview p{margin:0;font-style:italic;font-size:15px}
.hReview span{font-family:var(--mono);font-size:10.5px;color:var(--gold-bright)}
.hShop{margin-bottom:14px}
.hShopHead{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:rgba(10,26,16,.5);margin-bottom:8px}
.hShopItem{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:9px 0;border-top:1px solid var(--rule)}
.hShopItem div{display:flex;flex-direction:column;gap:2px;min-width:0}
.hShopItem span{font-size:13px;color:rgba(10,26,16,.6)}
.hShopItem.owned b{color:var(--sage)}
.hTag{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--sage)}
.hCard .btn.big{width:100%}
.btn[disabled]{opacity:.45;cursor:not-allowed}

.hCard.end{text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px}
.hCard.end.win{border:2px solid var(--gold)}
.hEndLbl{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-dim)}
.hEndTitle{font-family:var(--display);font-weight:800;font-size:clamp(26px,6vw,36px);letter-spacing:-.03em}
.hCard.end .hStars{font-size:26px}

@media(max-width:640px){
  .hHud{grid-template-columns:repeat(3,1fr)}
  .hLedger{grid-template-columns:repeat(2,1fr)}
  .hCardBody{flex-direction:column;align-items:center;text-align:center}
  .hQuote{text-align:left}
  .hSprite.big{width:88px;height:88px}
  .hOpt{flex-basis:100%}
}
@media(prefers-reduced-motion:reduce){.hCard.anim{animation:none}.hBar span{transition:none}}

/* ============================================================
   SEASON STATS — streak chip on the meta line
   ============================================================ */
.streak{font-family:var(--mono);font-weight:700;padding:1px 7px;border-radius:2px;font-size:11px}
.streak.w{background:rgba(63,107,68,.14);color:var(--sage)}
.streak.l{background:rgba(140,58,46,.14);color:var(--rust)}

/* ============================================================
   STANDINGS
   ============================================================ */
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
.sheet.stand th.sortable{cursor:pointer;user-select:none;white-space:nowrap}
.sheet.stand th.sortable.on{color:var(--gold-dim)}
.sheet.stand th.sortable.on::after{content:" \25BE";font-size:9px}
.sheet.stand td{white-space:nowrap;vertical-align:middle}
.sheet.stand tr.inplay td{background:rgba(216,174,76,.07)}
.sheet.stand tr.cutline td{border-bottom:2px solid var(--gold)}
.teamcell{display:flex;align-items:center;gap:10px;min-width:190px}
.teamcell div{display:flex;flex-direction:column;line-height:1.2}
.stname{font-weight:700;color:inherit;text-decoration:none}
.stname:hover{text-decoration:underline;text-decoration-color:var(--gold)}
.stown{font-family:var(--mono);font-size:10px;color:rgba(10,26,16,.5)}
.stface{width:30px;height:30px;border-radius:50%;object-fit:cover;flex:0 0 auto}
.stface.lg{width:54px;height:54px}
.mono.pos{color:var(--sage)} .mono.neg{color:var(--rust)}
.stcalls{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px}
.stcall{display:flex;gap:12px;align-items:center;background:var(--card);border:1px solid var(--rule);padding:14px}
.stcall .lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:rgba(10,26,16,.5)}
.stcall .big{font-family:var(--display);font-weight:800;font-size:24px;letter-spacing:-.02em}
.stcall .sub{font-size:13px;color:rgba(10,26,16,.65)}
.wkgrid td,.wkgrid th{text-align:center;white-space:nowrap}
.wkgrid .teamcell{min-width:120px;text-align:left}
.wkcell{min-width:92px}
.wkcell b{display:block;font-family:var(--mono);font-size:14px}
.wkcell span{display:block;font-family:var(--mono);font-size:9.5px;color:rgba(10,26,16,.55)}
.wkcell.w{background:rgba(63,107,68,.12)} .wkcell.l{background:rgba(140,58,46,.10)}
.wkcell.hi{box-shadow:inset 0 0 0 2px var(--gold)}
.wkcell.lo{outline:2px dashed rgba(140,58,46,.55);outline-offset:-3px}

/* schedule: final scores */
.gm.final .side{position:relative}
.gm .gmscore{font-family:var(--mono);font-size:12px;margin-left:6px}
.gm .side.won{font-weight:700}
.gm .side.lost{opacity:.6}
.gm.final .at{font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--gold-dim)}
.tsres{font-family:var(--mono);font-size:11px;margin-left:auto;padding:1px 7px}
.tsres.w{color:var(--sage)} .tsres.l{color:var(--rust)}

/* preview-only data check */
.datacheck{margin:0 0 18px;padding:12px 16px;border:1px solid var(--rule);font-size:14px}
.datacheck .lbl{font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;margin-bottom:6px}
.datacheck.ok{background:rgba(63,107,68,.08);border-color:rgba(63,107,68,.35)}
.datacheck.bad{background:rgba(140,58,46,.08);border-color:rgba(140,58,46,.45)}
.datacheck p,.datacheck ul{margin:4px 0}
@media(max-width:640px){.stcall .big{font-size:20px}}

/* ============================================================
   PERSIA REVEAL SCENE — full-bleed animated slide.
   Layers, back to front: dusk sky, stars, tile lattice, rosette,
   skyline + reflecting pool, falling petals, vignette. The type
   (.psCopy) rides on top in the normal slide column.
   Timeline: sky 0s → skyline rises .3–1.4s → rosette draws .2–2.2s
   → windows light 1.9–3s → IRAN lands 1.5–2.1s → text 2.4s.
   ============================================================ */
.revealStage.hasScene{justify-content:flex-end;background:#060B1E}
.revealStage.hasScene .revealSlide{max-width:760px;margin-bottom:calc(max(270px,46vh) * .9 - 64px);overflow:visible;max-height:none}
.revealStage.hasScene .revealNav .btn.ghost{background:rgba(6,11,30,.45);backdrop-filter:blur(4px)}
.rvScene{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none}

@media(prefers-reduced-motion:reduce){.cultureItem{animation:none;opacity:1}}

.psSky{position:absolute;inset:0;
  background:linear-gradient(180deg,#050A1F 0%,#0B1840 30%,#1B2A5C 52%,#6A3B5E 70%,#D9784A 84%,#F2B35C 92%,#F7D08A 100%);
  animation:psSkyIn 1.4s ease both}
@keyframes psSkyIn{from{opacity:0;filter:brightness(.4)}to{opacity:1;filter:none}}
.psSun{position:absolute;left:50%;bottom:calc(30vh - 60px);width:60vmin;height:60vmin;transform:translate(-50%,50%);
  border-radius:50%;background:radial-gradient(circle,rgba(255,214,140,.55) 0%,rgba(242,160,80,.25) 35%,transparent 68%);
  animation:psSunUp 2.4s cubic-bezier(.2,.7,.2,1) both .2s}
@keyframes psSunUp{from{opacity:0;transform:translate(-50%,75%) scale(.8)}to{opacity:1;transform:translate(-50%,50%)}}

.psStars{position:absolute;inset:0;width:100%;height:70%}
.psStar{fill:#FFF6DA;opacity:0;animation:psTwinkle 3s ease-in-out infinite,psFadeIn 1.6s ease forwards}
@keyframes psTwinkle{0%,100%{opacity:.25}50%{opacity:1}}
@keyframes psFadeIn{from{opacity:0}}

.psLattice{position:absolute;inset:0;opacity:0;animation:psLat 2s ease forwards .6s;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 62%);mask-image:linear-gradient(180deg,#000 0%,transparent 62%)}
@keyframes psLat{to{opacity:.07}}

.psTitleWrap{position:relative;display:flex;justify-content:center;align-items:center;margin:6px 0 0}
.psRosetteWrap{position:absolute;left:50%;top:50%;width:min(86vw,44vh);aspect-ratio:1;transform:translate(-50%,-50%);z-index:0;pointer-events:none;opacity:.8}
.psRosetteGlow{position:absolute;inset:-18%;border-radius:50%;
  background:radial-gradient(circle,rgba(47,179,166,.35) 0%,rgba(216,174,76,.14) 40%,transparent 68%);
  animation:psGlow 5s ease-in-out infinite alternate,psFadeIn 2s ease both}
@keyframes psGlow{from{transform:scale(.94);opacity:.7}to{transform:scale(1.06);opacity:1}}
.psRosette{width:100%;height:100%;overflow:visible;filter:drop-shadow(0 0 10px rgba(216,174,76,.45))}
.psRosetteSpin{animation:psSpin 140s linear infinite;transform-origin:0 0}
@keyframes psSpin{to{transform:rotate(360deg)}}
.psDraw{stroke-dasharray:1;stroke-dashoffset:1;fill-opacity:0;
  animation:psDraw 1.3s cubic-bezier(.4,0,.2,1) forwards}
@keyframes psDraw{60%{fill-opacity:0}to{stroke-dashoffset:0;fill-opacity:1}}
.psDot{opacity:0;animation:psPop .5s cubic-bezier(.2,1.6,.4,1) forwards;transform-box:fill-box;transform-origin:center}
@keyframes psPop{from{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}

.psCity{position:absolute;left:0;right:0;bottom:0;width:100%;height:max(270px,46vh)}
.psFar{opacity:0;animation:psRise 1.4s cubic-bezier(.2,.8,.2,1) forwards .3s}
.psMid{opacity:0;animation:psRise 1.3s cubic-bezier(.2,.8,.2,1) forwards .6s}
.psFrontRow{opacity:0;animation:psRiseBig 1.4s cubic-bezier(.2,.8,.2,1) forwards .8s}
.psCyps{opacity:0;animation:psRise 1.2s ease forwards 1.1s}
@keyframes psRise{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}
@keyframes psRiseBig{from{opacity:0;transform:translateY(120px)}to{opacity:1;transform:none}}
.psLit{opacity:.08;animation:psLight .6s ease forwards}
@keyframes psLight{to{opacity:1}}
.psPortal{animation:psPortal 3.2s ease-in-out infinite alternate 2s}
@keyframes psPortal{from{opacity:.85}to{opacity:1;filter:brightness(1.15)}}
.psDomeShine{animation:psShine 6s ease-in-out infinite 2.4s;transform:translateX(-120px)}
@keyframes psShine{0%{transform:translateX(-120px)}45%,100%{transform:translateX(340px)}}
.psCypress{animation:psSway 5s ease-in-out infinite alternate}
@keyframes psSway{from{transform:skewX(-1.2deg)}to{transform:skewX(1.2deg)}}
.psRefl{opacity:0;animation:psReflIn 1.4s ease forwards 1.4s}
.psRefl use{animation:psRipple 4s ease-in-out infinite 2.8s}
@keyframes psReflIn{to{opacity:1}}
@keyframes psRipple{0%,100%{opacity:1}50%{opacity:.75}}
.psStreak{opacity:0;animation:psStreak 4s ease-in-out infinite}
@keyframes psStreak{0%,100%{opacity:0;transform:translateX(0)}50%{opacity:.5;transform:translateX(26px)}}

.psPetals{position:absolute;inset:0}
.psPetals span{position:absolute;top:-6%;border-radius:0 100% 0 100%;
  animation-name:psFall,psFlutter;animation-timing-function:linear,ease-in-out;animation-iteration-count:infinite,infinite;
  animation-direction:normal,alternate}
@keyframes psFall{from{transform:translate3d(0,0,0) rotate(0)}to{transform:translate3d(-12vw,112vh,0) rotate(540deg)}}
@keyframes psFlutter{from{margin-left:-18px}to{margin-left:18px}}
.psVignette{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 45%,transparent 55%,rgba(2,4,14,.7) 100%)}

/* type */
.psCopy{display:flex;flex-direction:column;align-items:center;text-shadow:0 2px 18px rgba(3,6,20,.9)}
.psKicker{font-family:var(--mono);font-size:11px;letter-spacing:.34em;text-transform:uppercase;color:#5CD0C0;
  opacity:0;animation:bbqIn .6s ease forwards 1.3s}
.psFarsi{font-size:clamp(22px,4.4vw,34px);color:#F3D27A;margin:8px 0 -4px;line-height:1.3;
  opacity:0;animation:psBlurIn .9s ease forwards 1.45s}
.psTitle{position:relative;z-index:1;text-shadow:none;display:flex;gap:.02em;font-family:var(--display);font-weight:800;line-height:.9;letter-spacing:.04em;
  font-size:clamp(78px,19vw,176px);filter:drop-shadow(0 4px 0 #3A2408) drop-shadow(0 10px 24px rgba(0,0,0,.75)) drop-shadow(0 0 34px rgba(216,174,76,.4))}
.psTitle span{display:inline-block;opacity:0;
  background:linear-gradient(100deg,#B8862C 0%,#F3D27A 30%,#FFF5D6 45%,#F3D27A 60%,#B8862C 100%);background-size:250% 100%;
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
  animation:psLetter .9s cubic-bezier(.2,.9,.25,1.15) forwards,psGild 5s linear infinite 2.6s}
.psTitle span:nth-child(1){animation-delay:1.55s,2.6s}
.psTitle span:nth-child(2){animation-delay:1.7s,2.7s}
.psTitle span:nth-child(3){animation-delay:1.85s,2.8s}
.psTitle span:nth-child(4){animation-delay:2s,2.9s}
@keyframes psLetter{from{opacity:0;transform:translateY(45%) scale(.7) rotateX(70deg);filter:blur(10px)}
  to{opacity:1;transform:none;filter:none}}
@keyframes psGild{from{background-position:120% 0}to{background-position:-130% 0}}
@keyframes psBlurIn{from{opacity:0;filter:blur(8px);transform:translateY(6px)}to{opacity:1;filter:none;transform:none}}
.psRule{height:3px;width:min(340px,64vw);margin:14px 0 16px;transform:scaleX(0);
  background:linear-gradient(90deg,transparent,#2FB3A6 18%,#F3D27A 50%,#2FB3A6 82%,transparent);
  box-shadow:0 0 14px rgba(47,179,166,.6);animation:psRule .9s cubic-bezier(.2,.8,.2,1) forwards 2.2s}
@keyframes psRule{to{transform:scaleX(1)}}
.psText{margin:0;max-width:50ch;font-size:clamp(14.5px,2.2vw,17px);line-height:1.6;color:rgba(255,248,230,.94);
  opacity:0;animation:bbqIn .8s ease forwards 2.45s}

@media(max-width:640px){
  .psCity{height:36vh}
  .revealStage.hasScene .revealSlide{margin-bottom:calc(36vh * .94 - 56px)}
  .psRosetteWrap{width:min(92vw,40vh)}
  .psText{font-size:14px;max-width:34ch}
}
@media(prefers-reduced-motion:reduce){
  .psScene *,.psCopy *{animation:none !important}
  .psFar,.psMid,.psFrontRow,.psCyps,.psLit,.psDot,.psStar,.psKicker,.psFarsi,.psTitle span,.psText{opacity:1 !important}
  .psRefl{opacity:1}.psLattice{opacity:.07}.psDraw{stroke-dashoffset:0;fill-opacity:1}.psRule{transform:none}
  .psPetals{display:none}
}

/* ============================================================
   HAMPTON INN — live hotel scene (built by assets/hotel.js).
   Scene classes: ph-m/d/s/n (time of day), t2/t3/t4 (rating tier,
   cumulative), up-tea/up-roof/up-spa (amenities owned).
   ============================================================ */
.hScene{position:relative;aspect-ratio:680/300;overflow:hidden;margin:0 0 14px;background:#F7D9B0;
  border:2px solid rgba(216,174,76,.6);box-shadow:0 18px 36px -22px rgba(0,0,0,.7);border-radius:3px}
.hsSvg{position:absolute;inset:0;width:100%;height:100%;display:block}
.hsLayer{position:absolute;inset:0;font-size:10px;pointer-events:none}

/* time of day */
.hsSky{opacity:0;transition:opacity 1.4s ease}
.ph-m .hsSky.m,.ph-d .hsSky.d,.ph-s .hsSky.s,.ph-n .hsSky.n{opacity:1}
.hsSun{transform:translate(575px,128px);transition:transform 1.8s cubic-bezier(.4,0,.2,1),opacity 1.2s ease}
.ph-m .hsSun{transform:translate(110px,112px)}
.ph-d .hsSun{transform:translate(340px,36px)}
.ph-n .hsSun{transform:translate(610px,230px);opacity:0}
.hsMoon,.hsStars{opacity:0;transition:opacity 1.4s ease}
.ph-n .hsMoon,.ph-n .hsStars{opacity:1}
.ph-s .hsStars{opacity:.2}
.hsNight{opacity:0;transition:opacity 1.4s ease;pointer-events:none}
.ph-s .hsNight{opacity:.14}
.ph-n .hsNight{opacity:.52}
.hsLight{opacity:0;transition:opacity .9s ease}
.ph-s .hsLight.on{opacity:.7}
.ph-n .hsLight.on{opacity:1}
.hsLobby{opacity:0;transition:opacity 1.2s ease}
.ph-s .hsLobby{opacity:.45}
.ph-n .hsLobby{opacity:.9}
.hsLantern{opacity:.55;transition:opacity 1s,filter 1s}
.ph-s .hsLantern,.ph-n .hsLantern{opacity:1;filter:drop-shadow(0 0 3px #FFD98A)}
.hsBeam{opacity:0;transition:opacity 1.2s;animation:hsBeam 7s ease-in-out infinite alternate}
.hsBeam.b2{animation-delay:-3.5s}
.ph-s .hsBeam{opacity:.25}
.ph-n .hsBeam{opacity:.45}
@keyframes hsBeam{from{transform:rotate(-20deg)}to{transform:rotate(20deg)}}
.ph-n .hsSignNew{filter:drop-shadow(0 0 3px rgba(243,210,122,.9))}

/* renovation tiers + amenities */
.hsT2,.hsT3,.hsT4,.hsTea,.hsRoof,.hsSpa{opacity:0;transition:opacity 1s ease}
.t2 .hsT2,.t3 .hsT3,.t4 .hsT4,.up-tea .hsTea,.up-roof .hsRoof,.up-spa .hsSpa{opacity:1}
.hsT1,.hsNoTea,.hsNoRoof,.hsNoSpa{transition:opacity 1s ease}
.t2 .hsT1,.up-tea .hsNoTea,.up-roof .hsNoRoof,.up-spa .hsNoSpa{opacity:0}
.t2 .hsFlicker{animation:none}
.hsFlicker{animation:hsFlicker 3.6s steps(1) infinite}
@keyframes hsFlicker{0%{opacity:1}7%{opacity:.25}9%{opacity:1}52%{opacity:1}54%{opacity:.35}56%{opacity:1}58%{opacity:.4}60%{opacity:1}}

/* ambient loops */
.hsSteam{animation:hsSteam 3s ease-in-out infinite}
.hsSteam.s2{animation-delay:1.4s}
@keyframes hsSteam{0%{opacity:0;transform:translateY(3px)}40%{opacity:.75}100%{opacity:0;transform:translateY(-8px)}}
.hsPuff{opacity:0;transform-box:fill-box;transform-origin:center;animation:hsPuff 3.4s ease-out infinite}
.hsPuff.p2{animation-delay:1.1s}.hsPuff.p3{animation-delay:2.2s}
@keyframes hsPuff{0%{opacity:0;transform:translate(0,0) scale(.5)}30%{opacity:.8}100%{opacity:0;transform:translate(5px,-28px) scale(1.7)}}
.hsFlag{transform-box:fill-box;transform-origin:0 50%;animation:hsFlag 1.4s ease-in-out infinite alternate}
@keyframes hsFlag{from{transform:skewY(-7deg) scaleX(1)}to{transform:skewY(6deg) scaleX(.86)}}
.hsCyp{animation:hsSway 4.5s ease-in-out infinite alternate}
@keyframes hsSway{from{transform:skewX(-2deg)}to{transform:skewX(2deg)}}
.hsTaxi{animation:hsTaxi 17s linear infinite 3s;transform:translateX(-90px)}
@keyframes hsTaxi{from{transform:translateX(-90px)}40%,100%{transform:translateX(780px)}}

/* NPCs — sprite head on a little pixel body; 1em = scene width / 80 */
.hsNpc{position:absolute;width:3.4em;height:6em;margin-left:-1.7em;z-index:3;
  transition-property:left,opacity;transition-timing-function:linear,ease}
.hsNpc.roof{z-index:1}
.hsNpc.host{z-index:2}
.hsFace{position:absolute;left:0;right:0;bottom:0;height:5.6em}
.hsNpc.flip .hsFace{transform:scaleX(-1)}
.hsBob{position:absolute;left:50%;bottom:0;width:3.4em;margin-left:-1.7em;display:flex;flex-direction:column;align-items:center}
.hsHead{position:relative;z-index:2;width:3.1em;height:3.1em;image-rendering:pixelated;image-rendering:crisp-edges;
  border-radius:.7em;box-shadow:0 0 0 .16em #1B1B1F;background:#D8C9B0}
.hsTorso{position:relative;width:2.2em;height:1.5em;margin-top:-.12em;background:var(--shirt);
  border-radius:.55em .55em .15em .15em;box-shadow:inset 0 -.3em 0 rgba(0,0,0,.2),0 0 0 .12em #1B1B1F}
.hsArm{position:absolute;top:.2em;width:.5em;height:1.15em;background:var(--shirt);border-radius:.3em;
  box-shadow:0 0 0 .1em #1B1B1F;transform-origin:50% .2em}
.hsArm.l{left:-.42em}.hsArm.r{right:-.42em}
.hsLegs{display:flex;gap:.34em;margin-top:-.04em}
.hsLegs i{display:block;width:.68em;height:1em;background:#2B2F3A;border-radius:0 0 .25em .25em;transform-origin:50% 0}
.hsShadow{position:absolute;left:50%;bottom:-.3em;width:2.8em;height:.6em;margin-left:-1.4em;border-radius:50%;
  background:rgba(0,0,0,.28);z-index:-1}
.hsNpc:not(.walk) .hsBob{animation:hsIdle 2.6s ease-in-out infinite}
@keyframes hsIdle{50%{transform:translateY(-.1em)}}
.hsNpc.walk .hsBob{animation:hsStep .34s steps(2,jump-none) infinite}
@keyframes hsStep{from{transform:translateY(0)}to{transform:translateY(-.28em)}}
.hsNpc.walk .hsLegs i:first-child,.hsNpc.walk .hsArm.r{animation:hsLeg .34s steps(2,jump-none) infinite}
.hsNpc.walk .hsLegs i:last-child,.hsNpc.walk .hsArm.l{animation:hsLeg .34s steps(2,jump-none) infinite reverse}
@keyframes hsLeg{from{transform:rotate(24deg)}to{transform:rotate(-24deg)}}
/* luggage for arrivals */
.hsBag{display:none;position:absolute;right:-.7em;bottom:.05em;width:1.35em;height:1.1em;background:#8A4F2A;
  border-radius:.22em;box-shadow:0 0 0 .1em #1B1B1F,inset 0 .35em 0 rgba(255,255,255,.12)}
.hsBag::before{content:"";position:absolute;left:.35em;top:-.4em;width:.55em;height:.35em;border:.12em solid #1B1B1F;border-bottom:0;border-radius:.2em .2em 0 0}
.hsNpc.bag .hsBag{display:block}
.hsNpc.bag.walk .hsBag{animation:hsStep .34s steps(2,jump-none) infinite reverse}
/* seated at the tea terrace, sipping */
.hsNpc.sit .hsLegs{height:.35em;overflow:hidden}
.hsNpc.sit .hsArm.r{animation:hsSip 5s ease-in-out infinite}
@keyframes hsSip{0%,62%,100%{transform:rotate(0)}70%,88%{transform:rotate(-150deg)}}
/* hammam robe */
.hsNpc.robe .hsTorso,.hsNpc.robe .hsArm{--shirt:#FBF7EC}
.hsNpc.robe .hsTorso{height:1.9em;border-radius:.55em .55em .3em .3em}
.hsNpc.robe .hsLegs i{background:#E7C9A4;height:.7em}
/* Andre waves guests in */
.hsNpc.wave .hsArm.r{animation:hsWave .45s ease-in-out infinite alternate}
@keyframes hsWave{from{transform:rotate(-160deg)}to{transform:rotate(-115deg)}}
/* stepping through the front door */
.hsNpc.inside{opacity:0 !important;transform:scale(.8);transition:opacity .45s ease,transform .45s ease}
/* labels */
.hsTag{position:absolute;left:50%;top:100%;transform:translateX(-50%);margin-top:.45em;white-space:nowrap;z-index:4;
  font:700 max(8px,1.05em)/1 var(--mono);letter-spacing:.04em;color:#fff;background:rgba(14,59,54,.88);
  padding:.28em .5em;border-radius:.4em;box-shadow:0 1px 0 rgba(0,0,0,.25)}
.hsNpc.host .hsTag{background:#D8AE4C;color:#1B1B1F}
.hsNpc.w .hsTag{opacity:.78}
.hsBubble{display:none;position:absolute;left:78%;top:-.4em;min-width:1.7em;height:1.7em;padding:0 .3em;
  font:800 max(9px,1.25em)/1.7em var(--display);text-align:center;color:#1B1B1F;background:#fff;border-radius:.9em;
  box-shadow:0 0 0 .12em #1B1B1F}
.hsNpc.talk .hsBubble{display:block;animation:hsPop .35s cubic-bezier(.2,1.6,.4,1)}
@keyframes hsPop{from{transform:scale(0)}to{transform:scale(1)}}

/* guest peeking out of their room window */
.hsPeek{position:absolute;overflow:hidden}
.hsPeek img{position:absolute;left:12%;bottom:0;width:76%;image-rendering:pixelated;image-rendering:crisp-edges;
  transform:translateY(105%);transition:transform .6s cubic-bezier(.2,1.5,.4,1)}
.hsPeek.up img{transform:translateY(12%);animation:hsPeekBob 3s ease-in-out infinite 1s}
@keyframes hsPeekBob{50%{transform:translateY(22%)}}

/* flourishes */
.hsToast{position:absolute;left:50%;top:7%;z-index:5;transform:translate(-50%,-8px);opacity:0;pointer-events:none;
  font:700 clamp(9px,1.8vw,12px)/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;
  color:#1B1B1F;background:linear-gradient(180deg,#F8E3A0,#D8AE4C);padding:.55em .9em;border-radius:3px;
  box-shadow:0 0 0 1px #8E6E22,0 8px 18px -8px rgba(0,0,0,.6);transition:opacity .35s ease,transform .35s ease}
.hsToast.show{opacity:1;transform:translate(-50%,0)}
.hsSpark{position:absolute;width:1.1em;height:1.1em;margin:-.55em 0 0 -.55em;opacity:0;
  background:radial-gradient(circle,#fff 0 18%,#F3D27A 30%,transparent 65%);animation:hsSpark 1.2s ease-out forwards}
@keyframes hsSpark{0%{opacity:0;transform:scale(.2)}30%{opacity:1;transform:scale(1.2)}100%{opacity:0;transform:scale(.4) translateY(-1.2em)}}
.hsBoom{position:absolute;width:0;height:0}
.hsBoom i{position:absolute;left:-.22em;top:-.22em;width:.44em;height:.44em;border-radius:50%;
  animation:hsBoom 1.3s cubic-bezier(.1,.7,.3,1) forwards}
@keyframes hsBoom{from{transform:rotate(var(--a)) translateX(0);opacity:1}to{transform:rotate(var(--a)) translateX(5.5em) translateY(1.2em);opacity:0}}

@media(max-width:520px){.hsNpc.w .hsTag{display:none}}
@media(prefers-reduced-motion:reduce){
  .hScene *{animation:none !important}
  .hsSky,.hsSun,.hsNight,.hsLight,.hsT2,.hsT3,.hsT4,.hsT1{transition:none !important}
}

/* ============================================================
   NAV — Arcade dropdown (desktop only; phones use the menu sheet)
   ============================================================ */
.nav .wrap>a.arcLink,.nav .wrap>a.moreLink{display:none}
.navGroup{position:static;display:inline-flex;flex:0 0 auto}
.navGroupBtn{font:inherit;font-family:var(--mono);font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(239,234,219,.72);background:transparent;border:0;border-bottom:3px solid transparent;padding:13px 15px;cursor:pointer;
  white-space:nowrap;transition:background .18s,color .18s}
.navGroupBtn:hover,.navGroup.open .navGroupBtn{background:rgba(255,255,255,.07);color:var(--gold-bright)}
.navGroup.on .navGroupBtn{color:#fff;background:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,0));
  box-shadow:inset 0 -3px 0 var(--gold-bright),0 0 18px -6px var(--t-glow)}
.navMenu{display:none;position:absolute;z-index:60;min-width:220px;padding:6px 0;background:var(--felt-deep);
  border:1px solid rgba(200,162,74,.35);border-top:2px solid var(--gold);box-shadow:0 18px 30px -12px rgba(0,0,0,.7)}
.navGroup.open .navMenu{display:block}
.navMenu a{display:block;padding:11px 16px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(239,234,219,.8);text-decoration:none;border-left:3px solid transparent}
.navMenu a:hover{background:rgba(255,255,255,.06);color:var(--gold-bright)}
.navMenu a.on{color:#fff;border-left-color:var(--gold-bright)}
.nav .wrap.overflowing{-webkit-mask-image:linear-gradient(90deg,#000 90%,transparent);mask-image:linear-gradient(90deg,#000 90%,transparent)}
@media(max-width:760px){
  .navGroup{display:none}
  .nav .wrap>a.arcLink.on{display:inline-block}
  .nav .wrap.overflowing{-webkit-mask-image:none;mask-image:none}
}

/* ============================================================
   CONTRAST FIXES — labels that sit on dark surfaces use the bright
   accent (in some themes "gold" is a dark teal and vanishes)
   ============================================================ */
.chasing{color:rgba(255,255,255,.6)}
.pbRange{opacity:1;font-weight:700}
footer a{color:var(--gold-bright);text-decoration-color:rgba(255,255,255,.25);text-underline-offset:3px}
footer a:hover{color:#fff}
footer li a + a{margin-left:.95em;position:relative}
footer li a + a::before{content:"\00B7";position:absolute;left:-.68em;color:rgba(255,255,255,.35)}

/* ============================================================
   TYPE + PHONE LAYOUT FIXES
   ============================================================ */
/* display headings wrap onto two lines on phones; body line-height left big gaps */
h2{line-height:1.04}
/* phone rank cards: rank, face and movement on one row, then name and blurb at full width
   (four fixed columns squeezed the blurb into a strip a third of the screen wide) */
@media(max-width:640px){
  .rank,.rank.hasface{grid-template-columns:auto auto 1fr;gap:10px 12px;align-items:center}
  .rank>div:last-child{grid-column:1/-1}
  .rank .mv{padding-top:0}
  .rank .num{min-width:1.1em}
}
/* phone ladder cards: face beside the name, rank centred, no zebra tint on individual cells */
@media(max-width:700px){
  #ladder tbody tr:nth-child(odd) td,#ladder tbody td{background:transparent}
  #ladder tbody td.nm{flex-direction:row;align-items:center;gap:10px}
  #ladder tbody td:first-child{align-self:center}
}
/* schedule: each game is its own little two-line scoreboard, so pairs read as pairs
   (a single wrapped row ran every game into the next one on phones) */
.weekcard .games{gap:8px 12px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}
.gm{flex-direction:column;align-items:stretch;flex-wrap:nowrap;gap:3px;padding:8px 11px;
  border:1px solid var(--rule);background:rgba(255,255,255,.55);border-radius:2px}
.gm .side{width:100%;min-width:0}
.gm .gmscore{margin-left:auto;padding-left:10px}
.gm .at{align-self:flex-start;padding-left:30px;line-height:1}
.gm.final .at{order:-1;padding-left:0;margin-bottom:1px}
/* labels on dark panels: bright accent, never the base "gold" (a dark teal under persia) */
#gauntlet .eyebrow span,.panel h3,.chip .odds,.board li .p,.snake b,footer h4,.champcard .lbl,.slbl,
.fairtag,.auditbox h4,.receipt .rl,.overlbl,.crest .sub,.rvKicker,.desk .eyebrow span{color:var(--gold-bright)}

/* ============================================================
   SOUND CONTROL — the ♪ button (bottom-left) and its panel
   ============================================================ */
.sndBtn{position:fixed;left:16px;bottom:calc(16px + env(safe-area-inset-bottom));z-index:150;width:44px;height:44px;
  border-radius:50%;border:1px solid rgba(200,162,74,.45);background:var(--felt-deep);color:rgba(239,234,219,.7);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  box-shadow:0 8px 20px -8px rgba(0,0,0,.6);transition:color .2s,border-color .2s,transform .2s}
.sndBtn:hover{transform:translateY(-1px);color:var(--gold-bright)}
.sndBtn.on{color:var(--gold-bright);border-color:var(--gold-bright)}
.sndIcon{font-size:20px;line-height:1}
.sndBtn.playing .sndIcon{animation:sndBob 1.3s ease-in-out infinite}
@keyframes sndBob{50%{transform:translateY(-2px) rotate(-8deg)}}
.sndPanel{position:fixed;left:16px;bottom:calc(70px + env(safe-area-inset-bottom));z-index:151;width:min(290px,calc(100vw - 32px));
  background:var(--felt-deep);color:var(--parchment);border:1px solid rgba(200,162,74,.4);border-top:3px solid var(--gold-bright);
  box-shadow:0 20px 40px -16px rgba(0,0,0,.75);padding:6px 0 0}
.sndHead{font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--gold-bright);padding:10px 16px 6px}
.sndRow{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:10px 16px;cursor:pointer}
.sndRow:hover{background:rgba(255,255,255,.04)}
.sndRow b{display:block;font-family:var(--display);font-size:15px;font-weight:700;color:#fff}
.sndRow small{display:block;font-size:12px;color:rgba(239,234,219,.55);margin-top:2px}
.sndRow input{position:absolute;opacity:0;pointer-events:none}
.sndRow i{flex:0 0 auto;position:relative;width:38px;height:22px;border-radius:11px;background:rgba(255,255,255,.18);transition:background .2s}
.sndRow i::after{content:"";position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:#fff;transition:transform .2s}
.sndRow input:checked + i{background:var(--gold-bright)}
.sndRow input:checked + i::after{transform:translateX(16px)}
.sndRow input:focus-visible + i{outline:2px solid var(--gold-bright);outline-offset:2px}
.sndFoot{font-size:11.5px;line-height:1.45;color:rgba(239,234,219,.45);padding:8px 16px 12px;border-top:1px solid rgba(255,255,255,.08);margin-top:4px}
@media(prefers-reduced-motion:reduce){.sndBtn.playing .sndIcon{animation:none}}

/* ============================================================
   TERMINATOR WEEK dressing (data-league-theme="terminator")
   Endoskeleton HUD: scanlines on the dark chrome, red corner
   brackets on the masthead, a hazard stripe on the footer.
   ============================================================ */
[data-league-theme="terminator"] body{
  background-image:
    repeating-linear-gradient(0deg,rgba(11,14,18,.022) 0 1px,transparent 1px 3px),
    radial-gradient(80% 50% at 90% -10%,rgba(200,32,43,.10),transparent 60%),
    linear-gradient(180deg,var(--t-bg),var(--t-bg));
}
[data-league-theme="terminator"] .masthead{position:relative;background:var(--felt-deep)}
[data-league-theme="terminator"] .masthead .crest{position:relative;z-index:1}
[data-league-theme="terminator"] .masthead::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.5;
  background:repeating-linear-gradient(0deg,rgba(255,255,255,.035) 0 1px,transparent 1px 3px)}
[data-league-theme="terminator"] .masthead .wrap{position:relative}
[data-league-theme="terminator"] .masthead .wrap::before,[data-league-theme="terminator"] .masthead .wrap::after{content:"";position:absolute;width:18px;height:18px;border:2px solid var(--gold-bright);opacity:.8;pointer-events:none}
[data-league-theme="terminator"] .masthead .wrap::before{left:6px;top:-8px;border-right:0;border-bottom:0}
[data-league-theme="terminator"] .masthead .wrap::after{right:6px;bottom:-8px;border-left:0;border-top:0}
[data-league-theme="terminator"] .masthead::after{height:5px;background:var(--t-stripe)}
[data-league-theme="terminator"] h2{border-bottom-color:var(--gold)}
[data-league-theme="terminator"] .eyebrow span{background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0) 55%),linear-gradient(90deg,#C8202B,#7a0f16)}
[data-league-theme="terminator"] .rank.top{border-left-color:var(--gold)}
[data-league-theme="terminator"] footer{border-top:4px solid var(--gold)}
[data-league-theme="terminator"] footer::before{content:"";display:block;height:5px;background:var(--t-stripe);margin-bottom:26px}
[data-league-theme="terminator"] .tributebar[data-banner]{background:#07090C;border-bottom:1px solid rgba(255,74,74,.5);color:#ff6a6a}
[data-league-theme="terminator"] .tributebar[data-banner] .stars{color:#ff3b3b;text-shadow:0 0 10px #ff2020;animation:tmBlink 2.4s steps(1) infinite}
@keyframes tmBlink{0%,86%{opacity:1}88%{opacity:.2}90%{opacity:1}94%{opacity:.3}96%{opacity:1}}
@media(prefers-reduced-motion:reduce){[data-league-theme="terminator"] .tributebar[data-banner] .stars{animation:none}}

/* ============================================================
   TERMINATOR REVEAL SCENE — the T-800's-eye view. Red-lit
   ruins, drones sweeping searchlights, a readout column, and a
   targeting ring that locks onto the title.
   ============================================================ */
.tmScene{background:#070203}
.tmSky{position:absolute;inset:0;background:linear-gradient(180deg,#0a0204 0%,#1d0508 38%,#4a0c10 72%,#8a1a12 90%,#c0401a 100%);animation:psSkyIn 1.2s ease both}
.tmGlow{position:absolute;left:0;right:0;bottom:24vh;height:30vh;background:radial-gradient(60% 100% at 50% 100%,rgba(255,90,30,.35),transparent 70%);animation:tmFlick 3s ease-in-out infinite alternate}
@keyframes tmFlick{from{opacity:.7}to{opacity:1}}
.tmCity{position:absolute;left:0;right:0;bottom:0;width:100%;height:max(260px,44vh)}
.tmBlocks{opacity:0;animation:psRiseBig 1.3s cubic-bezier(.2,.8,.2,1) forwards .4s}
.tmWin{fill:#ff8a3a;opacity:.2;animation:tmWin 2.4s steps(2) infinite}
@keyframes tmWin{50%{opacity:.9}}
.tmFire{fill:#ff5a1a;opacity:.0;filter:blur(8px);animation:tmFire 1.6s ease-in-out infinite alternate}
@keyframes tmFire{from{opacity:.25;transform:scaleY(.8)}to{opacity:.7;transform:scaleY(1.15)}}
.tmFires{transform-box:fill-box}
.tmHK{opacity:0;animation:tmFly 14s linear infinite}
@keyframes tmFly{0%{opacity:0;transform:translateX(-260px)}8%{opacity:1}92%{opacity:1}100%{opacity:0;transform:translateX(420px)}}
.tmBeam{fill:rgba(255,60,60,.12);transform-origin:0 0;animation:tmBeam 4s ease-in-out infinite alternate}
@keyframes tmBeam{from{transform:rotate(-16deg)}to{transform:rotate(16deg)}}
.tmAsh{position:absolute;inset:0}
.tmAsh span{position:absolute;top:-4%;background:#b8a8a0;border-radius:1px;animation-name:psFall;animation-timing-function:linear;animation-iteration-count:infinite}
.tmData{position:absolute;left:max(18px,3vw);top:12vh;bottom:36vh;width:210px;overflow:hidden;opacity:0;animation:psFadeIn 1s ease forwards 1s;
  -webkit-mask-image:linear-gradient(180deg,transparent,#000 20%,#000 80%,transparent);mask-image:linear-gradient(180deg,transparent,#000 20%,#000 80%,transparent)}
.tmData{opacity:.85}
@media(max-width:1100px){.tmData{opacity:.32 !important;width:150px}}
.tmDataIn{font:500 11px/1.9 var(--mono);letter-spacing:.08em;color:#ff5a5a;text-shadow:0 0 6px rgba(255,40,40,.7);animation:tmScroll 22s linear infinite}
@keyframes tmScroll{to{transform:translateY(-50%)}}
.tmRead{position:absolute;right:max(18px,3vw);top:13vh;display:flex;flex-direction:column;gap:4px;text-align:right;font:500 11px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:#ff6a6a;text-shadow:0 0 6px rgba(255,40,40,.7);
  opacity:0;animation:psFadeIn .8s ease forwards 1.3s}
.tmRead b{font-size:14px;color:#fff;letter-spacing:.3em;margin-bottom:4px}
.tmTint{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 45%,rgba(255,0,0,.06) 40%,rgba(40,0,0,.65) 100%);mix-blend-mode:multiply}
.tmScan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(0,0,0,.28) 0 1px,transparent 1px 3px);pointer-events:none}
.tmCorner{position:absolute;width:40px;height:40px;border:2px solid #ff3b3b;opacity:.85;filter:drop-shadow(0 0 6px rgba(255,59,59,.7))}
.tmCorner.tl{left:14px;top:14px;border-right:0;border-bottom:0}.tmCorner.tr{right:14px;top:14px;border-left:0;border-bottom:0}
.tmCorner.bl{left:14px;bottom:14px;border-right:0;border-top:0}.tmCorner.br{right:14px;bottom:14px;border-left:0;border-top:0}

.tmCopy{display:flex;flex-direction:column;align-items:center;text-align:center}
.tmKicker{font:700 11px/1 var(--mono);letter-spacing:.34em;text-transform:uppercase;color:#ff6a6a;text-shadow:0 0 8px rgba(255,40,40,.8);opacity:0;animation:bbqIn .6s ease forwards 1.2s}
.tmTitleWrap{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;margin:12px 0 0;min-height:clamp(170px,30vh,300px)}
.tmRing{position:absolute;left:50%;top:50%;width:min(88vw,46vh);height:min(88vw,46vh);transform:translate(-50%,-50%);overflow:visible;pointer-events:none}
.tmRing circle,.tmRing path{fill:none;stroke:#ff3b3b;stroke-width:2;filter:drop-shadow(0 0 6px rgba(255,40,40,.8))}
.tmRing .d2{stroke-width:1.2;stroke-dasharray:6 8}
.tmDraw{stroke-dasharray:1600;stroke-dashoffset:1600;animation:tmDrawIn 1.6s cubic-bezier(.4,0,.2,1) forwards .4s}
.tmRing .d2.tmDraw{stroke-dasharray:6 8;stroke-dashoffset:0;opacity:0;animation:psFadeIn 1s ease forwards 1s}
.tmRing .d3{animation-delay:1.1s}
@keyframes tmDrawIn{to{stroke-dashoffset:0}}
.tmTicks line{stroke:#ff3b3b;stroke-width:2;opacity:0;animation:psFadeIn .6s ease forwards 1.3s}
.tmRingSpin{animation:psSpin 60s linear infinite;transform-origin:0 0}
.tmRingRev{animation:tmRev 9s linear infinite;transform-origin:0 0}
@keyframes tmRev{to{transform:rotate(-360deg)}}
.tmCross{stroke:#ff3b3b;stroke-width:2;opacity:0;animation:psFadeIn .5s ease forwards 2.2s}
.tmTitle{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;line-height:.86;font-family:var(--display);font-weight:800;text-transform:uppercase;letter-spacing:-.02em}
.tmTitle span{display:block;font-size:clamp(54px,12vw,128px);opacity:0;
  background:linear-gradient(180deg,#fff 0%,#c8d2dc 40%,#5a6674 52%,#e8eef4 66%,#8a96a4 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;
  filter:drop-shadow(0 4px 0 #2a0000) drop-shadow(0 0 24px rgba(255,40,40,.55));animation:tmSlam .7s cubic-bezier(.2,.9,.25,1.1) forwards}
.tmTitle span:nth-child(1){animation-delay:1.6s}
.tmTitle span:nth-child(2){animation-delay:1.85s;font-size:clamp(70px,16vw,170px)}
@keyframes tmSlam{from{opacity:0;transform:scale(1.4);filter:blur(8px)}to{opacity:1;transform:none}}
.tmLock{position:relative;z-index:1;margin-top:8px;font:700 12px/1 var(--mono);letter-spacing:.32em;text-transform:uppercase;color:#ff3b3b;text-shadow:0 0 8px #ff2020;opacity:0;animation:tmLockOn .9s steps(1) forwards 2.5s}
@keyframes tmLockOn{0%{opacity:1}20%{opacity:0}40%{opacity:1}60%{opacity:0}80%,100%{opacity:1}}
.tmRule{height:3px;width:min(340px,64vw);margin:14px 0 16px;transform:scaleX(0);background:linear-gradient(90deg,transparent,#ff3b3b 20%,#fff 50%,#ff3b3b 80%,transparent);box-shadow:0 0 14px rgba(255,40,40,.7);animation:psRule .8s cubic-bezier(.2,.8,.2,1) forwards 2.4s}
.tmText{margin:0;max-width:50ch;font-size:clamp(14.5px,2.2vw,17px);line-height:1.6;color:rgba(255,236,232,.94);text-shadow:0 2px 14px rgba(0,0,0,.9);opacity:0;animation:bbqIn .8s ease forwards 2.7s}
@media(max-width:640px){
  .tmData{width:140px;top:10vh}
  .tmDataIn{font-size:9.5px}
  .tmRead{display:none}
  .tmText{font-size:14px;max-width:34ch}
  .tmCity{height:36vh}
}
@media(prefers-reduced-motion:reduce){
  .tmScene *,.tmCopy *{animation:none !important}
  .tmBlocks,.tmTicks line,.tmCross,.tmKicker,.tmTitle span,.tmLock,.tmText,.tmData,.tmRead{opacity:1 !important}
  .tmDraw{stroke-dashoffset:0}.tmRule{transform:none}.tmAsh,.tmHK{display:none}
}

/* preview build strip (only when data/theme.js sets PGPSL_PREVIEW_BUILD) */
.previewStrip{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 12px;padding:7px 16px;
  background:repeating-linear-gradient(135deg,#f2c230 0 14px,#111 14px 28px);color:#111;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-align:center}
.previewStrip b,.previewStrip span{background:#f2c230;padding:2px 8px}
.previewStrip b{text-transform:uppercase;letter-spacing:.24em}

/* ============================================================
   TERMINATOR TRAIL WEEK — the site dressed as the game
   (only while data-league-theme="terminator")
   ============================================================ */
.trailBand{position:relative;height:156px;overflow:hidden;background:#07040c;border-bottom:1px solid rgba(255,59,59,.5);color:#fff}
.tbScene{position:absolute;inset:0}
.tbSky{position:absolute;left:0;right:0;top:0;height:64%;background:linear-gradient(180deg,#05030a 0%,#1c0a2a 38%,#5a1640 70%,#c23a5a 90%,#ff7a6a 100%)}
.tbStars{position:absolute;left:0;right:0;top:0;height:50%;opacity:.7;
  background-image:radial-gradient(1px 1px at 12% 22%,#fff,transparent),radial-gradient(1px 1px at 28% 60%,#fff,transparent),radial-gradient(1px 1px at 47% 18%,#fff,transparent),
    radial-gradient(1px 1px at 63% 40%,#fff,transparent),radial-gradient(1px 1px at 81% 12%,#fff,transparent),radial-gradient(1px 1px at 92% 52%,#fff,transparent),radial-gradient(1px 1px at 5% 70%,#fff,transparent)}
.tbSun{position:absolute;left:50%;top:64%;width:150px;height:150px;margin:-104px 0 0 -75px;border-radius:50%;
  background:linear-gradient(180deg,#fff2a8 0%,#ff9a4a 48%,#ff2e88 100%);box-shadow:0 0 60px rgba(255,94,126,.55);
  -webkit-mask:linear-gradient(180deg,#000 0 50%,transparent 50% 53%,#000 53% 60%,transparent 60% 64%,#000 64% 70%,transparent 70% 75%,#000 75% 80%,transparent 80% 86%,#000 86% 100%);
          mask:linear-gradient(180deg,#000 0 50%,transparent 50% 53%,#000 53% 60%,transparent 60% 64%,#000 64% 70%,transparent 70% 75%,#000 75% 80%,transparent 80% 86%,#000 86% 100%)}
.tbMts{position:absolute;left:0;right:0;top:calc(64% - 34px);width:100%;height:36px}
.tbMts path{fill:#1a0a1e}
.tbGround{position:absolute;left:0;right:0;top:64%;bottom:0;background:#0b0612;overflow:hidden;perspective:120px}
.tbGrid{position:absolute;left:-50%;right:-50%;top:0;height:260%;transform-origin:50% 0;transform:rotateX(62deg);
  background-image:linear-gradient(90deg,rgba(255,46,136,.55) 1px,transparent 1px),linear-gradient(0deg,rgba(40,224,255,.45) 1px,transparent 1px);
  background-size:44px 44px;animation:tbGrid 1.6s linear infinite}
@keyframes tbGrid{to{background-position:0 44px}}
.tbRoad{position:absolute;left:0;right:0;bottom:0;height:30px;background:linear-gradient(180deg,#1a1618,#0e0c0d);border-top:1px solid rgba(255,190,140,.25)}
.tbRoad i{position:absolute;left:0;right:0;top:14px;height:2px;background:repeating-linear-gradient(90deg,rgba(242,194,48,.7) 0 26px,transparent 26px 60px);animation:tbDash .8s linear infinite}
@keyframes tbDash{to{background-position:-60px 0}}
.tbConvoy{position:absolute;left:0;right:0;bottom:2px;height:56px}
.tbCar{position:absolute;left:0;bottom:0;width:84px;animation:tbDrive 40s linear infinite}
.tbCar.l1{bottom:12px;width:70px;filter:brightness(.8);z-index:0}
.tbCar.l0{z-index:1}
@keyframes tbDrive{from{transform:translateX(-140px)}to{transform:translateX(calc(100vw + 140px))}}
.tbRide{display:block;width:100%;height:auto;overflow:visible}
.tbRide image,.tRide image{image-rendering:pixelated}
.tbHud{position:relative;z-index:2;height:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-top:14px;pointer-events:none}
.tbRead{display:flex;flex-direction:column;font-family:var(--mono);text-shadow:0 1px 6px rgba(0,0,0,.8)}
.tbRead .k{font-size:10px;letter-spacing:.28em;text-transform:uppercase;color:#ff6a6a}
.tbRead b{font-size:26px;line-height:1.05;letter-spacing:.02em;color:#fff;font-family:var(--display);text-transform:uppercase}
.tbRead .s{font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:rgba(255,255,255,.72);margin-top:4px}
.tbPips{display:flex;gap:3px;margin-top:6px}
.tbPips i{width:14px;height:4px;background:rgba(255,255,255,.18)}
.tbPips i.done{background:#ff3b3b}
.tbPips i.on{background:#fff;box-shadow:0 0 8px #ff3b3b;animation:tmBlink 2s steps(1) infinite}
.tbGo{pointer-events:auto;display:flex;flex-direction:column;align-items:flex-end;text-align:right;text-decoration:none;color:#fff;padding:9px 14px 10px;
  background:linear-gradient(180deg,rgba(224,48,58,.92),rgba(122,15,22,.92));border:1px solid #ff6a6a;box-shadow:0 0 22px -4px rgba(255,59,59,.8);position:relative}
.tbGo::before,.tbGo::after{content:"";position:absolute;width:10px;height:10px;border:2px solid #fff}
.tbGo::before{left:-5px;top:-5px;border-right:0;border-bottom:0}
.tbGo::after{right:-5px;bottom:-5px;border-left:0;border-top:0}
.tbGo span{font-family:var(--mono);font-size:9.5px;letter-spacing:.26em;text-transform:uppercase;opacity:.85}
.tbGo b{font-family:var(--display);font-size:20px;line-height:1.1;text-transform:uppercase;letter-spacing:.01em}
.tbGo small{font-family:var(--mono);font-size:10px;opacity:.8;margin-top:2px}
.tbGo:hover{filter:brightness(1.12)}
.tbGo.quiet{background:rgba(5,8,12,.7);border-color:rgba(255,59,59,.5);box-shadow:none}
.tbGo.quiet b{font-size:26px;color:#ff6a6a}
@media(max-width:720px){
  .trailBand{height:140px}
  .tbSun{width:110px;height:110px;margin:-78px 0 0 -55px}
  .tbHud{padding-top:10px}
  .tbRead b{font-size:20px}
  .tbRead .s{display:none}
  .tbPips i{width:9px}
  .tbGo{padding:7px 10px 8px}
  .tbGo b{font-size:15px}
  .tbGo span,.tbGo small{font-size:8.5px;letter-spacing:.16em}
  .tbCar{width:66px}.tbCar.l1{width:56px}
}
/* phones: the readout and the card keep to the edges so the sun has the middle */
@media(max-width:480px){
  .tbSun{width:84px;height:84px;margin:-60px 0 0 -42px}
  .tbHud{gap:8px}
  .tbRead{max-width:40%}
  .tbRead .k{font-size:8.5px;letter-spacing:.2em}
  .tbRead b{font-size:17px}
  .tbGo{max-width:40%}
  .tbGo small{display:none}
  .tbGo.quiet b{font-size:20px}
}
@media(prefers-reduced-motion:reduce){
  .tbGrid,.tbRoad i,.tbPips i.on{animation:none}
  .tbCar{animation:none}
  .tbCar:nth-child(1){transform:translateX(8vw)}.tbCar:nth-child(2){transform:translateX(30vw)}.tbCar:nth-child(3){transform:translateX(52vw)}
  .tbCar:nth-child(4){transform:translateX(74vw)}.tbCar:nth-child(n+5){display:none}
}

/* ---- Trail week: the game's HUD language on the rest of the site ---- */
/* page titles in gunmetal chrome */
[data-league-theme="terminator"] h2{background:linear-gradient(180deg,#0b0e12 0%,#2e3742 48%,#0b0e12 52%,#4a5664 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;text-transform:uppercase;text-shadow:none;filter:drop-shadow(0 1px 0 rgba(255,255,255,.7))}
/* ranking cards get the targeting-HUD corners */
[data-league-theme="terminator"] .rank{position:relative}
[data-league-theme="terminator"] .rank::before,[data-league-theme="terminator"] .rank::after{content:"";position:absolute;width:12px;height:12px;border:2px solid #c8202b;pointer-events:none}
[data-league-theme="terminator"] .rank::before{left:-1px;top:-1px;border-right:0;border-bottom:0}
[data-league-theme="terminator"] .rank::after{right:-1px;bottom:-1px;border-left:0;border-top:0}
.rkRide{display:flex;align-items:center;gap:8px;margin-top:6px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:#8e1119}
.rkRideSvg{width:58px;height:auto;flex:0 0 auto;overflow:visible}
.rkRideSvg image,.mRideSvg image,.sfRideSvg image{image-rendering:pixelated}
.pbThreat{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:#ff6a6a;border:1px solid rgba(255,90,90,.55);padding:2px 7px}
/* matchups: a ride on each side of the gate */
.mRideSvg{width:34px;height:auto;flex:0 0 auto;overflow:visible}
/* standings: the Bunker line */
.sheet.stand tr.bunkerLine td{padding:0;border:0;background:transparent}
.sheet.stand tr.bunkerLine td{height:26px;background:repeating-linear-gradient(135deg,#c8202b 0 10px,#0b0e12 10px 20px)}
.sheet.stand tr.bunkerLine td{position:relative}
.sheet.stand tr.bunkerLine span{position:absolute;top:50%;transform:translateY(-50%);font-family:var(--mono);font-size:10.5px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:#fff;background:#0b0e12;padding:2px 8px}
.sheet.stand tr.bunkerLine span:first-child{left:10px}
.sheet.stand tr.bunkerLine span:last-child{right:10px;color:#ff9a9a}
/* manager files: the Skynet file */
.skyFile{position:relative;margin:18px 0;background:linear-gradient(180deg,#0e1318,#07090c);color:#e8eef4;border:1px solid rgba(255,59,59,.5);padding:14px 16px 16px}
.skyFile::before,.skyFile::after{content:"";position:absolute;width:14px;height:14px;border:2px solid #ff3b3b}
.skyFile::before{left:-1px;top:-1px;border-right:0;border-bottom:0}
.skyFile::after{right:-1px;bottom:-1px;border-left:0;border-top:0}
.sfHead{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px;font-family:var(--mono);text-transform:uppercase;margin-bottom:10px}
.sfHead span{font-size:10px;letter-spacing:.3em;color:#ff3b3b}
.sfHead b{font-size:13px;letter-spacing:.14em;color:#ff9d9d;text-shadow:0 0 8px rgba(255,59,59,.45)}
.sfBody{display:grid;grid-template-columns:150px 1fr;gap:16px;align-items:start}
.sfRideSvg{width:150px;height:auto;overflow:visible;background:radial-gradient(80% 60% at 50% 85%,rgba(255,94,126,.25),transparent 70%)}
.sfRide{font-family:var(--display);font-size:20px;text-transform:uppercase;color:#fff;line-height:1.1}
.sfTx p{margin:4px 0 8px;font-size:14px;line-height:1.5;color:rgba(232,238,244,.78)}
.sfTx ul{margin:0 0 8px;padding:0;list-style:none}
.sfTx li{font-family:var(--mono);font-size:12px;line-height:1.5;color:#ffb8b8;padding-left:16px;position:relative}
.sfTx li::before{content:"\25B8";position:absolute;left:0;color:#ff3b3b}
.sfSig{font-size:13px;color:#fff}
.sfSig span{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:#28e0ff;margin-right:8px}
.sfGo{display:inline-block;margin-top:12px;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:#fff;text-decoration:none;
  padding:10px 16px;background:linear-gradient(180deg,#e0303a,#9a1018);border:1px solid #ff6a6a;box-shadow:0 0 16px -4px rgba(255,59,59,.7)}
.sfGo:hover{filter:brightness(1.12)}
@media(max-width:640px){.sfBody{grid-template-columns:1fr}.sfRideSvg{width:180px}}
/* the page that opened this week gets a NEW tag (set from PGPSL_THEME_WEEKS "opened" in data/theme.js) */
.nav a.isNew::after,.navGroup.hasNew .navGroupBtn::after,.menuLinks a.isNew::after,.navMenu a.isNew::after{content:"NEW";margin-left:6px;font-family:var(--mono);font-size:8.5px;font-weight:700;letter-spacing:.14em;
  color:#fff;background:#c8202b;padding:1px 4px;vertical-align:2px;box-shadow:0 0 8px rgba(255,59,59,.7)}

/* ============================================================
   SITE OPTIONS (options.html)
   Each card's mini preview sets its own data-league-theme, so it
   reads that theme's --t-* tokens directly, whatever the page wears.
   ============================================================ */
.themeGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;margin-top:10px}
.themeCard{position:relative;display:flex;flex-direction:column;text-align:left;padding:0;cursor:pointer;font-family:inherit;color:var(--ink);
  background:var(--card);border:1px solid var(--rule);transition:transform .15s,box-shadow .15s,border-color .15s}
.themeCard:hover{transform:translateY(-2px);box-shadow:0 14px 30px -18px rgba(0,0,0,.5)}
.themeCard.on{border:2px solid var(--gold);box-shadow:0 0 0 3px rgba(0,0,0,.04),0 12px 26px -16px var(--t-glow)}
.tcPrev{height:120px;background:var(--t-bg);overflow:hidden;display:flex;flex-direction:column;border-bottom:1px solid var(--rule)}
.tcMast{display:flex;align-items:center;justify-content:space-between;padding:10px 12px;background:var(--t-surface-deep);color:#fff}
.tcLogo{font-family:var(--display);font-weight:800;font-size:17px;letter-spacing:-.01em;color:var(--t-accent-bright)}
.tcSub{font-family:var(--mono);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--t-accent-bright);opacity:.8}
.tcStripe{display:block;height:5px;background:var(--t-accent);background-image:var(--t-stripe)}
.tcBody{position:relative;flex:1;margin:10px 12px 12px;padding:8px 10px;background:var(--t-card);border-left:3px solid var(--t-accent);display:flex;flex-direction:column;gap:5px}
.tcH{font-family:var(--display);font-size:15px;line-height:1;text-transform:uppercase;color:var(--t-ink)}
.tcLine{display:block;height:5px;width:86%;background:var(--t-ink);opacity:.18;border-radius:2px}
.tcLine.short{width:58%}
.tcChip{position:absolute;right:8px;top:8px;font-family:var(--display);font-size:18px;font-weight:800;color:var(--t-accent)}
.tcTx{display:flex;flex-direction:column;gap:2px;padding:12px 14px 4px}
.tcWk{font-family:var(--mono);font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-dim)}
.tcTx b{font-family:var(--display);font-size:20px;line-height:1.15}
.tcTx small{font-size:13px;line-height:1.45;color:rgba(10,26,16,.62)}
.tcOn{margin:8px 14px 14px;font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:rgba(10,26,16,.45)}
.themeCard.on .tcOn{color:var(--gold)}
/* switches and actions */
.optRows{display:flex;flex-direction:column;gap:8px;max-width:720px}
.optRow{position:relative;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;background:var(--card);border:1px solid var(--rule);cursor:pointer}
.optRow.act{cursor:default}
.optRow b{display:block;font-family:var(--display);font-size:17px}
.optRow small{display:block;font-size:13px;line-height:1.45;color:rgba(10,26,16,.6);margin-top:2px}
.optRow input{position:absolute;opacity:0;pointer-events:none}
.optRow i{flex:0 0 auto;position:relative;width:44px;height:26px;border-radius:13px;background:rgba(10,26,16,.2);transition:background .2s}
.optRow i::after{content:"";position:absolute;left:3px;top:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s}
.optRow input:checked + i{background:var(--gold)}
.optRow input:checked + i::after{transform:translateX(18px)}
.optRow input:focus-visible + i{outline:3px solid var(--gold);outline-offset:2px}
.optRow .btn{flex:0 0 auto}
/* the reminder strip when someone is wearing a past week's look */
.pickBar{background:#111;color:#fff;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.pickBar .wrap{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:6px 14px;padding-top:7px;padding-bottom:7px}
.pickBar button{font:inherit;letter-spacing:inherit;text-transform:inherit;color:#111;background:#fff;border:0;padding:4px 10px;cursor:pointer}
.pickBar a{color:#fff;opacity:.75}

/* the season in progress, on the archive pages */
.fy.live{color:var(--gold-bright)}

/* ---------- the site directory: every footer, one list (league.js section 1c) ---------- */
footer .siteDir{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:22px 28px;margin-top:30px;padding-top:24px;border-top:1px solid rgba(200,162,74,.18)}
footer .cols + .siteDir{margin-top:34px}
footer .siteDir h4{margin-bottom:10px}
footer .sdGroup a,footer .sdGroup .sdHere{display:block;padding:5px 0;text-decoration:none;line-height:1.35}
footer .sdGroup a:hover{text-decoration:underline}
footer .sdGroup .sdHere{color:rgba(239,234,219,.45)}
footer .sdGroup small{display:block;font-size:11.5px;color:rgba(239,234,219,.42);margin-top:1px}
footer .sdGroup em{font-style:normal;font-family:var(--mono);font-size:9px;letter-spacing:.14em;text-transform:uppercase;margin-left:8px;padding:1px 5px;border:1px solid rgba(239,234,219,.25);color:rgba(239,234,219,.6);vertical-align:2px}
footer .sdGroup em.sdNew{background:#c8202b;border-color:#c8202b;color:#fff}
@media(max-width:560px){footer .siteDir{grid-template-columns:1fr 1fr;gap:18px 16px}}

/* ---------- Manager Files: this season, live ---------- */
.mgrLive{margin:0 0 18px;padding:14px 16px;border:1px solid var(--rule);border-left:3px solid var(--gold);background:var(--card)}
.mgrLive .lbl{font-family:var(--mono);font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--gold-dim, #8a6d2a);margin-bottom:10px}
.mlGrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(118px,1fr));gap:10px 14px}
.mlGrid b{display:block;font-family:var(--mono);font-size:20px;font-variant-numeric:tabular-nums}
.mlGrid span{display:block;font-size:12px;opacity:.7;margin-top:2px}
.mlPath{margin-top:12px;font-size:13px;display:flex;flex-wrap:wrap;gap:4px 8px;align-items:baseline}
.mlPath .k{width:100%;font-family:var(--mono);font-size:10px;letter-spacing:.16em;text-transform:uppercase;opacity:.6}
.mlPath b{font-family:var(--mono)}
.mlPath i{font-style:normal;opacity:.45}
.mlNames{margin-top:10px;font-size:13px;font-style:italic;opacity:.8}
.mgrseasons tr.liveRow td{background:rgba(200,162,74,.08)}
.livedot{font-family:var(--mono);font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#c8202b;margin-left:6px;white-space:nowrap}

/* ---------- Record Book: the season in progress ---------- */
.mlive{display:inline-flex;align-items:center;gap:8px;margin:0 0 12px 16px;font-size:13px;cursor:pointer}
.mlive input{accent-color:var(--gold)}
.ladmv{font-family:var(--mono);font-size:10px;margin-left:4px;vertical-align:1px}
.ladmv.up{color:#2e8b57}.ladmv.dn{color:#c0392b}
.yr.live{outline:2px solid var(--gold);outline-offset:-2px}
.yr.live .tag{background:#c8202b;color:#fff}
@media(max-width:560px){.mlive{margin-left:0}}

/* ---------- the Gauntlet: the order on the record, and the Slot Watch ---------- */
.officialOrder{margin:6px 0 22px;padding:14px 16px;background:rgba(0,0,0,.2);border:1px solid rgba(255,255,255,.12);border-left:3px solid var(--gold);color:rgba(239,234,219,.9)}
.ooHead{display:flex;justify-content:space-between;gap:12px;align-items:baseline;margin-bottom:10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.18em;text-transform:uppercase}
.ooHead b{font-weight:500;opacity:.6;letter-spacing:.1em}
.ooList{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px 12px}
.ooList li{display:flex;align-items:center;gap:8px;font-size:14px}
.ooList em{font-style:normal;font-family:var(--mono);font-size:12px;width:20px;text-align:right;opacity:.6}
.ooFace{width:26px;height:26px;border-radius:50%;object-fit:cover}
.slotWatch{margin-top:22px}
.swLede,.swVerdict,.swNote{font-size:14.5px;line-height:1.6;margin:6px 0 12px}
.swNote{font-size:12.5px;opacity:.7}
.swStats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;margin:10px 0 12px}
.swStats div{background:rgba(0,0,0,.18);border:1px solid rgba(255,255,255,.12);padding:10px 12px}
.swStats b{display:block;font-family:var(--mono);font-size:20px}
.swStats span{font-size:12px;opacity:.7}
.swTable td.nm{white-space:nowrap}

/* links inside the Gauntlet's dark panels (the record-book link in "Why this isn't rigged" was dark on dark) */
.fairitem a,.corrtext a,.slotWatch a{color:var(--gold-bright);text-decoration:underline;text-underline-offset:3px}
.slotWatch .sheet tbody td{color:#141a21}
.slotWatch .sheet tbody td.pos{color:#1f7a4d}.slotWatch .sheet tbody td.neg{color:#b3261e}

/* ---------- Punch: Blake's hawk and the overtime boss ---------- */
.pcHole.k-hawk .pcFace{display:none}
.pcHole.k-hawk .pcBadge{inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:clamp(34px,9vw,52px);border-radius:50%;
  background:radial-gradient(circle,#F2C230,#9C6B12);border:3px solid #FFE08A;box-shadow:0 0 22px rgba(242,194,48,.75);animation:pcHawk .5s ease-in-out infinite alternate}
.pcHole.k-hawk .pcBadge small{font:800 clamp(8px,2.2vw,11px)/1 var(--mono);color:#fff;margin-top:3px;letter-spacing:.06em;text-transform:uppercase}
@keyframes pcHawk{from{transform:rotate(-6deg)}to{transform:rotate(6deg)}}
.pcHole.k-boss .pcRiser{transform:translateY(4%) scale(1.14)}
.pcHole.k-boss .pcFace{border-color:#E4574C;box-shadow:0 0 0 4px rgba(228,87,76,.55),0 0 28px rgba(228,87,76,.8),inset 0 0 0 4px rgba(255,255,255,.2)}
.pcHole.k-boss .pcBadge{right:auto;left:50%;top:-16%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;font-size:clamp(20px,5vw,28px)}
.pcHole.k-boss .pcBadge small{font:700 clamp(9px,2.4vw,12px)/1 var(--mono);color:#E4574C;letter-spacing:.12em;margin-top:1px;text-shadow:0 1px 2px #000}
@media (prefers-reduced-motion: reduce){ .pcHole.k-hawk .pcBadge{animation:none} }

/* ---------- No Fly Zone: the group chat blimp and the flak crate ---------- */
.plane.blimp{cursor:crosshair;z-index:3}
.blimpBody{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;width:190px;height:62px;border-radius:50%;
  background:radial-gradient(ellipse at 40% 30%,#f4f6f8,#b7c0c8 60%,#7d8790);border:2px solid #4b555e;box-shadow:0 6px 14px rgba(0,0,0,.35)}
.blimpBody::after{content:"";position:absolute;right:-16px;top:50%;margin-top:-14px;border-left:18px solid #7d8790;border-top:14px solid transparent;border-bottom:14px solid transparent}
.plane.rtl .blimpBody::after{right:auto;left:-16px;border-left:0;border-right:18px solid #7d8790}
.blimpBody b{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:#b3261e;text-align:center;line-height:1.1;padding:0 18px}
.blimpHp{display:block;width:96px;height:5px;background:rgba(0,0,0,.25);border-radius:3px;overflow:hidden}
.blimpHp em{display:block;height:100%;width:100%;background:#b3261e;transition:width .15s}
.plane.blimp.hitFlash .blimpBody{animation:blimpHit .18s ease}
@keyframes blimpHit{50%{filter:brightness(1.6);transform:translateY(2px)}}
.crate{position:absolute;top:0;left:0;z-index:4;display:flex;flex-direction:column;align-items:center;cursor:pointer}
.crate .chute{width:58px;height:26px;border-radius:30px 30px 4px 4px;background:repeating-linear-gradient(90deg,#E4574C 0 12px,#f4efe4 12px 24px);box-shadow:0 2px 4px rgba(0,0,0,.3)}
.crate .box{margin-top:14px;position:relative;font:800 10px/1 var(--mono);letter-spacing:.12em;color:#1d1a12;background:linear-gradient(#e6c05a,#b08a2c);border:2px solid #6b5418;padding:9px 8px;box-shadow:0 0 16px rgba(242,194,48,.7)}
.crate .box::before{content:"";position:absolute;left:50%;top:-16px;height:14px;border-left:1px solid rgba(255,255,255,.6)}
@media (max-width:640px){ .blimpBody{width:150px;height:52px} .blimpBody b{font-size:9.5px} }

/* an arcade round is live: the floating ♪ and ↑ step aside so they can't swallow a tap on the board */
.gameLive .sndBtn,.gameLive .sndPanel,.gameLive .toTop{opacity:0;pointer-events:none;transform:scale(.8);transition:opacity .2s,transform .2s}
/* eyebrows are filled chips in every theme now: the older dark-panel accent colors made these two unreadable (red on red) */
#gauntlet .eyebrow span,.desk .eyebrow span{color:#fff}
/* ghost buttons on the light page (the ballot tools, the hotel card) had parchment text meant for dark panels
   and all but vanished; dark ink by default, the old light style only on the dark surfaces that use it */
.btn.ghost{color:var(--ink);border-color:rgba(11,16,22,.28);background:rgba(255,255,255,.55)}
.btn.ghost:hover:not(:disabled){color:var(--gold-dim);border-color:var(--gold);background:rgba(255,255,255,.9)}
.revealGate .btn.ghost,.revealStage .btn.ghost,.panel:not(.light) .btn.ghost,footer .btn.ghost,.desk .btn.ghost,#gauntlet .btn.ghost{
  color:rgba(239,234,219,.72);border-color:rgba(200,162,74,.4);background:transparent}
.revealGate .btn.ghost:hover:not(:disabled),.revealStage .btn.ghost:hover:not(:disabled),.panel:not(.light) .btn.ghost:hover:not(:disabled),
footer .btn.ghost:hover:not(:disabled),.desk .btn.ghost:hover:not(:disabled),#gauntlet .btn.ghost:hover:not(:disabled){background:rgba(200,162,74,.15);color:var(--gold-bright);border-color:var(--gold)}
/* the reveal's final order: a column per page, side by side when there's room */
.rvFinalCols{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 26px;margin:6px auto 22px;text-align:left}
.rvFinalCols .rvFinal{margin:0;max-width:none;width:100%}
.revealSlide:has(.rvFinalCols){max-width:860px}
@media(max-width:640px){
  .rvFinalCols{max-width:340px}
  .rvFinalCols .rvFinal li{padding:4px 0;font-size:14px}
  .rvFinalCols .rvFinalHead{padding:10px 0 2px !important}
  .rvFinalCols .rvMiniFace{width:22px;height:22px}
}

/* ============================================================
   TOURNEY WEEK (data-league-theme="medieval") — Week 4
   Oxblood, forged iron and old parchment. Roman capitals for display,
   a period book face for reading, a heraldic stripe where the others
   put hazard tape.
   ============================================================ */
[data-league-theme="medieval"]{
  --t-ink:#1c140c;
  --t-surface:#2a1d14;
  --t-surface-deep:#150d08;
  --t-accent:#8e1b1b;
  --t-accent-bright:#d4a84a;
  --t-accent-dim:#5e1111;
  --t-bg:#e8dcc2;
  --t-card:#f4ead4;
  --t-neg:#8e1b1b;
  --t-pos:#3d6b35;
  --t-rule:rgba(28,20,12,.2);
  --t-stripe:repeating-linear-gradient(135deg,#8e1b1b 0 14px,#d4a84a 14px 18px,#1c140c 18px 32px);
  --t-metal-1:#4a4038; --t-metal-2:#1a130d; --t-metal-3:#6e6252; --t-metal-edge:#b89a62;
  --t-glow:rgba(212,168,74,.5);
  --display:'Cinzel','Trajan Pro',Georgia,'Times New Roman',serif;
  --body:'IM Fell English',Georgia,'Times New Roman',serif;
}
[data-league-theme="medieval"] body{
  background-image:
    radial-gradient(120% 70% at 50% -10%,rgba(142,27,27,.10),transparent 60%),
    radial-gradient(90% 60% at 10% 110%,rgba(28,20,12,.14),transparent 60%),
    linear-gradient(180deg,var(--t-bg),#e2d4b6);
}
[data-league-theme="medieval"] h1,[data-league-theme="medieval"] h2,[data-league-theme="medieval"] h3{letter-spacing:.02em}
[data-league-theme="medieval"] .masthead{background:linear-gradient(180deg,#1f150d,#120b06);border-bottom:3px solid #8e1b1b}
[data-league-theme="medieval"] .nav{background:linear-gradient(180deg,#2a1d14,#1a110a);border-bottom:1px solid rgba(212,168,74,.35)}
[data-league-theme="medieval"] .eyebrow span{background:#8e1b1b;background-image:linear-gradient(180deg,rgba(255,255,255,.14),rgba(255,255,255,0) 55%),linear-gradient(90deg,#9e2020,#5e1111);color:#f4ead4}
[data-league-theme="medieval"] footer{background:#150d08}
[data-league-theme="medieval"] .btn.primary{background:#8e1b1b;background-image:linear-gradient(180deg,rgba(255,255,255,.18),rgba(255,255,255,0) 60%);color:#f4ead4;border-color:#5e1111}

/* ---------- the divisions: East vs. West (standings page) ---------- */
.divgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin-top:10px}
.divcard{border-top:4px solid var(--div,#888);background:var(--surface,transparent)}
.divcard.east{--div:#2f63c4}.divcard.west{--div:#c4352f}
.divcard h3{margin:10px 0 6px;font-size:13px;letter-spacing:.22em;text-transform:uppercase;color:var(--div)}
.divt td.odds{white-space:nowrap}
table.sheet.divt{min-width:0}
.divt .teamcell{min-width:0}
.divt .stname{white-space:normal}
.oddsbar{display:inline-block;vertical-align:middle;width:54px;height:6px;border-radius:3px;background:rgba(127,127,127,.22);margin-right:7px;overflow:hidden}
.oddsbar i{display:block;height:100%;background:var(--div)}
.divt td.odds b{font-family:var(--mono);font-size:12.5px;font-weight:600}
.divh2h{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin-top:14px;font-size:15px}
.divh2h:empty{display:none}
.divh2h b{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim,#888);margin-right:4px}
.divh2h .h2hE{font-weight:800;color:#2f63c4}.divh2h .h2hW{font-weight:800;color:#c4352f}
.divh2h em{flex-basis:100%;font-size:13.5px;color:var(--dim,#888)}
@media(max-width:760px){ .divgrid{grid-template-columns:1fr} .oddsbar{width:30px;margin-right:5px} .divt .teamcell{text-align:left;gap:8px} .divt .teamcell>div{text-align:left} .divt .stname{font-size:13px;line-height:1.2} .divt .stown{display:block;text-align:left} .divt .stface{width:26px;height:26px} }

/* ============================================================
   GRAPHICS PASS — the arcade
   ============================================================ */
/* No Fly Zone: a night over the Chairman's tower. Stars and a moon glow, clouds drifting across,
   two searchlights sweeping, and a skyline with its windows lit. */
.sky{background:
    radial-gradient(1.2px 1.2px at 12% 14%,rgba(255,255,255,.85),transparent 60%),
    radial-gradient(1px 1px at 27% 32%,rgba(255,255,255,.6),transparent 60%),
    radial-gradient(1.4px 1.4px at 44% 9%,rgba(255,255,255,.9),transparent 60%),
    radial-gradient(1px 1px at 58% 26%,rgba(255,255,255,.55),transparent 60%),
    radial-gradient(1.2px 1.2px at 71% 12%,rgba(255,255,255,.8),transparent 60%),
    radial-gradient(1px 1px at 86% 30%,rgba(255,255,255,.6),transparent 60%),
    radial-gradient(1px 1px at 93% 8%,rgba(255,255,255,.7),transparent 60%),
    radial-gradient(1px 1px at 5% 40%,rgba(255,255,255,.45),transparent 60%),
    radial-gradient(90px 90px at 82% 18%,rgba(255,244,214,.95) 0 14px,rgba(255,236,190,.28) 15px,rgba(255,236,190,.08) 40px,transparent 70%),
    radial-gradient(120% 80% at 50% 110%,rgba(255,196,120,.22),transparent 60%),
    linear-gradient(180deg,#070F1C 0%,#10233A 42%,#24425E 76%,#3D6380 100%)}
.sky::before{content:"";position:absolute;inset:-10% -40%;pointer-events:none;z-index:0;opacity:.55;
  background:
    radial-gradient(22% 7% at 18% 30%,rgba(200,215,235,.18),transparent 70%),
    radial-gradient(28% 8% at 62% 22%,rgba(200,215,235,.14),transparent 70%),
    radial-gradient(18% 6% at 88% 44%,rgba(200,215,235,.12),transparent 70%);
  animation:nfClouds 60s linear infinite}
@keyframes nfClouds{from{transform:translateX(-12%)}to{transform:translateX(12%)}}
.sky::after{content:"";position:absolute;left:0;right:0;bottom:60px;height:130%;pointer-events:none;z-index:1;
  background:
    conic-gradient(from 344deg at 22% 100%,transparent 0deg,rgba(215,232,255,.24) 2.5deg,rgba(215,232,255,.06) 6deg,transparent 8deg),
    conic-gradient(from 8deg at 78% 100%,transparent 0deg,rgba(215,232,255,.2) 2.5deg,rgba(215,232,255,.05) 6deg,transparent 8deg);
  transform-origin:50% 100%;animation:nfBeams 11s ease-in-out infinite alternate;mix-blend-mode:screen}
@keyframes nfBeams{from{transform:skewX(-7deg)}to{transform:skewX(7deg)}}
.skyline{height:96px;opacity:1;z-index:2;
  background:linear-gradient(90deg,transparent 0 3%,#081019 3% 9%,transparent 9% 12%,#081019 12% 16%,
      transparent 16% 21%,#081019 21% 26%,transparent 26% 31%,#081019 31% 35%,
      transparent 35% 64%,#081019 64% 69%,transparent 69% 73%,#081019 73% 79%,
      transparent 79% 83%,#081019 83% 89%,transparent 89% 93%,#081019 93% 98%,transparent 98%)}
/* lit windows: two offset grids of warm dots, clipped to the buildings and thinning out toward the roofs */
.skyline::before{content:"";position:absolute;left:0;right:0;bottom:0;top:22%;
  background:
    radial-gradient(1.6px 2.2px at 50% 50%,rgba(255,216,150,.95) 60%,transparent 75%) 0 0/9px 13px,
    radial-gradient(1.6px 2.2px at 50% 50%,rgba(255,236,200,.7) 60%,transparent 75%) 4px 6px/17px 23px;
  -webkit-mask-image:linear-gradient(90deg,transparent 0 3%,#000 3% 9%,transparent 9% 12%,#000 12% 16%,transparent 16% 21%,#000 21% 26%,transparent 26% 31%,#000 31% 35%,transparent 35% 64%,#000 64% 69%,transparent 69% 73%,#000 73% 79%,transparent 79% 83%,#000 83% 89%,transparent 89% 93%,#000 93% 98%,transparent 98%);
          mask-image:linear-gradient(90deg,transparent 0 3%,#000 3% 9%,transparent 9% 12%,#000 12% 16%,transparent 16% 21%,#000 21% 26%,transparent 26% 31%,#000 31% 35%,transparent 35% 64%,#000 64% 69%,transparent 69% 73%,#000 73% 79%,transparent 79% 83%,#000 83% 89%,transparent 89% 93%,#000 93% 98%,transparent 98%);
  opacity:.55}
@media(prefers-reduced-motion:reduce){.sky::before,.sky::after{animation:none}}

/* Punch the Commish: a lit football field in a heavy frame, with dirt-mound holes */
.pcBoard{border:6px solid #2A1D12;border-radius:10px;
  background:
    radial-gradient(90% 55% at 50% -12%,rgba(255,250,225,.26),transparent 62%),
    radial-gradient(140% 110% at 50% 50%,transparent 55%,rgba(0,0,0,.45) 100%),
    repeating-linear-gradient(180deg,rgba(255,255,255,.07) 0 2px,transparent 2px 33.333%),
    repeating-linear-gradient(180deg,#236238 0 16.666%,#1D5630 16.666% 33.333%);
  box-shadow:inset 0 0 0 2px rgba(200,162,74,.55),inset 0 10px 24px rgba(0,0,0,.35),0 22px 40px -22px rgba(0,0,0,.85)}
.pcBoard.live{border-color:#3A2816}
.pcBoard.fever{background:
    radial-gradient(90% 55% at 50% -12%,rgba(255,236,170,.4),transparent 62%),
    repeating-linear-gradient(180deg,rgba(255,255,255,.08) 0 2px,transparent 2px 33.333%),
    repeating-linear-gradient(180deg,#6B4A12 0 16.666%,#5C3F0F 16.666% 33.333%)}
.pcRim{background:linear-gradient(180deg,#8A6440 0%,#5E4128 45%,#3A2716 100%);
  box-shadow:inset 0 2px 0 rgba(255,230,190,.22),0 6px 10px rgba(0,0,0,.45)}
.pcPit{background:radial-gradient(ellipse at 50% 35%,#000 0%,#0B0703 55%,#2E2012 100%)}

/* ---------- the Commissioner's desk (commish.html) ---------- */
.cmDesk{max-width:560px;margin-top:14px;padding:18px 20px;border:1px solid var(--rule,rgba(127,127,127,.3));background:var(--card,rgba(255,255,255,.04))}
.cmState{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}
.cmState b{font-size:12px;letter-spacing:.2em;text-transform:uppercase;padding:3px 8px;border-radius:3px}
.cmState.off b{background:#3a3f4a;color:#fff}.cmState.on b{background:#2e7d4f;color:#fff}
.cmState span{font-size:14px;color:var(--dim,#888)}
.cmForm label{display:block;font-size:12px;letter-spacing:.14em;text-transform:uppercase;margin-bottom:6px}
.cmRow{display:flex;flex-wrap:wrap;gap:8px}
.cmRow input{flex:1;min-width:180px;padding:11px 12px;font-size:16px;border:1px solid var(--rule,rgba(127,127,127,.4));border-radius:4px;background:transparent;color:inherit}
.cmMsg{min-height:20px;margin:8px 0 0;color:#e4574c;font-size:14px}
.cmOpen p{margin:0 0 12px}
