/* Dugout Report — shared stylesheet for every page. */
:root {
  --bg: #0c1117;
  --bg-2: #121a23;
  --panel: #161f2a;
  --panel-2: #1b2733;
  --line: #243240;
  --chalk: #eef3f5;
  --muted: #8298a8;
  --dim: #5a6e7d;
  --clay: #d9662b;       /* infield dirt */
  --clay-soft: #e8843f;
  --turf: #3fae6b;       /* good */
  --turf-soft: #5cc585;
  --warn: #e8b13f;
  --bad: #e0533d;        /* weakness */
  --bad-soft: #ec6f5b;
  --gold: #e9c46a;
  --shadow: 0 18px 50px -20px rgba(0,0,0,.7);
  --grad-cell-good: 63,174,107;
  --grad-cell-bad: 224,83,61;
  --card: var(--panel-2);   /* form-control surface */
  --ink: var(--chalk);      /* form-control text */
  --accent: var(--clay);    /* interactive accent (chips, steppers) */
}
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  background:
    radial-gradient(1200px 600px at 80% -10%, rgba(217,102,43,.10), transparent 60%),
    radial-gradient(900px 500px at -10% 10%, rgba(63,174,107,.08), transparent 55%),
    var(--bg);
  color: var(--chalk);
  font-family: 'DM Sans', system-ui, sans-serif;
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  padding-bottom: 80px;
}
body::before {
  content: ""; position: fixed; inset: 0; pointer-events: none; z-index: 0;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.025'/%3E%3C/svg%3E");
  mix-blend-mode: overlay;
}
.wrap { max-width: 1400px; margin: 0 auto; padding: 0 24px; position: relative; z-index: 1; }

