/* Colossal Heads — interior page content, light TMVL theme.
   Loaded after colossal.css on pages that use the shared chrome. Restyles the
   viewer/coach content (tables, forms, the game-plan catalog) to sit on the new
   white content panel instead of the old dark football.css. */

/* content panel opened by include_menu.php, closed by include_footer.php */
.ch-body{background:var(--paper);border:1px solid var(--line);margin:10px}
.ch-inner{padding:14px 18px}
.ch-inner h2{font-family:var(--slab);font-weight:700;font-size:22px;color:var(--slate);
  margin:0 0 14px;text-transform:none;line-height:1.1}
.ch-inner h3{font-family:var(--slab);font-weight:600;font-size:15px;color:#fff;
  background:var(--slate);text-transform:uppercase;letter-spacing:.03em;
  border-bottom:2px solid var(--blue);padding:4px 9px 3px;margin:18px 0 10px;
  display:flex;align-items:baseline;gap:8px}
.ch-inner p{margin:0 0 12px}
.ch-inner a{color:var(--blue)}
.ch-inner a:hover{text-decoration:underline}

/* the workhorse data table (poll, standings, scores, review, teams…) */
table.data{width:100%;border-collapse:collapse;margin:0 0 18px;font-size:13px;background:#fff}
table.data th{background:var(--slate);color:#fff;font-family:var(--slab);font-weight:500;
  text-transform:uppercase;font-size:11.5px;letter-spacing:.03em;text-align:left;padding:5px 9px}
table.data td{padding:6px 9px;border-bottom:1px solid var(--line);font-size:13px}
table.data tr:hover td{background:#f1f6f8}
table.data td.num,table.data th.num{text-align:right;font-variant-numeric:tabular-nums}
table.data.compact td,table.data.compact th{padding:4px 7px;font-size:12px}
.tlink{color:var(--slate);font-weight:600}.tlink:hover{color:var(--blue)}
.tlink.strong{font-weight:700}
.conf{color:var(--ink-faint);font-size:10.5px;text-transform:uppercase;margin-left:4px}
.num{font-variant-numeric:tabular-nums}
.pos{color:#2f8f4e}.neg{color:#c0483a}
.rk{font-family:var(--slab);font-weight:700;color:var(--ink-faint)}

/* matchup / status callouts */
.matchup{background:#eef3f6;border:1px solid var(--line);border-left:3px solid var(--blue);
  padding:9px 12px;margin:0 0 14px;font-size:14px}
.matchup .status,.status{display:block;margin-top:4px;font-size:12.5px;color:var(--ink-faint)}
.sectionnote{color:var(--ink-faint);font-size:12px;margin:0 0 12px}
.sectionnote.small{font-size:11.5px}
.startersnote,.budgetlabel{color:var(--ink-faint);font-size:11.5px}

/* poll movement + week bar */
.weekbar{display:flex;align-items:center;gap:5px;margin:0 0 16px;flex-wrap:wrap}
.weeklabel{font-family:var(--slab);font-weight:600;text-transform:uppercase;font-size:12px;
  color:var(--ink-soft);margin-right:4px}
.weekbar a.week{display:inline-block;padding:3px 9px;border:1px solid var(--line);border-radius:3px;
  font-family:var(--slab);font-weight:600;color:var(--slate);background:#fff}
.weekbar a.week.active{background:var(--slate);color:#fff;border-color:var(--slate)}
.up{color:#2f8f4e}.down{color:#c0483a}.flat{color:var(--ink-faint)}
.newin{color:var(--blue);font-weight:700;font-size:10px}
tr.tailsplit td{background:#eef1f3;color:var(--ink-faint);font-family:var(--slab);
  text-transform:uppercase;font-size:10.5px;letter-spacing:.05em;padding:3px 9px}
tr.tail td{color:var(--ink-soft)}
tr.titlegame td{background:#fbf1c9}

/* two-column blocks (standings, scouting) */
.cols{column-count:2;column-gap:22px}
@media(max-width:680px){.cols{column-count:1}}
.catblock{break-inside:avoid;margin:0 0 16px;border:1px solid var(--line);border-radius:4px;overflow:hidden}
.catblock h3{margin:0}
/* section dividers (DEFENSE / OFFENSE / GAME MANAGEMENT) — often <h2 class="sectionhead">,
   so out-specify the generic .ch-inner h2 rule or the label goes dark-on-dark. */
/* top-level section band (OFFENSE / DEFENSE / GAME MANAGEMENT): brand navy + gold rule,
   deliberately a different colour from the slate subsection bars below it. */
.ch-inner h2.sectionhead, .ch-inner .sectionhead{background:var(--navy);color:#fff;
  font-family:var(--slab);font-weight:700;text-transform:uppercase;font-size:16px;
  letter-spacing:.06em;padding:7px 12px;margin:22px 0 12px;border-bottom:3px solid var(--gold);
  line-height:1.2}
.ch-inner section.plansection:first-of-type h2.sectionhead{margin-top:6px}

/* forms: game plan catalog, depth chart, login, recruiting */
input.num,select,input.slot,input[type=text],input[type=password],input[type=number],textarea{
  background:#fff;border:1px solid var(--line);border-radius:3px;padding:5px 7px;
  font-family:var(--body);font-size:13px;color:var(--ink)}
input.num,input.slot{width:66px;text-align:right}
select{min-width:104px;text-align:left}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue)}
input:disabled,select:disabled{color:#9aa4ab;background:#eef1f3}
input.num.groupbad,input.groupbad{border-color:#c0483a;background:#fbeceb}
tr.starter td.ord input.slot{border-color:#3a7a3f;background:#eef7ee}
button,input[type=submit]{font-family:var(--slab);font-weight:600;text-transform:uppercase;
  font-size:12.5px;letter-spacing:.03em;color:#fff;background:var(--blue);border:0;border-radius:4px;
  padding:7px 15px;cursor:pointer}
button:hover,input[type=submit]:hover{background:#17548c}
button:disabled{background:#aab4bb;cursor:not-allowed}
form.signin{max-width:320px}
form.signin input{width:100%;margin:0 0 10px}
form.signin label.keep{display:flex;align-items:center;gap:6px;margin:0 0 12px;font-weight:400}
form.signin label.keep input{width:auto;margin:0}

/* ---- game plan form ---- */
/* preset picker row: "Offense  Air Raid  Pro Set …" */
.presetrow{display:flex;align-items:baseline;gap:6px;margin:0 0 3px;font-size:13px;flex-wrap:wrap}
.presetlabel{font-family:var(--slab);font-weight:700;text-transform:uppercase;font-size:11px;
  letter-spacing:.05em;color:var(--ink-soft);width:58px;flex:none}
.presetrow a{margin-right:8px}
p.limits{font-size:11.5px;color:var(--ink-faint);line-height:1.5;margin:10px 0 4px}
p.limits strong{color:var(--ink-soft)}

/* each option is a tidy list row: number + name on top, definition muted beneath,
   value on the right — everything TOP-aligned to the option name, not centered. */
table.plan{width:100%;border-collapse:collapse}
table.plan td{vertical-align:top;padding:6px 7px;border-bottom:1px solid #eef1f3}
table.plan tr:last-child td{border-bottom:0}
td.qno{width:20px;text-align:right;color:var(--ink-faint);font-family:var(--slab);font-weight:600;
  font-size:11.5px;padding-top:7px;white-space:nowrap}
td.qlabel{font-weight:600;color:var(--ink);line-height:1.25;padding-right:8px}
td.qlabel .qhint{display:block;color:var(--ink-faint);font-size:11px;line-height:1.3;
  margin-top:1px;font-weight:400}
td.qinput{width:72px;text-align:right;white-space:nowrap;padding-top:5px;color:var(--ink-faint);font-size:12px}
td.qinput input.num,td.qinput input.slot{width:50px}
td.qinput select{width:auto;max-width:170px;text-align:left}
.pct{color:var(--ink-faint);margin-left:2px;font-size:12px}
.pname{color:var(--ink-soft)}
.pos{color:var(--ink-soft);font-size:11px;text-transform:uppercase}
.tm{color:var(--ink-soft);font-size:11px}
/* the roster-name hint shown beside carrier/receiver rows */
.namehint{display:block;color:var(--blue);font-size:11px;font-weight:600;margin-top:2px}

/* scouting / depth / box tables reuse the data look */
.scoutblock,.depthblock,.boxblock{margin:0 0 18px}
.scoutblock h3,.depthblock h3,.boxblock h3,h3.pbphead{justify-content:space-between}
table.scout,table.box,table.linescore,table.teamstats{width:100%;border-collapse:collapse;
  font-size:12.5px;margin:0 0 14px;background:#fff}
table.scout th,table.box th,table.linescore th,table.teamstats th{background:var(--slate2);
  color:#fff;font-family:var(--slab);font-weight:500;text-transform:uppercase;font-size:11px;
  letter-spacing:.03em;text-align:left;padding:4px 7px}
table.scout td,table.box td,table.linescore td,table.teamstats td{padding:4px 7px;
  border-bottom:1px solid var(--line)}
table.scout td.num,table.box td.num,table.linescore td.num,table.teamstats td.num,
table.scout th.num,table.box th.num,table.linescore th.num,table.teamstats th.num{
  text-align:right;font-variant-numeric:tabular-nums}
.th-lab,.th-stat,.th-val{font-family:var(--slab)}
.budgetcell,.budgetnum{font-variant-numeric:tabular-nums}
.cl{clear:both}
.sep{color:var(--ink-faint)}
.tb{vertical-align:top}

/* ---- Play-by-play: view switch + drive cards (game viewer, step 1) ---- */
.pbp-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;
  border-bottom:2px solid var(--slate);margin:22px 0 6px;padding-bottom:5px}
.pbp-tabs{display:inline-flex;gap:4px}
.pbp-tabs a{font-family:var(--slab);font-weight:600;font-size:12px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--slate);text-decoration:none;padding:5px 12px;border-radius:4px 4px 0 0;
  border:1px solid var(--line);border-bottom:0;background:#eef1f3}
.pbp-tabs a.on{background:var(--slate);color:#fff;border-color:var(--slate)}
.gv-drivehd{display:flex;justify-content:space-between;align-items:baseline;background:var(--slate2);
  color:#fff;font-family:var(--slab);padding:6px 12px;margin:16px 0 0;border-radius:5px 5px 0 0}
.gv-drivehd .dt{font-weight:600;font-size:13px}
.gv-drivehd .dn{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--gold)}
.gv-drive{border:1px solid var(--line);border-top:0;border-radius:0 0 5px 5px;overflow:hidden;margin-bottom:6px}
.gv-play{padding:9px 13px;border-top:1px solid var(--line);background:#fff}
.gv-drive .gv-play:first-child{border-top:0}
.gv-play.td{background:#f6faf4;border-left:3px solid #2e7d32}
.gv-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.gv-head{font-family:var(--slab);font-weight:700;font-size:14px;color:var(--slate)}
.gv-play.td .gv-head{color:#2e7d32}
.gv-time{font-size:11px;color:var(--ink-faint);white-space:nowrap;font-variant-numeric:tabular-nums}
.gv-desc{font-size:12.5px;color:var(--ink-soft);line-height:1.5;margin:2px 0 4px}
.gv-bot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.gv-dd{font-family:var(--slab);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--blue)}
.gv-tags{display:inline-flex;gap:5px;flex-wrap:wrap}
.gv-tag{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:10.5px;padding:1px 6px;border-radius:3px;
  border:1px solid var(--line)}
.gv-tag.o{background:#eef4fb;color:#1d66ab}
.gv-tag.d{background:#fbeeee;color:#b23b32}
pre.pbp{font-family:"SF Mono",Menlo,Consolas,monospace;font-size:12px;line-height:1.5;color:var(--slate);
  background:#fbfbf9;border:1px solid var(--line);border-radius:5px;padding:12px 14px;overflow-x:auto;white-space:pre}

/* ---- Replay Mode (replay.php): animated play-by-play viewer, step 2 ---- */
.rp-score{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:10px;
  background:var(--slate);color:#fff;padding:8px 14px;border-radius:5px;margin:0 0 10px;
  box-shadow:0 2px 8px rgba(20,30,40,.3)}
.rp-team{display:flex;align-items:center;gap:8px;min-width:0;flex:1}
.rp-team.home{flex-direction:row-reverse}
.rp-abb{font-family:var(--slab);font-weight:700;font-size:12px;color:#fff;padding:2px 7px;
  border-radius:3px;letter-spacing:.05em;border:1px solid rgba(255,255,255,.35);flex:none}
.rp-name{font-family:var(--slab);font-weight:600;font-size:15px;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis}
/* The score is the thing you look at: a bit over twice the old 27px, with a tight
   line-height so the sticky strip barely grows and never eats the viewport. */
.rp-pts{font-family:var(--slab);font-weight:700;font-size:clamp(30px,4.8vw,58px);line-height:.85;
  min-width:68px;text-align:center;font-variant-numeric:tabular-nums;color:var(--gold);
  text-shadow:0 2px 4px rgba(0,0,0,.35)}
.rp-mid{flex:none;text-align:center;line-height:1.35;min-width:130px}
.rp-clock{font-family:var(--slab);font-weight:600;font-size:14px;color:#fff;
  font-variant-numeric:tabular-nums}
.rp-prog{font-size:10px;color:#b9c2c7;text-transform:uppercase;letter-spacing:.06em}
@media(max-width:640px){.rp-name{display:none}.rp-mid{min-width:96px}.rp-pts{min-width:46px}}

/* side view: light airspace above the strip, grass strip + yard numbers below */
.rp-fieldwrap{position:relative;border:1px solid var(--line);border-radius:6px;overflow:hidden;
  background:#e9f0f4;margin:0 0 10px}
.rp-fieldwrap svg{display:block;width:100%;height:auto}
/* the result chip riding with the ball (SVG group at the end spot) */
#rpTagG{opacity:0;transition:opacity .2s}
#rpTagG.show{opacity:1}
.rp-chip{position:absolute;left:50%;top:62%;transform:translate(-50%,-50%) scale(.85);
  display:flex;align-items:center;gap:12px;
  font-family:var(--slab);font-weight:700;font-size:clamp(15px,2.6vw,26px);letter-spacing:.12em;
  color:#fff;background:rgba(20,28,34,.72);padding:7px 20px;border-radius:6px;opacity:0;
  pointer-events:none;transition:opacity .25s,transform .25s;text-transform:uppercase;
  text-shadow:0 1px 3px rgba(0,0,0,.4);white-space:nowrap}
.rp-chip.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
/* stacking over the field: veil, then any chip, then the scoring banner */
.rp-veil{z-index:2}.rp-chip{z-index:3}.rp-banner{z-index:4}
/* the flag chip sits in the top band of the field, above the play, and a size smaller */
.rp-chip.high{top:35%;font-size:clamp(13px,2.1vw,21px);padding:5px 16px;gap:9px}
.rp-chip.high .rp-sig{height:38px;width:auto}
/* the injury chip: whose player on the first row (crest + name), the line on the second */
.rp-chip.two{flex-direction:column;gap:3px;padding:8px 24px 9px}
.rp-chip .rp-chipteam{display:flex;align-items:center;gap:8px;font-size:.6em;letter-spacing:.16em;opacity:.95}
.rp-chip .rp-chipteam img{width:1.9em;height:1.9em;object-fit:contain}
.rp-pline .rp-pout b{color:#b23b32}
.rp-bxout{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 16px;padding:6px 12px;background:#fdf5f4;
  border-bottom:1px solid var(--line);font-size:12px;color:var(--slate);font-weight:600}
.rp-bxout b{font-family:var(--slab);font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:#b23b32;margin-right:2px}
.rp-bxout i{font-style:normal;font-size:10px;color:var(--ink-faint);letter-spacing:.04em}
.rp-bxout small{font-weight:400;color:var(--ink-faint)}
.rp-box .rp-out{display:inline-block;margin-left:6px;padding:0 5px;border-radius:3px;background:#b23b32;color:#fff;
  font-size:9px;font-weight:700;letter-spacing:.06em;font-style:normal;vertical-align:1px}
.rp-veil{position:absolute;inset:0;display:grid;place-items:center;background:rgba(22,32,40,.42);
  opacity:0;pointer-events:none;transition:opacity .3s}
.rp-veil.show{opacity:1}
.rp-veiltext{font-family:var(--slab);font-weight:700;font-size:clamp(16px,3vw,30px);color:#fff;
  text-transform:uppercase;letter-spacing:.1em;text-shadow:0 2px 6px rgba(0,0,0,.5);
  padding:0 20px;text-align:center}
@keyframes rp-ezflash{0%,100%{opacity:0}35%{opacity:.6}}
.rp-ez-flash{animation:rp-ezflash .8s ease-in-out 2}
@media (prefers-reduced-motion: reduce){
  .rp-ez-flash{animation:none;opacity:.4}
  .rp-chip{transition:none}.rp-veil{transition:none}#rpTagG{transition:none}
}

.rp-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 12px}
.rp-btn{font-family:var(--slab);font-weight:600;text-transform:uppercase;font-size:13px;
  letter-spacing:.04em;color:#fff;background:var(--slate);border:0;border-radius:4px;
  padding:8px 16px;cursor:pointer}
.rp-btn:hover{background:#1b2429}
.rp-btn.rp-play{background:var(--blue);min-width:110px}
.rp-btn.rp-play:hover{background:#17548c}
.rp-speed{display:inline-flex;border:1px solid var(--line);border-radius:4px;overflow:hidden;margin-left:4px}
.rp-speed button{background:#fff;color:var(--slate);border:0;border-radius:0;padding:7px 10px;
  font-size:11.5px;border-right:1px solid var(--line)}
.rp-speed button:last-child{border-right:0}
.rp-speed button.on{background:var(--slate);color:#fff}
.rp-speed button:hover:not(.on){background:#eef1f3}
.rp-hint{font-size:11px;color:var(--ink-faint);margin-left:auto}

.rp-card{border:1px solid var(--line);border-radius:6px;background:#fff;padding:11px 15px;
  min-height:92px;margin:0 0 12px}
.rp-card.td{background:#f6faf4;border-left:3px solid #2e7d32}
.rp-card.to{background:#fdf5f4;border-left:3px solid #b23b32}
.rp-card.inter{background:#f2f5f7;text-align:center}
.rp-card.inter .rp-top{justify-content:center}
.rp-card .rp-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px;flex-wrap:wrap}
.rp-card .rp-head{font-family:var(--slab);font-weight:700;font-size:19px;color:var(--slate)}
.rp-card.td .rp-head{color:#2e7d32}
.rp-card.to .rp-head{color:#b23b32}
.rp-card .rp-time{font-size:11.5px;color:var(--ink-faint);white-space:nowrap;
  font-variant-numeric:tabular-nums}
.rp-card .rp-desc{font-size:13px;color:var(--ink-soft);line-height:1.5;margin:3px 0 6px}
.rp-card.inter .rp-desc{margin-bottom:0}
.rp-card .rp-bot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.rp-card .rp-dd{font-family:var(--slab);font-weight:600;font-size:11.5px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--blue)}

.rp-sofar{border:1px solid var(--line);border-radius:6px;overflow:hidden;margin:0 0 16px}
.rp-sflabel{background:var(--slate2);color:#fff;font-family:var(--slab);font-weight:500;
  text-transform:uppercase;font-size:11px;letter-spacing:.05em;padding:4px 11px}
.rp-sfitem{display:flex;justify-content:space-between;align-items:baseline;gap:10px;
  padding:5px 11px;border-top:1px solid #edeef0;background:#fff;flex-wrap:wrap}
.rp-sfitem:first-of-type{border-top:0}
.rp-sfhead{font-family:var(--slab);font-weight:600;font-size:12.5px;color:var(--slate)}
.rp-sfmeta{font-size:11px;color:var(--ink-faint);font-variant-numeric:tabular-nums}
/* a play a flag wiped out: still listed, struck through and faded, so the drive reads as it happened */
.rp-sfitem.nul{opacity:.62;background:#fafafa}
.rp-sfitem.nul .rp-sfhead{text-decoration:line-through;font-weight:500;color:var(--ink-faint)}
/* Replay: scoring banner over the field (crest + TOUCHDOWN / FIELD GOAL) */
.rp-banner{position:absolute;left:50%;top:46%;transform:translate(-50%,-50%) scale(.9);display:flex;
  align-items:center;gap:14px;padding:8px 22px 8px 12px;border-radius:8px;background:#fff;
  border:2px solid var(--team,#29363b);box-shadow:0 6px 22px rgba(0,0,0,.25);opacity:0;pointer-events:none;
  transition:opacity .25s,transform .25s}
.rp-banner.show{opacity:1;transform:translate(-50%,-50%) scale(1)}
.rp-banner img{width:44px;height:44px;object-fit:contain}
.rp-banner span{font-family:var(--slab);font-weight:700;font-size:clamp(18px,2.6vw,28px);letter-spacing:.06em;
  text-transform:uppercase;color:var(--team,#29363b)}
@media (prefers-reduced-motion:reduce){.rp-banner{transition:none}}
/* Replay: tabs on the drive strip - the drive so far / live box score per team */
.rp-sftabs{display:flex;align-items:stretch;background:var(--slate2);gap:2px;padding:0 6px 0 0}
.rp-sftabs button{appearance:none;border:0;background:transparent;color:#cfd6da;font-family:var(--slab);
  font-weight:600;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;padding:6px 12px;cursor:pointer;
  display:inline-flex;align-items:center;gap:7px;border-bottom:3px solid transparent}
.rp-sftabs button:hover{color:#fff}
.rp-sftabs button.on{background:#fff;color:var(--slate);border-bottom-color:var(--team,var(--gold))}
.rp-sfchip{display:inline-block;padding:1px 6px;border-radius:3px;background:var(--team,#888);color:#fff;
  font-size:10px;letter-spacing:.06em}
.rp-sftabs button.on .rp-sfchip{box-shadow:0 0 0 1px rgba(0,0,0,.15) inset}
.rp-sfnote{margin-left:auto;align-self:center;font-size:10.5px;color:#cfd6da;letter-spacing:.03em}
.rp-box{background:#fff;padding:0 0 4px}
.rp-bxhead{display:flex;align-items:center;gap:10px;padding:8px 12px;border-bottom:2px solid var(--team,var(--slate))}
.rp-bxhead img{width:26px;height:26px;object-fit:contain}
.rp-bxhead b{font-family:var(--slab);font-size:14px;color:var(--slate)}
.rp-bxhead span{margin-left:auto;font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}
.rp-bxsec{padding:4px 0}
.rp-bxtitle{font-family:var(--slab);font-weight:700;font-size:11px;text-transform:uppercase;letter-spacing:.05em;
  color:var(--blue);padding:5px 12px 2px}
.rp-bxtable{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}
.rp-bxtable th{font-weight:600;font-size:10.5px;color:var(--ink-faint);text-align:right;padding:2px 10px;letter-spacing:.04em}
.rp-bxtable td{text-align:right;padding:3px 10px;border-top:1px solid #f0f1f2;color:var(--slate)}
.rp-bxtable .nm{text-align:left;padding-left:12px;font-weight:600;width:38%}
.rp-bxtable tr.tot td{font-weight:700;border-top:2px solid var(--line)}
@media(max-width:640px){.rp-sftabs{flex-wrap:wrap}}
@media(max-width:900px){.rp-sfnote{display:none}}
/* Replay: the launcher strip (four tabs) sits under the page links and sticks to the top of the
   viewport; the details panel drops down from it over the scoreboard and field (above the
   scoreboard's z-index:40) so they are in front of you without scrolling. JS sets the panel's
   left/width/top from the strip's rect. The panel body scrolls, its tabs don't. */
.rp-launch{position:sticky;top:0;z-index:41;border-radius:5px;margin:0 0 10px;padding:0 6px;min-height:32px;
  box-shadow:0 2px 6px rgba(20,30,40,.25)}
.rp-launch button{border-radius:4px 4px 0 0}
.rp-score{top:42px}   /* stacks under the sticky launcher strip (32px + its 10px margin) */
.rp-float{position:fixed;top:44px;z-index:60;display:flex;flex-direction:column;max-height:calc(100vh - 56px);
  background:#fff;border:1px solid var(--line);border-radius:6px;overflow:hidden;
  box-shadow:0 12px 36px rgba(20,30,40,.4)}
.rp-float[hidden]{display:none}
.rp-flhead{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:12px;background:var(--slate2);padding:0 6px 0 12px}
.rp-flbody{overflow:auto;min-height:0;overscroll-behavior:contain}
.rp-flhead .rp-sfnote{margin-left:0}
.rp-flclose{appearance:none;border:0;cursor:pointer;margin:4px 0;padding:4px 12px;border-radius:4px;
  background:var(--gold);color:var(--slate);font-family:var(--slab);font-weight:600;font-size:11.5px;
  text-transform:uppercase;letter-spacing:.05em;white-space:nowrap}
.rp-flclose:hover{background:#fff}
@media(max-width:640px){.rp-float{border-radius:0}.rp-launch{border-radius:0}}
.rp-pos{display:inline-block;min-width:22px;font-size:10px;color:var(--ink-faint);font-weight:600}
.rp-bxempty{padding:14px 12px;color:var(--ink-faint);font-size:12px}
/* Replay live box: the wide one-row-per-player layout */
.rp-wide-wrap{overflow-x:auto}
.rp-wide{width:100%;border-collapse:collapse;font-size:11.5px;font-variant-numeric:tabular-nums;white-space:nowrap}
.rp-wide th{font-weight:600;font-size:10.5px;color:var(--ink-faint);text-align:right;padding:2px 7px;letter-spacing:.03em}
.rp-wide th.grp{text-align:center;font-family:var(--slab);font-size:11px;letter-spacing:.05em;text-transform:uppercase;
  color:var(--slate);border-bottom:1px solid var(--line);padding-top:4px}
.rp-wide td{text-align:right;padding:3px 7px;border-top:1px solid #f0f1f2;color:var(--slate)}
.rp-wide .nm{text-align:left;padding-left:12px;font-weight:600;min-width:120px;position:sticky;left:0;background:#fff}
.rp-wide th.alt,.rp-wide td.alt{background:#f6f7f8}
.rp-wide tr.tot td{font-weight:700;border-top:2px solid var(--line)}
.rp-wide tr.tot td.nm{background:#fff}
.rp-wide th.sortable{cursor:pointer;user-select:none}
.rp-wide th.sortable:hover{color:var(--blue)}
.rp-wide th.sorted{color:var(--blue);font-weight:700}
.rp-wide th.sorted.desc::after{content:" \25BE"}
.rp-wide th.sorted.asc::after{content:" \25B4"}
/* Replay: key players on the play */
.rp-players{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.rp-players:empty{display:none}
.rp-pcard{flex:1;min-width:200px;display:grid;grid-template-columns:56px 1fr;grid-template-rows:auto auto;gap:2px 10px;
  align-items:center;border:1px solid var(--line);border-left:3px solid var(--team,var(--slate));border-radius:5px;padding:7px 10px;background:#fff}
.rp-pcard img,.rp-pcrest{grid-row:1 / span 2;width:56px;height:56px;object-fit:contain}
.rp-pwho b{font-family:var(--slab);font-size:13px;color:var(--slate)}
.rp-pwho span{margin-left:6px;font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}
.rp-pline{display:flex;gap:12px;font-size:10px;color:var(--ink-faint);letter-spacing:.04em;text-transform:uppercase}
.rp-pline b{display:block;font-size:14px;color:var(--slate);font-variant-numeric:tabular-nums;letter-spacing:0}
/* Replay: drive summary header + completed drives accordion */
.rp-drvhead,.rp-drvrow{display:flex;align-items:center;gap:9px;padding:6px 11px;background:#fff;border-top:1px solid #edeef0;font-size:12px}
.rp-drvhead{background:#f6f7f8;border-top:0;border-left:3px solid var(--team,var(--slate))}
.rp-drvhead b,.rp-drvrow b{font-family:var(--slab);color:var(--slate)}
.rp-drvsum{color:var(--ink-faint);font-size:11px}
.rp-drvscore{margin-left:auto;font-family:var(--slab);font-weight:700;color:var(--slate);font-variant-numeric:tabular-nums}
.rp-drv{border-left:3px solid var(--team,var(--slate))}
.rp-drvrow{cursor:pointer}
.rp-drvrow:hover{background:#f6f7f8}
.rp-drv.open .rp-drvrow{background:#f6f7f8}
.rp-drv .rp-sfitem{padding-left:22px}
/* Replay: team stats tab */
.rp-ts{padding:6px 0 2px}
.rp-tstable{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}
.rp-tstable th.l,.rp-tstable th.r{width:31%}   /* fixed layout: the label column is the middle 38%, dead centre */
.rp-tstable th{font-family:var(--slab);font-weight:700;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--slate);
  text-align:center;padding:5px 10px;width:38%}
.rp-tstable thead th{padding-bottom:8px;border-bottom:1px solid var(--line)}
.rp-tstable td{padding:5px 12px;border-top:1px solid #f0f1f2;color:var(--slate);font-weight:600}
.rp-tstable td.l{text-align:right}.rp-tstable td.r{text-align:left}
.rp-tstable th.l{text-align:right}.rp-tstable th.r{text-align:left}
/* Replay scoreboard: crests, records, possession, linescore; field readout */
/* The painted mascot at the size of the score beside it. */
.rp-crest{width:80px;height:80px;object-fit:contain;margin-right:8px;vertical-align:middle;flex:none}
@media(max-width:640px){.rp-crest{width:60px;height:60px;margin-right:4px}}
.rp-name small{display:block;font-size:10px;color:#b9c2c8;letter-spacing:.04em;text-transform:uppercase;font-weight:400}
.rp-poss{display:inline-flex;align-items:center;opacity:0;margin:0 6px;transition:opacity .2s}
.rp-ballsvg{width:22px;height:13px;filter:drop-shadow(0 1px 1px rgba(0,0,0,.5))}
.rp-poss.on{opacity:1}
.rp-line{margin:5px auto 0;border-collapse:collapse;font-size:10.5px;font-variant-numeric:tabular-nums;color:#cfd6da}
.rp-line th{font-weight:600;padding:0 5px;color:#98a4ab;font-family:var(--slab);letter-spacing:.04em}
.rp-line td{padding:0 5px;text-align:center}
.rp-line .t{color:#fff;font-weight:700;border-left:1px solid #4a5860}
.rp-readout{position:absolute;left:0;right:0;top:0;padding:8px 12px 0;font-family:var(--slab);z-index:2}
.rp-rodrive{position:absolute;left:12px;top:8px;display:flex;align-items:center;gap:8px}
.rp-rodrive img{width:30px;height:30px;object-fit:contain}
.rp-rodrive span{display:flex;flex-direction:column;line-height:1.1}
.rp-rodrive b{font-size:11.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--slate)}
.rp-rodrive small{font-size:11px;color:var(--ink-faint);font-family:"Lucida Grande",Verdana,sans-serif}
.rp-rosnap{display:flex;align-items:stretch;gap:22px;justify-content:center;padding-top:6px}
.rp-rosnap span{display:flex;flex-direction:column;align-items:center;line-height:1.05}
.rp-rosnap small{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:2px}
.rp-rosnap b{font-size:20px;font-weight:700;color:var(--slate);letter-spacing:.01em}
.rp-rosep{width:1px;background:var(--line);align-self:stretch;margin:2px 0}
.rp-rokick{display:flex;align-items:center;justify-content:center;gap:12px;padding-top:8px}
.rp-rokick img{width:34px;height:34px;object-fit:contain}
.rp-rokick b{font-size:22px;font-weight:700;letter-spacing:.06em;color:var(--slate)}
.rp-rokick.miss b{color:#b23b32}
.rp-rosnap[hidden],.rp-rokick[hidden]{display:none}
.rp-replay{position:absolute;right:12px;top:8px;appearance:none;border:1px solid var(--line);background:#fff;color:var(--slate);
  font-family:var(--slab);font-weight:600;font-size:11px;padding:4px 10px;border-radius:4px;cursor:pointer}
.rp-replay:hover{border-color:var(--blue);color:var(--blue)}
@media(max-width:640px){.rp-line{display:none}.rp-rosnap b{font-size:16px}.rp-rodrive small{display:none}}
/* Replay: win probability (subtle), quarter dividers in the drives list */
.rp-wp{margin-left:auto;margin-right:12px;font-size:11px;color:var(--ink-faint);display:inline-flex;align-items:center;gap:4px;
  font-variant-numeric:tabular-nums}
.rp-wp img{width:16px;height:16px;object-fit:contain}
.rp-wp b{color:var(--slate)}
.rp-qdiv{display:flex;justify-content:space-between;cursor:pointer}
.rp-qdiv .rp-qcount{font-weight:400;letter-spacing:.03em;color:#cfd6da}
.rp-qdiv:hover{background:#3b4a52}
.rp-tstable tr.sub th{font-weight:500;text-transform:none;letter-spacing:0;font-size:12.5px;color:var(--ink-soft);font-family:inherit}
.rp-tstable tr.sub td{font-weight:400;color:var(--ink-soft);background:#fafafa}
/* Replay drives: the crest + title + subtitle card */
.rp-drvhead,.rp-drvrow{padding:8px 11px}
.rp-drvcrest{width:40px;height:40px;object-fit:contain;flex:none}
.rp-drvtitle{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.rp-drvtitle b{font-family:var(--slab);font-size:14px;font-weight:700;color:var(--slate)}
.rp-drvtitle small{font-size:11.5px;color:var(--ink-faint);font-family:"Lucida Grande",Verdana,sans-serif}
.rp-drvstate{margin-left:auto;font-size:10.5px;font-weight:600;color:var(--slate);background:#e8eaec;border-radius:4px;padding:2px 8px}
.rp-drvstate + .rp-drvscore{margin-left:12px}
/* Replay: halftime */
.rp-veiltext small{display:block;font-size:clamp(22px,4vw,40px);font-variant-numeric:tabular-nums;margin-top:2px;letter-spacing:.02em}
.rp-veiltext em{display:block;font-style:normal;font-size:13px;font-weight:600;margin-top:10px;background:rgba(20,28,34,.65);
  padding:4px 12px;border-radius:4px;letter-spacing:.03em}
.rp-half{margin-top:12px}
.rp-halfhead{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--slab);padding:0 0 8px}
.rp-halfhead b{font-size:13px;letter-spacing:.05em;color:var(--slate)}
.rp-halfhead span{font-size:11px;color:var(--ink-faint);background:#eef0f2;border-radius:4px;padding:2px 8px}
.rp-halfcards{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:640px){.rp-halfcards{grid-template-columns:1fr}}
.rp-halfcard{display:grid;grid-template-columns:40px 1fr;grid-template-rows:auto auto;gap:6px 12px;align-items:center;
  border:1px solid var(--line);border-left:3px solid var(--team,var(--slate));border-radius:6px;padding:10px 12px;background:#fff}
.rp-halfcard img{grid-row:1 / span 2;width:40px;height:40px;object-fit:contain}
.rp-halfwho b{font-family:var(--slab);font-size:14px;color:var(--slate)}
.rp-halfwho span{margin-left:8px;font-size:10.5px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}
.rp-halfline{display:flex;gap:0;border-top:1px solid #eef0f2;padding-top:6px}
.rp-halfline span{flex:1;display:flex;flex-direction:column;align-items:center;border-left:1px solid #eef0f2}
.rp-halfline span:first-child{border-left:0}
.rp-halfline small{font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint)}
.rp-halfline b{font-size:17px;color:var(--slate);font-variant-numeric:tabular-nums;font-family:var(--slab)}
/* halftime: the card shows only the break panel */
.rp-card.halftime .rp-top,.rp-card.halftime .rp-desc,.rp-card.halftime .rp-bot,.rp-card.halftime .rp-players{display:none}
.rp-card.halftime .rp-half{margin-top:0}
.rp-readout[hidden]{display:none}
/* weather */
.rp-wx{display:block;margin-top:3px;font-size:10.5px;color:#b9c2c8;letter-spacing:.03em}
.fwx{font-size:11px;color:var(--ink-faint)}
.rp-rodrive img:not([src]),.rp-rodrive img[src=""]{display:none}
/* weather forecast panel */
.wx-panel{border:1px solid var(--line);border-left:4px solid var(--blue);border-radius:5px;background:#f7f9fb;padding:10px 14px;margin:10px 0 16px;font-size:12.5px}
.wx-head{display:flex;gap:12px;align-items:baseline;flex-wrap:wrap}
.wx-head b{font-family:var(--slab);font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--slate)}
.wx-head span{color:var(--slate);font-weight:600}
.wx-impact{border-collapse:collapse;margin:8px 0 6px;font-size:12px}
.wx-impact th{text-align:left;padding:3px 14px 3px 0;color:var(--slate);font-weight:600;white-space:nowrap}
.wx-impact td{padding:3px 14px 3px 0;color:var(--slate);font-variant-numeric:tabular-nums}
.wx-impact td.why{color:var(--ink-faint);font-style:italic}
.wx-none{color:var(--ink-faint);margin:6px 0}
.wx-note{font-size:11px;color:var(--ink-faint);margin-top:4px}
.wx-actual{margin-top:8px;padding-top:8px;border-top:1px solid var(--line);color:var(--slate)}
.rp-wx i{font-style:normal;color:#98a4ab}

/* ---- recruiting economy: board, Portal Watch, training, ledger ---- */
.rc-step { margin: 18px 0 26px; }
.rc-step h3 { margin: 0 0 2px; font-size: 1.05rem; }
.rc-step h3 .qhint { font-weight: 400; margin-left: 6px; }
table.rc td { vertical-align: middle; }
.rc-stars { color: #d4a017; letter-spacing: 1px; white-space: nowrap; }
.rc-stars .off { color: #d8d8d8; }
.rc-spec { display: inline-block; background: #fff4d6; border: 1px solid #e9c86a; color: #6a4a00; border-radius: 3px; padding: 0 5px; font-size: .8rem; font-weight: 600; white-space: nowrap; }
td.attrs .attr.hi { background: #fff4d6; border-radius: 3px; padding: 0 3px; }
.rc-relist { font-size: .72rem; color: #8a5a00; background: #fff1cc; border-radius: 3px; padding: 0 4px; }
.rc-crests { white-space: nowrap; }
.rc-crest { display: inline-block; margin-right: 2px; opacity: .55; }
.rc-crest.visited { opacity: 1; }
.rc-crest.me { outline: 2px solid #1d5fa8; outline-offset: 1px; border-radius: 3px; }
.rc-mark { vertical-align: middle; border-radius: 3px; }
.rc-act { white-space: nowrap; }
.rc-pick { cursor: pointer; }
.rc-pick.late { color: #8a2a00; }
.rc-done { color: #1b6b2a; font-weight: 600; font-size: .85rem; }
.rc-bid input.bid { width: 80px; }
.rc-cond { display: block; margin-top: 3px; font-size: .78rem; max-width: 220px; }
.rc-status { display: inline-block; border-radius: 10px; padding: 1px 8px; font-size: .78rem; font-weight: 600; white-space: nowrap; }
.rc-status.s5 { background: #d9f2dc; color: #1b6b2a; }   /* Locked In */
.rc-status.s4 { background: #e6f4e8; color: #2d7a3a; }   /* Happy */
.rc-status.s3 { background: #f3f3d6; color: #6a6000; }   /* Restless */
.rc-status.s2 { background: #fff1cc; color: #8a5a00; }   /* Portal Curious */
.rc-status.s1 { background: #ffe0cc; color: #8a2a00; }   /* Testing the Waters */
.rc-status.s0 { background: #f5d5d5; color: #8a0000; }   /* Gone */
.rc-meter { display: inline-block; width: 120px; height: 9px; background: #e8e8e8; border-radius: 5px; vertical-align: middle; overflow: hidden; }
.rc-meter i { display: block; height: 100%; background: linear-gradient(90deg, #c0392b, #e9c86a 50%, #2d7a3a); }
.rc-frozen { background: #eef3fa; border: 1px solid #c8d6ea; border-radius: 4px; padding: 8px 12px; margin: 10px 0; }
.rc-offer { background: #fff8e6; border: 1px solid #e9c86a; border-radius: 4px; padding: 10px 14px; margin: 10px 0; }
.rc-offer .g { font-size: 1.3rem; font-weight: 700; }
.rc-band { font-size: .85rem; color: #555; }
.ledger td.neg { color: #8a0000; }
.ledger td.pos { color: #1b6b2a; }

/* Shared coach-page furniture the clubhouse chrome never got from football.css. */
.budgetbar { display: flex; gap: 22px; align-items: flex-end; flex-wrap: wrap; background: var(--slate, #171e24);
    border-radius: 3px; padding: 12px 16px; margin: 0 0 14px; }
.budgetcell { display: flex; flex-direction: column; }
.budgetlabel { font-size: 10px; letter-spacing: .09em; text-transform: uppercase; color: #aab3bb; font-weight: 600; }
.budgetnum { font: 22px/1.1 "SF Mono", Menlo, Consolas, monospace; color: #fff; }
.budgetnum.overbudget { color: #ff8a96; }
.needs { display: block; max-width: 520px; }
.needs .budgetlabel { display: block; margin-bottom: 3px; }
.needs .tlink { color: #cfe3ff; font-size: 12px; }
.needpill { display: inline-block; margin: 2px 6px 0 0; padding: 2px 8px; border-radius: 10px; background: #202b34;
    border: 1px solid #33414d; font-size: 12px; color: #d3d9de; }
.needpill b { color: #ff6b7a; }
.qhint { color: var(--ink-faint, #777); font-size: 12px; }
.prof { color: var(--ink-faint, #777); font-size: 11px; margin-left: 4px; }
td.attrs .attr { display: inline-block; margin-right: 7px; white-space: nowrap; font-variant-numeric: tabular-nums; }
td.attrs .attr i { font-style: normal; color: var(--ink-faint, #777); font-size: 10px; margin-right: 2px; }
.filters { display: flex; gap: 18px; align-items: center; margin: 6px 0 10px; }
.filters select { min-width: 90px; }
.submitbar { display: flex; gap: 14px; align-items: center; margin: 6px 0 18px; }
.submitbar button { padding: 7px 18px; font-weight: 600; }
#rcerrors { color: #a40000; font-weight: 600; }
.notice { background: #e8f3ea; border: 1px solid #b9dcc2; color: #1b6b2a; padding: 8px 12px; border-radius: 3px; }
.nodata { color: var(--ink-faint, #777); font-style: italic; }
.sectionnote.small { font-size: 13px; color: #444; }
tr.bidding td { background: #f5f9ff; }

/* ---- postseason bracket, light theme (ported from football.css) ---- */
.bracketflow { display: flex; gap: 16px; align-items: flex-start; overflow-x: auto; padding-bottom: 6px; }
.bcol { flex: 1; min-width: 190px; }
.bcol h4, .bround h4 { font-size: 10.5px; letter-spacing: .10em; text-transform: uppercase; color: var(--blue, #1d5fa8); margin: 0 0 8px; font-weight: 700; }
.bround { display: flex; flex-wrap: wrap; gap: 10px; margin: 0 0 8px; }
.bround .bgame { width: 232px; }
.bround.bowls .bgame { width: 210px; }
.bgame { background: #fff; border: 1px solid var(--line, #d8dee4); border-radius: 3px; padding: 8px 10px; margin: 0 0 10px; }
.bowlname { font-size: 10px; letter-spacing: .07em; text-transform: uppercase; color: #777; margin-bottom: 5px; border-bottom: 1px solid #eee; padding-bottom: 4px; }
.bside { display: flex; align-items: baseline; gap: 6px; padding: 2px 0; color: #777; }
.bside.won { color: #111; font-weight: 600; }
.btm { flex: 1; font-size: 13px; }
.bsc { font: 13px/1.2 "SF Mono", Menlo, Consolas, monospace; min-width: 22px; text-align: right; }
.seed { display: inline-block; min-width: 17px; font-size: 10px; color: var(--blue, #1d5fa8); font-weight: 700; font-variant-numeric: tabular-nums; }
.blinks { display: flex; gap: 10px; margin-top: 5px; padding-top: 4px; border-top: 1px solid #eee; font-size: 10.5px; }
.blinks a { color: #777; text-decoration: none; }
.blinks a:hover { color: var(--blue, #1d5fa8); }
.cl { clear: both; }
/* scouting: the coach */
.coachbox{border:1px solid var(--line);border-left:4px solid var(--gold);border-radius:5px;background:#fbfaf5;padding:8px 14px;margin:8px 0 14px;font-size:12.5px}
.coachbox .ch b{font-family:var(--slab);font-size:13px;text-transform:uppercase;letter-spacing:.05em;color:var(--slate);margin-right:8px}
.coachbox .ch span{color:var(--ink-soft)}
.coachbox .cr{display:flex;gap:12px;padding:3px 0;border-top:1px solid #efece2}
.coachbox .cr:first-of-type{border-top:0;margin-top:4px}
.coachbox .k{width:110px;color:var(--ink-faint);font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding-top:2px}
.coachbox .v{color:var(--slate);font-weight:600}
.coachbox .v small{font-weight:400;color:var(--ink-faint)}

/* ---- the drawn bracket (TMVL shape: two regions, the title in the middle) ---- */
.bracket-wrap { overflow-x: auto; padding-bottom: 8px; margin: 0 -14px; }
.bracket { display: grid; grid-template-columns: 129px 15px 129px 15px 129px 15px 148px 15px 129px 15px 129px 15px 129px;
    grid-template-rows: 22px repeat(16, 25px); column-gap: 0; row-gap: 0; width: 1012px; position: relative; }
.bhead { grid-row: 1; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: #333; align-self: end; }
.bpod { align-self: center; background: #fff; border: 1px solid #d7dce2; border-radius: 3px; font-size: 11.5px; min-width: 0; box-sizing: border-box; }
.bp-head { display: flex; justify-content: space-between; gap: 6px; padding: 2px 6px 1px; border-bottom: 1px solid #eceff2; font-size: 9.5px; letter-spacing: .08em; text-transform: uppercase; color: #8a949c; }
.bp-head .bp-state { white-space: nowrap; }
.bp-team { display: flex; align-items: center; gap: 5px; padding: 2px 6px; color: #555; }
.bp-team + .bp-team { border-top: 1px solid #f2f4f6; }
.bp-team.won { color: #111; font-weight: 700; }
.bp-team.lost { color: #9aa3ab; }
.bp-team img, .bp-team .chip-helm { flex: 0 0 18px; width: 18px; height: 18px; border-radius: 3px; display: inline-block; }
.bp-team .chip-helm.empty { background: #eee; box-shadow: none; }
.bp-team .seed { flex: 0 0 13px; font-size: 9.5px; color: var(--blue, #1d5fa8); font-weight: 700; font-variant-numeric: tabular-nums; }
.bp-team .name { flex: 1; line-height: 1.1; min-width: 0; overflow-wrap: anywhere; hyphens: auto; }
.bp-team .score { flex: 0 0 18px; text-align: right; font: 11.5px/1 "SF Mono", Menlo, Consolas, monospace; }
.bp-links { padding: 2px 8px 4px; border-top: 1px solid #f2f4f6; font-size: 10px; }
.bp-links a { color: #8a949c; margin-right: 8px; text-decoration: none; }
.bp-links a:hover { color: var(--blue, #1d5fa8); }
.bconn { border: 2px solid #d3d8de; border-width: 2px 2px 2px 0; }
.bconn.r { border-width: 2px 0 2px 2px; }
.bstub { border-top: 2px solid #d3d8de; align-self: center; }
.bcenter { display: flex; flex-direction: column; align-items: center; gap: 10px; padding: 0 4px; }
.btitle { background: #111; color: #fff; font-family: var(--slab, serif); font-weight: 700; font-size: 14px; letter-spacing: .02em; padding: 6px 14px; border-radius: 10px; text-align: center; white-space: nowrap; }
.bchamp { border: 2px solid #d3d8de; border-radius: 10px; padding: 6px 12px; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 3px; font-size: 12px; }
.bchamp span { font-weight: 700; font-size: 13px; }
.bchamp em { font-style: normal; color: #555; font-size: 11px; }
.bfinal-label { margin-top: auto; font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: #333; text-align: center; }
.bcenter .bpod.final { width: 100%; }
.bowlgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 10px; }
.bowlgrid .bpod { align-self: stretch; }

.bowlweek { font-size: 11px; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: #333; margin: 16px 0 8px; }
.bowlweek span { font-weight: 400; letter-spacing: 0; text-transform: none; color: #777; margin-left: 8px; }
/* commissioner: league desk */
.desk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin:8px 0 14px}
.desk-card{border:1px solid var(--line);border-radius:5px;background:#fff;padding:10px 14px 8px}
.desk-card .dk{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);margin-bottom:4px}
.desk-card .dv{font-family:var(--slab);font-size:17px;color:var(--slate);margin-bottom:3px}
.desk-card .ds{font-size:12.5px;color:var(--ink-soft);margin:2px 0}
.desk-card .warn{color:#b23a2a}
.desk-card .dform{display:flex;gap:8px;align-items:end;margin:6px 0}
.desk-card .dform label{display:flex;flex-direction:column;gap:3px;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint)}
.desk-card .dform input{font:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--line);border-radius:3px}
.desk-card .dbtns{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:8px 0}
.desk-card button{font:inherit;font-size:13px;padding:6px 12px;border:1px solid var(--slate);background:#fff;color:var(--slate);border-radius:3px;cursor:pointer}
.desk-card button.primary{background:var(--slate);color:#fff}
.desk-card button[disabled]{opacity:.45;cursor:default}
.jst{font-size:11px;font-weight:700;letter-spacing:.04em;padding:1px 7px;border-radius:9px;background:#eee;color:#555}
.jst.queued{background:#fff3cd;color:#7a5a00}.jst.running{background:#dbe9ff;color:#1e4e9a}.jst.done{background:#dff2e1;color:#1f6b34}.jst.failed{background:#f8d7d3;color:#8a1d12}
.jobout summary{cursor:pointer;font-size:12.5px;color:var(--slate);font-weight:600;margin:4px 0}
.jobout pre{background:#1f2a33;color:#e6edf3;font-size:12px;line-height:1.4;padding:12px 14px;border-radius:5px;overflow-x:auto;max-height:420px;margin:6px 0 12px}
/* commissioner: programs & coaches; join page */
table.progs td.mono{font-family:ui-monospace,Menlo,monospace;font-size:11.5px}
table.progs tr.open td{color:var(--ink-faint)}
table.progs .ai{font-style:italic}
table.progs input.link{width:100%;max-width:360px;font:inherit;font-size:11px;padding:2px 5px;border:1px solid var(--line);border-radius:3px;background:#fbfaf5;color:var(--slate)}
table.progs td.acts form{display:flex;gap:5px;white-space:nowrap}
table.progs td.acts button{font:inherit;font-size:11.5px;padding:2px 8px;border:1px solid var(--slate);background:#fff;color:var(--slate);border-radius:3px;cursor:pointer}
.claim-hero{display:flex;align-items:center;gap:18px;margin:6px 0 18px;padding:16px 20px;border-radius:6px;background:linear-gradient(100deg,var(--c1),var(--c2));color:#fff}
.claim-hero img{width:84px;height:84px;object-fit:contain;filter:drop-shadow(0 2px 4px rgba(0,0,0,.4))}
.claim-hero .ck{font-size:11px;text-transform:uppercase;letter-spacing:.08em;opacity:.85}
.claim-hero .cv{font-family:var(--slab);font-size:30px;line-height:1.1;text-shadow:0 1px 2px rgba(0,0,0,.35)}
form.signin label small{font-weight:400;color:var(--ink-faint);margin-left:4px}
/* A field the claimant reads rather than fills in: the name the commissioner seated. The
   label needs display:block for it - the others only stack because the input inside them
   is width:100%, and this one has no input. */
form.signin label{display:block}
form.signin label span.fixed{display:block;margin:2px 0 10px;padding:7px 9px;border:1px solid var(--line);border-radius:3px;background:#f4f2ea;color:var(--ink);font-weight:600}
/* the digest */
.dg-weeks{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 14px}
.dg-weeks a{font-size:11.5px;padding:2px 9px;border:1px solid var(--line);border-radius:12px;color:var(--slate);text-decoration:none;background:#fff}
.dg-weeks a.on{background:var(--slate);color:#fff;border-color:var(--slate)}
.dg{columns:2 340px;column-gap:22px}
.dg-sec{break-inside:avoid;margin:0 0 20px;border:1px solid var(--line);border-radius:5px;background:#fff;padding:10px 14px 4px}
.dg-sec h3{margin:0 0 6px;font-family:var(--slab);font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);border-bottom:1px solid var(--line);padding-bottom:5px}
.dg-sec.upset h3{color:#b23a2a}
.dg-item{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-top:1px solid #f0ede4}
.dg-item:first-of-type{border-top:0}
.dg-item .rc-mark{flex:none;margin-top:2px}
.dg-item .hl{font-family:var(--slab);font-size:16px;line-height:1.2;color:var(--slate)}
.dg-sec.upset .dg-item .hl{font-size:19px}
.dg-item .bd{font-size:12.5px;color:var(--ink-soft);margin-top:2px}
.dg-item .lk{color:var(--blue);font-size:11px}
.dg-tease .dgt{padding:5px 0;border-top:1px solid var(--line);font-size:12px;line-height:1.35}
.dg-tease .dgt:first-child{border-top:0}
.dg-tease .dgt b{font-family:var(--slab);font-weight:500;color:var(--slate);font-size:13px;display:block}
.dg-tease .dgt span{color:var(--ink-soft)}
.bseasons { margin-left: 14px; font-size: 13px; font-weight: 400; }
.bseasons a, .bseasons b { margin-right: 8px; }
.bseasons b { color: var(--slate, #171e24); }
/* rivalries */
.rivalbox{border:1px solid var(--line);border-left:4px solid #b23a2a;border-radius:5px;background:#fff;padding:10px 14px;margin:4px 0 16px}
.rivalbox .rb-name{font-family:var(--slab);font-size:15px;color:var(--slate);margin-bottom:6px}
.rivalbox .rb-main{display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.rivalbox .rb-rival{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--slate);font-family:var(--slab);font-size:16px}
.rivalbox small{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);font-family:var(--sans,inherit)}
.rivalbox .rb-series b{font-family:var(--slab);font-size:26px;line-height:1;color:var(--slate);display:block}
.rivalbox .rb-next{font-size:13px;color:var(--slate)}
.rivalbox .rb-all{margin-left:auto;font-size:12px;color:var(--blue)}
.rvtag{font-size:9.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#b23a2a;border:1px solid #e0b4ad;border-radius:3px;padding:0 4px;vertical-align:1px}
table.rivalries td.rvn{font-family:var(--slab);font-size:14px;color:var(--slate)}
table.rivalries td a{color:inherit;text-decoration:none}
/* awards & records */
.aw-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px;margin:8px 0 18px}
.aw-card{border:1px solid var(--line);border-top:4px solid var(--gold);border-radius:5px;background:#fff;padding:10px 14px}
.aw-title{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-faint);margin-bottom:6px}
.aw-team{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:4px 18px;margin:0 0 18px}
.aw-line{display:flex;gap:8px;align-items:flex-start;padding:5px 0;font-size:13px;color:var(--slate)}
.aw-line .rc-mark{flex:none;margin-top:1px}
.aw-line a{color:inherit;text-decoration:none}
.aw-line .pos{font-size:10px;font-weight:700;letter-spacing:.05em;color:var(--ink-faint);border:1px solid var(--line);border-radius:3px;padding:0 3px;vertical-align:1px}
.aw-detail{font-size:11.5px;color:var(--ink-faint)}
.aw-card .aw-line{font-family:var(--slab);font-size:16px}
.aw-card .aw-line .aw-detail{font-family:var(--sans,inherit);font-size:12px}
table.trophies td.aw{font-family:var(--slab);color:var(--slate)}
table.trophies td.aw small{color:var(--ink-faint);font-family:var(--sans,inherit)}
.rec{columns:2 420px;column-gap:24px}
.rec-grp{break-inside:avoid;margin:0 0 18px}
.rec-grp h3{font-family:var(--slab);font-size:15px;color:#fff;background:var(--slate);margin:0 0 6px;padding:4px 10px;border-radius:3px;text-transform:uppercase;letter-spacing:.06em}
.rec-cat{margin:0 0 10px;break-inside:avoid}
.rec-lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin-bottom:2px}
.rec-row{display:flex;align-items:center;gap:6px;font-size:12px;padding:2px 0;border-top:1px solid #f0ede4}
.rec-row.top{font-size:13px;font-weight:600;color:var(--slate)}
.rec-row .v{width:54px;text-align:right;font-variant-numeric:tabular-nums;font-family:var(--slab);font-size:14px;color:var(--slate)}
.rec-row .who small{color:var(--ink-faint);font-weight:400;margin-left:3px}
.rec-row .when{margin-left:auto;color:var(--ink-faint);font-size:11px;white-space:nowrap}
/* injuries */
.injtag{font-size:9.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#fff;background:#b23a2a;border-radius:3px;padding:1px 5px;margin-left:4px;vertical-align:1px;white-space:nowrap}
.injpanel{border:1px solid #e0b4ad;border-left:4px solid #b23a2a;border-radius:5px;background:#fff7f5;padding:8px 14px;margin:0 0 14px;font-size:12.5px}
.injpanel b{font-family:var(--slab);text-transform:uppercase;letter-spacing:.05em;font-size:12px;color:#b23a2a;margin-right:10px}
.injpanel .inj{display:inline-block;margin:2px 14px 2px 0;color:var(--slate)}
/* replay: why this play (the receipt) */
.rp-why{margin-top:10px;border:1px solid var(--line);border-radius:5px;background:#fbfaf5;font-size:12px}
.rp-why summary{cursor:pointer;padding:6px 10px;font-family:var(--slab);font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--slate)}
.rp-why .rpw-sum{font-family:var(--body);text-transform:none;letter-spacing:0;color:var(--ink-faint);margin-left:8px;font-size:11.5px}
.rpw-body{padding:2px 10px 8px}
.rpw-grp{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-faint);margin:8px 0 3px}
.rpw-grp small{text-transform:none;letter-spacing:0}
.rpw-row{display:grid;grid-template-columns:minmax(150px,1fr) 70px 2fr;gap:8px;padding:2px 0;border-top:1px solid #efece2;align-items:baseline}
.rpw-row.rpw-prose{display:block;font-size:12.5px;line-height:1.5;color:var(--ink-soft);padding:4px 0}
.rpw-row .l{color:var(--slate)}.rpw-row .v{font-variant-numeric:tabular-nums;text-align:right;color:var(--slate)}
.rpw-row .n{color:var(--ink-faint);font-size:11px}
.rpw-dice{margin-top:6px;padding-top:4px;border-top:2px solid var(--line)}
.rp-card.halftime .rp-why{display:none}
/* the line */
.matchup .line{margin-left:12px;font-size:12px;color:var(--ink-soft)}
.matchup .line b{color:var(--slate)}
.gamecard .line{font-size:11px;color:var(--ink-faint)}
.gamecard .line.upset{color:#b23a2a;font-weight:600}
/* scores: game cards */
.sc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px;margin:10px 0 18px}
.sc-card{border:1px solid var(--line);border-radius:6px;background:#fff;overflow:hidden}
.sc-card.ranked{border-color:#c9b98a}
/* The mark fills its side of the row rather than floating in the middle of it. Allan,
   2026-09-10: "Keep the size of the sections but make the logos take up the full space."
   The row keeps the height it had - a fixed min-height so every card matches whether or not
   the program has a coach's name under it - and the padding comes off the logo's edge so
   the art runs corner to corner. */
.sc-row{display:flex;align-items:center;gap:10px;padding:0 12px 0 0;min-height:46px;
  border-bottom:1px solid #f0ede2;color:var(--ink-soft)}
.sc-row.win{color:var(--slate);font-weight:700;background:#fbfaf5}
.sc-row .rc-mark{flex:none;width:46px;height:46px;border-radius:0;object-fit:cover;
  align-self:stretch}
/* The poll position at kickoff. It was --gold, which is a header colour on a dark bar and
   nearly invisible as small text on white - Allan, 2026-09-10: "hard to see". Same idea in
   a tone that survives the white ground. */
.sc-rk{width:18px;font-family:var(--slab);font-size:11.5px;font-weight:700;color:#8a6410;
  text-align:right;font-variant-numeric:tabular-nums}
.sc-tm{font-family:var(--slab);font-size:15px;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sc-sc{font-family:var(--slab);font-size:20px;font-variant-numeric:tabular-nums;min-width:34px;text-align:right}
.sc-foot{display:flex;align-items:center;gap:8px;padding:5px 12px;background:#f4f6f7;font-size:11px;color:var(--ink-faint);min-height:26px}
.sc-line.upset{color:#b23a2a;font-weight:700}
.sc-links{margin-left:auto;display:flex;gap:10px}
.sc-links a{color:var(--blue);text-decoration:none;font-weight:600}

/* ---- collision fixes -------------------------------------------------------
   .rk is three different things: a flex row (the homepage Top 25, a <div>), a
   rank badge (<span>) and the poll's rank column (<td>). The bare .rk rule in
   colossal.css sets display:flex, which pushed every badge onto its own line.
   Element-qualified selectors take it back without renaming anything. */
span.rk { display: inline; align-items: initial; gap: 0; padding: 0; border-bottom: 0; }
/* A td must stay a table cell. This used to share the span's display:inline, which undid the
   flex fine but also stopped the cell being a cell: it shrank to its own 28px box pinned to
   the top of the row, with an underline of its own. Invisible while poll rows were short;
   the 30px logos made them 37px and it showed (2026-09-10). table-cell + middle puts the
   number level with the name, and the row's own padding and rule now apply to it too. */
td.rk { display: table-cell; vertical-align: middle; align-items: initial; gap: 0; }
span.rk { font-family: var(--slab); font-weight: 700; font-size: 11px; color: var(--gold);
    background: none; margin-right: 3px; }
td.rk { font-family: var(--slab); font-weight: 700; color: var(--ink-soft);
    text-align: center; font-variant-numeric: tabular-nums; }
/* The poll's team cell: the name and its conference tag stay on one line. Nowrap has
   to be on the cell - putting it on the children still lets the cell break between them. */
table.poll td.tm { white-space: nowrap; }

/* ---- the team page ---------------------------------------------------------
   BOLD TEAM COLOUR. The band, the crest disc and the stat tiles below are the
   only place the program's own colours run the page; everything under the
   subnav stays neutral. To dial this back, replace the .teamhead background
   with a flat var(--slate) and drop the --ink var - nothing else changes. */
.teamhead{display:flex;align-items:center;gap:20px;flex-wrap:wrap;
    background:linear-gradient(100deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.30) 100%),var(--pri,#2b3a42);
    color:var(--ink,#fff);border-radius:7px;padding:18px 22px;margin:2px 0 0;
    box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
/* The one place a painted mascot gets room to be one. Everywhere else on the site a logo
   is 16-34px, where detail turns to mud and the flat crest wins - see CH_LOGO_MIN_PX. */
.teamhead .th-mark{flex:none;width:132px;height:132px;border-radius:50%;display:grid;place-items:center;
    background:rgba(255,255,255,.92);box-shadow:0 2px 6px rgba(0,0,0,.28),0 0 0 1px rgba(0,0,0,.12)}
.teamhead .th-mark img,.teamhead .th-mark svg{max-width:112px;max-height:112px;height:auto}
/* The alternate marks, if a program has any. Small and quiet beside the primary - they are
   the candidates the coach did not pick, kept because they were too good to discard. */
.teamhead .th-alts{display:flex;flex-direction:column;gap:3px;flex:none}
/* 44px - Allan, 2026-09-10, twice: 34 was too small, 40 "a little larger". Three at 44 with 3px
   gaps is 138, six past the 132px crest, so the band grows by those six and no more. */
.teamhead .th-alts img{width:44px;height:44px;object-fit:contain;background:rgba(255,255,255,.92);
    border-radius:50%;padding:3px;box-shadow:0 1px 3px rgba(0,0,0,.25);
    position:relative;cursor:zoom-in;transition:transform .16s ease,box-shadow .16s ease}
/* Point at an alternate and it grows - just the alternates, not the crest. A transform, so it
   floats over the crest and name without shoving anything; the logos are 256px masters, so
   the ~84px it reaches is still sharp. No hover on a phone: there they simply sit at 44. */
.teamhead .th-alts img:hover{transform:scale(1.9);z-index:5;box-shadow:0 6px 18px rgba(0,0,0,.45)}
@media (prefers-reduced-motion:reduce){.teamhead .th-alts img{transition:none}}
@media(max-width:700px){.teamhead .th-alts{flex-direction:row}}
.teamhead .th-name{min-width:0}
.teamhead .th-name h2{margin:0;font-family:var(--slab);font-size:31px;line-height:1.05;
    color:inherit;text-shadow:0 1px 2px rgba(0,0,0,.30);border:0;padding:0}
.teamhead .th-conf{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.09em;
    opacity:.85;margin-top:4px}
/* The name and its tiles share one column - Allan, 2026-09-10. Side by side they needed
   ~1,018px against 982 and the tiles wrapped onto a row of their own, leaving an empty corner
   beside the name and another under it; the band ran 241px tall. */
/* flex-basis 0, not auto: with auto a long name ("Portsmouth Prowling Privateers") claimed its
   one-line width, the band wrapped, and the week panel sat alone on a row of its own. At 0 the
   name wraps to two lines inside its column and the panel stays beside it. */
.teamhead .th-main{flex:1 1 0;min-width:0;display:flex;flex-direction:column}
.teamhead .th-stats{margin-top:12px;display:flex;gap:8px;flex-wrap:wrap}
.teamhead .th-stat{background:var(--tile,rgba(255,255,255,.16));border:1px solid var(--tileline,rgba(255,255,255,.20));
    border-radius:5px;padding:6px 12px;min-width:74px;text-align:center;backdrop-filter:blur(2px)}
.teamhead .th-lab{display:block;font-size:9.5px;text-transform:uppercase;letter-spacing:.08em;opacity:.8}
.teamhead .th-val{display:block;font-family:var(--slab);font-size:21px;line-height:1.15;margin-top:1px}
.teamhead .th-val.small{font-size:13px;font-family:var(--body);padding:4px 0 3px}
/* "This week": the next opponent and the last five, in the corner the tiles used to leave
   empty. Tile-coloured so it reads on any program's band, light or dark. */
.teamhead .th-week{flex:0 0 232px;align-self:stretch;display:flex;flex-direction:column;justify-content:center;
    gap:12px;background:var(--tile,rgba(255,255,255,.16));border:1px solid var(--tileline,rgba(255,255,255,.20));
    border-radius:6px;padding:11px 13px}
.teamhead .tw-row{display:flex;flex-direction:column;gap:5px}
.teamhead .tw-next{display:flex;align-items:center;gap:9px;color:inherit;text-decoration:none}
.teamhead .tw-next:hover b{text-decoration:underline}
.teamhead .tw-next .rc-mark{width:34px;height:34px;flex:none;object-fit:contain;background:rgba(255,255,255,.92);
    border-radius:50%;padding:2px;box-shadow:0 1px 3px rgba(0,0,0,.25)}
.teamhead .tw-next b{display:block;font-family:var(--slab);font-size:15px;line-height:1.2}
.teamhead .tw-next small{display:block;font-size:11px;opacity:.85;margin-top:1px}
.teamhead .tw-rk{font-size:11px;opacity:.85;margin-left:5px;font-weight:600}
.teamhead .tw-line{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.teamhead .tw-form{display:flex;gap:4px}
.teamhead .tw-chip{width:24px;height:24px;border-radius:4px;display:grid;place-items:center;
    font-family:var(--slab);font-weight:700;font-size:12px;color:#fff;text-decoration:none;
    box-shadow:0 1px 2px rgba(0,0,0,.25)}
.teamhead .tw-chip.w{background:#2f8f4e}.teamhead .tw-chip.l{background:#c0483a}.teamhead .tw-chip.t{background:#6b7680}
.teamhead .tw-chip:hover{filter:brightness(1.12)}
.teamhead .tw-streak{font-size:11px;opacity:.9}
.teamhead .tw-none{font-size:12px;opacity:.8}
@media(max-width:700px){.teamhead .th-stats{margin-left:0;width:100%}.teamhead .th-name h2{font-size:24px}
    .teamhead .th-mark{width:84px;height:84px}
    .teamhead .th-mark img,.teamhead .th-mark svg{max-width:68px;max-height:68px}}
/* Below desktop there is no room beside the name, so the panel takes a full-width row of its
   own and lays next game and last five side by side - a lone 232px box there was the same
   empty corner over again. On a phone the two wrap onto separate lines by themselves. */
@media(max-width:980px){.teamhead .th-week{flex:1 1 100%;flex-direction:row;flex-wrap:wrap;
    justify-content:flex-start;column-gap:34px;row-gap:12px}}
/* On a phone the name and tiles get their own full-width row under the crest. With flex-basis 0
   they otherwise stayed beside the crest and the alternate marks and were squeezed to 20px. */
@media(max-width:700px){.teamhead .th-main{flex:1 1 100%}}

.subnav{display:flex;gap:2px;flex-wrap:wrap;margin:0 0 18px;border-bottom:2px solid var(--line);
    padding:10px 2px 0}
.subnav a{font-family:var(--slab);font-size:13px;color:var(--ink-soft);text-decoration:none;
    padding:6px 14px;border-radius:4px 4px 0 0;border-bottom:3px solid transparent;margin-bottom:-2px}
.subnav a:hover{background:#f1f4f5;color:var(--slate)}
.subnav a.on{color:var(--slate);font-weight:600;border-bottom-color:var(--pri,var(--slate));background:#fff}

/* ---- the box score scoreboard --------------------------------------------- */
.bs-board{border:1px solid var(--line);border-radius:7px;background:#fff;overflow:hidden;margin:2px 0 16px}
.bs-top{display:flex;align-items:center;gap:12px;background:var(--slate);color:#fff;padding:5px 14px;font-size:11px}
.bs-final{font-family:var(--slab);font-weight:600;text-transform:uppercase;letter-spacing:.07em;font-size:12px}
.bs-week{color:#b9c2c7}
.bs-wx{margin-left:auto;color:#cfd6da}
.bs-teams{display:flex;align-items:center;gap:14px;padding:14px 18px}
.bs-side{display:flex;align-items:center;gap:12px;flex:1;min-width:0}
.bs-side.home{justify-content:flex-end;text-align:right}
.bs-crest{flex:none;display:block}
.bs-nm{font-family:var(--slab);font-size:19px;line-height:1.15;color:var(--ink-faint)}
.bs-nm a{color:inherit;text-decoration:none}
.bs-side.won .bs-nm{color:var(--slate)}
.bs-side.won .bs-nm a{font-weight:700}
.bs-rk{font-family:var(--slab);font-size:12px;color:var(--gold);font-weight:700;vertical-align:2px}
.bs-meta{font-size:11px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em;margin-top:2px}
.bs-score{flex:none;display:flex;align-items:baseline;gap:8px;font-family:var(--slab);
    font-size:40px;line-height:1;font-variant-numeric:tabular-nums;color:var(--ink-faint)}
.bs-score .w{color:var(--slate)}
.bs-score i{font-size:20px;color:var(--line);font-style:normal}
.bs-line{border-collapse:collapse;margin:0 18px 12px;font-size:12px}
.bs-line th,.bs-line td{padding:2px 11px;text-align:right;font-variant-numeric:tabular-nums;border:0}
.bs-line th{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-faint);
    background:none;font-weight:400;border-bottom:1px solid var(--line)}
.bs-line td.ab,.bs-line th:first-child{text-align:left;font-family:var(--slab);width:62px}
.bs-line tr.won td{color:var(--slate);font-weight:700}
.bs-line td{color:var(--ink-soft)}
.bs-line .f{font-weight:700;color:var(--slate);border-left:1px solid var(--line)}
.bs-two{border-top:1px solid var(--line);padding:5px 18px;font-size:11.5px;color:var(--ink-faint)}
.bs-two b{color:var(--slate);font-family:var(--slab);margin-left:4px}
.bs-two i{margin:0 6px;font-style:normal;color:var(--line)}
.bs-grade{border-top:1px solid var(--line);background:#f4f6f7;padding:5px 18px;font-size:11.5px;color:var(--ink-faint)}
.bs-grade b{color:var(--slate)}
.bs-grade .upset{color:#b23a2a;font-weight:700}
@media(max-width:620px){.bs-teams{flex-wrap:wrap}.bs-score{order:-1;width:100%;justify-content:center}}
/* the box score's two team columns, each topped in its own colour */
.boxblock{border-top:4px solid var(--pri,var(--slate))}
.boxblock h3{display:flex;align-items:center;justify-content:flex-start;gap:9px}
.boxblock h3 .rc-mark{flex:none;filter:drop-shadow(0 1px 1px rgba(0,0,0,.4))}

/* ---- play-by-play: drives as an accordion ---------------------------------- */
.gv-drivebox{border:1px solid var(--line);border-left:4px solid var(--pri,var(--slate));
    border-radius:5px;background:#fff;margin:0 0 10px;overflow:hidden}
.gv-drivehd{display:flex;align-items:center;gap:10px;padding:7px 12px;cursor:pointer;
    background:#f4f6f7;list-style:none;font-size:12px}
.gv-drivehd::-webkit-details-marker{display:none}
.gv-drivehd::before{content:"\25B8";color:var(--ink-faint);font-size:11px;transition:transform .15s}
.gv-drivebox[open] .gv-drivehd::before{transform:rotate(90deg)}
.gv-drivehd .rc-mark{flex:none}
.gv-drivehd .dt{font-family:var(--slab);font-size:14px;color:var(--slate)}
.gv-drivehd .dsum{color:var(--ink-faint);font-size:11.5px}
.gv-drivehd .dres{margin-left:auto;font-family:var(--slab);font-size:12px;color:var(--ink-soft);
    text-transform:uppercase;letter-spacing:.05em}
.gv-drivehd .dres.scored{color:#1f6b34}
.gv-drivehd .dres b{color:#1f6b34}
.gv-drivehd .dn{font-size:10px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.07em;
    min-width:58px;text-align:right}
.gv-drivebox .gv-drive{padding:2px 0 0}
@media(max-width:640px){.gv-drivehd .dsum,.gv-drivehd .dn{display:none}}
/* Team Statistics: the stat name sits between the two teams, so centre it. */
table.teamstats td.statname,table.teamstats th.statname{text-align:center;color:var(--ink-soft)}
table.teamstats td.num,table.teamstats th.num{width:26%}
/* Replay scoreboard weather: what it actually is, then the forecast under it. */
.rp-wx{display:block;margin-top:3px;line-height:1.3}
.rp-wx b{display:block;font-weight:600;font-size:12px;color:#e8eef1;letter-spacing:.01em}
.rp-wx i{display:block;font-style:italic;font-size:10.5px;color:#93a1a9}

/* ---- the coach pages -------------------------------------------------------
   A slim band in the programme's colour so Game Plan, Depth Chart, Scouting and
   Review belong to the same team - and the same site - as everything else. */
.coachbar{display:flex;align-items:center;gap:12px;margin:2px 0 14px;padding:8px 14px;border-radius:6px;
    background:linear-gradient(100deg,rgba(0,0,0,0) 0%,rgba(0,0,0,.28) 100%),var(--pri,#2b3a42);
    color:var(--ink,#fff);box-shadow:inset 0 0 0 1px rgba(255,255,255,.14)}
.coachbar .cb-crest{flex:none;display:block}
.coachbar .cb-id{display:flex;align-items:baseline;gap:8px;min-width:0}
.coachbar .cb-nm{font-family:var(--slab);font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.coachbar .cb-rec{font-size:12px;opacity:.8;font-variant-numeric:tabular-nums}
.coachbar .cb-page{margin-left:auto;font-size:11px;text-transform:uppercase;letter-spacing:.09em;opacity:.88;
    font-family:var(--slab)}
.coachbar .cb-ctx{font-size:11.5px;opacity:.8;padding-left:12px;border-left:1px solid rgba(255,255,255,.25)}
@media(max-width:620px){.coachbar .cb-ctx{display:none}}

/* Offence and defence read as different halves of the plan. */
.planside.off > h2,.planside.off .sechead{border-left:4px solid #2f6f4f}
.planside.def > h2,.planside.def .sechead{border-left:4px solid #8a4b2a}

/* The sticky bar: how the plan stands, and Save, always in reach. */
.plansticky{position:sticky;bottom:0;z-index:30;display:flex;align-items:center;gap:14px;
    background:var(--slate);color:#fff;padding:9px 16px;border-radius:6px 6px 0 0;margin:14px 0 0;
    box-shadow:0 -3px 12px rgba(20,30,40,.28)}
.plansticky .ps-state{font-family:var(--slab);font-size:13px;display:flex;align-items:center;gap:7px}
.plansticky .ps-dot{width:10px;height:10px;border-radius:50%;background:#7f8b92;flex:none}
.plansticky.ok .ps-dot{background:#43b36a}
.plansticky.bad .ps-dot{background:#e0603f}
.plansticky .ps-detail{font-size:11.5px;color:#c6ced3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
.plansticky button{margin-left:auto;font-family:var(--slab);font-weight:600;text-transform:uppercase;
    font-size:12.5px;letter-spacing:.04em;color:#fff;background:var(--blue);border:0;border-radius:4px;
    padding:8px 20px;cursor:pointer;flex:none}
.plansticky button[disabled]{background:#5a6a74;cursor:not-allowed}
@media(max-width:620px){.plansticky .ps-detail{display:none}}

/* Scouting: let the numbers carry the weight, not the labels. */
table.scout td.num{font-variant-numeric:tabular-nums}
table.scout tr:hover td{background:#f1f6f8}
table.scout .tb{width:34%}
.coachbar + .qhint{margin-top:-8px}
/* Depth chart: the rating column is the engine's own composite. */
table.depth th.rtg,table.depth td.rtg{cursor:help}

/* A plan question whose answer is a table (help_chart in the catalog): the link under
   the question, and the chart it opens in place. */
.qchart-link{display:inline-block;margin-top:3px;font-size:11px;font-weight:600;color:var(--blue);
  text-decoration:none;border-bottom:1px dotted var(--blue)}
.qchart-link:hover{color:#17548c}
/* The word for a dial's current notch, under its box. */
.scaleterm{display:block;margin-top:2px;font-family:var(--slab);font-size:10px;
  font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--blue);
  text-align:center;min-height:12px}

/* The chart opens over the page. It cannot live inside the question's column: six
   columns of conditions need about 740px and the column has 470, so anything inline
   gets clipped by it however wide we ask for. Fixed to the viewport, so no ancestor's
   overflow can cut it off. */
.qchart[hidden]{display:none}
.qchart{position:fixed;inset:0;z-index:1200;background:rgba(16,24,32,.55);
  display:flex;align-items:center;justify-content:center;padding:20px}
.qchart-box{background:var(--paper);border:1px solid var(--line);border-radius:5px;
  box-shadow:0 18px 50px rgba(16,24,32,.4);max-width:min(860px,96vw);max-height:88vh;
  overflow:auto;text-align:left}
.qchart-head{display:flex;align-items:center;gap:10px;padding:9px 12px;
  border-bottom:1px solid var(--line);background:#f4f6f7;font-family:var(--slab);
  font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--slate);position:sticky;top:0}
.qchart-x{margin-left:auto;border:0;background:none;color:var(--ink-faint);cursor:pointer;
  font-size:20px;line-height:1;padding:0 4px}
.qchart-x:hover{color:#b23a2a}
.qchart-scroll{overflow-x:auto;padding:10px 12px 0}
.qchart table{border-collapse:collapse;font-size:11.5px;min-width:100%}
.qchart th{background:var(--slate);color:#fff;font-family:var(--slab);font-weight:500;
  text-align:left;padding:5px 9px;font-size:10px;text-transform:uppercase;letter-spacing:.03em;
  white-space:nowrap}
.qchart td{padding:5px 9px;border-bottom:1px solid var(--line);color:var(--ink-soft);
  white-space:nowrap}

/* Snow in the air on a snow game: ambience, never an event. Behind everything that
   matters, and gone entirely for anyone who asked for less motion. */
.rp-flakes{position:absolute;inset:0;pointer-events:none;z-index:1;overflow:hidden}
.rp-flakes i{position:absolute;top:-8px;display:block;border-radius:50%;background:#fdfeff;
  /* the turf under them is nearly white, so a cool halo is what makes a flake a flake */
  box-shadow:0 0 0 .5px rgba(72,104,134,.30), 0 1px 2.5px rgba(72,104,134,.22);
  animation-name:rpFall;animation-timing-function:linear;animation-iteration-count:infinite}
/* top is resolved against the field, transform against the flake itself - so the fall
   has to be top and only the sideways drift can be a transform. */
@keyframes rpFall{
  from{top:-10px;transform:translateX(0)}
  to{top:100%;transform:translateX(var(--drift,0))}
}
@media(prefers-reduced-motion:reduce){.rp-flakes{display:none}}

/* the plan review's conversion receipts */
.scout.review td.convwhy{font-size:11px;color:var(--ink-faint)}
.scout.review td.up{color:#2f8f4e;font-weight:600}
.scout.review td.dn{color:#b23a2a;font-weight:600}

/* ============================================================
   THE COACH'S DESK
   The band under the sub-nav (include_coachdesk.php, every page) and the full
   dashboard (desk.php). The league's orders strip at the top of the chrome is
   dark slate; this one is a pale shelf, so "mine" and "everyone's" never read
   as the same bar. Quiet when the week is done, loud when it is not.
   ============================================================ */
.ch-desk{background:#eef2f5;border-bottom:1px solid var(--line);display:flex;
  align-items:center;flex-wrap:wrap;gap:4px 6px;padding:5px 12px;font-size:11.5px;
  color:var(--ink-soft);box-shadow:inset 0 2px 4px -3px rgba(0,0,0,.35)}
.ch-desk.has-alert{background:#fdf3ef;border-bottom-color:#e6c3b8}
.ch-desk .dk-home{font-family:var(--slab);font-weight:700;font-size:11px;
  text-transform:uppercase;letter-spacing:.06em;color:var(--slate);
  border-right:1px solid var(--line);padding-right:10px;margin-right:4px}
.ch-desk .dk-home:hover{color:var(--blue)}
.ch-desk .dk{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;
  border-radius:11px;white-space:nowrap;line-height:1.5}
.ch-desk .dk i{width:7px;height:7px;border-radius:50%;background:var(--gray);flex:none}
.ch-desk .dk b{font-weight:600;color:var(--ink)}
.ch-desk .dk:hover{background:rgba(0,0,0,.055)}
.ch-desk .dk-ok i{background:#2f8f4e}
.ch-desk .dk-ok b{color:#2a7c46}
.ch-desk .dk-warn i{background:#d69017}
.ch-desk .dk-warn b{color:#8a5a00}
.ch-desk .dk-alert{background:#fbe3dc}
.ch-desk .dk-alert i{background:#c0483a}
.ch-desk .dk-alert b{color:#a3372a;font-weight:700}
.ch-desk .dk-alert:hover{background:#f6d3c8}
.ch-desk .dk-idle i{background:#b9c2c7}
.ch-desk .dk-idle b{color:var(--ink-faint);font-weight:400}
.ch-desk .dk-rt{margin-left:auto;display:flex;align-items:center;gap:10px;white-space:nowrap}
.ch-desk .dk-rp{font-variant-numeric:tabular-nums;font-weight:600;color:var(--slate)}
.ch-desk .dk-rp:hover{color:var(--blue)}
.ch-desk .dk-due{color:var(--ink-faint)}
.ch-desk .dk-due.soon{color:#8a5a00}
.ch-desk .dk-due.urgent{color:#a3372a;font-weight:700}
@media(max-width:700px){.ch-desk .dk-rt{margin-left:0}}

/* ---------------------------------------------------------------- the page */
.dk-allclear{background:#eaf5ed;border:1px solid #bcdcc6;border-left:3px solid #2f8f4e;
  padding:8px 12px;color:#2a6b3f;font-size:13px}
.dk-warning{background:#fdf0ec;border:1px solid #e8c0b4;border-left:3px solid #c0483a;
  padding:10px 13px;margin:0 0 14px;font-size:13px}
.dk-warning b{color:#a3372a}
.dk-warning ul{margin:7px 0 8px 18px;font-size:12.5px}
.dk-warning li{margin:2px 0}
.dk-cta{display:inline-block;background:#c0483a;color:#fff !important;font-weight:600;
  font-size:12px;padding:4px 11px;border-radius:3px}
.dk-cta:hover{background:#a3372a;text-decoration:none !important}

.dk-week{margin:0 0 10px}
.dk-weekbd{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.dk-fixture{display:flex;align-items:center;gap:9px;min-width:0}
.dk-vs{color:var(--ink-faint);font-size:12px;text-transform:uppercase;letter-spacing:.06em}
.dk-opp{display:flex;align-items:center;gap:8px;font-family:var(--slab);font-size:19px;
  color:var(--slate)}
.dk-opp:hover{color:var(--blue);text-decoration:none !important}
.dk-venue{font-size:9.5px;font-weight:700;letter-spacing:.08em;background:var(--slate2);
  color:#fff;padding:2px 5px;border-radius:2px}
.dk-none{color:var(--ink-faint);font-size:13px}
.dk-clock{text-align:right;display:flex;align-items:baseline;gap:8px}
.dk-big{font-family:var(--slab);font-weight:700;font-size:30px;line-height:1;color:var(--slate)}
.dk-big.soon{color:#b8790f}
.dk-big.urgent{color:#c0483a}
.dk-cap{font-size:11px;color:var(--ink-faint);text-align:left;line-height:1.3}

.dk-orders{display:flex;flex-wrap:wrap;gap:1px;background:var(--line);border-top:1px solid var(--line)}
.dk-order{flex:1 1 200px;background:#fff;display:flex;align-items:center;gap:8px;padding:9px 12px}
.dk-order:hover{background:#f1f6f8;text-decoration:none !important}
.dk-olabel{font-family:var(--slab);font-size:14px;color:var(--slate)}
.dk-ovalue{margin-left:auto;font-size:12px;font-weight:600;color:var(--ink-soft)}
.dk-order.dk-ok .dk-ovalue{color:#2a7c46}
.dk-order.dk-warn .dk-ovalue{color:#8a5a00}
.dk-order.dk-alert{background:#fdf3ef}
.dk-order.dk-alert .dk-ovalue{color:#a3372a}
.dk-order.dk-idle .dk-ovalue{color:var(--ink-faint);font-weight:400}
.dk-dot{width:9px;height:9px;border-radius:50%;background:var(--gray);flex:none;display:block}
.dk-dot.dk-ok{background:#2f8f4e}.dk-dot.dk-warn{background:#d69017}
.dk-dot.dk-alert{background:#c0483a}.dk-dot.dk-idle{background:#c8d0d4}

.dk-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(310px,1fr));gap:10px;
  align-items:start;margin:0 0 18px}
.dk-nums{display:flex;gap:18px;flex-wrap:wrap;margin:0 0 10px}
.dk-num{display:flex;flex-direction:column}
.dk-num b{font-family:var(--slab);font-size:23px;line-height:1;color:var(--slate);
  font-variant-numeric:tabular-nums}
.dk-num i{font-style:normal;font-size:10.5px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--ink-faint);margin-top:2px}
table.dk-tbl{margin:0}
table.dk-tbl tr:last-child td{border-bottom:none}
table.dk-tbl tr.dk-bad td{background:#fdf3ef;color:#a3372a;font-weight:600}
.dk-sub{margin-top:8px;font-size:12px;color:var(--ink-soft);border-top:1px solid var(--line);padding-top:7px}
.dk-flag{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:#a3372a}

/* the commit-week ramp: full bar is the slate, the cap is its 4- and 5-stars */
.dk-ramp{display:flex;align-items:flex-end;gap:4px;padding:4px 0 0}
.dk-bar{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;min-width:0}
.dk-bar i{display:block;width:100%;background:#cfdae1;border-radius:2px 2px 0 0;
  position:relative;overflow:hidden}
.dk-bar i em{display:block;width:100%;background:var(--slate2);border-radius:2px 2px 0 0}
.dk-bar u{text-decoration:none;font-size:10px;color:var(--ink-faint);font-variant-numeric:tabular-nums}
.dk-bar.past i{opacity:.45}
.dk-bar.now i{background:#f0dfae}.dk-bar.now i em{background:#b8790f}
.dk-bar.now u{color:#8a5a00;font-weight:700}

.dk-retain{border:1px solid var(--line);border-left:3px solid var(--gray);padding:8px 11px;
  margin:0 0 8px;font-size:12.5px}
.dk-retain.urgent{border-color:#e8c0b4;border-left-color:#c0483a;background:#fdf3ef}
.dk-urg{color:#a3372a;font-weight:700}

/* ---- recruiting tabs + All Recruits ---- */
.rc-tabs { display: flex; gap: 2px; margin: 0 0 14px; border-bottom: 2px solid var(--slate, #171e24); }
.rc-tabs a { padding: 5px 14px; background: #e8ecf0; color: #444; text-decoration: none; font-size: 12.5px;
    font-weight: 600; border-radius: 3px 3px 0 0; }
.rc-tabs a:hover { background: #dbe2e8; text-decoration: none; }
.rc-tabs a.on { background: var(--slate, #171e24); color: #fff; }
.rc-wk { margin: 0 0 18px; }
.rc-wkhead { background: var(--slate, #171e24); color: #fff; font-family: var(--slab, serif); font-weight: 600;
    font-size: 12.5px; text-transform: uppercase; letter-spacing: .04em; padding: 4px 9px;
    display: flex; align-items: baseline; gap: 10px; }
.rc-wkhead .r { margin-left: auto; font-family: inherit; font-weight: 400; text-transform: none;
    letter-spacing: 0; font-size: 11.5px; color: #aab3bb; }
table.rc-all { margin-bottom: 0; }
table.rc-all td.lot, table.rc-all th.lot { width: 30px; text-align: right; color: var(--ink-faint, #777); }
table.rc-all tr.signed td { background: #f6faf6; }
table.rc-all td.num.paid { font-weight: 700; color: #1b6b2a; }

/* ---- the Entry page, TMVL shape ---- */
.rc-stephead { background: #111; color: #fff; font-family: var(--slab, serif); font-weight: 600; font-size: 12.5px;
    text-transform: uppercase; letter-spacing: .05em; padding: 5px 10px; margin: 0 0 6px; }
table.rc-entry td { vertical-align: top; }
table.rc-entry td.lot, table.rc-entry th.lot { width: 26px; text-align: right; color: var(--ink-faint, #777); }
table.rc-entry td.pick, table.rc-entry th.pick { width: 56px; text-align: center; }
table.rc-entry td.mid, table.rc-entry th.mid { text-align: center; }
table.rc-entry td.cond, table.rc-entry th.cond { width: 34px; text-align: center; font-size: 10px;
    color: var(--ink-faint, #777); border-left: 1px solid #eef1f4; }
table.rc-entry tr.dim td { opacity: .55; }
table.rc-entry td.num.late { color: #a33; font-weight: 700; }
table.rc-entry input.bid { width: 78px; }
.rc-line { margin-top: 2px; font-size: 11px; color: var(--ink-faint, #777); line-height: 1.6; }
.rc-line i { font-style: italic; margin-right: 4px; }
.rc-check { color: #1b6b2a; font-weight: 700; }
.rc-ceiling { margin: 8px 0 0; padding: 8px 10px; background: #f4f7f9; border: 1px solid var(--line, #d8dee4); border-radius: 3px; }
.rc-ceiling input { width: 90px; margin-left: 6px; }

.needpill.dark { background: #eef2f5; border-color: #cdd6de; color: #333; }
.needpill.dark b { color: #a33; }
.rc-stephead .r { margin-left: auto; font-weight: 400; text-transform: none; letter-spacing: 0; }
.rc-stephead { display: flex; align-items: baseline; gap: 10px; }

/* hoverable help: a dotted underline is the only cue you need */
.help { border-bottom: 1px dotted #9aa3ab; cursor: help; }
.prof.flavour { opacity: .7; font-style: italic; }

table.rc-entry td.num.min { font-weight: 700; color: #333; }

/* ---- the roster, TMVL style: dots for what he will never use ---- */
table.roster-t th { font-size: 10.5px; letter-spacing: .04em; }
table.roster-t th.core { color: #fff; }
table.roster-t th.dead { color: #6f7a83; font-weight: 400; }
table.roster-t td.attrn, table.roster-t th.core, table.roster-t th.dead,
table.roster-t th:not(:nth-child(-n+3)) { text-align: center; }
table.roster-t td.attrn { width: 34px; font-variant-numeric: tabular-nums; color: #555; }
table.roster-t td.attrn.core { font-weight: 700; color: #111; }
table.roster-t td.attrn.dead { color: #c6ccd2; }
table.roster-t td.jersey { width: 30px; color: var(--ink-faint, #777); }
table.roster-t td.rtg { font-weight: 700; }
table.roster-t td.tags { white-space: nowrap; }
.tag-out { background: #f5d5d5; color: #8a0000; border-radius: 3px; padding: 0 5px; font-size: 10px; font-weight: 700; }
a.rc-status { text-decoration: none; }

/* one table, every position - a hairline where the group changes */
table.roster-all tr.newgroup td { border-top: 2px solid #c8d0d8; }
table.roster-all td.ps { font-weight: 700; color: var(--slate, #171e24); width: 28px; }
table.roster-all th:nth-child(n+5):nth-child(-n+13) { text-align: center; }

/* sortable headings */
th.sortcol { cursor: pointer; user-select: none; position: relative; padding-right: 12px !important; }
th.sortcol:hover { background: #2b3844; }
th.sortcol::after { content: '\2195'; position: absolute; right: 3px; opacity: .25; font-size: 9px; }
th.sortcol.sorted-asc::after { content: '\25B2'; opacity: .95; }
th.sortcol.sorted-desc::after { content: '\25BC'; opacity: .95; }

/* ---- chalk talk: the open-book quiz ---- */
.qz-card { display: flex; gap: 18px; flex-wrap: wrap; align-items: flex-start; }
.qz-card table { flex: 1 1 340px; }
td.qz-code { width: 52px; font-weight: 700; color: var(--slate, #171e24); white-space: nowrap; }
.qz-q { border-left: 3px solid #d7dee5; padding: 8px 0 10px 12px; margin: 0 0 14px; }
.qz-q.done { border-left-color: #3f8b52; background: #f4f9f5; }
.qz-q.missed { border-left-color: #d0a02a; }
.qz-ask { font-weight: 600; margin-bottom: 5px; }
.qz-n { display: inline-block; min-width: 20px; color: var(--ink-faint, #777); font-weight: 400; font-variant-numeric: tabular-nums; }
.qz-paid { margin-left: 8px; background: #3f8b52; color: #fff; border-radius: 3px; padding: 0 6px; font-size: 10.5px; font-weight: 700; letter-spacing: .04em; }
.qz-opt { display: block; margin: 2px 0 2px 20px; cursor: pointer; }
.qz-opt input { margin-right: 6px; }
.qz-answer { margin-left: 20px; font-weight: 600; color: #1b6b2a; }
.qz-why { margin-left: 20px; color: #444; font-size: 13px; }
.qz-miss { margin-left: 20px; margin-top: 4px; color: #8a6400; font-size: 13px; }
.qz-notice { background: #f7f2e2; border: 1px solid #e0d2a4; padding: 8px 12px; border-radius: 3px; }
.qz-notice.good { background: #e8f3ea; border-color: #b9dcc2; color: #1b6b2a; }

/* the potential band: a range, never a number, until his freshman season */
.rc-pot { display: inline-block; background: #eef2f5; border: 1px solid #cdd6de; border-radius: 3px;
    padding: 0 5px; font-size: 11px; font-weight: 600; color: #445; font-variant-numeric: tabular-nums; }
.rc-pot.wide { background: #fff4d6; border-color: #e9c86a; color: #6a4a00; }

/* flight risk on the depth chart: the status, and whether his slot answers him */
.risk-ok { color: #1b6b2a; font-weight: 700; cursor: help; }
.risk-no { color: #a40000; font-weight: 700; cursor: help; }

/* autosave status: quiet when it worked, loud when it did not */
.dcsave { font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 3px; }
.dcsave.ok { background: #e8f3ea; color: #1b6b2a; }
.dcsave.busy { background: #eef2f5; color: #556; }
.dcsave.bad { background: #f8e0e0; color: #a40000; }
.dcsave.warn { background: #fdf3e0; color: #9a6b00; }
button.quiet { background: #e8ecf0; color: #444; border: 1px solid #cdd6de; font-weight: 500; }
button.quiet:hover { background: #dbe2e8; }

/* a bid you cannot fund, said before it costs you the recruit */
input.bid.cantafford, input.bid.overbid { border: 2px solid #d08700; background: #fffaf0; }
.rc-cant { font-size: 10.5px; font-weight: 700; color: #a40000; white-space: nowrap; cursor: help; }

/* a page that can no longer save anything says so, loudly, at the top */
.stalewarn { background: #fdecea; border: 2px solid #c0392b; color: #8a0000; font-weight: 600;
    padding: 10px 14px; border-radius: 4px; margin: 0 0 12px; }
.stalewarn a { color: #8a0000; text-decoration: underline; }

/* an unsaved chart asks to be accepted, rather than looking identical to a saved one */
.dc-confirm { display: flex; align-items: center; gap: 16px; background: #fff8e6;
    border: 1px solid #e9c86a; border-radius: 4px; padding: 10px 14px; margin: 0 0 12px; }
.dc-confirm div { flex: 1; font-size: 13px; }
button.confirmorder { white-space: nowrap; padding: 8px 16px; font-weight: 700; }

/* A fee that just left the bank should say so for a beat. */
td.spent.justpaid { background: #fff3cd; transition: background .3s; }

/* ---------------------------------------------------------------- player card
   One man's page: the identity strip, his pies, his game log. */
.pcard{margin:8px 0 16px}
.pcard-id{display:flex;align-items:center;gap:18px;padding:12px 16px;background:#fff;
  border:1px solid #d5dade;border-left:4px solid #2b3a45;border-radius:3px}
.pc-num{font-family:'Zilla Slab',Georgia,serif;font-size:34px;font-weight:700;color:#c3ccd2;line-height:1}
.pc-who{flex:1;min-width:0}
.pc-who h2{margin:0 0 2px;font-size:21px}
.pc-sub{font-size:12.5px;color:#5b6770}
.pc-rtg,.pc-pot{text-align:center;min-width:64px}
.pc-rtg b,.pc-pot b{display:block;font-family:'Zilla Slab',Georgia,serif;font-size:24px;line-height:1.1}
.pc-rtg span,.pc-pot span{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:#8a949c}
.pc-flag{margin-top:8px;padding:8px 12px;border-radius:3px;font-size:12.5px}
.pc-flag.out{background:#fdf0f0;border:1px solid #e8c9c9;color:#9a3f3f}
.pc-flag.risk{background:#fff8e6;border:1px solid #e8d9a9;color:#7a5f1f}
.psec{margin:20px 0 6px;font-size:15px}
.pattr th:first-child,.pstat .stt{text-align:left;white-space:nowrap}
.pieq{font-size:11px;color:#5b6770}
.pieq.full{color:#2f6b4f;font-weight:600}
.pstat{margin-bottom:8px}
.pgl .wl.w a{color:#2f6b4f;font-weight:600}
.pgl .wl.l a{color:#9a3f3f}
.plist{font-size:12.5px;color:#4a545c;margin:4px 0 0 18px}
.plist li{margin:2px 0}

/* ------------------------------------------------- recruiting detailed results
   One block per signing: the field, then the argument about it. */
.rc-weeknav{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 14px}
.rc-weeknav a{font-size:11.5px;padding:3px 9px;border:1px solid #d5dade;border-radius:2px;
  background:#fff;color:#5b6770;text-decoration:none}
.rc-weeknav a.on{background:#2b3a45;border-color:#2b3a45;color:#fff;font-weight:600}
.rcres{margin:0 0 22px}
.rcres-h{padding:8px 12px;background:#eef1f3;border:1px solid #d5dade;border-bottom:0;
  border-radius:3px 3px 0 0;font-size:14px}
.rcres-h .sep{color:#b3bcc2;margin:0 2px}
.rcres-min{display:block;font-size:11px;color:#8a949c;font-weight:400;margin-top:2px}
.rcres-t{margin:0;border-radius:0}
.rcres-t td.crest{width:52px;white-space:nowrap}
.rcres-t .tick{color:#2f6b4f;font-weight:700;margin-right:3px}
.rcres-t tr.won{background:#f2f8f4}
.rcres-t tr.won .pg{font-weight:600}
.rcres-t td.paid{font-weight:700}
.rcres-t td.msg{font-size:11px;letter-spacing:.03em;color:#2f6b4f;font-weight:600}
.rcres-t td.cnd,.rcres-t th.cnd{font-family:ui-monospace,Menlo,monospace;font-size:11px;letter-spacing:.09em;color:#8a949c}
.rcres-t td.cnd i{color:#c3ccd2;font-style:normal}
.rc-novisit{margin-left:5px;padding:0 4px;border-radius:2px;background:#fdf0f0;
  border:1px solid #e8c9c9;color:#9a3f3f;font-size:10px;cursor:help}
.rcres-none{padding:10px 12px;background:#fff;border:1px solid #d5dade;font-size:12.5px;color:#9a3f3f}
.rcres .thread{margin-top:0;border-top:0;border-radius:0 0 3px 3px}

/* The Replay button in the desk strip: the one route to your own game that does not
   show you the score on the way. */
.dk-replay{display:inline-flex;align-items:center;gap:5px;margin-right:10px;padding:2px 10px;
  border-radius:2px;background:#eda100;color:#2b3a45;font-size:11.5px;font-weight:700;
  letter-spacing:.02em;text-decoration:none;white-space:nowrap}
.dk-replay:hover{background:#ffb417;color:#1e2b33}

/* --------------------------------------------------------------- stat leaders
   Several small boards to a row, so a whole category reads at once. */
.ldgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:6px}
.ldcard{background:#fff;border:1px solid #d5dade;border-radius:3px;overflow:hidden}
.ldh{padding:6px 10px;background:#eef1f3;border-bottom:1px solid #d5dade;font-size:12px;
  font-weight:700;color:#2b3a45;display:flex;align-items:center;gap:6px}
.ldmin{margin-left:auto;font-size:9.5px;font-weight:400;text-transform:uppercase;
  letter-spacing:.04em;color:#8a949c;cursor:help}
.ldt{margin:0;font-size:12px}
.ldt td,.ldt th{padding:3px 7px}
.ldt td.rk{width:22px;color:#8a949c}
.ldt td.val{font-weight:700}
.ldt td.pname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:190px}
.ldt td.pname .ps{color:#8a949c;font-size:10.5px;margin-left:3px}
.ldt tr.mine{background:#fff8e6}
.ldempty{padding:10px;font-size:12px;color:#8a949c}

/* ------------------------------------------------------------- team stat sheet */
.tst{font-size:12px}
.tst td,.tst th{padding:3px 8px}
.tst td.pname{white-space:nowrap}
.tst td.pname .ps{color:#8a949c;font-size:10.5px;margin-left:4px}
.tst tr.tsum{background:#eef1f3;font-weight:700}
.tst tr.tsum td{border-top:2px solid #c3ccd2}
.tsgloss{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:2px 18px;
  font-size:11.5px;color:#5b6770;margin-bottom:10px}
.tsgloss b{color:#2b3a45;margin-right:4px}
.tsnote{margin:-2px 0 6px;font-size:11.5px}

/* ------------------------------------------------------ the officials' signals
   Big enough on the chip to actually read, which the 25px referee out on the grass
   never could be. .rp-fieldwrap svg{width:100%} is meant for the field itself and
   would swallow this one, so the signal needs a selector that outranks it. The
   official is a standing man, so he is sized by height and lets the width follow. */
.rp-fieldwrap svg.rp-sig{height:clamp(34px,4.4vw,50px);width:auto;flex:none;
  margin:-6px 0;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4))}

.sectionhead .archpicked { color: #c2c9cf; font-weight: 400; font-size: 0.87em; letter-spacing: 0; text-transform: none; vertical-align: middle; }

/* timeouts under the replay's big scores: orange in hand, gray spent */
.rp-ptswrap{display:inline-flex;flex-direction:column;align-items:center;gap:5px}
.rp-tos{display:flex;gap:3px}
.rp-tos i{width:5px;height:5px;border-radius:1px;background:#3a4a55;display:block}
.rp-tos i.avail{background:#e58e26}

/* the League table: conference filter pills + sortable heads */
.lg-filter{display:flex;gap:8px;margin:10px 0 14px}
.lg-filter a{padding:4px 12px;border-radius:14px;background:#eef2f5;color:#456;font-size:13px;font-weight:600;text-decoration:none}
.lg-filter a.on{background:var(--navy);color:#fff}
.lg-table th{white-space:nowrap;user-select:none}
.lg-table td.pname a{font-weight:600}

/* portal: declined rows grey out until the coach changes his mind */
tr.rc-declined td{opacity:.4}
tr.rc-declined td.rc-act{opacity:1}
.rc-linkbtn{background:none;border:none;padding:0;color:#3d6a8f;font-size:12px;cursor:pointer;text-decoration:underline}
.rc-portal td.pname .qhint{display:block;font-weight:400}
.rc-portal td.attrs{white-space:nowrap}

/* ---- The Clipboard: roundel strip (B) + card row (C) + readiness ring ---- */
.ch-desk.dk-clip{background:#171e24;color:#cfd6db;align-items:center}
.ch-desk.dk-clip .dk-home{color:#e8edf1;font-weight:700;letter-spacing:.06em;font-size:11px;text-transform:uppercase;display:flex;align-items:center;gap:8px}
.ch-desk.dk-clip .dk{display:inline-flex;align-items:center;gap:7px;color:#cfd6db}
.ch-desk.dk-clip .dk b{color:#e8edf1}
.dk-ic{width:24px;height:24px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;flex:none}
.dk-ok .dk-ic{background:#2f8f4e}.dk-warn .dk-ic{background:#d69017}.dk-alert .dk-ic{background:#c0483a}.dk-idle .dk-ic{background:#5a6570}
.ch-desk.dk-clip .dk-tx{font-size:12.5px}
.ch-desk.dk-clip .dk-rp{color:#e8edf1}
.dk-ring{border-radius:50%;display:inline-flex;align-items:center;justify-content:center;flex:none;position:relative}
.dk-ring b{background:#fff;color:#1a2329;border-radius:50%;width:calc(100% - 10px);height:calc(100% - 10px);display:flex;align-items:center;justify-content:center;font-size:11px}
.dk-cards{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin:14px 0 18px}
.dk-cards .dk-ring{width:64px;height:64px}
.dk-cards .dk-ring b{font-size:15px}
.dk-card{background:#fff;border:1px solid #d5dbe0;border-left-width:4px;border-radius:4px;padding:9px 13px;min-width:112px;display:flex;flex-direction:column;gap:4px;text-decoration:none;color:#222}
.dk-card.dk-ok{border-left-color:#2f8f4e}.dk-card.dk-warn{border-left-color:#d69017}.dk-card.dk-alert{border-left-color:#c0483a}.dk-card.dk-idle{border-left-color:#b9c2c7}
.dk-card .dk-cic{color:#456}
.dk-card.dk-ok .dk-cic{color:#2a7c46}.dk-card.dk-warn .dk-cic{color:#8a5a00}.dk-card.dk-alert .dk-cic{color:#a3372a}.dk-card.dk-idle .dk-cic{color:#8a929a}
.dk-card .dk-ct{font-size:10.5px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#556}
.dk-card .dk-cv{font-size:12.5px;font-weight:600}
.dk-card.dk-ok .dk-cv{color:#2a7c46}.dk-card.dk-warn .dk-cv{color:#8a5a00}.dk-card.dk-alert .dk-cv{color:#a3372a}.dk-card.dk-idle .dk-cv{color:#667}
/* on the dark clipboard strip the roundel carries the color - no pink pills */
.ch-desk.dk-clip .dk-alert,.ch-desk.dk-clip .dk-warn,.ch-desk.dk-clip .dk-ok,.ch-desk.dk-clip .dk-idle{background:none;padding:0}
.ch-desk.dk-clip .dk-alert:hover{background:none}
.ch-desk.dk-clip .dk-alert .dk-tx{color:#f0b9ae}.ch-desk.dk-clip .dk-alert b{color:#ff9d8a;font-weight:700}
.ch-desk.dk-clip .dk-warn .dk-tx{color:#e8cf9a}.ch-desk.dk-clip .dk-warn b{color:#f5c96a}
.ch-desk.dk-clip .dk-ok b{color:#8fd9a8}
.ch-desk.dk-clip .dk-idle .dk-tx,.ch-desk.dk-clip .dk-idle b{color:#8b98a3}

/* prep tab: the damage ledger and next-season roster */
tr.pp-bad td{background:#fdf0ec}
tr.pp-warn td{background:#fdf6e8}
.pp-hole{color:#a3372a}
tr.pp-leaving td{opacity:.5}
tr.pp-leaving td.pname{text-decoration:line-through}
tr.pp-group td{background:#171e24;color:#e8edf1;font-weight:700;font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:5px 10px}
tr.pp-group td .qhint{color:#8b98a3;text-transform:none;letter-spacing:0;font-weight:400}
details.rc-fold summary{cursor:pointer;list-style:none}
details.rc-fold summary::-webkit-details-marker{display:none}
details.rc-fold summary h3::after{content:' ▸';color:#8a929a;font-size:12px}
details.rc-fold[open] summary h3::after{content:' ▾'}
.qmark{display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;
  background:#8b98a3;color:#fff;font-size:10px;font-weight:700;cursor:help;vertical-align:1px}
th .qmark{background:#5a6570}

/* a real tooltip, one per piece of the market tag - native title bubbles are too shy */
.mtip{position:relative;cursor:help;border-bottom:1px dotted #9aa3ab}
.mtip:hover::after{content:attr(data-tip);position:absolute;z-index:40;right:0;top:100%;margin-top:6px;
  width:300px;max-width:70vw;background:#171e24;color:#e8edf1;font-size:12px;line-height:1.5;font-weight:400;
  padding:9px 12px;border-radius:4px;white-space:normal;text-align:left;box-shadow:0 5px 16px rgba(0,0,0,.35)}

/* the Clipboard strip: taller, breathes, and the December chips keep to the right */
.ch-desk.dk-clip{flex-wrap:wrap;row-gap:9px;padding:12px 16px;min-height:34px}

/* the Clipboard brand block: ring and name stacked, spanning both chip rows */
.ch-desk.dk-clip{flex-wrap:nowrap;align-items:center;gap:18px}
.ch-desk.dk-clip .dk-home{flex-direction:column;gap:6px;font-size:13px;letter-spacing:.08em;flex:none}
.ch-desk.dk-clip .dk-home .dk-ring b{font-size:14px}
.dk-flow{display:flex;flex-wrap:wrap;align-items:center;column-gap:22px;row-gap:9px;flex:1;min-width:0}
/* On a phone the brand block and the chips cannot share a row - Allan, 2026-09-10. The ring and
   name kept a fixed 124px column, the chips got what was left (182px at 375), and every chip
   is nowrap (.ch-desk .dk), so "Media bonus 2 posts · 10 RP when the week runs" (348px) pushed
   every signed-in page out to 510px and the whole site scrolled sideways. Under 620px the ring
   and name sit side by side on their own line, the chips take the full row below, a long chip
   may wrap its text, and the December group (replay, RP, deadline) may break onto two lines.
   Above 620px nothing changes: the chip row is 400px+ there and the widest chip fits. */
@media(max-width:620px){
  .ch-desk.dk-clip{flex-wrap:wrap;gap:10px 14px}
  .ch-desk.dk-clip .dk-home{flex-direction:row;gap:10px;border-right:0;padding-right:0}
  .ch-desk.dk-clip .dk-flow{flex-basis:100%}
  .ch-desk.dk-clip .dk{white-space:normal;max-width:100%}
  .ch-desk.dk-clip .dk-tx{min-width:0}
  .ch-desk.dk-clip .dk-rt{flex-wrap:wrap}
}

/* masthead right: coach identity above the season line */
.ch-right{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.rc-hammer{background:#eef4f0;border:1px solid #cfe0d5;border-left:3px solid #2f8f4e;border-radius:3px;
  padding:8px 12px;margin:0 0 12px;font-size:12.5px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:baseline}
.rc-hammer .rc-hitem{white-space:nowrap}
.rc-hammer .rc-hitem.me{background:#dff0e4;border-radius:3px;padding:1px 6px;font-weight:600}
.rev-lot{margin:0 0 16px}
.rev-head{background:#171e24;color:#e8edf1;padding:6px 11px;font-size:13px;border-radius:3px 3px 0 0}
.rev-head .qhint{color:#8b98a3}
.rev-bids{margin:0 0 4px}
.rev-bids .rev-check{width:22px;color:#2f8f4e;font-weight:700}
tr.rev-won td{background:#e6f3ea;font-weight:600}
.sd-order{display:flex;gap:10px;align-items:center}
.sd-order select,.sd-order button{font-size:13px;padding:5px 8px}

/* signing day cockpit */
.sd-burnwrap{position:relative;height:30px;background:#eef2f5;border:1px solid #d5dbe0;border-radius:4px;overflow:hidden;margin:10px 12px 0}
.sd-burnfill{position:absolute;left:0;top:0;bottom:0;background:#2f8f4e}
.sd-burnover{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(45deg,#c0483a,#c0483a 8px,#a3372a 8px,#a3372a 16px)}
.sd-capline{position:absolute;top:-3px;bottom:-3px;width:3px;background:#171e24;z-index:2}
.sd-burnnums{display:flex;justify-content:space-between;font-size:13px;padding:8px 12px 12px}
.sd-bad{color:#a3372a;font-weight:700}.sd-ok{color:#2a7c46;font-weight:700}
.tickets{display:flex;gap:10px;flex-wrap:wrap}
.tk{border:2px dashed #b98f2a;background:#fdf6e0;border-radius:6px;padding:7px 12px;text-align:center;cursor:pointer;min-width:84px;user-select:none}
.tk small{display:block;font-size:9.5px;letter-spacing:.05em;color:#8a6d1f;text-transform:uppercase}
.tk .st{color:#c9a227;font-size:14px}
.tk .pos{font-weight:700;font-size:12px;color:#1a2329}
.tk.paid{border-style:solid;border-color:#8fa3b3;background:#f2f6f9}
.tk.paid small{color:#5a7184}
.tk.used{border-style:solid;border-color:#2f8f4e;background:#e6f3ea;cursor:default}
.tk.used small{color:#2a7c46}
.sd-picker{margin:12px 0 0;padding:10px;background:#eef2f5;border-radius:4px;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.sd-posbtn{font-size:12.5px;padding:4px 11px;cursor:pointer}
.sd-signn{color:#a3372a}
.sd-short{color:#b8860b}
.sd-why{background:#fdf3d7;border:1px solid #d9b44a;border-radius:4px;padding:9px 12px;
    margin:0 0 10px;font-size:13px;color:#5c4a12;line-height:1.5}
.sd-donecell{display:flex;align-items:center;gap:10px;margin-left:auto}
.sd-donemark{display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
    border-radius:50%;background:#2f8f4e;color:#fff;font-size:22px;font-weight:700;
    animation:sdPop .45s cubic-bezier(.2,1.6,.4,1)}
.sd-donetext{color:#7fd49b;font-weight:700;font-size:13px;letter-spacing:.05em;line-height:1.25}
.sd-donetext small{display:block;color:#9ab0a1;font-weight:400;letter-spacing:.02em;font-size:11px}
@keyframes sdPop{0%{transform:scale(0)}70%{transform:scale(1.25)}100%{transform:scale(1)}}
.rc-grudge{color:#a3372a;font-size:11px;font-style:italic}
.rq-grid .rq-short{background:#171e24;color:#e05a48;font-weight:700}
.rq-grid .rq-team{white-space:nowrap}

/* ---- THE COCKPIT: OVR badge, skill quartile colours, staff plan ---- */
.ovrb{display:inline-block;min-width:30px;padding:1px 5px;border-radius:3px;
    font-weight:700;font-size:13px;text-align:center;color:#fff;line-height:1.5}
.ovrb.o90{background:#b8860b}
.ovrb.o80{background:#2f8f4e}
.ovrb.o70{background:#3d6a8f}
.ovrb.o60{background:#6b7680}
.ovrb.o50{background:#8a929a}
td.attrn.sk-hi,td.attrd.sk-hi{color:#1d5c33;font-weight:700}
td.attrn.sk-mid,td.attrd.sk-mid{color:#3a4a55}
td.attrn.sk-lo,td.attrd.sk-lo{color:#b06a5e}
/* Controls that live INSIDE a dark .rc-stephead. The page's link blue is unreadable
   on near-black, so anything in the bar gets its own contrast: dim white for what
   you can switch to, solid white with a rule under it for where you are. */
.rc-stephead .r a{color:#cfd8e0;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.28)}
.rc-stephead .r a:hover{color:#fff;border-bottom-color:#fff}
.rc-stephead .r a.on,.rc-stephead .r a.cur{color:#fff;font-weight:700;border-bottom:2px solid #d69017}
.rc-stephead .r .sep{color:#5c6870;padding:0 3px}
.lens-toggle{font-size:11.5px;font-weight:400;letter-spacing:.02em;
    margin-left:12px;padding-left:12px;border-left:1px solid #3a444c}
.lens-toggle a{padding:0 3px}
.sp-card{background:#fdfaf0;border:1px solid #d9b44a;border-radius:4px;padding:10px 12px;margin:0 0 12px}
.sp-card h4{margin:0 0 6px;font-size:13px;letter-spacing:.04em;text-transform:uppercase;color:#5c4a12}
.sp-why{color:#7a6a3a;font-size:11.5px}
.sp-row{padding:3px 0;border-bottom:1px solid #efe3c2;font-size:13px}
.sp-row:last-child{border-bottom:0}
.philo-pick{display:flex;gap:8px;flex-wrap:wrap;margin:6px 0}
.philo-opt{border:1px solid #d5dbe0;border-radius:4px;padding:8px 10px;min-width:150px;max-width:230px;font-size:12px}
.philo-opt.on{border-color:#2f8f4e;background:#eef7f0}
.philo-opt b{display:block;font-size:13px;margin-bottom:3px}
.philo-opt .why{color:#667;display:block;margin-top:4px;font-style:italic}
tr.tw-group td{background:#eef2f5;font-weight:700;font-size:11px;letter-spacing:.06em;
    text-transform:uppercase;color:#48535c;padding:5px 8px}
tr.tw-prog td{color:#5a6570;font-size:12.5px}
.tw-note{color:#667;font-size:11.5px}

/* ---- the recruiting coordinator ---- */
.rc-coach{background:#eef4f8;border-left:3px solid #3d6a8f;padding:8px 12px;margin:0 0 8px;
    font-size:13px;line-height:1.5;color:#2c3e4c}
.rc-coachwho{display:block;font-size:10px;letter-spacing:.08em;text-transform:uppercase;
    color:#5a7a91;font-weight:700;margin-bottom:2px}
.rc-tip{margin:3px 0 2px;font-size:11.5px;line-height:1.45;color:#55606a;max-width:60ch}
/* The dot carries the colour, so the label does not need a filled chip behind it -
   a green pill with a green dot inside it is two of the same signal (Allan: "emoji
   dots but NOT dippin dots"). Label is plain small caps; the sentence does the work. */
.tip-chip{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.06em;
    text-transform:uppercase;margin-right:6px;white-space:nowrap;
    padding:1px 7px 1px 5px;border:1px solid #cfd6db;border-radius:10px;
    background:#fff;vertical-align:1px}
/* Outline, never fill: the dot is the colour, the box is only the shape that makes
   the column scannable. A filled pill behind a coloured dot was the same signal
   twice (Allan: "emoji dots but NOT dippin dots"). */
.rc-tip.tip-top .tip-chip{border-color:#a8d4b8}
.rc-tip.tip-stretch .tip-chip{border-color:#e0c88a}
.rc-tip.tip-no .tip-chip{border-color:#dcb0a8}
.rc-tip.tip-depth .tip-chip,.rc-tip.tip-ok .tip-chip{border-color:#c9d0d6}
.rc-tip.tip-top .tip-chip{color:#1d5c33}
.rc-tip.tip-stretch .tip-chip{color:#8a6410}
.rc-tip.tip-depth .tip-chip{color:#6b7680}
.rc-tip.tip-no .tip-chip{color:#8c3a2d}
.rc-tip.tip-ok .tip-chip{color:#5a6570}
.rc-tip.tip-urgent .tip-chip{color:#1d5c33;border-color:#7cc49a;background:#f2fbf5}
.rc-tip.tip-in .tip-chip{color:#2b5d86;border-color:#a8c6de;background:#f3f8fc}

/* Standings: who is behind each seat. A person, the engine, or both when the two
   signals disagree - a seat ruled to a coach who has no login yet, or a login sitting
   on a seat with no ruling. Drawn as inline SVG because it repeats 48 times and an
   image request each would be silly. */
.seat{display:inline-flex;align-items:center;gap:1px;vertical-align:-2px;margin-right:5px}
.seat .si{width:11px;height:11px;display:block}
.seat.human .si{fill:#2f6b3d}
.seat.ai .si{fill:#8b94a0}
.seat.tbd .si{fill:#b07a12}
.seat.tbd .si:first-child{opacity:.85}
.seatkey .seat{margin-right:2px}
.seatkey{color:var(--ink-faint)}
.catblock h3 .confsplit{float:right;font-family:var(--sans);font-weight:600;font-size:11px;
  letter-spacing:0;text-transform:none;opacity:.75}
.catblock h3 .confsplit .g{opacity:.5;font-weight:400}

/* the marquee desk on admin.php - one row per line in the red box */
.rc-step.alerts .marquee td{vertical-align:top}
.rc-step.alerts .mline{width:100%;min-width:320px;font-size:13px;padding:4px 6px}
.rc-step.alerts .mrow{display:flex;gap:6px;align-items:center;margin-top:4px;flex-wrap:wrap}
.rc-step.alerts .mrow select{font-size:12px}
.rc-step.alerts .ord{font-size:11px;color:var(--ink-faint)}
.rc-step.alerts .when{white-space:nowrap}
.rc-step.alerts .when label{display:block;font-size:11px;color:var(--ink-faint);margin-bottom:3px}
.rc-step.alerts .when input{font-size:11px}
.rc-step.alerts .live{text-align:center}
.rc-step.alerts tr.off td{opacity:.55}
.rc-step.alerts tr.newline td{background:#f6faf7}
.rc-step.alerts .prev{margin-bottom:5px}
.rc-step.alerts .prev .al{font-size:11px}
.notice.warn{background:#fdf3e0;border-color:#e6cf9a;color:#9a6b00}

/* The waitlist, and the two message lines join.php has always emitted without a rule to
   hang them on. .wl-hp is the honeypot: a real person never sees the field, a bot does. */
p.error{color:#a40000;font-weight:600;margin:0 0 12px}
p.ok{color:#1d6b3f;font-weight:600;margin:0 0 12px}
.wl-cols{display:flex;gap:26px;align-items:flex-start;flex-wrap:wrap}
.wl-list{flex:1 1 420px;min-width:320px}
.wl-form{flex:0 0 340px}
.wl-list table.data{width:100%}
.wl-list td.b{font-weight:600}
.wl-list td.dim,.wl-form .dim{color:var(--ink-faint)}
.wl-form form.signin{max-width:none}
.wl-hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

/* Coaches Online: who has been here, TMVL's corner box. A row goes bold and picks up the
   green pip while the coach is still on the site. */
.box.online table.onl{width:100%;border-collapse:collapse;font-size:12px}
.box.online table.onl td{padding:3px 4px;border-top:1px solid #f0ede4;white-space:nowrap}
.box.online table.onl tr:first-child td{border-top:0}
.box.online td.ab{font-family:var(--slab);font-weight:600;color:var(--slate);width:52px}
.box.online td.ab .chip{display:inline-block;width:8px;height:8px;border-radius:2px;border:1px solid;margin-right:5px;vertical-align:baseline}
.box.online td.nm{width:100%;overflow:hidden;text-overflow:ellipsis}
.box.online td.tm{color:var(--ink-faint);text-align:right}
.box.online td.st{color:var(--ink-faint);text-align:right;width:34px}
.box.online tr.on td{font-weight:600}
.box.online tr.on td.st{color:#1d6b3f}

/* The commissioner setting a password by hand. The value is shown once and never again,
   so it gets the weight of the thing you are meant to copy. */
.pwset{background:#fff;border:1px solid var(--line);border-left:5px solid #1b7a34;
  padding:11px 15px;margin:0 0 14px;max-width:560px}
.pwset .pk{font-size:12px;color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}
.pwset .pk b{color:var(--ink);text-transform:none;letter-spacing:0}
.pwset .pv{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:23px;font-weight:600;
  color:#1b5e2a;margin:3px 0 6px;user-select:all}
.pwset p{margin:0;font-size:12px;color:var(--ink-soft);line-height:1.5}
table.progs td.acts input.pwin{font:inherit;font-size:11.5px;width:96px;padding:2px 6px;
  border:1px solid var(--line);border-radius:3px}
/* Release: the only control on the commissioner's page that cannot be taken back. */
table.progs td.acts button.danger{border-color:#a13b2a;color:#a13b2a}
table.progs td.acts button.danger:hover{background:#a13b2a;color:#fff}

/* Scores, spoiler-free by default. The gate is the loudest thing on the page when results
   are hidden, and steps back to a quiet line once they are showing. */
.sc-gate{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 14px;padding:9px 14px;
  border:1px solid #c9b98a;border-left:5px solid var(--gold);background:#fdfbf3}
.sc-gate .st{color:var(--ink-soft)}
.sc-gate .st b{color:var(--ink);font-family:var(--slab)}
.sc-gate a{margin-left:auto;font-family:var(--slab);font-weight:600;text-decoration:none;
  padding:4px 14px;border-radius:3px;white-space:nowrap}
.sc-gate a.sc-reveal{background:var(--slate);color:#fff}
.sc-gate a.sc-reveal:hover{background:var(--slate2)}
.sc-gate.open{border-color:var(--line);border-left-color:var(--gray);background:#f7f7f5}
.sc-gate a.sc-hide{border:1px solid var(--line);color:var(--slate);background:#fff}
.sc-gate a.sc-hide:hover{background:var(--cont)}
.sc-group{font-family:var(--slab);font-weight:600;font-size:11.5px;text-transform:uppercase;
  letter-spacing:.07em;color:#fff;background:var(--slate);padding:4px 11px;margin:0 0 10px;
  display:flex;align-items:center;gap:8px}
.sc-group .sep{color:var(--gray);font-weight:400}
.sc-group .n{margin-left:auto;color:var(--gold);font-size:11px;letter-spacing:.04em}
.cols .sc-card{break-inside:avoid;margin:0 0 12px}
/* The coach's name, under his program and stepped in from it. Allan, 2026-09-10: "make the
   coaches name small and slightly indent under the team name but about 3 spaces." One rule
   for both pages so Scores and Standings cannot drift apart. */
.sc-tm i,.coachname{display:block;font-style:normal;font-family:var(--body);font-size:10.5px;
  font-weight:400;color:var(--ink-faint);letter-spacing:0;margin-left:12px;line-height:1.3}
.sc-card.quiet .sc-sc{color:var(--ink-faint);font-weight:400}
.sc-card.quiet .sc-row{color:var(--ink)}
/* A week still ahead: the fixture list, not a result. */
.sc-gate.ahead{border-color:var(--line);border-left-color:var(--slate2);background:#f4f6f7}
.weekbar a.week.ahead{color:var(--ink-faint);border-style:dashed}
.weekbar a.week.active.ahead{color:#fff;border-style:solid}

/* Standings carries the same coach line; the cell has to stop being a single baseline. */
table.standings td:first-child{line-height:1.35}
table.standings .coachname{margin-top:1px}

/* The Roster tab's door to the full attribute grid. */
.fullgrid{display:flex;align-items:baseline;justify-content:flex-end;gap:9px;margin:0 0 8px;font-size:12px}
.fullgrid a{font-family:var(--slab);font-weight:600;color:var(--blue);text-decoration:none}
.fullgrid a:hover{text-decoration:underline}
.fullgrid span{color:var(--ink-faint);font-size:11px}

/* The team page schedule: each opponent's mark beside the name. Allan, 2026-09-10. Sized to
   the row, so the table keeps its height and the names still line up down the column. */
table.schedule-a td.opp{white-space:nowrap}
table.schedule-a th.mk,table.schedule-a td.mk{width:30px;padding-left:4px;padding-right:4px}
table.schedule-a td.mk .rc-mark{display:block;width:30px;height:30px;object-fit:contain;
  margin:-3px 0;border-radius:0}

/* The poll: each team's logo in its own column, sized to the row like the schedule tab. */
table.poll th.mk,table.poll td.mk{width:30px;padding-left:4px;padding-right:4px}
table.poll td.mk .rc-mark{display:block;width:30px;height:30px;object-fit:contain;
  margin:-3px 0;border-radius:0}

/* Standings, three conferences across - Allan, 2026-09-10. A grid, not the shared .cols
   column flow: columns fill top to bottom, which would read Pacific, Golden Plains, Bayou
   along the top row. The grid keeps the conferences in order along each row, and since every
   conference has eight programs the rows line up. minmax(0,1fr) lets a column shrink below
   its table's natural width instead of pushing the page sideways. At 315px a conference the
   table fits by losing PF/PA (the Diff cell carries them on hover) and some cell padding. */
.cols.confgrid{column-count:auto;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:0 18px}
.confgrid table.standings th,.confgrid table.standings td{padding-left:6px;padding-right:6px}
.confgrid table.standings th.mk,.confgrid table.standings td.mk{padding-left:4px;padding-right:2px}
@media(max-width:960px){.cols.confgrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.cols.confgrid{grid-template-columns:minmax(0,1fr)}}

/* Standings keeps its small print (ordering note, seat key) under the tables - Allan,
   2026-09-10 - so the tabs can sit right on top of the first conference. */
.subnav.standtabs{margin-bottom:10px;padding-top:2px}
.standnotes{margin-top:4px}
.standnotes .sectionnote{margin:3px 0}

/* Standings, the "Full standings" tab - Allan, 2026-09-10. One conference at a time, every
   split, laid out like a newspaper table: a group row (Conference / Overall / Poll) over the
   column row, with a rule down the left of each group. The conference picker is a row of
   pills under the tabs, so it does not read as a second tab bar. */
.confpills{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.confpills a{font-family:var(--slab);font-size:12.5px;padding:4px 12px;border:1px solid var(--line);
  border-radius:14px;color:var(--ink-soft);background:#fff;text-decoration:none}
.confpills a:hover{border-color:var(--slate2);color:var(--slate)}
.confpills a.on{background:var(--slate);border-color:var(--slate);color:#fff;font-weight:600}
h3.fullconf{margin:0 0 8px}
/* Wide on purpose; on a phone it scrolls inside this box and the page stays put. */
.fullwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.standings.full{min-width:760px}
table.standings.full tr.grp th{background:var(--slate2);text-align:center;font-size:10.5px;
  letter-spacing:.08em;padding-top:4px;padding-bottom:4px}
table.standings.full th.gl{border-left:1px solid rgba(255,255,255,.22)}
table.standings.full td.gl{border-left:1px solid var(--line)}
table.standings.full td.strk{font-weight:600}
/* Its own classes, not .pos/.neg: a later unscoped .pos rule (the depth-chart position
   label) turns .pos into small grey capitals site-wide, so a streak would never go green. */
table.standings.full td.strk.win{color:#2f8f4e}
table.standings.full td.strk.loss{color:#c0483a}

/* Standings: each program's logo in its own column, sized like the schedule tab and poll. */
table.standings th.mk,table.standings td.mk{width:30px;padding-left:4px;padding-right:4px}
table.standings td.mk .rc-mark{display:block;width:30px;height:30px;object-fit:contain;
  margin:-3px 0;border-radius:0}

/* A program's painted mark in the Wall avatar's place (include_thread.php). Not cropped to the
   circle, which would clip the art; 30px to match the schedule, poll and standings marks.
   .wav itself lives in colossal.css. This sits here instead because colossal.css was open in
   another session on 2026-09-10, and it does not need to sit beside it: img.wav outranks .wav
   from either file, so the text fallback keeps its circle. Moved out of an inline style. */
img.wav{width:30px;height:30px;border-radius:0;border:0;background:none;object-fit:contain;
  display:block}

/* The thumbs up on a post (include_likes.php, js/likes.js). Allan asked for a thumb and a
   count, and explicitly not a thumbs down. It sits under the words, left-aligned with them,
   and stays quiet until somebody presses it: grey outline, and the program's own ink when
   it is yours. A post nobody has liked shows no number at all - see likeBar(). */
.plbar{margin:4px 0 0}
.pl-btn,.pl-static{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:12px;
    line-height:1;color:#6b7780;background:none;border:1px solid transparent;border-radius:11px;
    padding:3px 8px}
.pl-btn{cursor:pointer}
.pl-btn:hover{background:#eef1f3;border-color:#dfe4e8;color:#2b3640}
.pl-btn:focus-visible{outline:2px solid #2b3640;outline-offset:1px}
.pl-btn.on{color:#1d6fb8;border-color:#cfe0ef;background:#eff5fb}
.pl-ico{fill:currentColor;display:block}
.pl-btn.on .pl-ico{transform:translateY(-1px);transition:transform .12s ease}
.pl-n{min-width:5px;font-variant-numeric:tabular-nums}

/* LINING FIGURES, EVERYWHERE. Zilla Slab ships OLD-STYLE figures as its default: the 0, 1
   and 2 are x-height, the 3 4 5 7 9 hang below the baseline and only the 6 and 8 stand
   full height. Lovely in a paragraph, wrong on a scoreboard - coaches watching a replay
   on 2026-09-12 asked whether the zeroes were meant to be smaller and why a score
   "fluctuates in size" going from 22 to 23. It was not their screens; it was the font.
   Georgia, the fallback, is worse still.
   font-feature-settings inherits and is not cancelled by the font-variant-numeric:
   tabular-nums declarations scattered through this file, which is why the fix lives here
   as one line rather than forty. Every number on the site stands the same height now:
   the big score, the clock, rank numbers, box scores, the standings. */
:root{font-feature-settings:"lnum" 1}