/* ---------- Header ---------- */
header.masthead {
  padding: 28px 0 26px;
  border-bottom: 2px solid var(--line);
  position: relative;
}
.kicker {
  font-family: 'Oswald', sans-serif; font-weight: 600; letter-spacing: .42em;
  text-transform: uppercase; font-size: 12px; color: var(--clay-soft);
  display: flex; align-items: center; gap: 12px;
}
.kicker::before { content:""; width: 34px; height: 2px; background: var(--clay); display:inline-block; }
h1.title {
  font-family: 'Anton', sans-serif; font-weight: 400;
  font-size: clamp(42px, 8vw, 92px); line-height: .92; letter-spacing: .01em;
  text-transform: uppercase; margin: 10px 0 4px;
  background: linear-gradient(180deg, #fff 30%, #b9c9d4 100%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
.title .accent { color: var(--clay); -webkit-text-fill-color: var(--clay); }
.subline { color: var(--muted); font-size: 15.5px; line-height: 1.55; max-width: min(100%, 820px); }
.subline b { color: var(--chalk); font-weight: 600; }
.masthead-row { display: flex; align-items: center; gap: 22px; }
.masthead-head { min-width: 0; }
.team-logo {
  width: 128px; height: 128px; flex: 0 0 auto; border-radius: 26px; object-fit: cover;
  border: 1px solid var(--line); box-shadow: var(--shadow); background: var(--panel);
}
/* Placeholder when a team hasn't uploaded a crest yet — a neutral SportVantage monogram (no
   hard-coded club logo). The coach replaces it with their own logo in Setup. */
.team-logo-mark { display: grid; place-items: center; background: linear-gradient(150deg, var(--accent, #2f6f6a), color-mix(in srgb, var(--accent, #2f6f6a) 55%, #0b0e13)); }
.team-logo-mark span { font-family: 'Anton', sans-serif; font-size: 52px; letter-spacing: .02em; color: #f3fbff; }
@media (max-width: 560px){ .team-logo { width: 96px; height: 96px; border-radius: 20px; } .team-logo-mark span { font-size: 40px; } .masthead-row { gap: 14px; } }
.teamname {
  font-family: 'Oswald', sans-serif; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; font-size: 18px; color: var(--chalk); margin-bottom: 8px;
}

/* ---------- Team strip ---------- */
.teamstrip {
  display: grid; grid-template-columns: repeat(8, 1fr); gap: 1px;
  background: var(--line); border: 1px solid var(--line); border-radius: 14px;
  overflow: hidden; margin: 28px 0 8px; box-shadow: var(--shadow);
}
.tcell { background: linear-gradient(180deg, var(--panel), var(--bg-2)); padding: 16px 14px; }
.tcell .lab { font-family:'Oswald'; text-transform: uppercase; letter-spacing: .12em; font-size: 10.5px; color: var(--dim); font-weight: 600; }
.tcell .val { font-family:'Spline Sans Mono'; font-size: 27px; font-weight: 600; margin-top: 4px; letter-spacing: -.5px; }
.tcell .val.sm { font-size: 21px; }
@media (max-width: 900px){ .teamstrip{ grid-template-columns: repeat(4,1fr);} }
@media (max-width: 520px){ .teamstrip{ grid-template-columns: repeat(2,1fr);} }

/* ---------- Section heads ---------- */
.sec-head { display:flex; align-items:baseline; gap:14px; margin: 46px 0 18px; }
.sec-head h2 {
  font-family:'Oswald'; font-weight: 600; text-transform: uppercase; letter-spacing: .08em;
  font-size: 22px;
}
.sec-head .n { font-family:'Anton'; color: var(--clay); font-size: 20px; }
.sec-head .hint { color: var(--dim); font-size: 13px; margin-left:auto; font-family:'Spline Sans Mono'; }

/* ---------- Leaders ---------- */
.leaders { display:grid; grid-template-columns: repeat(3,1fr); gap: 16px; }
@media (max-width: 860px){ .leaders{ grid-template-columns: repeat(2,1fr);} }
@media (max-width: 560px){ .leaders{ grid-template-columns: 1fr;} }
.lcard {
  position: relative; background: linear-gradient(165deg, var(--panel) 0%, var(--bg-2) 100%);
  border: 1px solid var(--line); border-radius: 16px; padding: 18px 20px 20px; overflow: hidden;
}
.lcard::after { content:""; position:absolute; right:-30px; top:-30px; width:120px; height:120px; border-radius:50%;
  background: radial-gradient(circle, rgba(217,102,43,.16), transparent 70%); }
.lcard .cat { font-family:'Oswald'; text-transform:uppercase; letter-spacing:.16em; font-size:11px; color:var(--clay-soft); font-weight:600; }
.lcard .who { font-family:'Oswald'; font-weight:600; font-size: 23px; margin-top:8px; display:flex; align-items:center; gap:10px;}
.lcard .num { font-family:'Spline Sans Mono'; font-size:12px; color:var(--dim); border:1px solid var(--line); border-radius:6px; padding:2px 7px; }
.lcard .big { font-family:'Spline Sans Mono'; font-weight:600; font-size: 40px; margin-top: 6px; letter-spacing:-1px; }
.lcard .ctx { color: var(--muted); font-size: 12.5px; margin-top: 2px; }
.lcard .cat[data-tip] { text-decoration: underline dotted rgba(232,132,63,.5); text-underline-offset: 3px; }
.lcard .big[data-tip] { cursor: help; }
.lcard .explain { color: var(--muted); font-size: 12px; line-height: 1.5; margin-top: 12px; padding-top: 11px; border-top: 1px solid var(--line); }
.lcard.good .big { color: var(--turf-soft); }
.lcard.power .big { color: var(--clay-soft); }
.lcard.disc .big { color: var(--gold); }
.lcard.speed .big { color: #5fb3d9; }
.lcard.watch .big { color: var(--bad-soft); }
.lcard.contact .big { color:#7fd0a3; }

/* ---------- Table ---------- */
.tablecard { background: var(--panel); border:1px solid var(--line); border-radius: 16px; overflow:hidden; box-shadow: var(--shadow); }
.tbl-scroll { overflow-x:auto; }
table { border-collapse: collapse; width:100%; min-width: 880px; }
thead th {
  position: sticky; top:0; z-index: 3;
  background: linear-gradient(180deg, #1d2935, #16202b);
  font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.06em;
  font-size: 11.5px; color: var(--muted); padding: 13px 10px; text-align: right; white-space: nowrap;
  border-bottom: 2px solid var(--line); cursor: pointer; user-select:none;
}
thead th .ar { color: var(--clay); margin-left:4px; opacity:.0; font-size:10px;}
thead th.sorted .ar { opacity:1; }
thead th.player, tbody td.player { text-align:left; position: sticky; left:0; z-index:2; }
thead th.player { z-index: 4; }
tbody td.player { background: var(--panel); }
tbody tr:nth-child(even) td.player { background: #18222e; }
tbody td {
  padding: 11px 10px; text-align: right; font-family:'Spline Sans Mono'; font-size: 13.5px;
  border-bottom: 1px solid #1d2832; white-space: nowrap;
}
tbody tr:nth-child(even) td { background: rgba(255,255,255,.012); }
tbody tr:hover td { background: rgba(217,102,43,.07); }
tbody tr:hover td.player { background: #20303d; }
td.player .pn { display:flex; align-items:center; gap:11px; }
td.player .jersey {
  font-family:'Anton'; font-size: 13px; color:var(--bg); background: var(--chalk);
  width: 30px; height: 30px; border-radius: 8px; display:flex; align-items:center; justify-content:center; flex:0 0 auto;
}
td.player .nm { font-family:'DM Sans'; font-weight:600; font-size:14px; }
td.player .gp { font-family:'Spline Sans Mono'; font-size:10.5px; color: var(--dim); }
.flag { color: var(--warn); font-size: 11px; cursor:help; }
.heat { border-radius: 6px; font-weight:600; }
td.lead { box-shadow: inset 0 0 0 1.5px var(--clay); border-radius:6px; }
tfoot td {
  padding: 13px 10px; text-align:right; font-family:'Spline Sans Mono'; font-weight:600; font-size:13.5px;
  background: #0f1620; border-top: 2px solid var(--line); color: var(--chalk);
}
tfoot td.player { text-align:left; font-family:'Oswald'; text-transform:uppercase; letter-spacing:.1em; color: var(--clay-soft); background:#0f1620;}

.legend { display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin-top:14px; color: var(--muted); font-size:12px;}
.legend .sw { display:inline-flex; align-items:center; gap:7px; }
.legend .chip { width:26px; height:12px; border-radius:3px; display:inline-block; }
.legend .chip.g{ background: rgba(63,174,107,.75);} .legend .chip.m{ background: rgba(130,152,168,.3);} .legend .chip.b{ background: rgba(224,83,61,.75);}

/* ---------- Scouting cards ---------- */
.scout { display:grid; grid-template-columns: repeat(3,1fr); gap:16px; }
@media (max-width: 920px){ .scout{ grid-template-columns: repeat(2,1fr);} }
@media (max-width: 600px){ .scout{ grid-template-columns: 1fr;} }
.pcard { background: linear-gradient(170deg, var(--panel), var(--bg-2)); border:1px solid var(--line); border-radius:16px; padding:18px; display:flex; flex-direction:column; gap:13px; }
.pcard .top { display:flex; align-items:center; gap:12px; }
.pcard .jersey { font-family:'Anton'; font-size:16px; color:#0c1117; width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex:0 0 auto;
  background: linear-gradient(160deg, #fff, #c4d2db); }
.pcard .nm { font-family:'Oswald'; font-weight:600; font-size:19px; line-height:1.05; }
.pcard .role { font-size:11px; color:var(--dim); font-family:'Spline Sans Mono'; text-transform:uppercase; letter-spacing:.08em;}
.pcard .ops { margin-left:auto; text-align:right; }
.pcard .ops .v { font-family:'Spline Sans Mono'; font-weight:600; font-size:20px; }
.pcard .ops .l { font-size:9.5px; color:var(--dim); font-family:'Oswald'; letter-spacing:.14em; text-transform:uppercase;}
.pcard .nmwrap { display:flex; flex-direction:column; gap:2px; min-width:0; }
.pcard .pcard-trophies { display:inline-flex; align-items:center; gap:8px; margin-top:3px; }
.pcard .pcard-tr { display:inline-flex; align-items:center; gap:1px; }
.pcard .pcard-tr .trophy { height:19px; width:auto; }
.pcard .pcard-trn { font-family:'Spline Sans Mono'; font-weight:600; font-size:11px; color:var(--dim); }
.slashline { display:flex; gap:0; border:1px solid var(--line); border-radius:10px; overflow:hidden; }
.slashline div { flex:1; padding:9px 6px; text-align:center; border-right:1px solid var(--line); }
.slashline div:last-child{ border-right:none; }
.slashline .l { font-size:9px; color:var(--dim); font-family:'Oswald'; letter-spacing:.12em; text-transform:uppercase;}
.slashline .v { font-family:'Spline Sans Mono'; font-weight:600; font-size:15px; margin-top:2px;}
.bars { display:flex; flex-direction:column; gap:8px; }
.bar { display:grid; grid-template-columns: 40px 1fr 42px; align-items:center; gap:9px; }
.bar .bl { font-family:'Oswald'; font-size:10.5px; letter-spacing:.08em; color:var(--muted); text-transform:uppercase; }
.bar .track { height:7px; background:#0e1620; border-radius:5px; overflow:hidden; }
.bar .fill { height:100%; border-radius:5px; }
.bar .bv { font-family:'Spline Sans Mono'; font-size:11.5px; text-align:right; color:var(--chalk); }
.tags { display:flex; flex-wrap:wrap; gap:6px; }
.tag { font-family:'Oswald'; font-weight:500; font-size:10.5px; letter-spacing:.05em; text-transform:uppercase;
  padding:4px 9px; border-radius:20px; border:1px solid; }
.tag.s { color: var(--turf-soft); border-color: rgba(63,174,107,.4); background: rgba(63,174,107,.10); }
.tag.w { color: var(--bad-soft); border-color: rgba(224,83,61,.4); background: rgba(224,83,61,.10); }
.tag.n { color: var(--muted); border-color: var(--line); background: rgba(255,255,255,.02); }

/* ---------- Scouting card v2 (issue #119) ----------
   Season header → 6 stat tiles (AVG·RBI·SLG·SB·FPCT·OBP) → a clickable picture area
   (coach photo, persisted per player in localStorage) → number/name + award trophies →
   descriptive tags pinned to the bottom. Distinct selectors so the redesign sits alongside
   the legacy .pcard rules above. */
.pcard-v2 { gap: 14px; }
.pc-season { font-family:'Oswald'; font-weight:600; font-size:13px; letter-spacing:.10em;
  text-transform:uppercase; color:var(--clay-soft); text-align:center; }
.pc-tiles { display:grid; grid-template-columns: repeat(3,1fr); gap:8px; }
.ptile { border:1px solid var(--line); border-radius:11px; padding:9px 6px; text-align:center;
  background: rgba(255,255,255,.02); }
.ptile .pt-l { font-size:9.5px; color:var(--dim); font-family:'Oswald'; letter-spacing:.12em; text-transform:uppercase; }
.ptile .pt-v { font-family:'Spline Sans Mono'; font-weight:600; font-size:17px; margin-top:3px; color:var(--chalk); }
.pc-pic { position:relative; border:2px dashed var(--line); border-radius:13px; overflow:hidden;
  aspect-ratio: 4 / 3; display:flex; align-items:center; justify-content:center; cursor:pointer;
  background: rgba(255,255,255,.015); transition: border-color .15s ease, background .15s ease; }
.pc-pic:hover, .pc-pic:focus-visible { border-color: var(--clay); background: rgba(217,102,43,.06); outline:none; }
.pc-pic.has-img { border-style:solid; cursor:default; }
.pc-add { display:flex; flex-direction:column; align-items:center; gap:5px; color:var(--dim); pointer-events:none; }
.pc-plus { width:32px; height:32px; border-radius:50%; border:1.5px solid currentColor;
  display:flex; align-items:center; justify-content:center; font-size:22px; line-height:1; font-weight:300; }
.pc-add-l { font-family:'Oswald'; font-size:11px; letter-spacing:.08em; text-transform:uppercase; }
.pc-img { width:100%; height:100%; object-fit:cover; display:block; }
.pc-change { position:absolute; right:8px; bottom:8px; font-family:'Oswald'; font-size:10.5px;
  letter-spacing:.06em; text-transform:uppercase; color:var(--chalk); background:rgba(12,17,23,.72);
  border:1px solid var(--line); border-radius:16px; padding:4px 10px; cursor:pointer; }
.pc-change:hover { background:rgba(12,17,23,.9); border-color:var(--clay); }
.pc-id { display:flex; align-items:center; gap:10px; }
.pc-id .jersey { font-family:'Anton'; font-size:16px; color:#0c1117; width:38px; height:38px; border-radius:10px;
  display:flex; align-items:center; justify-content:center; flex:0 0 auto;
  background: linear-gradient(160deg, #fff, #c4d2db); }
.pc-name { font-family:'Oswald'; font-weight:600; font-size:19px; line-height:1.05; min-width:0; }
.pc-id .pcard-trophies { margin-top:0; margin-left:auto; }
@media (max-width: 600px){ .pc-tiles{ grid-template-columns: repeat(3,1fr);} }

footer { margin-top: 54px; padding-top: 22px; border-top: 1px solid var(--line); color: var(--dim); font-size: 12px; display:flex; flex-wrap:wrap; gap: 6px 18px; }
footer b { color: var(--muted); }
.controls { display:flex; gap:10px; align-items:center; margin-bottom:14px; flex-wrap:wrap;}
.controls .pill { font-family:'Oswald'; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--muted);
  border:1px solid var(--line); background:var(--panel); padding:7px 13px; border-radius:20px; cursor:pointer; }
.controls .pill.on { color:var(--bg); background:var(--clay); border-color:var(--clay); font-weight:600;}

/* ---------- Statistics section tabs (issue #102) ---------- */
/* One rail entry ("Statistics") now covers Leaders / Full Board / Pitching / Fielding; this
   underline tab strip sits across the top of each of those views to switch between them. */
.stat-tabs { display:flex; gap:2px; flex-wrap:wrap; align-items:flex-end;
  margin: 2px 0 4px; border-bottom:2px solid var(--line); }
.stat-tabs a { font-family:'Oswald'; font-size:13.5px; font-weight:500; letter-spacing:.04em;
  text-transform:uppercase; color:var(--muted); text-decoration:none; white-space:nowrap;
  padding:10px 18px; border-bottom:2px solid transparent; margin-bottom:-2px;
  transition:color .15s ease, border-color .15s ease; }
.stat-tabs a:hover { color:var(--chalk); }
.stat-tabs a.active { color:var(--clay-soft); border-bottom-color:var(--clay); font-weight:600; }
/* Pull the first section heading up snug under the tabs (its default 46px is too airy here). */
.stat-tabs + .sec-head { margin-top: 22px; }

/* ---------- Tooltips ---------- */
[data-tip] { cursor: help; }
thead th[data-tip] { text-decoration: underline dotted rgba(130,152,168,.45); text-underline-offset: 4px; }
.tip {
  position: fixed; z-index: 200; max-width: 270px; pointer-events: none;
  background: linear-gradient(180deg, #1f2c39, #111922);
  color: #eef3f5; border: 1px solid var(--clay); border-radius: 11px;
  padding: 11px 13px; font-family: 'DM Sans', sans-serif; font-size: 12.5px; line-height: 1.45;
  box-shadow: 0 16px 44px -14px rgba(0,0,0,.85);
  opacity: 0; transform: translateY(5px); transition: opacity .12s ease, transform .12s ease;
}
.tip.show { opacity: 1; transform: translateY(0); }
.tip b { display:block; font-family:'Oswald',sans-serif; font-weight:600; letter-spacing:.04em;
  color: var(--clay-soft); text-transform: uppercase; font-size: 11.5px; margin-bottom: 3px; }
.tiphint {
  margin-top: 16px; font-family:'Spline Sans Mono', monospace; font-size: 12.5px; color: var(--clay-soft);
  display:flex; align-items:center; gap:9px;
}
.tiphint .dot { width:7px; height:7px; border-radius:50%; background:var(--clay); box-shadow:0 0 0 4px rgba(217,102,43,.18); flex:0 0 auto; }

/* ---------- Glossary ---------- */
.gloss { display:grid; grid-template-columns: repeat(3,1fr); gap: 10px; }
@media (max-width: 880px){ .gloss{ grid-template-columns: repeat(2,1fr);} }
@media (max-width: 560px){ .gloss{ grid-template-columns: 1fr;} }
.gitem { background: linear-gradient(165deg,var(--panel),var(--bg-2)); border:1px solid var(--line);
  border-radius: 11px; padding: 11px 14px; display:flex; gap:12px; align-items:baseline; }
.gitem .ab { font-family:'Spline Sans Mono',monospace; font-weight:600; color: var(--clay-soft);
  font-size: 13px; min-width: 44px; flex:0 0 auto; }
.gitem .df { color: var(--muted); font-size: 12.5px; }
.gitem .df b { color: var(--chalk); font-weight:600; }

/* ---------- Top bar / theme toggle ---------- */
/* theme toggle — icon-only, pinned to the top-right of the masthead */
.themebtn {
  position:absolute; top:20px; right:0; z-index:2;
  display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px;
  color:var(--muted); background:var(--panel); border:1px solid var(--line); border-radius:50%; cursor:pointer;
  transition: color .15s, border-color .15s, background .15s, box-shadow .15s;
}
.themebtn:hover { color:var(--chalk); border-color:var(--clay); box-shadow:0 6px 18px -10px rgba(217,102,43,.6); }
.themebtn .ic { font-size:15px; line-height:1; }

/* team switcher — shown only when a coach has more than one team */
.teamswitch {
  margin-top:6px; font-family:'Oswald',sans-serif; font-size:12px; letter-spacing:.04em;
  color:var(--chalk); background:var(--panel); border:1px solid var(--line); border-radius:8px;
  padding:4px 8px; cursor:pointer;
}
.teamswitch:hover { border-color:var(--clay); }

/* ---------- Light theme ---------- */
body.light {
  --bg:#eceae4; --bg-2:#ffffff; --panel:#ffffff; --panel-2:#f4f6f8;
  --line:#dce0e5; --chalk:#1d2630; --muted:#586571; --dim:#909daa;
  --card:#ffffff; --ink:#1d2630;
  --shadow: 0 18px 40px -24px rgba(40,55,71,.40);
}
body.light { background:
    radial-gradient(1200px 600px at 80% -10%, rgba(217,102,43,.10), transparent 60%),
    radial-gradient(900px 500px at -10% 10%, rgba(63,174,107,.09), transparent 55%),
    var(--bg); }
body.light::before { opacity:.5; mix-blend-mode:multiply; }
body.light .title { background:linear-gradient(180deg,#222a32,#55616c); -webkit-background-clip:text; background-clip:text; color:transparent; }
body.light thead th { background:linear-gradient(180deg,#f1f3f5,#e6eaee); color:var(--dim); }
body.light tbody td.player { background:var(--panel); }
body.light tbody tr:nth-child(even) td.player { background:#f3f5f7; }
body.light tbody tr:hover td.player { background:#eaf0f4; }
body.light tbody td { border-bottom-color:#e9edf1; }
body.light tbody tr:hover td { background: rgba(217,102,43,.06); }
body.light tfoot td, body.light tfoot td.player { background:#eef1f4; }
body.light .bar .track { background:#e7ebef; }
body.light .lcard .num { color:var(--dim); }

/* ---------- Lineup ---------- */
.lineup-intro { color: var(--muted); font-size: 14px; line-height: 1.6; margin-bottom: 16px; max-width: min(100%, 920px); }
.lineup-intro b { color: var(--chalk); }
.lineup { display: flex; flex-direction: column; gap: 8px; }
.lurow {
  display: grid; grid-template-columns: 46px 40px 1fr auto; align-items: center; gap: 14px;
  background: linear-gradient(100deg, var(--panel), var(--bg-2)); border: 1px solid var(--line);
  border-left: 3px solid var(--clay); border-radius: 12px; padding: 11px 16px;
}
.lurow .spot { font-family:'Anton',sans-serif; font-size: 26px; color: var(--clay-soft); line-height: 1; text-align:center; }
.lurow .jersey { font-family:'Anton'; font-size:14px; color:#0c1117; background:linear-gradient(160deg,#fff,#c4d2db);
  width:34px; height:34px; border-radius:9px; display:flex; align-items:center; justify-content:center; }
.lurow .info .nm { font-family:'Oswald',sans-serif; font-weight:600; font-size:17px; }
.lurow .info .why { color: var(--muted); font-size: 12.5px; line-height:1.4; }
.lurow .info .why b { color: var(--turf-soft); font-weight:600; }
.lurow .slash { font-family:'Spline Sans Mono',monospace; font-size:12.5px; color:var(--chalk); text-align:right; white-space:nowrap; }
.lurow .slash .role { display:block; font-family:'Oswald'; font-size:9.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--dim); margin-bottom:2px; }
@media (max-width:620px){ .lurow{ grid-template-columns: 38px 34px 1fr; } .lurow .slash{ display:none; } }

/* Manual (coach-arranged) lineup: drag handle + ▲▼ buttons in the trailing column. */
.lineup-status { font-family:'Oswald'; font-size:12px; letter-spacing:.04em; color:var(--dim); margin-left:4px; }
.lineup-status.ok { color:var(--turf-soft); }
.lineup-status.err { color:var(--clay); }
.lineup-loading { color:var(--muted); font-size:13px; padding:8px 2px; }
.lurow.manual { cursor:grab; user-select:none; }
.lurow.manual .why { font-family:'Spline Sans Mono',monospace; font-size:12px; color:var(--chalk); }
.lurow.manual.dragging { opacity:.45; cursor:grabbing; }
.lurow.manual.drop-into { border-left-color:var(--turf); box-shadow: inset 0 0 0 1px var(--turf); }
.mvbtns { display:flex; align-items:center; gap:6px; justify-content:flex-end; }
.mvb { font-size:12px; line-height:1; width:28px; height:26px; border-radius:8px; cursor:pointer;
  color:var(--muted); border:1px solid var(--line); background:var(--panel); }
.mvb:hover:not(:disabled) { color:var(--bg); background:var(--clay); border-color:var(--clay); }
.mvb:disabled { opacity:.35; cursor:default; }
.mvgrip { color:var(--dim); font-size:18px; cursor:grab; padding:0 2px; }
@media (max-width:620px){ .lurow.manual{ grid-template-columns: 38px 34px 1fr auto; } }

/* ---------- Rotation grid ---------- */
.rot-wrap { overflow-x:auto; }
table.rot { border-collapse: collapse; width:100%; min-width: 720px; }
table.rot th, table.rot td { border:1px solid var(--line); padding:9px 8px; text-align:center; font-size:12.5px; }
table.rot thead th { background:linear-gradient(180deg,#1d2935,#16202b); font-family:'Oswald'; text-transform:uppercase;
  letter-spacing:.06em; color:var(--muted); font-size:11.5px; }
body.light table.rot thead th { background:linear-gradient(180deg,#f1f3f5,#e6eaee); }
table.rot td.pos { font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--clay-soft);
  background: var(--panel-2); text-align:left; white-space:nowrap; font-size:11.5px; position:sticky; left:0; }
table.rot td.pname { font-family:'DM Sans'; font-weight:500; color:var(--chalk); }
table.rot td.pit { background: rgba(217,102,43,.14); font-weight:600; }
table.rot tr.bench td { background: var(--bg-2); }
table.rot tr.bench td.pos { color: var(--dim); }
table.rot td.bench-names { font-family:'DM Sans'; color: var(--muted); text-align:left; font-style:italic; }
table.rot tfoot td { font-family:'Spline Sans Mono',monospace; font-size:11.5px; color:var(--muted); background:var(--panel-2); }
.rot-legend { display:flex; gap:16px; flex-wrap:wrap; margin-top:12px; color:var(--muted); font-size:12px; }
.rot-legend .sw{ display:inline-flex; align-items:center; gap:6px; }
.rot-legend .chip{ width:22px; height:12px; border-radius:3px; display:inline-block; }

/* ---------- Export ---------- */
.table-export { margin-top:18px; }                 /* export bar mounted under a stat table */
.export-card { background: linear-gradient(165deg,var(--panel),var(--bg-2)); border:1px solid var(--line); border-radius:16px; padding:20px; }
.export-card + .export-card { margin-top:16px; }
.export-row { display:flex; gap:10px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
.xbtn { font-family:'Oswald',sans-serif; font-weight:600; font-size:12.5px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--bg); background:var(--clay); border:1px solid var(--clay); border-radius:9px; padding:10px 16px; cursor:pointer;
  display:inline-flex; align-items:center; gap:8px; transition: filter .15s, transform .1s; }
.xbtn:hover { filter:brightness(1.08); } .xbtn:active{ transform: translateY(1px); }
.xbtn.alt { color:var(--chalk); background:transparent; border-color:var(--line); }
.xbtn.alt:hover { border-color:var(--clay); color:var(--clay-soft); }
.export-hint { color:var(--muted); font-size:12.5px; margin-bottom:12px; }
.export-hint b { color:var(--chalk); }
.toast { position:fixed; bottom:26px; left:50%; transform:translateX(-50%) translateY(20px); z-index:300;
  background:var(--turf); color:#06140c; font-family:'Oswald'; font-weight:600; letter-spacing:.04em; text-transform:uppercase;
  font-size:13px; padding:11px 22px; border-radius:30px; box-shadow:0 14px 36px -12px rgba(0,0,0,.7);
  opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; }
.toast.show { opacity:1; transform:translateX(-50%) translateY(0); }

/* ---------- Coach's primer ---------- */
.primer { display:grid; grid-template-columns: repeat(2,1fr); gap:16px; }
@media (max-width:780px){ .primer{ grid-template-columns:1fr; } }
.pcat { background:linear-gradient(168deg,var(--panel),var(--bg-2)); border:1px solid var(--line); border-radius:16px; padding:18px 20px; }
.pcat h3 { font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.06em; font-size:15px; color:var(--clay-soft);
  display:flex; align-items:center; gap:9px; margin-bottom:12px; }
.pcat h3 .ico{ font-size:17px; }
.pcat dl { display:grid; grid-template-columns:auto 1fr; gap:7px 12px; margin:0; }
.pcat dt { font-family:'Spline Sans Mono',monospace; font-weight:600; color:var(--chalk); font-size:12.5px; }
.pcat dd { margin:0; color:var(--muted); font-size:12.5px; line-height:1.45; }
.pcat .bench { margin-top:13px; padding-top:12px; border-top:1px solid var(--line); font-size:12px; color:var(--dim); }
.pcat .bench b{ color:var(--muted); }

/* ---------- Callout + Tournament plan ---------- */
.callout { background:linear-gradient(165deg, rgba(217,102,43,.10), var(--bg-2)); border:1px solid var(--line);
  border-left:3px solid var(--clay); border-radius:14px; padding:16px 20px; margin-bottom:18px; }
.callout.turf { border-left-color:var(--turf); background:linear-gradient(165deg, rgba(63,174,107,.10), var(--bg-2)); }
.callout.warn { border-left-color:var(--warn); background:linear-gradient(165deg, rgba(232,177,63,.12), var(--bg-2)); }
/* Pitch-count / rest advisories — red, so a coach can't miss a rule-bending pin. */
.callout.danger { border-left-color:var(--bad); background:linear-gradient(165deg, rgba(224,83,61,.13), var(--bg-2)); }
.callout h4 { font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.08em; font-size:13px;
  color:var(--clay-soft); margin-bottom:8px; display:flex; align-items:center; gap:8px; }
.callout.turf h4 { color:var(--turf-soft); }
.callout.warn h4 { color:var(--warn); }
.callout.danger h4 { color:var(--bad-soft); }
.callout p { color:var(--muted); font-size:13px; line-height:1.55; }
.callout p + p { margin-top:8px; }
.callout b { color:var(--chalk); font-weight:600; }
.callout .hl { color:var(--turf-soft); font-weight:600; }
.callout ul { margin:6px 0 0; padding-left:18px; color:var(--muted); font-size:12.7px; line-height:1.5; }
.callout li { margin:4px 0; } .callout li b{ color:var(--chalk); }

/* Day columns stack full-width (one per row) so the "Fielding by inning" grid — positions
   across, plus a ⇄ switch in every cell — is always fully visible without horizontal
   scrolling. min-width:0 on the items (and gamecards below) keeps the inner table from
   forcing the page wider than the screen. */
.tourney { display:grid; grid-template-columns: 1fr; gap:16px; }
.dayblock { background:linear-gradient(170deg,var(--panel),var(--bg-2)); border:1px solid var(--line); border-radius:16px;
  padding:16px; display:flex; flex-direction:column; gap:12px; min-width:0; }
.dayhead { display:flex; align-items:baseline; justify-content:space-between; border-bottom:1px solid var(--line); padding-bottom:10px; }
.dayhead .d { font-family:'Anton'; font-size:21px; color:var(--clay-soft); text-transform:uppercase; line-height:1; }
.dayhead .meta { font-family:'Spline Sans Mono'; font-size:11px; color:var(--dim); }
.gamecard { background:var(--panel-2); border:1px solid var(--line); border-radius:11px; padding:11px 13px; min-width:0; }
.gamecard + .gamecard { margin-top:2px; }
.gamecard .gh { display:flex; align-items:center; justify-content:space-between; margin-bottom:7px; }
.gamecard .gh .g { font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.07em; font-size:13px; color:var(--chalk); }
.gamecard .gh .imp { font-family:'Spline Sans Mono'; font-size:9.5px; color:var(--clay-soft); border:1px solid var(--line); border-radius:20px; padding:2px 8px; text-transform:uppercase; letter-spacing:.05em; }
.arm { display:grid; grid-template-columns: 1fr auto auto; gap:10px; align-items:center; padding:5px 0; border-bottom:1px dashed var(--line); }
.arm:last-of-type{ border-bottom:none; }
.arm .an { font-family:'DM Sans'; font-weight:600; font-size:13px; } .arm .an .jn{ color:var(--dim); font-size:11px; font-family:'Spline Sans Mono'; }
.arm .inn { font-family:'Spline Sans Mono'; font-size:11px; color:var(--muted); }
.arm .pc { font-family:'Spline Sans Mono'; font-size:11.5px; color:var(--clay-soft); min-width:46px; text-align:right; }
/* The model estimate shown beside a coach-set pitch count; red when it runs over what was set. */
.arm .pc .pc-est { color:var(--muted); font-size:10px; }
.arm .pc .pc-est.over { color:var(--bad-soft); font-weight:600; }
.arm .pc .pc-set { color:var(--turf-soft); }
.arm.pinned { background:rgba(127,179,127,.07); }
.arm .an .tb-switch { font-family:'Spline Sans Mono'; font-size:12px; line-height:1; cursor:pointer; margin-right:7px;
  border:1px solid var(--line); background:var(--panel-2); color:var(--muted); border-radius:6px; padding:1px 5px; }
.arm .an .tb-switch:hover { color:var(--chalk); border-color:var(--clay-soft); }
.arm .an .tb-switch.on { color:var(--chalk); border-color:var(--clay-soft); background:rgba(127,179,127,.18); }
.arm .an .tb-switch.open { color:var(--chalk); border-color:var(--clay-soft); background:rgba(127,179,127,.18); }
.arm .an .tb-pinflag { font-family:'Spline Sans Mono'; font-size:9px; text-transform:uppercase; letter-spacing:.06em;
  color:var(--clay-soft); border:1px solid var(--line); border-radius:20px; padding:1px 6px; margin-left:6px; }
.tb-swrow { padding:5px 0 7px; border-bottom:1px dashed var(--line); font-size:12px; color:var(--muted); font-family:'DM Sans';
  display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; }
/* The ⇄ button toggles this row's [hidden]; the author display:flex above otherwise
   beats the UA [hidden]{display:none}, so without this the row never hides (the button
   looks frozen). Keep specific to win the cascade. */
.tb-swrow[hidden] { display:none; }
.tb-swrow select { margin-left:6px; background:var(--panel-2); color:var(--chalk); border:1px solid var(--line);
  border-radius:6px; padding:3px 6px; font-family:'DM Sans'; font-size:12px; }
.tb-swrow .tb-swinn { white-space:nowrap; }
.tb-swrow .tb-swest { font-family:'Spline Sans Mono'; font-size:11.5px; color:var(--turf-soft); }
.tb-swrow .tb-swest.over { color:var(--warn); font-weight:600; }
/* Estimate runs higher than the coach's set count — flag it red. */
.tb-swrow .tb-swest.danger { color:var(--bad-soft); font-weight:600; }
.tb-swrow .tb-swpc { white-space:nowrap; }
.tb-swrow .tb-swpc input { width:62px; margin-left:6px; background:var(--panel-2); color:var(--chalk);
  border:1px solid var(--line); border-radius:6px; padding:3px 6px; font-family:'Spline Sans Mono'; font-size:12px; }
.catline { margin-top:9px; padding-top:9px; border-top:1px solid var(--line); font-size:12.5px; color:var(--muted); font-family:'DM Sans'; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.catline .cl { font-family:'Oswald'; text-transform:uppercase; letter-spacing:.1em; font-size:10px; color:var(--dim); }
.catline b{ color:var(--chalk); } .catline .mask{ font-size:13px; }
.catline .inn { font-family:'Spline Sans Mono'; font-size:11px; color:var(--muted); }
.catline .catsep { color:var(--dim); }
.catline .tb-cswitch, .catline .tb-cadd { font-family:'Spline Sans Mono'; font-size:11px; line-height:1; cursor:pointer;
  border:1px solid var(--line); background:var(--panel-2); color:var(--muted); border-radius:6px; padding:2px 7px; }
.catline .tb-cswitch:hover, .catline .tb-cadd:hover { color:var(--chalk); border-color:var(--clay-soft); }
.catline .tb-cswitch.on { color:var(--chalk); border-color:var(--clay-soft); background:rgba(127,179,127,.18); }
.tb-crow { padding:5px 0 7px; font-size:12px; color:var(--muted); font-family:'DM Sans';
  display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; }
.tb-crow select { margin-left:6px; background:var(--panel-2); color:var(--chalk); border:1px solid var(--line);
  border-radius:6px; padding:3px 6px; font-family:'DM Sans'; font-size:12px; }
.tb-crow .tb-cremove { font-family:'Spline Sans Mono'; font-size:11px; line-height:1; cursor:pointer;
  border:1px solid var(--line); background:var(--panel-2); color:var(--muted); border-radius:6px; padding:2px 7px; }
.tb-crow .tb-cremove:hover { color:var(--warn); border-color:var(--warn); }

table.mini { border-collapse:collapse; width:100%; min-width:0; }
table.mini th, table.mini td { border:1px solid var(--line); padding:8px 9px; text-align:center; font-size:12.5px; font-family:'Spline Sans Mono'; white-space:nowrap; }
table.mini thead th { background:linear-gradient(180deg,#1d2935,#16202b); font-family:'Oswald'; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); font-size:11px; }
body.light table.mini thead th { background:linear-gradient(180deg,#f1f3f5,#e6eaee); }
table.mini td.lab, table.mini th.lab { text-align:left; font-family:'Oswald'; text-transform:uppercase; letter-spacing:.04em; color:var(--clay-soft); font-size:11px; }
table.mini tr.maxrow td { background:var(--panel-2); font-weight:600; color:var(--chalk); }
table.mini td.av-go{ color:var(--turf-soft); } table.mini td.av-rest{ color:var(--warn); } table.mini td.av-no{ color:var(--dim); }
.twocol { display:grid; grid-template-columns:1fr 1fr; gap:16px; }
@media (max-width:780px){ .twocol{ grid-template-columns:1fr; } }
.minicard { background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:16px; box-shadow:var(--shadow); }
.minicard h4 { font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.06em; font-size:13px; color:var(--clay-soft); margin-bottom:11px; }
.minicard .note { color:var(--dim); font-size:11.5px; margin-top:9px; line-height:1.45; }

/* ---------- Pitch availability ---------- */
.avail-head{display:flex;align-items:baseline;gap:10px;margin-top:26px}
.avail-head h3{margin:0;font-size:1.05rem}
.avail-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-top:6px}
.avail-card{border:1px solid var(--line);border-radius:11px;padding:11px 12px;background:var(--card)}
.avail-card.ok{border-color:#3fae6b} .avail-card.partial{border-color:#c9a13b} .avail-card.rest{opacity:.72}
.ac-top{display:flex;align-items:center;gap:7px;font-weight:600;font-size:.9rem}
.ac-top .jersey{font-size:.8em}
/* Reserve two lines for the name so short and wrapped names give every card the same
   height — a long name wraps (and clamps) at two lines instead of growing the card. */
.ac-name{flex:1;line-height:1.15;min-height:2.3em;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}
.ac-big{font-size:1.8rem;font-weight:800;line-height:1.1;margin-top:4px}
.avail-card.ok .ac-big{color:#3fae6b} .avail-card.partial .ac-big{color:#c9a13b} .avail-card.rest .ac-big{color:var(--muted)}
.ac-sub{font-size:.8rem;color:var(--muted)} .ac-last{font-size:.72rem;color:var(--muted);margin-top:6px}
.avail-empty{color:var(--muted)}

/* ===================== schedule page (head-to-head cards) ===================== */
.sched-head{display:flex;align-items:center;gap:14px;margin-top:8px}
.schedbtn{font-family:'Oswald';font-weight:600;text-transform:uppercase;letter-spacing:.08em;font-size:12px;
  border:1px solid var(--line);border-radius:9px;padding:8px 16px;background:linear-gradient(180deg,var(--panel),var(--bg-2));
  color:var(--chalk);cursor:pointer;transition:border-color .15s,color .15s}
.schedbtn:hover{border-color:var(--clay);color:var(--clay-soft)} .schedbtn:disabled{opacity:.5;cursor:default}

.match-list{display:flex;flex-direction:column;gap:12px;margin-top:14px}
.match-card{position:relative;background:linear-gradient(170deg,var(--panel) 0%,var(--bg-2) 100%);
  border:1px solid var(--line);border-radius:16px;padding:13px 22px 16px;box-shadow:var(--shadow);overflow:hidden}
/* the soonest game gets an accent spine */
.match-card.next::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--clay)}
.match-card.next{border-color:#3a2c22}

.match-top{display:flex;align-items:center;gap:12px;margin-bottom:14px;
  font-family:'Oswald';text-transform:uppercase;letter-spacing:.1em;font-size:11px;color:var(--muted)}
.match-ha{border:1px solid var(--line);border-radius:6px;padding:3px 9px;font-weight:600;font-size:10px;letter-spacing:.12em}
.match-ha.home{color:var(--turf-soft);border-color:#2f6b48;background:rgba(63,174,107,.08)}
.match-ha.away{color:var(--clay-soft);border-color:#7a4423;background:rgba(217,102,43,.08)}
.match-date b{color:var(--chalk);font-weight:600} .match-date{color:var(--clay-soft)}
.match-venue{margin-left:auto;color:var(--dim);letter-spacing:.06em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:46%}

.match-body{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:18px}
.side{display:flex;align-items:center;gap:14px;min-width:0}
.side.away{justify-content:flex-end;text-align:right}
.side.home{justify-content:flex-start;text-align:left}
.t-logo{width:52px;height:52px;flex:0 0 auto;object-fit:contain;border-radius:10px;
  background:var(--bg);border:1px solid var(--line);padding:4px}
.t-logo.ph{background:repeating-linear-gradient(135deg,var(--bg-2),var(--bg-2) 6px,var(--panel) 6px,var(--panel) 12px)}
.t-name{font-family:'Oswald';font-weight:600;font-size:17px;line-height:1.1;color:var(--chalk);
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
/* name + season-record line stacked on each side of a matchup */
.t-meta{display:flex;flex-direction:column;gap:5px;min-width:0}
.side.away .t-meta{align-items:flex-end}
.side.home .t-meta{align-items:flex-start}
.t-rec{display:inline-flex;align-items:baseline;gap:7px;font-family:'Spline Sans Mono',monospace;
  font-size:12px;line-height:1;white-space:nowrap;cursor:help}
.rec-wlt{color:var(--chalk);font-weight:600;letter-spacing:.02em}
.rec-rank{color:var(--muted);font-size:11px;letter-spacing:.04em}
.rec-diff{color:var(--dim);font-size:11px}
.rec-diff.pos{color:var(--turf-soft)} .rec-diff.neg{color:var(--clay-soft)}
/* our team stands out */
.side.us .t-name{color:var(--clay-soft)}
.side.us .rec-wlt{color:var(--clay-soft)}
.side.us .t-logo{border-color:var(--clay);box-shadow:0 0 0 2px rgba(217,102,43,.35)}

.vs{display:flex;align-items:center;justify-content:center;gap:8px;min-width:78px}
.vs-x{font-family:'Anton';font-size:22px;letter-spacing:.04em;color:var(--dim)}
.vs .s{font-family:'Spline Sans Mono';font-weight:600;font-size:30px;line-height:1;color:var(--muted)}
.vs .s.win{color:var(--chalk)} .vs .dash{color:var(--dim);font-style:normal;font-size:20px}

.sched-empty{color:var(--muted);padding:18px 0}

/* The Team — home roster card (issue #108): the full roster (player # + name) from the ingested
   GameChanger data, plus coaches/managers pulled best-effort from Spordle. Empty before the data
   loads (and when there are no players), so :empty hides it to avoid a flash of an empty card. */
.theteam{margin:22px 0 26px;background:linear-gradient(150deg,var(--panel) 0%,var(--bg-2) 100%);
  border:1px solid var(--line);border-top:3px solid var(--clay);border-radius:18px;
  padding:18px 26px 22px;box-shadow:var(--shadow)}
.theteam:empty{display:none;border:none;padding:0;margin:0;box-shadow:none}
.tt-head{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}
.tt-title{font-family:'Anton';text-transform:uppercase;letter-spacing:.08em;font-size:20px;color:var(--clay);margin:0}
.tt-count{font-family:'Oswald';text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:600;color:var(--muted)}
.tt-roster{list-style:none;margin:0;padding:0;display:grid;
  grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:12px;overflow:hidden}
.tt-player{display:flex;align-items:center;gap:10px;padding:10px 14px;
  background:linear-gradient(180deg,var(--panel),var(--bg-2))}
.tt-num{font-family:'Spline Sans Mono';font-weight:600;font-size:14px;color:var(--clay-soft);
  min-width:34px;text-align:right}
.tt-name{font-size:14px;color:var(--chalk);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tt-staff{display:flex;flex-wrap:wrap;gap:26px;margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}
.tt-group{min-width:160px}
.tt-glabel{font-family:'Oswald';text-transform:uppercase;letter-spacing:.12em;font-size:11px;font-weight:600;color:var(--dim);margin-bottom:8px}
.tt-people{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.tt-person{display:flex;align-items:baseline;gap:10px;justify-content:space-between}
.tt-pname{font-size:14px;color:var(--chalk)}
.tt-role{font-family:'Oswald';text-transform:uppercase;letter-spacing:.08em;font-size:10.5px;color:var(--muted);white-space:nowrap}
@media (max-width:640px){
  .theteam{padding:14px 16px 16px}
  .tt-roster{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))}
}

/* Next Up hero (home landing) */
.nextup{margin:22px 0 26px}
.nu-loading{color:var(--muted);font-family:'Oswald';letter-spacing:.08em;text-transform:uppercase;font-size:12px;padding:18px 0}
.nextup-card{display:block;text-decoration:none;color:inherit;position:relative;overflow:hidden;
  background:linear-gradient(150deg,var(--panel) 0%,var(--bg-2) 100%);
  border:1px solid var(--line);border-top:3px solid var(--clay);border-radius:18px;
  padding:18px 26px 20px;box-shadow:var(--shadow);transition:border-color .15s,transform .15s}
.nextup-card:hover{border-color:#3a2c22;border-top-color:var(--clay-soft);transform:translateY(-1px)}

/* Carousel: a swipeable rail of upcoming games. The centred card is sharp; its neighbours peek
   in blurred + dimmed so it's obvious there's more to the right. Card width and the track's side
   padding are both sized off the carousel width (container-query units) so the maths stays stable:
   88cqw card + 6cqw gutter each side leaves the first/last card able to sit dead-centre at
   scrollLeft 0 — without the gutter the first card can't reach centre (no room to scroll left of
   zero) and rests flush-left until a real left neighbour exists. */
.nu-carousel{position:relative;container-type:inline-size}
.nu-track{display:flex;gap:18px;overflow-x:auto;scroll-snap-type:x mandatory;
  padding:8px 2px 14px;position:relative;scrollbar-width:none;-ms-overflow-style:none}
.nu-track::-webkit-scrollbar{display:none}
.nu-carousel:not(.single) .nu-track{padding-inline:6cqw}
.nu-slide{flex:0 0 88cqw;scroll-snap-align:center;cursor:pointer;
  transition:filter .35s ease,opacity .35s ease,transform .35s ease}
.nu-carousel.single .nu-slide{flex:0 0 100%;cursor:default}
.nu-slide:not(.active){filter:blur(3px) saturate(.65) brightness(.92);opacity:.45;transform:scale(.95)}
.nu-slide.active{filter:none;opacity:1;transform:none}
.nu-slide:focus-visible{outline:2px solid var(--clay);outline-offset:3px}
.nu-arrow{position:absolute;top:50%;transform:translateY(-50%);z-index:6;
  width:38px;height:38px;display:flex;align-items:center;justify-content:center;
  font-family:'Anton',sans-serif;font-size:22px;line-height:1;color:var(--chalk);padding-bottom:3px;
  background:linear-gradient(180deg,var(--panel),var(--bg-2));border:1px solid var(--line);
  border-radius:50%;cursor:pointer;box-shadow:var(--shadow);transition:border-color .15s,color .15s,transform .1s}
.nu-arrow:hover{border-color:var(--clay);color:var(--clay-soft)}
.nu-arrow:active{transform:translateY(-50%) scale(.94)}
.nu-arrow.prev{left:-6px} .nu-arrow.next{right:-6px}
.nu-rail{display:flex;align-items:center;gap:12px;margin-top:2px}
.nu-dots{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.nu-dot{width:8px;height:8px;padding:0;border-radius:50%;border:none;cursor:pointer;
  background:var(--line);transition:background .2s,width .2s}
.nu-dot:hover{background:var(--dim)}
.nu-dot.on{background:var(--clay);width:20px;border-radius:5px}
.nu-all{margin-left:auto;font-family:'Oswald',sans-serif;text-transform:uppercase;letter-spacing:.1em;
  font-size:11.5px;font-weight:600;color:var(--clay-soft);text-decoration:none;white-space:nowrap}
.nu-all:hover{color:var(--clay)}
@media (prefers-reduced-motion: reduce){
  .nu-slide{transition:none}
  .nu-slide:not(.active){filter:saturate(.7);opacity:.5;transform:none}
  .nu-track{scroll-behavior:auto}
}

.nu-head{display:flex;align-items:baseline;gap:12px;margin-bottom:16px}
.nu-kicker{font-family:'Anton';text-transform:uppercase;letter-spacing:.08em;font-size:20px;color:var(--clay)}
.nu-count{font-family:'Oswald';text-transform:uppercase;letter-spacing:.14em;font-size:12px;font-weight:600;color:var(--muted)}
.nu-body{gap:26px}
.nu-body .t-logo{width:68px;height:68px;border-radius:14px;padding:6px}
.nu-body .t-name{font-size:21px}
.nu-body .vs .s{font-size:38px} .nu-body .vs-x{font-size:30px} .nu-body .vs{min-width:96px}
.nu-foot{display:flex;align-items:center;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);
  font-family:'Oswald';text-transform:uppercase;letter-spacing:.1em;font-size:11.5px;color:var(--muted)}
.nu-foot .nu-when b{color:var(--chalk);font-weight:600} .nu-foot .nu-when{color:var(--clay-soft)}
.nu-foot .nu-venue{margin-left:auto;color:var(--dim);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:50%}
/* matchup-read verdict chip, from the two teams' standings */
.nu-edge{border:1px solid var(--line);border-radius:6px;padding:3px 9px;font-weight:600;font-size:10px;
  letter-spacing:.12em;cursor:help}
.nu-edge.good{color:var(--turf-soft);border-color:#2f6b48;background:rgba(63,174,107,.08)}
.nu-edge.hard{color:var(--clay-soft);border-color:#7a4423;background:rgba(217,102,43,.08)}
.nu-edge.even{color:var(--muted)}
/* records read a touch larger on the hero */
.nu-body .t-rec{font-size:13.5px;gap:9px} .nu-body .rec-rank,.nu-body .rec-diff{font-size:12px}

@media (max-width:640px){
  .match-card{padding:12px 14px 14px}
  .match-venue{display:none}
  .match-body{gap:10px}
  .t-logo{width:42px;height:42px}
  .t-name{font-size:14px}
  .vs{min-width:58px}
  .vs .s{font-size:24px}
  .nextup-card{padding:14px 16px 16px}
  .nu-body{gap:12px}
  .nu-body .t-logo{width:48px;height:48px}
  .nu-body .t-name{font-size:16px}
  .nu-body .vs{min-width:66px} .nu-body .vs .s{font-size:28px}
  .nu-foot .nu-venue{display:none}
  .t-rec{font-size:11px;gap:5px} .rec-rank,.rec-diff{font-size:10px}
  .nu-body .t-rec{font-size:11.5px;gap:6px} .nu-body .rec-rank,.nu-body .rec-diff{font-size:10.5px}
}

/* ===================== standings page (league table) ===================== */
.standings-table{width:100%;border-collapse:collapse;margin-top:14px;font-family:'Spline Sans Mono',monospace}
.standings-table thead th{font-family:'Oswald';text-transform:uppercase;letter-spacing:.08em;font-size:11px;
  font-weight:600;color:var(--muted);text-align:right;padding:8px 10px;border-bottom:1px solid var(--line);
  cursor:pointer;white-space:nowrap;user-select:none}
.standings-table thead th.team{text-align:left} .standings-table thead th.rank{cursor:default;text-align:center}
.standings-table thead th:hover{color:var(--clay-soft)} .standings-table thead th.sorted{color:var(--chalk)}
.standings-table tbody td{padding:9px 10px;text-align:right;font-size:13.5px;color:var(--chalk);
  border-bottom:1px solid var(--bg-2);vertical-align:middle}
.standings-table td.rank{text-align:center;color:var(--dim);font-size:12px;width:34px}
.standings-table td.team{text-align:left}
.standings-table td.team .t-logo{width:30px;height:30px;border-radius:7px;padding:3px;display:inline-block;vertical-align:middle}
.standings-table td.team .t-name{display:inline;font-size:14px;margin-left:10px;-webkit-line-clamp:1;vertical-align:middle}
.standings-table tbody tr:hover{background:var(--bg-2)}
.standings-table tbody tr.us{background:rgba(217,102,43,.10)}
.standings-table tbody tr.us td{color:var(--chalk)}
.standings-table tbody tr.us .t-name{color:var(--clay-soft);font-weight:700}
.standings-table tbody tr.us .t-logo{border-color:var(--clay);box-shadow:0 0 0 2px rgba(217,102,43,.35)}
.standings-table td.num.pos{color:var(--turf-soft)} .standings-table td.num.neg{color:var(--clay-soft)}
@media (max-width:640px){
  .standings-table thead th,.standings-table tbody td{padding:7px 5px;font-size:12px}
  .standings-table td.team .t-name{font-size:12.5px;max-width:96px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .standings-table td.team .t-logo{width:24px;height:24px}
}

/* ---------- Tournament builder ---------- */
.tb-form { display:flex; gap:14px; align-items:flex-end; flex-wrap:wrap; margin-bottom:18px; }
.tb-status { font-family:'Spline Sans Mono',monospace; font-size:12px; color:var(--muted); }
.tb-sub { margin-top:10px; padding-top:9px; border-top:1px solid var(--line); }
.tb-sub .cl { font-family:'Oswald',sans-serif; text-transform:uppercase; letter-spacing:.1em; font-size:10px; color:var(--dim); display:block; margin-bottom:6px; }
ol.tb-bat { margin:0; padding-left:20px; columns:2; font-family:'DM Sans',sans-serif; font-size:12.5px; color:var(--chalk); }
ol.tb-bat .jn { color:var(--dim); font-family:'Spline Sans Mono',monospace; font-size:11px; }
.tb-fld .tb-inn { font-family:'Spline Sans Mono',monospace; font-size:11.5px; color:var(--muted); padding:2px 0; }
.tb-fld .tb-inn b { color:var(--chalk); }
#tbForm{display:block;margin:16px 0;padding:22px;border:1px solid var(--line);border-radius:14px;background:var(--card)}
#tbForm>*+*{margin-top:18px}
.tb-top{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:18px}
.tb-card{display:flex;flex-direction:column;align-items:flex-start;gap:14px;padding:16px 18px;border:1px solid var(--line);border-radius:12px;background:var(--bg)}
.tb-lab{font-weight:700;font-size:.95rem}
.tb-hint{font-weight:400;color:var(--muted);font-size:.8rem;margin-left:8px}
.tb-days{display:flex;flex-wrap:wrap;gap:12px;width:100%}
.tb-day{display:flex;align-items:center;gap:9px;padding:8px 13px;border:1px solid var(--line);border-radius:11px;background:var(--card)}
.tb-dnum{font-weight:700;font-size:.9rem}
.tb-step{width:30px;height:30px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);cursor:pointer;font-size:1.15rem;line-height:1;display:flex;align-items:center;justify-content:center}
.tb-step:hover{border-color:var(--accent);color:var(--accent)}
.tb-dcount{min-width:20px;text-align:center;font-weight:800;font-size:1.05rem}
.tb-dgames{color:var(--muted);font-size:.82rem}
.tb-drop{margin-left:2px;border:none;background:none;color:var(--muted);cursor:pointer;font-size:1.2rem;line-height:1}
.tb-drop:hover{color:var(--bad,#e0533d)}
.tb-mini{padding:8px 14px;font-size:.85rem}
.tb-weekend{margin-top:2px}
.tb-weekend-note{margin:6px 0 0;font-size:.8rem;color:var(--muted)}
.tb-weekend-note.warn{color:var(--clay-soft)}
/* the Schedule page's matchup bar, sized down to sit atop a tournament game card */
.tb-match{margin:0 0 11px;padding-bottom:11px;border-bottom:1px solid var(--line)}
.tb-match .match-top{margin-bottom:9px;font-size:10px}
.tb-match .match-body{gap:12px}
.tb-match .t-logo{width:38px;height:38px;padding:3px}
.tb-match .t-name{font-size:13.5px}
.tb-match .t-rec{font-size:11px;gap:6px}
.tb-match .rec-rank,.tb-match .rec-diff{font-size:10px}
.tb-match .vs{min-width:50px}
.tb-match .vs .s{font-size:20px}
.tb-match .vs-x{font-size:18px}
.tb-fields{display:flex;gap:20px;flex-wrap:wrap}
.tb-field{display:flex;flex-direction:column;gap:6px;font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.tb-field select{padding:8px 11px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font-size:.92rem;text-transform:none;letter-spacing:0}
select option{background:var(--card);color:var(--ink)}
.tb-check{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:14px 0 4px;font-size:.92rem;color:var(--ink)}
.tb-check input{width:16px;height:16px;accent-color:var(--accent,#2e7d32)}
.tb-check .tb-hint{flex-basis:100%;margin-left:24px}
.tb-btnrow{display:flex;gap:12px;flex-wrap:wrap}
.tb-badge{font-weight:700}
.tb-panel{padding:18px;border:1px dashed var(--line);border-radius:12px;background:var(--bg)}
.tb-plab{font-size:.85rem;color:var(--muted);margin-bottom:14px}
.tb-chips{display:flex;flex-wrap:wrap;gap:10px}
.tb-chip{padding:8px 13px;border:1px solid var(--line);border-radius:999px;background:var(--card);color:var(--ink);cursor:pointer;font-size:.85rem}
.tb-chip:hover{border-color:var(--accent)}
.tb-chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.tb-chip .jn{opacity:.7;font-size:.8em;margin-right:3px}
.tb-prow{display:grid;grid-template-columns:40px repeat(5,1fr);gap:10px 12px;align-items:center}
.tb-prow+.tb-prow{margin-top:10px}
.tb-pos{font-weight:700;font-size:.88rem}
.tb-psel{width:100%;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--ink);font-size:.88rem}
.tb-pgrid-head{display:grid;grid-template-columns:40px repeat(5,1fr);gap:12px;font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px}
.tb-diff{display:flex;flex-wrap:wrap;gap:10px;width:100%}
.tb-dchip{display:inline-flex;flex-direction:column;align-items:center;gap:2px;padding:8px 14px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--ink);cursor:pointer;font-size:.8rem;line-height:1.2;min-width:60px}
.tb-dchip:hover{border-color:var(--accent)} .tb-dchip.static{cursor:default}
.tb-gl{color:var(--muted);font-size:.72rem}
.tb-dv{font-weight:800}
.tb-dchip.d-easy{border-color:#3fae6b;color:#3fae6b}
.tb-dchip.d-med{border-color:#c9a13b;color:#c9a13b}
.tb-dchip.d-hard{border-color:#e0533d;color:#e0533d}
.tb-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:18px}
.tb-poss{display:inline-flex;flex-wrap:wrap;gap:4px 9px;margin-left:4px}
.tb-pp{font-size:.76rem;color:var(--muted)} .tb-pp b{color:var(--ink)}
.tb-bench{display:block;color:var(--muted);font-size:.78rem;margin-top:2px}

/* per-game absence panel */
#tbGameAbsentPanel .tb-garow+.tb-garow{margin-top:14px;padding-top:14px;border-top:1px solid var(--line)}
.tb-glab{display:block;font-weight:700;font-size:.84rem;margin-bottom:9px}
.tb-chip.locked{opacity:.4;cursor:not-allowed;text-decoration:line-through}
.tb-chip.locked:hover{border-color:var(--line)}

/* full-plan fielding grid: positions across, innings down, players in the middle */
.tb-fld .tb-scroll{overflow-x:auto;margin-top:4px}
table.tb-ftable{border-collapse:collapse;width:100%;font-size:11.5px;font-family:'Spline Sans Mono',monospace}
table.tb-ftable th,table.tb-ftable td{border:1px solid var(--line);padding:4px 7px;text-align:center;white-space:nowrap}
table.tb-ftable th{color:var(--dim);font-weight:600;text-transform:uppercase;letter-spacing:.04em;background:var(--bg)}
table.tb-ftable td{color:var(--chalk)}
table.tb-ftable td.pit{color:var(--clay-soft)}
table.tb-ftable .tb-finn{font-weight:700;color:var(--ink)}
table.tb-ftable .tb-fbench{color:var(--muted);text-align:left;white-space:normal}
/* a position cell: the player (first name + last initial) plus a ⇄ switch and a ✕ bench button;
   the roster dropdown drops out of flow (absolute) so opening it never widens the grid. The cell
   is a drop target for a dragged bench chip (issue #100). */
table.tb-ftable td.tb-fcell{position:relative}
table.tb-ftable td.tb-fcell.pinned{background:rgba(127,179,127,.18)}
table.tb-ftable td.tb-fcell.pinned .tb-fname{font-weight:700;color:var(--ink)}
/* a bench chip is being dragged over this cell — highlight where it'll land. */
table.tb-ftable td.tb-fcell.drop-ok{outline:2px dashed var(--clay-soft);outline-offset:-2px;background:rgba(127,179,127,.12)}
.tb-fcell .tb-fname{margin-right:5px}
.tb-fbtns{display:inline-flex;gap:3px;vertical-align:middle}
.tb-fswitch,.tb-fbench-btn{font-family:'Spline Sans Mono',monospace;font-size:10px;line-height:1;cursor:pointer;
  border:1px solid var(--line);background:var(--panel-2);color:var(--muted);border-radius:5px;padding:0 4px;vertical-align:middle}
.tb-fswitch:hover{color:var(--chalk);border-color:var(--clay-soft)}
.tb-fswitch.on{color:var(--chalk);border-color:var(--clay-soft);background:rgba(127,179,127,.22)}
.tb-fbench-btn:hover:not(:disabled){color:var(--chalk);border-color:var(--clay)}
.tb-fbench-btn:disabled{opacity:.3;cursor:default}
.tb-fsel{position:absolute;z-index:8;left:0;top:100%;margin-top:2px;min-width:150px;max-width:230px;
  background:var(--card);color:var(--ink);border:1px solid var(--clay);border-radius:7px;padding:5px 7px;
  font-family:'DM Sans',sans-serif;font-size:12px;box-shadow:var(--shadow)}
/* benched players: each a draggable chip you can drop onto a position to field them. A chip the
   coach force-benched (✕ / a swap) is filled in so it reads as a deliberate pick. */
.tb-bchip{display:inline-block;margin:1px 3px 1px 0;padding:1px 6px;border:1px solid var(--line);border-radius:11px;
  background:var(--panel-2);color:var(--muted);font-size:11px;cursor:grab;white-space:nowrap;user-select:none}
.tb-bchip[draggable="true"]:hover{color:var(--chalk);border-color:var(--clay-soft)}
.tb-bchip.pinned{color:var(--ink);border-color:var(--clay-soft);background:rgba(127,179,127,.2);font-weight:700}
.tb-bchip.dragging{opacity:.45;cursor:grabbing}

/* ---------- Home overview cards ---------- */
.home-cards { display:grid; grid-template-columns: repeat(3,1fr); gap:14px; }
@media (max-width: 860px){ .home-cards{ grid-template-columns: repeat(2,1fr);} }
@media (max-width: 520px){ .home-cards{ grid-template-columns: 1fr;} }
.hcard { display:flex; align-items:center; gap:14px; text-decoration:none;
  background: linear-gradient(165deg, var(--panel), var(--bg-2)); border:1px solid var(--line);
  border-radius:14px; padding:16px 18px; color:var(--chalk); transition: border-color .15s, transform .1s, box-shadow .15s; }
.hcard:hover { border-color: var(--clay); box-shadow: var(--shadow); transform: translateY(-1px); }
.hcard .hc-n { font-family:'Anton',sans-serif; font-size:20px; color:var(--clay-soft); min-width:30px; text-align:center; }
.hcard .hc-t { font-family:'Oswald',sans-serif; font-weight:600; font-size:15px; text-transform:uppercase; letter-spacing:.03em; }

/* ---------- Section nav rail (always visible: collapsed numbers / expanded labels) ---------- */
.navrail {
  position: fixed; top: 0; left: 0; height: 100vh; z-index: 50; width: 212px;
  background: var(--bg-2); border-right: 1px solid var(--line);
  padding: 16px 10px; overflow: visible; display: flex; flex-direction: column; gap: 2px;
  transition: width .18s ease;
}
.navrail .nv-links { flex:1 1 auto; min-height:0; overflow-y:auto; overflow-x:hidden; display:flex; flex-direction:column; gap:2px; }
body.nav-collapsed .navrail { width: 60px; padding-left: 8px; padding-right: 8px; }
.navrail .nv-head { display:flex; align-items:center; gap:10px; padding:2px 6px 0; margin-bottom:14px; min-height:30px; }
.navrail .nv-title { font-family:'Anton',sans-serif; font-size:18px; color:var(--clay);
  text-transform:uppercase; letter-spacing:.04em; white-space:nowrap; overflow:hidden; }
body.nav-collapsed .navrail .nv-title { display:none; }
body.nav-collapsed .navrail .nv-head { justify-content:center; }
.nv-pin { margin-left:auto; flex:0 0 auto; display:inline-flex; align-items:center; justify-content:center;
  width:28px; height:28px; border-radius:8px; cursor:pointer; color:var(--muted);
  background:var(--panel); border:1px solid var(--line); font-size:14px; line-height:1; }
.nv-pin:hover { color:var(--chalk); border-color:var(--clay); }
body.nav-collapsed .nv-pin { margin-left:0; }
.navrail a { display:flex; gap:11px; align-items:center; text-decoration:none;
  font-family:'Oswald',sans-serif; font-size:13px; letter-spacing:.02em; color:var(--muted);
  padding:8px 9px; border-radius:9px; border-left:2px solid transparent; white-space:nowrap; }
.navrail a .nv-n { font-family:'Spline Sans Mono',monospace; font-size:11px; color:var(--dim); flex:0 0 auto;
  width:22px; height:22px; display:inline-flex; align-items:center; justify-content:center;
  border:1px solid var(--line); border-radius:6px; }
.navrail a .nv-label { overflow:hidden; text-overflow:ellipsis; }
body.nav-collapsed .navrail a { justify-content:center; padding:8px 4px; }
body.nav-collapsed .navrail a .nv-label { display:none; }
.navrail a:hover { color:var(--chalk); background:rgba(255,255,255,.03); }
.navrail a:hover .nv-n { color:var(--chalk); border-color:var(--clay); }
.navrail a.active { color:var(--clay-soft); border-left-color:var(--clay); background:rgba(217,102,43,.10); }
.navrail a.active .nv-n { color:var(--clay-soft); border-color:var(--clay); }
/* The Admin (corporate console) crossover leaves the team surface entirely, so it shouldn't read as
   just another team section. It lives in its own pinned slot at the bottom of the rail (.nv-extra,
   below the scrolling section links), fenced off with a divider and tinted the console's steel-cyan
   (--adm isn't defined off /admin → fall back to a literal) so the change of context is obvious. */
.navrail .nv-extra { flex:0 0 auto; margin-top:10px; padding-top:12px; border-top:1px solid var(--line); }
.navrail .nv-admin .nv-n { color:var(--adm,#2aa7b3); border-color:color-mix(in srgb, var(--adm,#2aa7b3) 38%, var(--line)); }
.navrail .nv-admin:hover { color:var(--adm,#2aa7b3); background:rgba(42,167,179,.08); }
.navrail .nv-admin:hover .nv-n { color:var(--adm,#2aa7b3); border-color:var(--adm,#2aa7b3); }
.navrail .nv-admin.active { color:var(--adm,#2aa7b3); border-left-color:var(--adm,#2aa7b3); background:rgba(42,167,179,.12); }
.navrail .nv-admin.active .nv-n { color:var(--adm,#2aa7b3); border-color:var(--adm,#2aa7b3); }
/* nav footer: the signed-in coach as a "dugout credential" + click-to-open account menu */
.navrail .nv-foot { position:relative; flex:0 0 auto; margin-top:10px; padding-top:10px; border-top:1px solid var(--line); }

/* monogram badge — same rounded-square + dark-gradient + thin-border language as the team
   logo and the stat cells, so it reads as part of the kit (never a flat coloured blob). */
.nv-badge {
  flex:0 0 auto; width:34px; height:34px; border-radius:11px; text-transform:uppercase;
  display:inline-flex; align-items:center; justify-content:center;
  font-family:'Anton',sans-serif; font-size:15px; letter-spacing:.02em; color:var(--clay-soft);
  background:linear-gradient(180deg, var(--panel), var(--bg-2));
  border:1px solid var(--line); box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
  transition:border-color .15s ease, color .15s ease;
}

/* the footer trigger reads like a nav row (borderless), anchored by the badge */
.nv-user {
  width:100%; display:flex; align-items:center; gap:11px; padding:7px 8px; cursor:pointer;
  background:transparent; border:1px solid transparent; border-radius:11px; text-align:left;
  transition:background .15s ease, border-color .15s ease;
}
.nv-user:hover { background:rgba(255,255,255,.03); }
.nv-user:hover .nv-badge { border-color:var(--clay); color:var(--clay); }
.nv-user[aria-expanded="true"] { background:rgba(217,102,43,.09); border-color:rgba(217,102,43,.35); }
.nv-user[aria-expanded="true"] .nv-badge { border-color:var(--clay); color:var(--clay); }
.nv-user-meta { flex:1 1 auto; min-width:0; display:flex; flex-direction:column; gap:2px; }
.nv-user-role {
  font-family:'Oswald',sans-serif; font-weight:600; text-transform:uppercase;
  font-size:9px; letter-spacing:.22em; color:var(--dim); line-height:1;
}
.nv-user-name {
  font-family:'Oswald',sans-serif; font-weight:700; text-transform:uppercase; letter-spacing:.03em;
  font-size:13px; color:var(--chalk); line-height:1.1;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.nv-user-caret { flex:0 0 auto; width:14px; height:14px; color:var(--dim);
  transition:transform .2s ease, color .15s ease; }
.nv-user:hover .nv-user-caret { color:var(--muted); }
.nv-user[aria-expanded="true"] .nv-user-caret { transform:rotate(180deg); color:var(--clay-soft); }

/* the account "pass" popover, opening upward out of the rail */
.nv-acct {
  position:absolute; left:0; right:0; bottom:calc(100% + 8px); z-index:60; min-width:210px;
  background:var(--panel); border:1px solid var(--line); border-radius:14px; box-shadow:var(--shadow);
  padding:6px; transform-origin:bottom left;
  animation:nvAcctIn .16s cubic-bezier(.2,.8,.2,1);
}
.nv-acct[hidden] { display:none; }
@keyframes nvAcctIn { from { opacity:0; transform:translateY(7px) scale(.97); } to { opacity:1; transform:none; } }
.nv-acct-id { display:flex; align-items:center; gap:11px; padding:9px 10px 12px;
  border-bottom:1px solid var(--line); margin-bottom:5px; }
.nv-acct-meta { min-width:0; display:flex; flex-direction:column; gap:4px; }
.nv-acct-name {
  font-family:'Oswald',sans-serif; font-weight:700; text-transform:uppercase; letter-spacing:.03em;
  font-size:14px; color:var(--chalk); line-height:1; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.nv-acct-mail {
  font-family:'Spline Sans Mono',monospace; font-size:10.5px; color:var(--dim); line-height:1;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.nv-acct-item {
  display:flex; align-items:center; gap:11px; padding:9px 10px; border-radius:9px; text-decoration:none;
  color:var(--muted); font-family:'Oswald',sans-serif; font-weight:500; font-size:12.5px;
  letter-spacing:.05em; text-transform:uppercase; transition:background .14s ease, color .14s ease;
}
.nv-acct-item:hover { background:rgba(217,102,43,.10); color:var(--clay-soft); }
.nv-acct-ic { flex:0 0 auto; width:16px; height:16px; color:var(--dim);
  transition:transform .14s ease, color .14s ease; }
.nv-acct-item:hover .nv-acct-ic { color:var(--clay-soft); transform:translateX(2px); }

/* collapsed rail (desktop): badge only; the popover floats out past the narrow rail */
body.nav-collapsed .nv-user { justify-content:center; padding:7px 4px; }
body.nav-collapsed .nv-user-meta, body.nav-collapsed .nv-user-caret { display:none; }
body.nav-collapsed .nv-acct { right:auto; }
/* content offset so the fixed rail never overlaps the page */
body.has-rail { padding-left: 212px; }
body.has-rail.nav-collapsed { padding-left: 60px; }
@media (max-width: 760px){
  /* On phones the collapsed rail stays put; expanding overlays instead of pushing. */
  body.has-rail { padding-left: 60px; }
  .navrail { width: 60px; padding-left:8px; padding-right:8px; }
  .navrail .nv-title { display:none; }
  .navrail a { justify-content:center; padding:8px 4px; }
  .navrail a .nv-label { display:none; }
  .nv-user { justify-content:center; padding:7px 4px; }
  .nv-user-meta, .nv-user-caret { display:none; }
  .nv-acct { right:auto; }
  body.nav-expanded .navrail { width: 212px; padding-left:10px; padding-right:10px; box-shadow: var(--shadow); }
  body.nav-expanded .navrail .nv-title { display:block; }
  body.nav-expanded .navrail a { justify-content:flex-start; padding:8px 9px; }
  body.nav-expanded .navrail a .nv-label { display:inline; }
  body.nav-expanded .nv-user { justify-content:flex-start; padding:7px 8px; }
  body.nav-expanded .nv-user-meta { display:flex; }
  body.nav-expanded .nv-user-caret { display:inline-block; }
  body.nav-expanded .nv-acct { right:0; }
}
@media print { .navrail { display:none !important; } body.has-rail { padding-left:0 !important; } }

/* ---------- Awards ---------- */
.trophy-defs { position:absolute; width:0; height:0; }
.trophy { width:100%; height:100%; display:block; overflow:visible; }
.trophy .tr-emblem { fill: rgba(20,12,4,.42); }
.trophy-mvp .tr-emblem { fill: rgba(40,24,2,.5); }
.trophy-hustle .tr-emblem { fill: rgba(60,12,4,.5); }
.trophy .tr-cup, .trophy .tr-base, .trophy .tr-stem { filter: drop-shadow(0 3px 5px rgba(0,0,0,.45)); }

/* Header showcase: the two trophies, large and proud */
.awards-trophies { display:flex; gap:16px; flex-wrap:wrap; margin:18px 0 8px; }
.trophy-card {
  flex:1 1 220px; position:relative; overflow:hidden; text-align:center;
  border:1px solid var(--line); border-radius:18px; padding:22px 18px 20px;
  background: radial-gradient(120% 90% at 50% 0%, rgba(255,255,255,.05), transparent 60%), linear-gradient(165deg, var(--panel), var(--bg-2));
  box-shadow: var(--shadow);
}
.trophy-card::after {
  content:""; position:absolute; left:50%; top:-40%; width:160%; height:120%; transform:translateX(-50%);
  background: radial-gradient(closest-side, rgba(233,196,106,.16), transparent 70%); pointer-events:none;
}
.trophy-card.hustle::after { background: radial-gradient(closest-side, rgba(239,77,34,.16), transparent 70%); }
.trophy-card .trophy-art { width:96px; height:120px; margin:0 auto 8px; position:relative; z-index:1; }
.trophy-card .trophy-name {
  font-family:'Anton'; text-transform:uppercase; letter-spacing:.06em; font-size:26px; color:var(--chalk);
  position:relative; z-index:1;
}
.trophy-card.mvp .trophy-name { color: var(--gold); }
.trophy-card.hustle .trophy-name { color: var(--clay-soft); }
.trophy-card .trophy-sub { color:var(--muted); font-size:12.5px; font-family:'Spline Sans Mono'; position:relative; z-index:1; }

/* One line per game */
.awards-list { display:flex; flex-direction:column; gap:12px; margin-top:16px; }
.award-row {
  display:flex; align-items:center; justify-content:space-between; gap:18px; flex-wrap:wrap;
  background: linear-gradient(165deg, var(--panel), var(--bg-2));
  border:1px solid var(--line); border-radius:14px; padding:14px 16px; box-shadow: var(--shadow);
}
.aw-game { display:flex; flex-direction:column; gap:6px; min-width:200px; }
.aw-date { font-family:'Spline Sans Mono'; font-size:12px; color:var(--dim); text-transform:uppercase; letter-spacing:.06em; }
.aw-date b { color:var(--clay-soft); }
.aw-match { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.aw-logo { width:30px; height:30px; border-radius:7px; object-fit:cover; border:1px solid var(--line); background:var(--panel-2); }
.aw-us { font-family:'Oswald'; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--chalk); font-size:14px; }
.aw-score {
  font-family:'Anton'; font-size:16px; padding:2px 10px; border-radius:8px; color:var(--chalk);
  border:1px solid var(--line); background:var(--panel-2);
}
.aw-score.win { color:var(--turf-soft); border-color:rgba(63,174,107,.4); background:rgba(63,174,107,.10); }
.aw-score.loss { color:var(--bad-soft); border-color:rgba(224,83,61,.4); background:rgba(224,83,61,.10); }
.aw-score.tie { color:var(--gold); border-color:rgba(233,196,106,.4); background:rgba(233,196,106,.10); }
.aw-vs { color:var(--dim); font-size:12px; font-family:'Spline Sans Mono'; }
.aw-opp { font-family:'Oswald'; text-transform:uppercase; letter-spacing:.03em; color:var(--muted); font-size:13.5px; }

.aw-picks { display:flex; gap:12px; flex-wrap:wrap; }
.aw-pick {
  display:flex; align-items:center; gap:9px; padding:7px 11px 7px 8px;
  border:1px solid var(--line); border-radius:12px; background:var(--panel-2); transition:border-color .15s, box-shadow .15s;
}
.aw-pick.hustle.has-pick { border-color:rgba(239,77,34,.5); box-shadow:0 0 0 1px rgba(239,77,34,.25) inset; }
.aw-pick.mvp.has-pick { border-color:rgba(233,196,106,.5); box-shadow:0 0 0 1px rgba(233,196,106,.28) inset; }
.aw-trophy { width:24px; height:30px; flex:0 0 auto; display:block; }
.aw-pick-body { display:flex; flex-direction:column; gap:3px; }
.aw-pick-label { font-family:'Oswald'; text-transform:uppercase; letter-spacing:.12em; font-size:9.5px; color:var(--dim); font-weight:600; }
.aw-select {
  font-family:'DM Sans', sans-serif; font-size:13px; color:var(--ink); background:var(--card);
  border:1px solid var(--line); border-radius:8px; padding:5px 8px; min-width:140px; cursor:pointer;
}
.aw-select:focus { outline:none; border-color:var(--clay); box-shadow:0 0 0 2px rgba(217,102,43,.2); }
.aw-pick.has-pick .aw-select { color:var(--chalk); font-weight:600; }
@media (max-width:620px){ .award-row { align-items:flex-start; } .aw-picks { width:100%; } .aw-pick { flex:1 1 100%; } .aw-select { flex:1; } }

/* ---------- Print / PDF ---------- */
@media print {
  @page { size: 1200px 1600px; margin: 26px; }
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; }
  body { padding-bottom: 0; }
  body::before { display: none; }
  .themebtn { display: none !important; }
  .tbl-scroll { overflow: visible !important; }
  table { min-width: 0 !important; }
  thead th { position: static !important; }
  thead th.player, tbody td.player { position: static !important; }
  .wrap { max-width: none; }
  .pcard, .lcard, .gitem, .tablecard, .teamstrip, .sec-head { break-inside: avoid; }
  .lurow, .pcat, table.rot tr { break-inside: avoid; }
  .dayblock, .gamecard, .callout, .minicard { break-inside: avoid; }
  /* One full-width day column in print so the fielding table fits the page
     unscrolled (a scroll bar can't be paginated). */
  .tourney { grid-template-columns: 1fr !important; }
  .tb-fld .tb-scroll { overflow: visible !important; }
  .rot-wrap { overflow: visible !important; }
  table.rot { min-width: 0 !important; }
  table.rot td.pos { position: static !important; }
  .export-row, .toast { display: none !important; }
}

/* ===================== AI game analysis (home page) ===================== */
.aiwrap{margin:0 0 26px}
.ai-card{position:relative;overflow:hidden;background:var(--panel-2);border:1px solid var(--line);
  border-top:2px solid var(--clay);border-radius:14px;padding:20px 22px 22px;box-shadow:var(--shadow)}
.ai-card::before{content:"";position:absolute;inset:0 0 auto 0;height:130px;pointer-events:none;
  background:radial-gradient(120% 100% at 0% 0%, rgba(217,102,43,.10), transparent 60%)}
.ai-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px;position:relative}
.ai-kicker,.ai-title{font-family:'Anton';text-transform:uppercase;letter-spacing:.06em;font-size:19px;color:var(--clay)}
.ai-badge{font-family:'Oswald';text-transform:uppercase;letter-spacing:.1em;font-size:10.5px;font-weight:600;
  color:var(--gold);border:1px solid rgba(233,196,106,.4);background:rgba(233,196,106,.08);
  border-radius:999px;padding:3px 9px;cursor:help;white-space:nowrap}
.ai-actions{display:flex;align-items:center;gap:12px;margin-left:auto}
.ai-meta{font-family:'Spline Sans Mono',monospace;font-size:11px;color:var(--dim);white-space:nowrap}
.ai-btn{font-family:'Oswald';text-transform:uppercase;letter-spacing:.08em;font-size:12px;font-weight:600;
  color:var(--chalk);background:var(--clay);border:1px solid var(--clay);border-radius:8px;
  padding:8px 14px;cursor:pointer;transition:filter .15s,transform .1s;white-space:nowrap}
.ai-btn:hover{filter:brightness(1.08)} .ai-btn:active{transform:translateY(1px)}
.ai-headline{font-family:'Anton';font-size:26px;line-height:1.12;color:var(--chalk);margin:4px 0 10px;letter-spacing:.01em}
.ai-summary{font-size:15.5px;line-height:1.6;color:var(--chalk);margin:0 0 18px;max-width:72ch}
.ai-sections{display:grid;gap:18px}
.ai-sec-h{font-family:'Oswald';text-transform:uppercase;letter-spacing:.07em;font-size:13px;font-weight:600;
  color:var(--clay-soft);margin:0 0 7px;padding-bottom:6px;border-bottom:1px solid var(--line)}
.ai-sec-b{font-size:14.5px;line-height:1.62;color:var(--chalk)}
.ai-sec-b p{margin:0 0 10px} .ai-sec-b p:last-child{margin-bottom:0}
.ai-sec-b strong{color:var(--chalk);font-weight:600} .ai-sec-b em{color:var(--clay-soft);font-style:italic}
.ai-sec-b code{font-family:'Spline Sans Mono',monospace;font-size:.9em;background:var(--bg-2);padding:1px 5px;border-radius:4px;color:var(--gold)}
.ai-ul{margin:0 0 10px;padding-left:20px} .ai-ul li{margin:3px 0;line-height:1.55}
.ai-players .ai-kp-list{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.ai-kp{display:flex;flex-direction:column;gap:2px;padding:10px 12px;background:var(--bg-2);border-radius:8px;border-left:3px solid var(--turf)}
.ai-kp-name{font-family:'Oswald';font-weight:600;font-size:14px;color:var(--turf-soft);text-transform:uppercase;letter-spacing:.04em}
.ai-kp-why{font-size:14px;line-height:1.55;color:var(--chalk)}
.ai-bottom{margin-top:18px;padding:14px 16px;background:rgba(217,102,43,.08);border:1px solid rgba(217,102,43,.28);border-radius:10px}
.ai-bottom-k{display:block;font-family:'Oswald';text-transform:uppercase;letter-spacing:.1em;font-size:11px;font-weight:600;color:var(--clay-soft);margin-bottom:4px}
.ai-bottom p{margin:0;font-size:15px;line-height:1.55;color:var(--chalk)}
.ai-state .ai-head{margin-bottom:12px}
.ai-cta-text,.ai-err{font-size:15px;line-height:1.6;color:var(--muted);margin:0 0 14px;max-width:66ch}
.ai-cta-text b{color:var(--chalk);font-weight:600}
.ai-err{color:var(--bad-soft)}
.ai-loading{display:flex;align-items:center;gap:12px;color:var(--muted);font-family:'Oswald';letter-spacing:.04em;font-size:14px;padding:6px 0 2px}
.ai-spin{width:18px;height:18px;border-radius:50%;border:2px solid var(--line);border-top-color:var(--clay);
  display:inline-block;animation:ai-spin .8s linear infinite;flex:none}
@keyframes ai-spin{to{transform:rotate(360deg)}}
@media (max-width:640px){
  .ai-card{padding:16px 16px 18px}
  .ai-headline{font-size:21px}
  .ai-actions{width:100%;margin-left:0;justify-content:space-between}
}
