/* ============================================================
   PSIA Website — "Broadcast Navy" theme
   Matches the PSIA Landing reference. All design tokens live in
   :root; recurring patterns are classes (no inline styling).
   ============================================================ */
:root{
  /* surfaces */
  --bg:#070C18;        /* page */
  --panel:#0A1326;     /* panel / header / footer */
  --card:#111B2E;      /* cards */
  --border:#25324A;
  --border-2:#1A2336;
  --divider:#2C3A55;
  /* brand */
  --blue:#3D7BF0; --blue-light:#5C95F5; --blue-deep:#1B3C8C;
  --gold:#F5C542; --gold-2:#E0B528;
  /* results */
  --win:#36D27B; --win-bg:#11271B; --win-bd:#1E5237;
  --draw:#E0B528; --draw-bg:#2A2410; --draw-bd:#5A4A12;
  --loss:#F0584B; --loss-bg:#2A1412; --loss-bd:#5A2420;
  /* text */
  --text:#EEF3FB; --muted:#C4CEDE; --muted-2:#9DAAC0; --dim:#5E6A82;
  /* type */
  --font:'Archivo',system-ui,-apple-system,sans-serif;
  --mono:'Space Mono','SFMono-Regular',monospace;
  /* layout */
  --wrap:1180px; --pad:44px;
  /* radii */
  --r-card:14px; --r-card-lg:16px; --r-btn:8px; --pill:99px;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{background:var(--bg);color:var(--text);font-family:var(--font);line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:inherit;text-decoration:none}
img{display:block;max-width:100%}
.mono{font-family:var(--mono)}
.lk{cursor:pointer;transition:.15s}

/* ---------- layout helpers ---------- */
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.sec{max-width:var(--wrap);margin:0 auto;padding:56px var(--pad) 0}
.sec.last{padding-bottom:64px}

/* ---------- numbered section header ---------- */
.shead{display:flex;align-items:center;margin-bottom:20px}
.shead .num{background:var(--blue);color:#fff;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:.18em;padding:7px 13px;border-radius:6px 0 0 6px}
.shead .num.gold{background:var(--gold);color:#07101F}
.shead .lbl{background:var(--card);border:1px solid var(--border);border-left:none;font-weight:800;font-size:13px;letter-spacing:.06em;padding:6px 16px;border-radius:0 6px 6px 0;text-transform:uppercase}
.shead .link{margin-left:auto;font-size:13px;color:var(--muted-2);font-weight:600}
.shead .link:hover{color:var(--text)}

/* blue→gold accent strip */
.accent-strip{height:4px;background:linear-gradient(90deg,var(--blue),var(--gold))}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:var(--font);font-weight:800;font-size:14.5px;padding:14px 26px;border-radius:var(--r-btn);cursor:pointer;border:none;transition:.15s;white-space:nowrap}
.btn-primary{background:var(--blue);color:#fff}
.btn-primary:hover{box-shadow:0 12px 32px -8px rgba(61,123,240,.7);transform:translateY(-1px)}
.btn-glass{background:rgba(255,255,255,.12);color:#fff;border:1px solid rgba(255,255,255,.32);backdrop-filter:blur(8px)}
.btn-glass:hover{background:rgba(255,255,255,.2)}
.btn-dark{background:var(--bg);color:var(--text)}
.btn-dark:hover{transform:translateY(-1px)}
.btn-sm{font-size:13.5px;padding:9px 20px}
/* "Continue with Google" — light button, deliberately contrasting the navy panels */
.btn-google{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  width:100%;max-width:480px;background:#fff;color:#1F2430;font-weight:600;
  border:1px solid #DADCE0;border-radius:10px;padding:11px 16px;cursor:pointer;
  transition:background .15s ease;
}
.btn-google:hover{ background:#F5F7FA; }
.or-divider{
  display:flex;align-items:center;gap:12px;max-width:480px;margin:14px 0;
  color:#5E6A82;font-size:12px;letter-spacing:.02em;
}
.or-divider::before,.or-divider::after{ content:"";flex:1;height:1px;background:#1F2A41; }

/* ---------- header / nav ---------- */
.site-header{position:sticky;top:0;z-index:60;background:rgba(7,12,24,.9);backdrop-filter:blur(10px);border-bottom:1px solid var(--border-2)}
.site-header.over-hero{position:absolute;left:0;right:0;top:0;background:transparent;border-bottom:none;backdrop-filter:none}
.hdr-bar{display:flex;align-items:center;justify-content:space-between;height:72px;max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.brand{display:flex;align-items:center;gap:11px}
.brand .mark{width:7px;height:24px;border-radius:99px;background:var(--blue);box-shadow:0 0 14px rgba(61,123,240,.7)}
.brand .word{font-weight:900;font-size:21px;letter-spacing:.14em}
.nav-main{display:flex;align-items:center;gap:32px;font-size:13.5px;font-weight:600}
.nav-main a{color:var(--muted);cursor:pointer}
.nav-main a:hover{color:#fff}
.nav-main a.active{color:#fff}
.hdr-right{display:flex;align-items:center;gap:12px}
.signin{background:rgba(255,255,255,.12);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.28);color:#fff;font-weight:700;font-size:13.5px;padding:9px 20px;border-radius:var(--r-btn);cursor:pointer}
.site-header:not(.over-hero) .signin{background:var(--blue);border-color:var(--blue)}
.menu-btn{display:none;width:42px;height:42px;border:1px solid rgba(255,255,255,.28);border-radius:10px;align-items:center;justify-content:center;font-size:18px;color:#fff;cursor:pointer}
.mobnav{display:none;flex-direction:column;background:var(--panel);border-top:1px solid var(--border-2);border-bottom:1px solid var(--border-2)}
.mobnav a{padding:14px var(--pad);font-size:15px;font-weight:600;color:var(--muted);border-bottom:1px solid var(--border-2);cursor:pointer}
.mobnav a.active{color:var(--blue-light)}

/* ---------- hero ---------- */
.hero{position:relative;height:clamp(580px,84vh,740px);overflow:hidden}
.hero-photo{position:absolute;inset:0;width:100%;height:100%;background:
  radial-gradient(110% 80% at 72% 8%, rgba(61,123,240,.30), transparent 55%),
  radial-gradient(80% 70% at 16% 96%, rgba(54,210,123,.12), transparent 60%),
  linear-gradient(180deg,#0c1a36 0%,#0a1228 55%,#070C18 100%)}
.hero-photo::after{content:"";position:absolute;inset:0;background-image:
  repeating-linear-gradient(90deg,rgba(255,255,255,.025) 0 1px,transparent 1px 70px);opacity:.5}
.hero-ov1{position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,12,24,.84) 0%,rgba(7,12,24,.2) 26%,rgba(7,12,24,.5) 60%,rgba(7,12,24,.98) 100%);pointer-events:none}
.hero-ov2{position:absolute;inset:0;background:linear-gradient(90deg,rgba(7,12,24,.72),transparent 60%);pointer-events:none}
.hero-inner{position:relative;height:100%;max-width:var(--wrap);margin:0 auto;padding:0 var(--pad)}
.scorebug{position:absolute;top:104px;left:var(--pad);z-index:4;display:inline-flex;align-items:stretch;border-radius:9px;overflow:hidden;box-shadow:0 12px 30px rgba(0,0,0,.5)}
.scorebug .tag{background:var(--blue);display:flex;align-items:center;padding:0 13px;font-size:10px;font-weight:800;letter-spacing:.16em;color:#fff}
.scorebug .body{background:rgba(10,19,38,.92);backdrop-filter:blur(6px);display:flex;align-items:center;gap:13px;padding:11px 17px}
.scorebug .h{font-weight:900;font-size:18px}
.scorebug .a{font-weight:900;font-size:18px;color:var(--muted-2)}
.scorebug .vs{font-family:var(--mono);font-size:11px;color:#7E8AA0}
.scorebug .div{width:1px;height:22px;background:var(--border);margin:0 2px}
.scorebug .time{font-family:var(--mono);font-size:11px;color:var(--gold);letter-spacing:.04em}
.lower-third{position:absolute;left:var(--pad);right:var(--pad);bottom:48px;z-index:4}
.hero-eyebrow{display:flex;align-items:center;gap:12px;font-family:var(--mono);font-size:12px;font-weight:700;letter-spacing:.2em;color:var(--blue-light)}
.hero-eyebrow .bar{width:26px;height:3px;background:var(--blue);border-radius:99px}
.hero-h1{font-weight:900;font-size:66px;line-height:.94;letter-spacing:-.02em;text-transform:uppercase;margin-top:16px;max-width:760px;text-shadow:0 4px 30px rgba(0,0,0,.55)}
.hero-h1 .hl{color:var(--blue-light)}
.hero-sub{margin-top:18px;font-size:16.5px;line-height:1.5;color:var(--muted);max-width:480px;font-weight:500}
.hero-cta{margin-top:26px;display:flex;gap:13px;flex-wrap:wrap}

/* ---------- form ticker ---------- */
.ticker{display:flex;align-items:stretch;border-top:1px solid var(--border-2);border-bottom:1px solid var(--border-2);background:var(--panel);overflow:hidden}
.ticker-label{background:var(--blue);color:#fff;display:flex;align-items:center;padding:0 20px;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:.18em;flex-shrink:0;z-index:2}
.ticker-vp{flex:1;overflow:hidden;padding:15px 0;font-family:var(--mono);font-size:13px;color:var(--muted-2)}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.tick-track{display:inline-flex;align-items:center;gap:26px;white-space:nowrap;animation:tick 34s linear infinite;padding-right:26px}
.tick-track b{color:var(--text);font-weight:700}
.tick-track .sl{color:var(--divider)}
.tick-track .W{color:var(--win)} .tick-track .D{color:var(--draw)} .tick-track .L{color:var(--loss)}

/* ---------- stat bar ---------- */
.statbar{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--border);border-radius:var(--r-card);overflow:hidden;background:var(--panel)}
.stat-cell{padding:26px 28px;border-right:1px solid var(--border)}
.stat-cell:last-child{border-right:none}
.stat-tick{width:30px;height:3px;border-radius:99px;margin-bottom:14px}
.stat-num{font-weight:900;font-size:42px;line-height:1}
.stat-label{font-size:13px;color:var(--muted-2);margin-top:8px;font-weight:500}

/* ---------- fixture card ---------- */
.fixture{position:relative;border:1px solid var(--border);border-radius:var(--r-card-lg);overflow:hidden;background:var(--card)}
.fixture-grid{display:grid;grid-template-columns:1.4fr 1fr}
.fx-left{padding:30px 34px;border-right:1px solid var(--border)}
.fx-date{font-family:var(--mono);font-size:12px;color:var(--muted-2);letter-spacing:.06em}
.fx-teams{margin-top:22px;display:flex;align-items:flex-end;gap:24px;flex-wrap:wrap}
.fx-team{font-weight:900;font-size:42px;line-height:1}
.fx-team.away{color:var(--muted-2)}
.fx-side{font-family:var(--mono);font-size:10px;letter-spacing:.18em;color:var(--dim);margin-top:6px}
.fx-vs{font-weight:900;font-style:italic;font-size:22px;color:var(--dim);padding-bottom:6px}
.fx-meta{margin-top:24px;display:flex;gap:14px;font-size:13px;color:var(--muted-2);font-weight:500;flex-wrap:wrap;align-items:center}
.fx-meta .dot{color:#3A434F}
/* Team-selection match banner */
.match-banner{position:relative;border:1px solid var(--border);border-radius:var(--r-card-lg);overflow:hidden;background:var(--card);margin-bottom:16px}
.match-banner .mb-body{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 22px;flex-wrap:wrap}
.match-banner .mb-tag{color:var(--blue-light);letter-spacing:.1em;font-size:12px}
.match-banner .mb-title{font-size:20px;font-weight:800;margin-top:4px}
.match-banner .mb-meta{margin-top:8px}
.match-banner .mb-count{display:flex;flex-direction:column;align-items:center;line-height:1;padding:8px 18px;border-radius:12px;background:rgba(255,255,255,.04);border:1px solid var(--border)}
.match-banner .mb-count b{font-size:26px;font-weight:900;color:var(--gold)}
.match-banner .mb-count span{font-size:11px;color:var(--muted-2);letter-spacing:.06em;margin-top:5px;text-transform:uppercase}
.fx-right{padding:30px 34px;display:flex;flex-direction:column;justify-content:center}
.fx-rlabel{font-size:13px;color:var(--muted-2);margin-bottom:7px}
.fx-count{display:flex;align-items:baseline;gap:9px}
.fx-count .n{font-weight:900;font-size:38px;color:var(--blue-light)}
.fx-count .t{font-size:15px;color:var(--dim)}
.progress{margin-top:14px;height:7px;border-radius:99px;background:var(--bg);overflow:hidden}
.progress-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue-light));border-radius:99px}

/* ---------- result cards ---------- */
.results-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.rcard{background:var(--card);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:12px;padding:18px}
.rcard.win{border-left-color:var(--win)} .rcard.draw{border-left-color:var(--draw)} .rcard.loss{border-left-color:var(--loss)}
.rcard-top{display:flex;justify-content:space-between;align-items:center}
.rcard-date{font-family:var(--mono);font-size:11px;color:var(--dim)}
.rbadge{font-family:var(--mono);font-size:10px;font-weight:700;border-radius:6px;padding:3px 7px}
.rbadge.win{color:var(--win);background:var(--win-bg);border:1px solid var(--win-bd)}
.rbadge.draw{color:var(--draw);background:var(--draw-bg);border:1px solid var(--draw-bd)}
.rbadge.loss{color:var(--loss);background:var(--loss-bg);border:1px solid var(--loss-bd)}
.rscore{font-weight:900;font-size:34px;margin:12px 0 4px}
.ropp{font-size:13px;color:var(--muted-2)}

/* ---------- standings panels ---------- */
.standings-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.panel{border:1px solid var(--border);border-radius:var(--r-card-lg);overflow:hidden;background:var(--card)}
.panel-head{display:flex;align-items:center;background:var(--panel);border-bottom:1px solid var(--border)}
.panel-head .num{background:var(--blue);color:#fff;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:.16em;padding:11px 14px}
.panel-head .num.gold{background:var(--gold);color:#07101F}
.panel-head .lbl{font-weight:800;font-size:13px;letter-spacing:.06em;text-transform:uppercase;padding:0 16px}
.panel-body{padding:8px 24px 18px}
.lrow{display:flex;align-items:center;gap:14px;padding:13px 0;border-bottom:1px solid var(--border-2)}
.lrow:last-child{border-bottom:none}
.lrow .rank{font-weight:900;color:var(--dim);width:22px}
.lrow .name{flex:1;font-weight:600;font-size:15px}
.lrow .val{font-family:var(--mono);font-weight:700;color:var(--blue-light)}
.lrow .val.gold{color:var(--gold)}

/* ---------- treasury (kas) card — home ---------- */
.kas{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card-lg);overflow:hidden}
.kas-main{padding:26px 28px}
.kas-cap{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2)}
.kas-bal{font-weight:700;font-size:46px;line-height:1;color:var(--gold);margin-top:12px}
.kas-sub{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--border)}
.kas-cell{padding:20px 28px;border-right:1px solid var(--border)}
.kas-cell:last-child{border-right:none}
.kas-tick{width:30px;height:3px;border-radius:99px;margin-bottom:12px}
.kas-num{font-weight:700;font-size:24px;line-height:1}
.kas-label{font-size:12.5px;color:var(--muted-2);margin-top:7px;font-weight:500}
@media(max-width:560px){
  .kas-bal{font-size:36px}
  .kas-sub{grid-template-columns:1fr}
  .kas-cell{border-right:none}
  .kas-cell:first-child{border-bottom:1px solid var(--border)}
}

/* ---------- fixtures list (matches page) ---------- */
.fxrow{display:flex;align-items:center;gap:18px;background:var(--card);border:1px solid var(--border);border-left:3px solid var(--border);border-radius:12px;padding:16px 20px}
.fxrow.win{border-left-color:var(--win)} .fxrow.draw{border-left-color:var(--draw)} .fxrow.loss{border-left-color:var(--loss)}
.fxrow .date{font-family:var(--mono);font-size:11px;color:var(--dim);width:64px}
.fxrow .opp{flex:1;font-weight:700;font-size:16px}
.fxrow .sc{font-weight:900;font-size:22px}

/* ---------- data table ---------- */
.tablecard{border:1px solid var(--border);border-radius:var(--r-card-lg);overflow:hidden;background:var(--card)}
table.data{width:100%;border-collapse:collapse;font-size:14px}
table.data th{text-align:left;font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--dim);font-weight:700;padding:15px 20px;background:var(--panel)}
table.data td{padding:14px 20px;border-top:1px solid var(--border-2)}
table.data .rank{font-weight:900;color:var(--dim)}
table.data .nm{font-weight:600}
table.data .num{text-align:center;font-family:var(--mono)}
table.data .pts{text-align:right;font-family:var(--mono);font-weight:700;color:var(--blue-light)}
table.data .pts.gold{color:var(--gold)}

/* page title block for inner pages */
.page-head{max-width:var(--wrap);margin:0 auto;padding:46px var(--pad) 0}
.page-head h1{font-weight:900;font-size:40px;text-transform:uppercase;letter-spacing:-.01em}
.page-head p{color:var(--muted-2);font-size:14px;margin-top:8px;max-width:520px}

/* ---------- join band ---------- */
.join{position:relative;overflow:hidden;border-radius:20px;background:linear-gradient(135deg,var(--blue-deep),var(--blue));padding:58px 44px;text-align:center}
.join .glow{position:absolute;top:-100px;left:50%;transform:translateX(-50%);width:520px;height:240px;background:radial-gradient(50% 50% at 50% 40%,rgba(255,255,255,.18),transparent 70%);pointer-events:none}
.join h2{position:relative;font-weight:900;font-size:44px;letter-spacing:-.01em;text-transform:uppercase;color:#fff}
.join p{position:relative;color:rgba(255,255,255,.85);margin:14px auto 0;max-width:450px;font-size:16px;font-weight:500}
.join-cta{position:relative;margin-top:28px;display:flex;gap:13px;justify-content:center;flex-wrap:wrap}

/* ---------- footer ---------- */
.site-footer{border-top:1px solid var(--border-2);background:var(--panel);margin-top:56px}
.foot-inner{max-width:var(--wrap);margin:0 auto;padding:46px var(--pad) 34px}
.foot-grid{display:flex;justify-content:space-between;align-items:flex-start;gap:40px;flex-wrap:wrap}
.foot-about{max-width:320px}
.foot-about p{color:var(--muted-2);font-size:13.5px;margin-top:12px;line-height:1.55}
.foot-cols{display:flex;gap:60px;font-size:13.5px}
.foot-cols h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.16em;color:var(--dim);margin-bottom:14px}
.foot-cols .col{display:flex;flex-direction:column;gap:10px;color:var(--muted-2)}
.foot-bottom{border-top:1px solid var(--border-2);margin-top:30px;padding-top:22px;display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;font-size:12.5px;color:var(--dim);font-family:var(--mono)}

/* ---------- responsive ---------- */
@media(max-width:860px){
  .nav-main{display:none !important}
  .menu-btn{display:flex !important}
  .scorebug{display:none !important}
  .hero-h1{font-size:46px !important}
  .statbar{grid-template-columns:1fr 1fr}
  .stat-cell:nth-child(2){border-right:none}
  .stat-cell:nth-child(1),.stat-cell:nth-child(2){border-bottom:1px solid var(--border)}
  .fixture-grid{grid-template-columns:1fr}
  .fx-left{border-right:none;border-bottom:1px solid var(--border)}
  .results-grid{grid-template-columns:1fr 1fr}
  .standings-grid{grid-template-columns:1fr}
  .foot-grid{flex-direction:column;gap:28px}
}
@media(max-width:560px){
  :root{--pad:20px}
  .hero-h1{font-size:38px !important}
  .results-grid{grid-template-columns:1fr}
  .foot-cols{gap:36px}
}

/* hero now uses the real team photo (assets/img/hero.jpg) */
.hero-photo{object-fit:cover;background:#0a1228}
.hero-photo::after{content:none;background-image:none}

/* ---------- clickable result cards ---------- */
.rcard.lk{cursor:pointer}
.rcard.lk:hover{border-color:#35435F;transform:translateY(-2px)}
.rcard-bot{display:flex;justify-content:space-between;align-items:center}
.rcard-go{font-family:var(--mono);font-size:11px;color:var(--dim);transition:.15s}
.rcard.lk:hover .rcard-go{color:var(--blue-light)}
.fxrow.lk{cursor:pointer}
.fxrow.lk:hover{border-color:#35435F}
.fxrow-go{font-family:var(--mono);font-size:11px;color:var(--dim)}
.fxrow.lk:hover .fxrow-go{color:var(--blue-light)}

/* ---------- hero "squad is out" banner (replaces the Join-the-squad CTA) ---------- */
/* When the squad is announced for the next match, this gold banner takes the
   Join-the-squad slot in the hero CTA row and links to the Matchday Squad page.
   Full-width so it reads as a banner rather than a button. */
.hero-squadout{flex:1 1 100%;display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 22px;border-radius:var(--r-btn);cursor:pointer;
  background:linear-gradient(90deg,rgba(245,197,66,.24),rgba(245,197,66,.08));
  border:1px solid var(--gold);backdrop-filter:blur(8px);transition:.15s}
.hero-squadout:hover{background:linear-gradient(90deg,rgba(245,197,66,.34),rgba(245,197,66,.12));transform:translateY(-1px)}
.hero-squadout .hs-tag{font-family:var(--mono);font-weight:800;font-size:13px;letter-spacing:.1em;color:var(--gold)}
.hero-squadout .hs-go{font-family:var(--mono);font-weight:700;font-size:12.5px;color:#fff;white-space:nowrap;opacity:.92}
@media(max-width:560px){.hero-squadout{gap:10px}}

/* ---------- match report: media & stats pills ---------- */
.mpills{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px}
.mpill{display:flex;flex-direction:column;gap:3px;padding:14px 15px;border-radius:12px;background:var(--blue);color:#fff;text-decoration:none;transition:.15s;min-width:0}
.mpill .t{font-weight:800;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mpill .s{font-size:9px;letter-spacing:.1em;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mpill.yt{background:#E62117}
.mpill.lk:hover{transform:translateY(-1px);filter:brightness(1.08)}
.mpill.disabled{background:none;border:1px solid var(--divider);color:var(--dim);padding:13px 15px}
.mpill.disabled .s{opacity:.9}

/* ---------- match summary ---------- */
.matchsum{padding:26px 30px}
.ms-top{display:flex;align-items:center;gap:12px}
.ms-date{font-size:11px;color:var(--dim)}
.ms-row{margin-top:16px;display:flex;align-items:center;gap:22px;flex-wrap:wrap}
.ms-team{font-weight:900;font-size:32px}
.ms-team.away{color:var(--muted-2)}
.ms-score{font-weight:900;font-size:40px;letter-spacing:-.01em}
.ms-dash{color:var(--dim);margin:0 6px}
.backlink{color:var(--muted-2);font-size:13px;font-weight:600}
.backlink:hover{color:var(--text)}
@media(max-width:560px){ .ms-team{font-size:24px} .ms-score{font-size:30px} }

/* ============================================================
   MATCH REPORT — redesigned page (PSIA Report design)
   ============================================================ */
/* head: breadcrumb + big title + mono meta row */
.rep-head{max-width:var(--wrap);margin:0 auto;padding:46px var(--pad) 0}
.rep-headrow{display:flex;align-items:flex-end;justify-content:space-between;gap:14px;flex-wrap:wrap}
.rep-chip{font-size:11px;letter-spacing:.08em;padding:5px 11px;border-radius:7px;white-space:nowrap}
.rep-crumb{display:flex;align-items:center;gap:10px;font-size:11.5px;font-weight:700;letter-spacing:.14em;color:var(--dim)}
.rep-crumb .lk{color:var(--muted-2)}
.rep-crumb .lk:hover{color:var(--text)}
.rep-crumb .cur{color:var(--win)}
.rep-h1{font-weight:900;font-size:52px;line-height:.94;letter-spacing:-.02em;text-transform:uppercase;margin-top:12px}
.rep-meta{margin-top:12px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;font-size:12.5px;color:var(--muted-2);letter-spacing:.04em}
.rep-meta .dot{color:var(--divider)}
.rep-sec{padding-top:24px}
.rep-back{padding-top:26px}

/* scoreline banner — Scoreboard Layouts "1c" split panels.
   One full-width row per team, stacked; the winner's row is tinted and gets a
   4px accent bar. Because each name owns the whole card width, nothing here
   needs a phone breakpoint — it degrades by wrapping the name, not by
   colliding with the score. */
.rep-score{position:relative;border:1px solid var(--border);border-radius:18px;overflow:hidden;background:var(--card)}
.rep-score .accent-strip{height:3px;background:linear-gradient(90deg,var(--blue),var(--win),var(--gold))}
.rs-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:12px 20px;border-bottom:1px solid var(--border)}
.rs-ft{font-size:11px;color:#7E8AA0;letter-spacing:.16em}
.rs-panel{position:relative;display:flex;align-items:center;gap:15px;padding:20px 22px}
.rs-panel.away{background:var(--panel)}
/* winner tints: wg = green (we won / internal winner), wr = red (opponent won) */
.rs-panel.wg{background:linear-gradient(90deg,rgba(54,210,123,.12),rgba(54,210,123,0) 70%)}
.rs-panel.wg .rs-bar{background:var(--win)}
.rs-panel.wg .rs-sc{color:var(--win)}
.rs-panel.wr{background:linear-gradient(90deg,rgba(240,88,75,.12),rgba(240,88,75,0) 70%)}
.rs-panel.wr .rs-bar{background:var(--loss)}
.rs-panel.wr .rs-sc{color:var(--loss)}
.rs-panel.dr .rs-sc{color:var(--gold)}
.rs-bar{position:absolute;left:0;top:0;bottom:0;width:4px}
.rs-crest{height:48px;width:48px;object-fit:contain;flex-shrink:0;filter:drop-shadow(0 6px 16px rgba(0,0,0,.5))}
.rs-abbr{width:48px;height:48px;border-radius:50%;border:1px solid var(--divider);background:var(--card);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:11px;color:var(--muted-2);flex-shrink:0}
.rs-abbr.sq{border-radius:12px}
.rs-panel.away .rs-abbr{background:var(--card)}
.rs-nm{flex:1;min-width:0}
.rs-team{font-weight:900;font-size:27px;letter-spacing:-.01em;line-height:.98;overflow-wrap:break-word;text-wrap:balance}
.rs-panel.away .rs-team{color:#9AA4B8}
.rs-tag{font-size:10px;letter-spacing:.2em;color:var(--blue-light);margin-top:6px}
.rs-panel.away .rs-tag{color:var(--dim)}
.rs-sc{font-weight:900;font-size:50px;line-height:1;color:#5B6683;flex-shrink:0}
.rs-note{padding:14px 22px;border-top:1px solid var(--border);font-size:12px;color:var(--muted-2);text-align:center}

/* top performers — photo cards with rating bar (MatchReport design) */
.perf-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(8px,1.6vw,14px)}
.perf-grid.n1{grid-template-columns:minmax(0,300px);justify-content:center}
.perf-grid.n2{grid-template-columns:repeat(2,minmax(0,300px));justify-content:center}
.perf2{background:var(--card);border:1px solid var(--border);border-radius:12px;overflow:hidden;transition:.15s}
.perf2.lk:hover{border-color:#35435F;transform:translateY(-2px)}
.perf2.motm{border-color:#5A4A12;box-shadow:0 0 0 1px rgba(245,197,66,.25)}
.perf2-photo{position:relative;width:100%;aspect-ratio:4/5;background:var(--panel)}
.perf2-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
/* scoped past the shared .poschip rules (styles.css .poschip + mobile.css's
   11px register-card padding) — same trick as .pod3-chips .poschip; without
   the extra class this chip renders 46x39px and swallows the portrait */
.perf2 .perf2-pos{position:absolute;top:7px;left:7px;font-size:9px;padding:2px 6px;cursor:inherit}
.perf2-rank{position:absolute;top:6px;right:9px;font-weight:700;font-size:clamp(12px,1.6vw,15px);color:var(--gold);text-shadow:0 1px 8px rgba(0,0,0,.7)}
.perf2-name{position:absolute;left:0;right:0;bottom:0;padding:26px 10px 8px;background:linear-gradient(transparent,rgba(7,12,24,.94))}
.perf2-name .fn{font-size:9px;letter-spacing:.06em;color:var(--muted-2);text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.perf2-name .ln{font-weight:900;font-size:clamp(13px,2.2vw,19px);letter-spacing:-.01em;line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.perf2-foot{display:flex;align-items:center;gap:8px;padding:8px 10px}
.perf2-foot .v{font-weight:900;font-size:clamp(16px,2.4vw,22px);line-height:1;color:var(--win)}
.perf2-bar{flex:1;height:5px;border-radius:3px;background:var(--panel);overflow:hidden}
.perf2-bar > span{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,#1E9E62,var(--win))}
.perf2.motm .perf2-foot .v{color:var(--gold)}
.perf2.motm .perf2-bar > span{background:linear-gradient(90deg,#B08A18,var(--gold))}

/* next-match teaser */
.rep-next{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;border:1px solid var(--border);border-radius:var(--r-card-lg);background:linear-gradient(90deg,#0E1A31,var(--card));padding:18px 24px}
.rn-tag{font-size:10px;letter-spacing:.18em;color:var(--blue-light);font-weight:700}
.rn-fix{font-weight:900;font-size:24px;margin-top:8px}
.rn-fix .vs{color:var(--dim);font-style:italic;font-size:17px;font-weight:600}

@media(max-width:560px){
  .rep-h1{font-size:36px}
  .rep-head{padding-top:30px}
  /* phone scoreboard: the 1c panels already stack, so this only tightens the
     spacing and type — no wrap/shrink gymnastics needed */
  .rs-head{padding:11px 16px}
  .rs-panel{gap:12px;padding:15px 16px}
  .rs-crest,.rs-abbr{width:40px;height:40px}
  .rs-team{font-size:21px}
  .rs-sc{font-size:38px}
  .rs-note{padding:12px 16px}
  .rs-tag{font-size:9px;margin-top:5px}
  .rs-abbr{font-size:10px}
  .rep-next .btn{width:100%}
  .rn-fix{font-size:20px}
}

/* clickable standings panel headers (Top scorers / Fantasy league) */
.panel-head.lk{cursor:pointer}
.panel-head .panel-go{margin-left:auto;padding-right:16px;font-family:var(--mono);font-size:11px;color:var(--dim);transition:.15s}
.panel-head.lk:hover .panel-go{color:var(--blue-light)}
.panel-head.lk:hover .lbl{color:#fff}

/* ---------- crest logo ---------- */
.brand-logo{height:46px;width:auto;display:block;filter:drop-shadow(0 4px 12px rgba(0,0,0,.45))}
.site-footer .brand-logo{height:38px;filter:none}
.fx-home{display:flex;align-items:center;gap:14px}
.fx-crest{height:60px;width:auto;display:block}
@media(max-width:560px){ .brand-logo{height:38px} .fx-crest{height:48px} }

/* ---- sortable stats table ---- */
table.data.sortable th.sortcol{cursor:pointer;user-select:none;white-space:nowrap;transition:color .12s}
table.data.sortable th.num{text-align:center}
table.data.sortable th[data-sort="pts"]{text-align:right}
table.data.sortable th.sortcol:hover{color:var(--muted-2)}
table.data.sortable th.sorted{color:var(--blue-light)}
table.data.sortable th .sortcaret{margin-left:5px;font-size:8px;vertical-align:middle;color:var(--blue-light)}

/* ============================================================
   SQUAD — registration form + admin tactical board
   ============================================================ */
.emptybox{border:1px dashed var(--border);background:var(--card);border-radius:12px;padding:18px 20px;color:var(--muted-2);font-size:14px;text-align:center}
.emptybox.sm{padding:12px 14px;font-size:13px}
/* loading skeleton + empty states (item 11) */
.skeleton{color:transparent!important;background:linear-gradient(90deg,var(--card),var(--panel),var(--card));background-size:200% 100%;border-radius:8px;animation:psia-sk 1.2s ease-in-out infinite}
@keyframes psia-sk{0%{background-position:200% 0}100%{background-position:-200% 0}}
.fx-count .n.skeleton,.spot-spots .n.skeleton{display:inline-block;min-width:44px;height:.86em;vertical-align:-2px}
.upc-empty{border:1px dashed var(--border);background:var(--card);border-radius:12px;padding:20px 22px;color:var(--muted-2);font-size:13.5px;text-align:center}
/* keyboard focus ring (item 10) */
:focus-visible{outline:2px solid var(--blue-light);outline-offset:2px;border-radius:4px}
.muted-sm{color:var(--dim);font-size:12.5px}
.reg-msg{font-size:13px;font-weight:600}
.reg-msg.ok{color:var(--win)}
.reg-msg.err{color:var(--loss)}

/* ---- registration form ---- */
.reg-form{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card-lg);padding:24px;display:flex;flex-direction:column;gap:18px;max-width:680px}
.fld{display:flex;flex-direction:column;gap:8px}
.fld>span{font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}
.fld>span em{color:var(--dim);text-transform:none;letter-spacing:0;font-style:normal;font-weight:500}
.fld input{background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:13px 14px;color:var(--text);font-family:var(--font);font-size:15px;transition:.15s}
.fld input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(61,123,240,.18)}
.poschips{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}
.poschip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:12px 14px;cursor:pointer;transition:.15s;text-align:left}
.poschip b{font-family:var(--mono);font-weight:700;font-size:16px;letter-spacing:.04em}
.poschip i{font-style:normal;font-size:11.5px;color:var(--muted-2)}
.poschip:hover{border-color:var(--blue-light)}
.poschip.on{border-color:var(--blue);background:rgba(61,123,240,.14);box-shadow:0 0 0 2px rgba(61,123,240,.25) inset}
.poschip.on b{color:var(--blue-light)}
.reg-actions{display:flex;align-items:center;gap:16px;flex-wrap:wrap}

/* registered list, grouped by position */
.reggroup{margin-bottom:14px;border:1px solid var(--border);border-radius:12px;overflow:hidden;background:var(--card)}
.reggroup-h{display:flex;align-items:center;gap:8px;padding:10px 14px;font-weight:700;font-size:13.5px;border-bottom:1px solid var(--border-2);background:var(--panel)}
.reggroup-h .cnt{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--muted-2)}
.reggroup-body{display:flex;flex-direction:column}
.regrow{display:flex;align-items:center;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-2)}
.regrow:last-child{border-bottom:none}
.regrow .rn{font-weight:600;font-size:14px}
.regrow .rnote{font-size:12px;color:var(--dim);font-style:italic}
.regrow .x{margin-left:auto;background:transparent;border:none;color:var(--dim);cursor:pointer;font-size:13px;padding:4px 8px;border-radius:6px;transition:.15s}
.regrow .x:hover{color:var(--loss);background:var(--loss-bg)}

/* position colour key (mini chips shared) */
.poschip-mini{display:inline-flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:11px;letter-spacing:.04em;padding:3px 8px;border-radius:5px;border:1px solid var(--border)}
.poschip-mini.GK{background:var(--draw-bg);color:var(--draw);border-color:var(--draw-bd)}
.poschip-mini.DF{background:rgba(61,123,240,.14);color:var(--blue-light);border-color:var(--blue-deep)}
.poschip-mini.MF{background:var(--win-bg);color:var(--win);border-color:var(--win-bd)}
.poschip-mini.FW{background:var(--loss-bg);color:var(--loss);border-color:var(--loss-bd)}

/* ---- accounts / auth ---- */
.acct-btn.signed-in{background:rgba(245,197,66,.16);border-color:var(--gold-2);color:var(--gold);font-family:var(--mono);letter-spacing:.02em}
.site-header:not(.over-hero) .acct-btn.signed-in{background:rgba(245,197,66,.16);border-color:var(--gold-2);color:var(--gold)}
/* keep "Team selection" subdued so the account button reads as primary */
.signin-ghost{background:transparent;border:1px solid rgba(255,255,255,.28);color:var(--muted);font-weight:600}
.site-header:not(.over-hero) .signin-ghost{background:transparent;border-color:var(--border);color:var(--muted-2)}
.signin-ghost:hover{color:#fff;border-color:#fff}
.reg-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:560px){.reg-2col{grid-template-columns:1fr}}
.acct-readout{display:flex;align-items:center;gap:12px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:13px 14px}
.acct-readout .acct-name{font-weight:800;font-size:15px;color:var(--text)}
.acct-readout .acct-edit{margin-left:auto;font-size:12.5px;color:var(--blue-light);font-weight:600}
.acct-readout .acct-edit:hover{color:#fff}

/* ---- admin gate ---- */
.gate{max-width:420px;margin:0 auto;text-align:center;background:var(--card);border:1px solid var(--border);border-radius:var(--r-card-lg);padding:34px 28px}
.gate-icon{font-size:30px;margin-bottom:8px}
.gate-title{font-weight:800;font-size:18px;letter-spacing:.02em;margin-bottom:20px}
.gate .fld span{text-align:left}
.gate-actions{margin-top:18px}
.btn-lock{background:var(--bg);border:1px solid var(--border);border-radius:var(--r-btn);color:var(--muted-2);font-size:14px;padding:8px 12px;cursor:pointer;transition:.15s}
.btn-lock:hover{border-color:var(--loss);color:var(--loss)}

/* ---- board toolbar ---- */
.board-toolbar{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad);display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.tb-left,.tb-right{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.tb-formation{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.tb-formation select{background:var(--card);border:1px solid var(--border);border-radius:8px;color:var(--text);font-family:var(--mono);font-weight:700;font-size:14px;padding:9px 12px;cursor:pointer}
.tb-formation select:focus{outline:none;border-color:var(--blue)}
.tb-count{font-size:13px;color:var(--muted-2)}
.tb-count b{font-family:var(--mono);color:var(--text);font-size:15px}
.tb-count.full b{color:var(--win)}

/* ---- board grid ---- */
.board-grid{max-width:var(--wrap);margin:0 auto;padding:0 var(--pad);display:grid;grid-template-columns:minmax(0,1.55fr) minmax(280px,1fr);gap:22px;align-items:start}

/* ---- pitch ---- */
.pitch{position:relative;aspect-ratio:68/105;width:100%;border-radius:16px;border:1px solid var(--border);
  background:
    linear-gradient(0deg,rgba(7,12,24,.35),rgba(7,12,24,.35)),
    repeating-linear-gradient(0deg,#0e2a1c 0 9.09%,#0c2418 9.09% 18.18%);
  overflow:hidden;box-shadow:inset 0 0 60px rgba(0,0,0,.45)}
.pitch-lines{position:absolute;inset:0;pointer-events:none}
.pitch-lines>div{position:absolute;border:2px solid rgba(255,255,255,.16)}
.pl-center{left:6%;right:6%;top:50%;height:0;border-width:1px 0 0 0}
.pl-circle{left:50%;top:50%;width:22%;aspect-ratio:1;border-radius:50%;transform:translate(-50%,-50%)}
.pl-box{left:26%;right:26%;height:13%}
.pl-box-top{top:0;border-top:none}
.pl-box-bot{bottom:0;border-bottom:none}

/* ---- slot (position on pitch) ---- */
.slot{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:3px;
  width:74px;background:transparent;border:none;cursor:pointer;padding:0;color:var(--text);transition:.12s}
.slot .slot-role{font-family:var(--mono);font-weight:700;font-size:10px;letter-spacing:.06em;
  width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:2px dashed rgba(255,255,255,.4);background:rgba(7,12,24,.55);color:rgba(255,255,255,.85);transition:.12s}
.slot .slot-name{font-size:11px;font-weight:700;text-align:center;line-height:1.15;max-width:108px;
  text-shadow:0 1px 4px rgba(0,0,0,.9);opacity:0}
.slot.filled .slot-name{opacity:1}
.slot.filled .slot-role{border-style:solid;border-color:#fff}
.slot.GK.filled .slot-role{background:var(--draw);color:#1a1407;border-color:var(--draw)}
.slot.DF.filled .slot-role{background:var(--blue);color:#fff;border-color:var(--blue-light)}
.slot.MF.filled .slot-role{background:var(--win);color:#06200f;border-color:var(--win)}
.slot.FW.filled .slot-role{background:var(--loss);color:#fff;border-color:var(--loss)}
.slot:hover .slot-role{transform:scale(1.08)}
.slot.selected .slot-role{box-shadow:0 0 0 3px var(--gold),0 0 18px rgba(245,197,66,.5)}
.slot.drop-hot .slot-role{transform:scale(1.18);box-shadow:0 0 0 3px var(--blue-light),0 0 22px rgba(92,149,245,.7);border-style:solid}
.slot.mismatch .slot-role{box-shadow:0 0 0 2px var(--draw)}
.slot .slot-depth{position:absolute;top:-4px;right:8px;font-family:var(--mono);font-size:10px;font-weight:700;
  background:var(--gold);color:#1a1407;border-radius:9px;padding:1px 5px;line-height:1.3}
/* starter's jersey number (from their profile) — mirrors slot-depth on the left */
.slot .slot-jnum{position:absolute;top:-4px;left:8px;font-family:var(--mono);font-size:10px;font-weight:700;
  background:#0A1326;color:#fff;border:1px solid rgba(255,255,255,.4);border-radius:9px;padding:1px 5px;line-height:1.3}

/* ---- movement arrows (coach annotation layer) ---- */
.pitch.arrowing{cursor:crosshair;touch-action:none}
.pitch-arrows{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.pitch-arrows .arw{fill:none;stroke:var(--gold);stroke-width:.85;stroke-linecap:round;stroke-dasharray:2.6 1.9;
  marker-end:url(#tbAh);filter:drop-shadow(0 1px 2px rgba(0,0,0,.6))}
.pitch-arrows .arw.preview{opacity:.72}
.pitch-arrows .arw-hit{fill:none;stroke:transparent;stroke-width:4.5;pointer-events:stroke;cursor:pointer}
.pitch-arrows marker path{fill:var(--gold)}
@media(hover:hover){.pitch-arrows .arw-hit:hover + .arw{stroke:var(--loss);stroke-width:1.15}}
#arrowBtn.on{background:var(--gold);border-color:var(--gold);color:#1a1407}
#arrowBtn.on:hover{background:var(--gold);color:#1a1407}

/* ---- board legend / how-to card ---- */
.tb-legend-wrap{max-width:var(--wrap);margin:0 auto 18px;padding:0 var(--pad)}
.legend-reopen{background:var(--card);border:1px solid var(--border);border-radius:10px;color:var(--muted-2);
  font-size:12.5px;font-weight:600;padding:8px 13px;cursor:pointer;transition:.15s}
.legend-reopen:hover{border-color:var(--blue-light);color:var(--text)}
.legend-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card-lg);padding:15px 17px}
.legend-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}
.legend-head .lg-title{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.legend-x{background:transparent;border:1px solid var(--border);border-radius:7px;color:var(--muted-2);
  font-size:11.5px;font-weight:700;padding:5px 10px;cursor:pointer;transition:.15s}
.legend-x:hover{border-color:var(--loss);color:var(--loss)}
.legend-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:13px 22px}
.legend-item{display:flex;gap:10px;align-items:flex-start}
.legend-item .lg-ic{font-size:16px;line-height:1.35;flex-shrink:0;width:20px;text-align:center}
.legend-item .lg-txt{display:flex;flex-direction:column;gap:2px;min-width:0}
.legend-item .lg-txt b{font-size:12.5px;font-weight:700;color:var(--text)}
.legend-item .lg-txt i{font-size:11.5px;font-style:normal;color:var(--dim);line-height:1.45}
.legend-item .lg-txt i b{color:var(--muted-2);font-weight:700}
@media(max-width:860px){.legend-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.legend-grid{grid-template-columns:1fr}}

/* ---- player pool ---- */
.pool{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card-lg);padding:16px;position:sticky;top:84px}
.pool-head{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase}
.pool-head .cnt{margin-left:auto;font-family:var(--mono);font-size:12px;color:var(--muted-2);background:var(--bg);border:1px solid var(--border);border-radius:20px;padding:2px 9px}
.pool-search{width:100%;margin:12px 0 10px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:10px 12px;color:var(--text);font-family:var(--font);font-size:14px}
.pool-search:focus{outline:none;border-color:var(--blue)}
.pool-filters{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.poolfilt{flex:1;min-width:42px;background:var(--bg);border:1px solid var(--border);border-radius:7px;color:var(--muted-2);
  font-family:var(--mono);font-weight:700;font-size:12px;padding:7px 4px;cursor:pointer;transition:.12s}
.poolfilt:hover{border-color:var(--blue-light);color:var(--text)}
.poolfilt.on{background:var(--blue);border-color:var(--blue);color:#fff}
.pool-list{display:flex;flex-direction:column;gap:7px;max-height:560px;overflow-y:auto;padding-right:2px}
.poolchip{display:flex;align-items:center;gap:9px;background:var(--bg);border:1px solid var(--border);border-radius:9px;padding:9px 11px;cursor:grab;transition:.12s;user-select:none}
.poolchip:hover{border-color:var(--blue-light);transform:translateX(2px)}
.poolchip.dragging{opacity:.45;cursor:grabbing}
.poolchip.used{opacity:.5}
.poolchip.used:hover{opacity:.75}
.poolchip .pc-pos{font-family:var(--mono);font-weight:700;font-size:10px;width:26px;text-align:center;padding:3px 0;border-radius:5px;border:1px solid var(--border)}
.poolchip.GK .pc-pos{color:var(--draw)} .poolchip.DF .pc-pos{color:var(--blue-light)}
.poolchip.MF .pc-pos{color:var(--win)} .poolchip.FW .pc-pos{color:var(--loss)}
.poolchip .pc-name{font-size:13.5px;font-weight:600;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.poolchip .pc-tag{font-family:var(--mono);font-size:10px;color:var(--gold);border:1px solid var(--gold-2);border-radius:5px;padding:2px 6px}
.poolchip .pc-ord{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--dim);min-width:18px;text-align:right;flex-shrink:0}
.poolchip .pc-time{font-family:var(--mono);font-size:10px;color:var(--dim);white-space:nowrap;flex-shrink:0}
.pool-hint{margin-top:12px;font-size:11.5px;color:var(--dim);line-height:1.4}

/* ---- slot editor ---- */
.slot-editor{max-width:var(--wrap);margin:22px auto 0;padding:0 var(--pad)}
.slot-editor .se-head{display:flex;align-items:center;justify-content:space-between;background:var(--panel);border:1px solid var(--border);border-bottom:none;border-radius:12px 12px 0 0;padding:13px 18px}
.se-head>div{display:flex;align-items:center;gap:10px}
.se-head b{font-size:14px}
.se-role{font-family:var(--mono);font-weight:700;font-size:11px;padding:4px 9px;border-radius:6px;border:1px solid var(--border)}
.se-role.GK{color:var(--draw)} .se-role.DF{color:var(--blue-light)} .se-role.MF{color:var(--win)} .se-role.FW{color:var(--loss)}
.se-close{background:var(--blue);border:none;color:#fff;font-weight:700;font-size:12.5px;padding:7px 16px;border-radius:7px;cursor:pointer}
.se-body{background:var(--card);border:1px solid var(--border);border-radius:0 0 12px 12px;padding:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.se-block .se-label{font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:var(--muted-2);margin-bottom:10px}
.se-block .se-label em{color:var(--dim);font-style:normal}
.depthrow{display:flex;align-items:center;gap:9px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 11px;margin-bottom:7px}
.depthrow.starter{border-color:var(--blue-deep)}
.depthrow .depth-i{font-family:var(--mono);font-size:11px;color:var(--dim);width:14px}
.depthrow .depth-n{font-size:13.5px;font-weight:600;flex:1}
.depthrow .mm,.depthrow .off{font-size:10px}
.depthrow .x{background:transparent;border:none;color:var(--dim);cursor:pointer;font-size:13px;padding:2px 6px;border-radius:5px}
.depthrow .x:hover{color:var(--loss);background:var(--loss-bg)}
.se-cands{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow-y:auto}
.candchip{display:flex;align-items:center;justify-content:space-between;gap:8px;background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 11px;cursor:pointer;transition:.12s}
.candchip:hover{border-color:var(--blue);background:rgba(61,123,240,.1)}
.candchip .pc-name{font-size:13px;font-weight:600}
.candchip .add-as{font-family:var(--mono);font-size:10px;color:var(--blue-light)}
.mm{color:var(--draw);font-size:10px;font-weight:700;border:1px solid var(--draw-bd);border-radius:5px;padding:1px 6px}

/* ---- responsive ---- */
@media(max-width:860px){
  .board-grid{grid-template-columns:1fr}
  .pitch{max-width:460px;margin:0 auto}
  .pool{position:static;top:auto}
  .pool-list{max-height:300px}
  .se-body{grid-template-columns:1fr}
}
@media(max-width:560px){
  .poschips{grid-template-columns:repeat(2,1fr)}
  .slot{width:58px}
  .slot .slot-role{width:32px;height:32px;font-size:9px}
  .slot .slot-name{font-size:9.5px}
}

/* ---- Matches page (matches.js redesign) ---- */
.mt-scroll::-webkit-scrollbar{height:8px}
.mt-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}
.match-card:hover{border-color:var(--blue) !important}
.mt-pos:hover{border-color:var(--blue) !important}
.mt-row:hover{background:#13203A !important}
.mt-submit:hover{box-shadow:0 12px 30px -8px rgba(61,123,240,.7);transform:translateY(-1px)}
#matchRoot input:focus{outline:none;border-color:var(--blue) !important;background:#0A1326 !important}
@media(max-width:860px){
  .mt-grid{grid-template-columns:1fr !important}
}
@media(max-width:560px){
  .mt-strip{flex-direction:column !important;align-items:flex-start !important}
  .mt-posrow{grid-template-columns:1fr 1fr !important}
}

/* ============================================================
   STATS PAGE — immersive hero, sticky stat-category tabs,
   classic 1-2-3 podium, list-style full table
   (StatsScreen "podium" design)
   ============================================================ */
.hero.hero-stats{height:clamp(420px,56vh,520px)}
.scorebug .lead-bug{text-transform:uppercase;font-size:15px}

/* position chip (shared) */
.poschip{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.06em;padding:3px 9px;border-radius:6px;display:inline-block;white-space:nowrap}

/* ---- sticky stat-category tabs ----
   The stats page header overlays the hero (.over-hero → absolute) and
   scrolls away with it, so the tab bar sticks to the very top. */
.stat-tabs{position:sticky;top:0;z-index:50;margin-top:26px;background:rgba(7,12,24,.9);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-top:1px solid rgba(255,255,255,.05);border-bottom:1px solid var(--border-2)}
.stat-tabs .in{max-width:var(--wrap);margin:0 auto;padding:14px var(--pad) 12px;display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.stat-tabs .in::-webkit-scrollbar{display:none}
.stat-tab{flex:0 0 auto;font-family:var(--font);font-size:13px;font-weight:700;padding:9px 14px;border-radius:10px;border:1px solid rgba(255,255,255,.1);background:rgba(255,255,255,.03);color:var(--muted-2);cursor:pointer;transition:.15s;white-space:nowrap}
.stat-tab:hover{color:var(--muted);border-color:var(--divider)}
.stat-tab.active{background:var(--blue);border-color:var(--blue-light);color:#fff}
.stats-sec{padding-top:40px}

/* ---- classic 1-2-3 podium (section 01, DOM order 2-1-3) ---- */
.pod3{display:flex;align-items:flex-end;justify-content:center;gap:10px;max-width:560px;margin:0 auto;padding:12px 0 0;border-bottom:1px solid var(--border-2)}
.pod3-col{flex:1;max-width:150px;min-width:0;display:flex;flex-direction:column;align-items:center;text-align:center}
.pod3-col.p1{max-width:170px}
.pod3-star{font-size:16px;line-height:1;color:var(--gold);margin-bottom:4px}
.pod3-ava{position:relative;width:70px;height:70px;border-radius:50%;margin-bottom:11px}
.pod3-col.p1 .pod3-ava{width:88px;height:88px}
.pod3-col.p3 .pod3-ava{width:66px;height:66px}
.pod3-ava .ph{width:100%;height:100%;border-radius:50%;object-fit:cover;background:#0A1428;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:20px;color:#fff}
.pod3-badge{position:absolute;top:-9px;left:50%;transform:translateX(-50%);padding:2px 9px;border-radius:8px;color:#0A1326;font-family:var(--mono);font-weight:700;font-size:11px}
.pod3-first{font-family:var(--mono);font-size:9.5px;font-weight:700;letter-spacing:.12em;color:var(--muted-2);text-transform:uppercase;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pod3-name{font-weight:800;font-size:15px;line-height:1.15;margin-top:2px}
.pod3-col.p1 .pod3-name{font-size:17px}
.pod3-chips{display:flex;align-items:center;justify-content:center;gap:6px;flex-wrap:wrap;margin-top:6px}
.pod3-val{font-weight:800;font-size:23px;line-height:1;margin-top:9px}
.pod3-col.p1 .pod3-val{font-weight:900;font-size:29px}
.pod3-plinth{width:100%;margin-top:10px;border-radius:12px 12px 0 0;display:flex;align-items:flex-start;justify-content:center;padding-top:8px;font-family:var(--mono);font-weight:700}
.pod3-col.p2 .pod3-plinth{height:78px;font-size:30px;color:rgba(201,210,224,.16);background:linear-gradient(180deg,#16233F,#0C1524);border:1px solid rgba(255,255,255,.07);border-bottom:none}
.pod3-col.p1 .pod3-plinth{height:112px;font-size:38px;color:rgba(245,197,66,.22);background:linear-gradient(180deg,#2A2410,#141A2C);border:1px solid rgba(245,197,66,.25);border-bottom:none}
.pod3-col.p3 .pod3-plinth{height:60px;font-size:26px;color:rgba(192,132,87,.2);background:linear-gradient(180deg,#241A12,#0C1524);border:1px solid rgba(255,255,255,.07);border-bottom:none}
.pod3-cap{text-align:center;font-family:var(--mono);font-weight:700;font-size:10px;letter-spacing:.14em;color:var(--muted-2);margin-top:10px}

/* ---- full table (rank 1+, repeating the podium), list rows ---- */
.sl-head{display:flex;align-items:center;padding:0 14px 10px;font-family:var(--mono);font-weight:700;font-size:10px;letter-spacing:.12em;color:var(--dim)}
.sl-head .r{width:30px}
.sl-head .p{flex:1;padding-left:12px}
.slist{border-radius:16px;overflow:hidden;background:var(--panel);border:1px solid var(--border)}
.sl-row{display:flex;align-items:center;gap:12px;padding:14px;border-top:1px solid #131C2E;transition:background .12s}
.sl-row:first-child{border-top:none}
.sl-row:hover{background:#0E1729}
.sl-rank{width:26px;height:26px;flex:0 0 auto;border-radius:8px;background:#152138;display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-weight:700;font-size:12px;color:#7E8AA0}
.sl-ava{width:38px;height:38px;flex:0 0 auto;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;color:#fff;object-fit:cover;background:#0A1326}
.sl-main{flex:1;min-width:0}
.sl-name{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.sl-name .nm{font-weight:700;font-size:15px;line-height:1.15}
/* jersey number beside the name (podium, table rows, player card) */
.jnum{font-family:var(--mono);font-weight:700;font-size:12px;color:var(--dim);letter-spacing:.02em}
.pcard-jnum{font-size:15px;color:#EEF3FB;opacity:.7;text-shadow:0 2px 10px rgba(0,0,0,.5)}
.sl-meta{font-family:var(--mono);font-size:11px;color:var(--dim);margin-top:4px}
.sl-stat{flex:0 0 auto;display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:56px}
.sl-stat .v{font-weight:800;font-size:20px;line-height:1;color:var(--blue-light)}
.sl-bar{display:block;width:56px;height:4px;border-radius:99px;background:#152138;overflow:hidden}
.sl-bar>span{display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#5C95F566,#5C95F5)}

/* ---- player-card popup (3D tilt + flip, from the PlayerCards design) ----
   Opened from a podium spot or table row; flip state lives on
   [data-flip-card][data-flipped]; tilt/glare styled inline by JS. */
.pcard-modal{position:fixed;inset:0;z-index:210;background:rgba(4,8,18,.78);backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:20px}
.pcard-modal-box{position:relative;width:min(320px,86vw,62vh)}
.pcard-modal-x{position:absolute;top:-14px;right:-14px;width:36px;height:36px;border-radius:50%;background:#111B2E;border:1px solid var(--border);color:var(--muted);font-size:14px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s}
.pcard-modal-x:hover{color:var(--text);border-color:var(--divider)}
.pcard{position:relative;aspect-ratio:300/424;cursor:pointer;perspective:1200px;-webkit-tap-highlight-color:transparent;outline-offset:4px}
.pcard-tilt{width:100%;height:100%;transition:transform .12s ease-out;transform-style:preserve-3d;will-change:transform}
.pcard-flip{position:relative;width:100%;height:100%;transition:transform .6s cubic-bezier(.2,.7,.2,1);transform-style:preserve-3d;will-change:transform}
[data-flip-card][data-flipped="1"] .pcard-flip{transform:rotateY(180deg)}
.pcard-face{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:var(--r-card);overflow:hidden;background:var(--card);border:1px solid var(--border);box-shadow:0 24px 48px -20px rgba(0,0,0,.8)}
.pcard-back{transform:rotateY(180deg);display:flex;flex-direction:column}
.pcard-photo{position:absolute;inset:0;background:radial-gradient(120% 90% at 50% 0%,#1a2942 0%,#111B2E 60%,#0c1424 100%)}
.pcard-photo img{position:absolute;left:50%;bottom:40px;transform:translateX(-50%);width:74%;height:auto;opacity:.9;object-fit:contain}
/* real profile photo (vs the floating silhouette): fill the whole portrait frame */
.pcard-photo img.real{left:0;bottom:0;transform:none;width:100%;height:100%;object-fit:cover;opacity:1}
.pcard-glare{position:absolute;inset:0;pointer-events:none;opacity:0;transition:opacity .25s ease;mix-blend-mode:overlay}
.pcard-pos{position:absolute;top:14px;left:14px;font-family:var(--mono);font-weight:700;font-size:12px;letter-spacing:1px}
.pcard-num{position:absolute;top:6px;right:16px;font-family:var(--mono);font-weight:700;font-size:52px;line-height:1;text-shadow:0 2px 10px rgba(0,0,0,.5)}
/* the ranked stat's value + unit, visible without flipping */
.pcard-callout{position:absolute;top:64px;right:16px;text-align:right}
.pcard-callout .v{display:block;font-family:var(--mono);font-weight:700;font-size:20px;line-height:1;text-shadow:0 2px 10px rgba(0,0,0,.5)}
.pcard-callout .u{font-family:var(--mono);font-size:9px;letter-spacing:.14em;color:var(--dim)}
.pcard-name{position:absolute;left:0;right:0;bottom:12px;padding:0 16px}
.pcard-name .fn{color:var(--muted-2);font-family:var(--mono);font-size:11px;letter-spacing:2px;text-transform:uppercase;margin-bottom:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard-name .ln{color:var(--text);font-weight:800;font-size:24px;line-height:1;letter-spacing:-.5px;text-transform:uppercase;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard-strip{position:absolute;left:0;right:0;bottom:0;height:4px;background:linear-gradient(90deg,var(--blue),var(--gold))}
.pcard-strip.rev{background:linear-gradient(90deg,var(--gold),var(--blue))}
.pcard-bhead{padding:18px 18px 13px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#16233b,var(--card))}
.pcard-bhead .r1{display:flex;align-items:baseline;justify-content:space-between;gap:10px}
.pcard-bhead .ln{color:var(--text);font-weight:800;font-size:19px;text-transform:uppercase;letter-spacing:-.3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pcard-bhead .pts{color:var(--gold);font-family:var(--mono);font-weight:700;font-size:21px}
.pcard-bhead .r2{color:var(--muted-2);font-family:var(--mono);font-size:10px;letter-spacing:1.6px;text-transform:uppercase;margin-top:4px}
.pcard-grid{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border)}
.pcard-grid > div{background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:12px;text-align:center}
.pcard-grid .k{color:var(--muted-2);font-family:var(--mono);font-size:9.5px;letter-spacing:1.6px;text-transform:uppercase}
.pcard-grid .v{color:var(--text);font-weight:900;font-size:36px;line-height:1}
@media (prefers-reduced-motion:reduce){
  .pcard-tilt,.pcard-flip{transition:none !important}
}

/* ---- stats responsive ---- */
@media(max-width:480px){
  .pod3{gap:8px}
  .pod3-col{max-width:110px}
  .pod3-col.p1{max-width:120px}
  .pod3-col.p1 .pod3-ava{width:84px;height:84px}
  .pod3-ava{width:66px;height:66px}
  .pod3-col.p3 .pod3-ava{width:62px;height:62px}
  .pod3-name{font-size:14px}
  .pod3-col.p1 .pod3-name{font-size:16px}
  .pod3-val{font-size:22px}
  .pod3-col.p1 .pod3-val{font-size:28px}
  /* keep list rows on one line on narrow phones */
  .sl-row{gap:10px;padding:12px}
  .sl-name .nm{font-size:14px}
  .sl-meta{font-size:10px}
  .sl-stat{min-width:48px}
  .sl-stat .v{font-size:18px}
  .sl-bar{width:48px}
}

/* ============================================================
   MANAGE — admin content editor (manage.js)
   ============================================================ */
.mng-note{max-width:var(--wrap);margin:0 auto 20px;background:var(--draw-bg);border:1px solid var(--draw-bd);
  color:var(--muted);border-radius:12px;padding:13px 16px;font-size:13.5px;line-height:1.5}
.mng-note b{color:var(--text)}
.mng-tabs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:22px}
.mng-tab{background:var(--card);border:1px solid var(--border);color:var(--muted-2);
  font-family:var(--font);font-weight:700;font-size:13.5px;padding:9px 16px;border-radius:var(--pill);cursor:pointer;transition:.15s}
.mng-tab:hover{color:var(--text);border-color:var(--divider)}
.mng-tab.active{background:var(--blue);border-color:var(--blue);color:#fff}
.mng-card{background:var(--card);border:1px solid var(--border);border-radius:var(--r-card-lg);padding:24px;margin-bottom:90px}
.mng-h{font-weight:800;font-size:16px;letter-spacing:.01em;margin-bottom:18px;color:var(--text)}
.mng-h em{color:var(--dim);font-style:normal;font-weight:500;font-size:13px;margin-left:8px}
.mng-sub{font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--blue-light);
  margin:22px 0 12px;padding-top:16px;border-top:1px solid var(--border-2)}
.mng-grid2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.mng-fld{gap:7px}
.mng-fld span{font-size:11.5px}
.mng-fld input,.mng-fld select{background:var(--bg);border:1px solid var(--border);border-radius:9px;
  padding:12px 13px;color:var(--text);font-family:var(--font);font-size:14.5px;transition:.15s;width:100%}
.mng-fld input:focus,.mng-fld select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(61,123,240,.18)}
.mng-inline{margin:14px 0 4px}
.mng-hintline{font-size:12.5px;color:var(--dim);margin-top:10px}
.mng-p{font-size:14px;color:var(--muted);line-height:1.6;max-width:680px;margin-bottom:16px}
.mng-p code{font-family:var(--mono);font-size:12.5px;background:var(--bg);border:1px solid var(--border-2);
  border-radius:5px;padding:2px 6px;color:var(--blue-light)}
.mng-actions{display:flex;flex-wrap:wrap;gap:12px}
.mng-empty{color:var(--dim);font-size:14px;padding:14px 0}

/* result + list rows */
.mng-rrow{border:1px solid var(--border-2);border-radius:12px;padding:16px;margin-bottom:14px;position:relative;background:var(--panel)}
.mng-rgrid{display:grid;grid-template-columns:1fr 1.6fr .8fr .8fr 1fr 1.6fr;gap:12px}
.mng-links{margin-top:12px}
.mng-links summary{cursor:pointer;font-size:12.5px;color:var(--blue-light);font-weight:700;
  font-family:var(--mono);letter-spacing:.04em;list-style:none}
.mng-links summary::-webkit-details-marker{display:none}
.mng-links summary::before{content:'▸ ';color:var(--dim)}
.mng-links[open] summary::before{content:'▾ '}
.mng-links .mng-grid2{margin-top:12px}
/* top-performers editor rows (Results / Record result / Internal games) */
.mng-perfrow{display:grid;grid-template-columns:34px minmax(0,1.4fr) minmax(0,.8fr) 64px;gap:10px;align-items:end;margin-top:12px}
.mng-perfrank{font-family:var(--mono);font-size:12px;color:var(--dim);padding-bottom:12px}
.mng-perfmotm input{width:20px;height:20px;accent-color:var(--gold);margin:9px 0 11px}
.mng-lrow{display:grid;grid-template-columns:1fr .5fr auto;gap:12px;align-items:end;
  border-bottom:1px solid var(--border-2);padding:12px 0}
.mng-srow{display:grid;grid-template-columns:1.6fr .8fr 1.1fr .6fr .5fr .5fr .5fr .6fr auto;gap:10px;align-items:end;
  border-bottom:1px solid var(--border-2);padding:12px 0}
.mng-del{background:var(--loss-bg);border:1px solid var(--loss-bd);color:var(--loss);
  font-family:var(--font);font-weight:700;font-size:12.5px;padding:8px 14px;border-radius:8px;cursor:pointer;margin-top:12px}
.mng-del:hover{background:#3a1a17}
.mng-del.slim{margin-top:0;padding:10px 13px;line-height:1;font-size:16px;align-self:end}
.mng-add{margin-top:16px}

/* "Record result" — upcoming fixture → results bridge */
.mng-record{background:var(--win-bg);border:1px solid var(--win-bd);color:var(--win);
  font-family:var(--font);font-weight:700;font-size:12.5px;padding:8px 14px;border-radius:8px;cursor:pointer;
  margin-top:12px;margin-left:10px}
.mng-record:hover{background:#153524}
.mng-recpanel{margin-top:14px;border:1px solid var(--win-bd);border-radius:10px;padding:14px 16px;
  background:rgba(54,210,123,.05)}
.mng-rech{font-size:12.5px;font-weight:700;font-family:var(--mono);letter-spacing:.04em;
  color:var(--win);margin-bottom:12px}
.mng-recgrid{display:grid;grid-template-columns:.7fr .7fr 1fr 1fr 1.6fr 1.6fr .8fr;gap:12px}
.mng-recwarn{margin-top:10px;font-size:12.5px;font-weight:600;color:var(--gold)}
.mng-recactions{display:flex;gap:10px;justify-content:flex-end;margin-top:14px}
.mng-recactions .btn[disabled]{opacity:.45;cursor:not-allowed}

/* sticky save bar */
.mng-savebar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;align-items:center;gap:14px;
  justify-content:flex-end;padding:14px var(--pad);background:rgba(10,19,38,.92);
  backdrop-filter:blur(10px);border-top:1px solid var(--border)}
.mng-dirty{color:var(--gold);font-size:12.5px;font-weight:700;font-family:var(--mono);letter-spacing:.04em}
.mng-msg{font-size:13px;font-weight:600}
.mng-msg.ok{color:var(--win)} .mng-msg.err{color:var(--loss)}
.reg-msg.err{color:var(--loss)}

@media(max-width:760px){
  .mng-grid2{grid-template-columns:1fr}
  .mng-rgrid{grid-template-columns:1fr 1fr}
  .mng-srow{grid-template-columns:1fr 1fr;gap:12px}
  .mng-lrow{grid-template-columns:1fr .6fr auto}
  .mng-savebar{padding:12px 16px;gap:10px}
}

/* Update-from-Excel */
.mng-xl-ok{background:var(--win-bg);border:1px solid var(--win-bd);color:var(--muted);
  border-radius:10px;padding:11px 14px;font-size:13.5px;margin-bottom:16px}
.mng-xl-ok b{color:var(--text)}
.mng-xl-err{background:var(--loss-bg);border:1px solid var(--loss-bd);color:#f3b4ad;
  border-radius:10px;padding:11px 14px;font-size:13.5px;margin-bottom:16px}
.mng-xl-status{color:var(--muted-2);font-size:14px;padding:8px 0}
.mng-xl-file{margin-left:14px;font-size:12.5px;color:var(--dim)}
.mng-xl-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.mng-xl-prev{border:1px solid var(--border-2);border-radius:12px;overflow:hidden;margin-bottom:16px}
.mng-xl-cap{font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue-light);padding:11px 16px;background:var(--panel);border-bottom:1px solid var(--border-2)}
.mng-xl-prev table.data{font-size:13px}
.mng-xl-prev table.data td{padding:9px 16px}
.mng-xl-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:8px}
@media(max-width:760px){ .mng-xl-grid{grid-template-columns:1fr} }

.mng-toolrow{max-width:var(--wrap);margin:0 auto 18px;display:flex;justify-content:flex-end}

/* Treasury (kas) panel */
.mng-kasbar{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:22px}
.mng-kascell{background:var(--panel);border:1px solid var(--border-2);border-radius:12px;padding:14px 16px}
.mng-kascell .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2)}
.mng-kascell .v{font-family:var(--mono);font-weight:700;font-size:22px;margin-top:6px;color:var(--text)}
.mng-kascell .v.gold{color:var(--gold)} .mng-kascell .v.win{color:var(--win)} .mng-kascell .v.loss{color:var(--loss)}
.mng-tform{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.mng-tform .mng-tnote{grid-column:1/-1}
.mng-trow{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--border-2);flex-wrap:wrap}
.mng-trow:last-child{border-bottom:none}
.mng-trow .t-date{font-size:12px;color:var(--muted-2);width:64px;flex:none}
.mng-trow .t-cat{font-size:13px;font-weight:600;width:120px;flex:none}
.mng-trow .t-amt{font-weight:700;width:130px;flex:none;text-align:right}
.mng-trow .t-amt.win{color:var(--win)} .mng-trow .t-amt.loss{color:var(--loss)}
.mng-trow .t-note{font-size:13px;color:var(--muted);flex:1;min-width:120px}
.mng-trow .t-mlink{color:var(--blue-light);font-size:12px}
/* tournament tools (Manage → Internal games): new-tournament row, rename row */
.mng-seriesrow{display:flex;align-items:center;gap:10px;margin-bottom:12px;flex-wrap:wrap}
.mng-seriesrow input{flex:1;min-width:200px;background:var(--bg);border:1px solid var(--border);border-radius:9px;
  padding:11px 13px;color:var(--text);font-family:var(--font);font-size:14px;transition:.15s}
.mng-seriesrow input:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(61,123,240,.18)}
.mng-scount{font-size:11px;color:var(--dim);white-space:nowrap}
/* foldable tournament groups in the editor */
.mng-group{border:1px solid var(--border-2);border-radius:12px;margin-bottom:10px;overflow:hidden;background:var(--panel)}
.mng-ghead{display:flex;align-items:center;gap:10px;padding:13px 16px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:.15s}
.mng-ghead:hover{background:#13203A}
.mng-gcaret{color:var(--muted-2);font-size:11px;width:14px;flex:none}
.mng-gname{font-weight:800;font-size:14px}
.mng-gcount{margin-left:auto;font-size:10.5px;letter-spacing:.06em;color:var(--dim);white-space:nowrap}
.mng-gbody{padding:12px 14px;border-top:1px solid var(--border-2)}
.mng-gadd{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.mng-trow .mng-del{margin-left:auto}
@media(max-width:760px){
  .mng-kasbar{grid-template-columns:1fr}
  .mng-tform{grid-template-columns:1fr}
  .mng-trow .t-amt{text-align:left}
}

/* ============================================================
   MANAGE — ADMIN CONSOLE (full-screen 3-pane editor)
   Top bar · left rail · center editor · live preview · modal.
   Markup lives in manage.js. The console overlays the whole
   viewport; .manage-mode hides the public chrome behind it.
   ============================================================ */
body.manage-mode{overflow:hidden}
body.manage-mode .site-header,
body.manage-mode .site-footer{display:none}

.mc-shell{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;
  background:var(--bg);color:var(--text);font-family:var(--font);overflow:hidden}
.mc-dot{width:6px;height:6px;border-radius:99px;display:inline-block;flex:none}

/* ---- top bar ---- */
.mc-topbar{flex:none;display:flex;align-items:center;justify-content:space-between;
  gap:16px;padding:12px 22px;border-bottom:1px solid var(--border-2);background:var(--panel)}
.mc-brand{display:flex;align-items:center;gap:12px}
.mc-brandbar{width:7px;height:22px;border-radius:99px;background:var(--blue);box-shadow:0 0 14px rgba(61,123,240,.6)}
.mc-wordmark{font-weight:900;font-size:18px;letter-spacing:.12em}
.mc-badge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.18em;
  color:var(--dim);border:1px solid var(--border);border-radius:6px;padding:4px 8px;white-space:nowrap}
.mc-topright{display:flex;align-items:center;gap:16px}
.mc-pending{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--muted-2);white-space:nowrap}
.mc-link{font-size:13px;font-weight:700;color:var(--muted-2);white-space:nowrap}
.mc-link:hover{color:var(--text)}

/* ---- body grid ---- */
.mc-body{flex:1;display:grid;grid-template-columns:236px 1fr 340px;min-height:0}

/* ---- left rail ---- */
.mc-rail{border-right:1px solid var(--border-2);padding:14px 12px 24px;overflow-y:auto;background:var(--bg)}
.mc-railgroup{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.18em;color:var(--dim);padding:16px 10px 8px}
.mc-railgroup:first-child{padding-top:4px}
.mc-navitem{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:10px 12px;border-radius:10px;font-size:14px;font-weight:600;color:var(--muted-2);
  cursor:pointer;margin-bottom:2px;transition:background .15s,color .15s}
.mc-navitem:hover{background:#101a2e;color:var(--text)}
.mc-navitem.active{background:var(--blue);color:#fff;font-weight:700}
.mc-navleft{display:flex;align-items:center;gap:11px;min-width:0}
.mc-navdot{width:6px;height:6px;border-radius:99px;background:var(--dim);flex:none}
.mc-navitem.active .mc-navdot{background:#fff}
.mc-count{font-family:var(--mono);font-size:10px;color:var(--dim)}
.mc-navitem.active .mc-count{color:rgba(255,255,255,.85)}
.mc-icon{font-size:13px;width:15px;text-align:center;flex:none}
.mc-ext{font-size:11px;color:var(--dim)}
.mc-railsep{height:1px;background:var(--border-2);margin:12px 6px}

/* ---- admin "needs attention" badge ----
   Pending member top-up requests + unconfirmed payment claims. A pulsing
   red count on every Manage nav link, plus small chips inside the rail
   (Member saldo / Payments) so the committee can't miss new requests. */
@keyframes psia-alert{
  0%,100%{box-shadow:0 0 0 0 rgba(240,88,75,.55)}
  60%{box-shadow:0 0 0 7px rgba(240,88,75,0)}
}
.nav-alert{position:relative}
.nav-alert::after{
  content:attr(data-alert);
  position:absolute;top:-6px;right:-7px;
  min-width:17px;height:17px;padding:0 4px;box-sizing:border-box;
  display:flex;align-items:center;justify-content:center;
  background:var(--loss,#F0584B);color:#fff;border-radius:99px;
  font-family:var(--mono);font-size:9.5px;font-weight:700;line-height:1;
  border:1px solid rgba(255,255,255,.35);
  animation:psia-alert 1.6s ease-out infinite;
  pointer-events:none}
.mobnav .nav-alert::after{top:50%;right:14px;transform:translateY(-50%)}
.mc-alertchip{
  margin-left:8px;flex:none;min-width:17px;height:17px;padding:0 5px;box-sizing:border-box;
  display:inline-flex;align-items:center;justify-content:center;
  background:var(--gold,#F5C542);color:#0A1326;border-radius:99px;
  font-family:var(--mono);font-size:9.5px;font-weight:700;line-height:1;
  animation:psia-alert 1.6s ease-out infinite}
@media (prefers-reduced-motion:reduce){
  .nav-alert::after,.mc-alertchip{animation:none}
}

/* ---- center editor ---- */
.mc-center{overflow-y:auto;min-height:0;border-right:1px solid var(--border-2);
  background:var(--bg);display:flex;flex-direction:column}
.mc-center-scroll{flex:1;padding:26px 30px}
.mc-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.mc-eyebrow{font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.18em;color:var(--blue-light)}
.mc-title{font-weight:900;font-size:25px;letter-spacing:-.01em;margin-top:5px}
.mc-edited{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;
  color:var(--dim);white-space:nowrap;margin-top:6px}
.mc-desc{color:var(--muted-2);font-size:13.5px;margin:6px 0 22px;max-width:480px;line-height:1.5}

/* The shared .mng-* form blocks render straight into the center column —
   drop the standalone card chrome so fields sit on the editor surface. */
.mc-center .mng-card{background:transparent;border:none;border-radius:0;padding:0;margin:0 0 8px}
.mc-center .mng-fld input,.mc-center .mng-fld select,
.mc-center .gate input{background:var(--panel)}
.mc-center .mng-rrow{background:var(--panel)}

/* in-column sticky save bar */
.mc-savebar{position:sticky;bottom:0;z-index:5;display:flex;align-items:center;gap:14px;
  padding:13px 22px;border-top:1px solid var(--border-2);
  background:linear-gradient(180deg,rgba(10,19,38,.92),var(--panel));backdrop-filter:blur(6px)}
.mc-savestatus{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;color:var(--muted-2)}
.mc-saveactions{margin-left:auto;display:flex;gap:10px}

/* ---- right live preview ---- */
.mc-preview{background:#0A0F1C;overflow-y:auto;min-height:0;padding:20px 18px}
/* Member saldo: the pane hosts the member editor (manage.js saldoPreview) —
   compact the card and stack the form fields for the 340px column */
.mc-preview .mng-card{padding:16px 15px;margin-bottom:12px}
.mc-preview .mng-tform{grid-template-columns:1fr}
.mc-prevhead{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.mc-prevlabel{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.18em;color:var(--dim)}
.mc-prevtag{font-family:var(--mono);font-size:10px;color:var(--muted-2);border:1px solid var(--border);border-radius:6px;padding:3px 7px}
.mc-pvcard{background:var(--card);border:1px solid var(--border);border-radius:16px;overflow:hidden;margin-bottom:14px}
.mc-pvstrip{height:4px;background:linear-gradient(90deg,var(--blue),var(--gold))}
.mc-pvpad{padding:18px}
.mc-pvkicker{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.16em;color:var(--blue-light);display:flex;align-items:center;gap:7px}
.mc-pvteams{margin-top:18px;display:flex;align-items:center;justify-content:space-between;gap:10px}
.mc-pvteam{font-weight:900;font-size:22px;line-height:1.05;flex:1;min-width:0}
.mc-pvteam.away{color:var(--muted-2);text-align:right;word-break:break-word}
.mc-pvvs{font-family:var(--mono);font-weight:700;font-size:12px;color:var(--dim)}
.mc-pvdate{margin-top:16px;font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;color:var(--muted-2);text-align:center}
.mc-pvmeta{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);display:flex;flex-wrap:wrap;
  justify-content:center;gap:8px;font-size:12px;color:var(--muted-2)}
.mc-pvmeta .sep{color:var(--dim)}
.mc-pvbtn{margin-top:16px;text-align:center;background:var(--blue);color:#fff;font-weight:800;font-size:13px;padding:11px;border-radius:10px}
.mc-pvnote{display:flex;gap:8px;font-size:11.5px;color:var(--dim);line-height:1.5}
.mc-pvlist{margin-top:12px;display:flex;flex-direction:column;gap:9px}
.mc-pvrow{display:flex;align-items:center;gap:12px}
.mc-pvrank{font-family:var(--mono);font-weight:900;font-size:14px;width:16px;flex:none}
.mc-pvname{flex:1;font-weight:700;font-size:13.5px;min-width:0}
.mc-pvval{font-family:var(--mono);font-weight:900;font-size:14px}
.mc-pvval.gold{color:var(--gold)}
.mc-pvempty{color:var(--dim);font-size:13px}
.mc-pvbal{margin-top:14px;font-family:var(--mono);font-weight:900;font-size:26px;color:var(--gold)}
.mc-pvsub{margin-top:8px;font-size:12.5px;color:var(--muted-2);line-height:1.5}
.mc-formrow{margin-top:14px;display:flex;gap:6px;flex-wrap:wrap}
.mc-formchip{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:13px;font-family:var(--mono)}
.mc-formchip.win{background:var(--win-bg);color:var(--win)}
.mc-formchip.draw{background:var(--draw-bg);color:var(--draw)}
.mc-formchip.loss{background:var(--loss-bg);color:var(--loss)}
.mc-pvline{margin-top:16px;padding-top:14px;border-top:1px solid var(--border);display:flex;
  justify-content:space-between;gap:8px;font-size:13px;color:var(--muted-2)}
.mc-pvline .win{color:var(--win)} .mc-pvline .draw{color:var(--draw)} .mc-pvline .loss{color:var(--loss)}
.mc-statgrid{margin-top:14px;display:grid;grid-template-columns:1fr 1fr;gap:12px}
.mc-statcell{background:var(--panel);border:1px solid var(--border-2);border-radius:12px;padding:14px}
.mc-statnum{font-weight:900;font-size:26px}
.mc-statlbl{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2);margin-top:4px}

/* ---- publish modal ---- */
.mc-modal-bg{position:fixed;inset:0;background:rgba(4,8,16,.72);backdrop-filter:blur(4px);
  display:flex;align-items:center;justify-content:center;z-index:80;animation:mcfade .15s ease}
.mc-modal{width:460px;max-width:92vw;background:#0E1729;border:1px solid var(--border);border-radius:18px;
  overflow:hidden;box-shadow:0 40px 100px -30px #000;animation:mcpop .2s ease}
@keyframes mcfade{from{opacity:0}to{opacity:1}}
@keyframes mcpop{from{transform:scale(.96) translateY(6px);opacity:0}to{transform:none;opacity:1}}
.mc-modal-strip{height:4px;background:linear-gradient(90deg,var(--blue),var(--gold))}
.mc-modal-pad{padding:24px 26px}
.mc-modal-title{font-weight:900;font-size:22px;margin-top:8px}
.mc-modal-text{color:var(--muted-2);font-size:13.5px;line-height:1.55;margin-top:8px}
.mc-modal-text code{font-family:var(--mono);color:var(--text);font-size:12.5px}
.mc-modal-list{margin-top:18px;background:var(--panel);border:1px solid var(--border);border-radius:12px;
  padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.mc-moditem{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--text)}
.mc-modal-actions{margin-top:20px;display:flex;gap:10px;justify-content:flex-end}
.mc-modal-more{margin-top:14px;text-align:center;font-size:12.5px;color:var(--muted-2);font-weight:600}
.mc-modal-more:hover{color:var(--text)}

/* ---- full-screen gate ---- */
.mc-gate-wrap{position:fixed;inset:0;z-index:60;background:var(--bg);display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;padding:24px}
.mc-gate-back{position:absolute;top:18px;left:22px;font-size:13px;color:var(--muted-2);font-weight:700}
.mc-gate-back:hover{color:var(--text)}

/* Mobile-only menu/detail chrome — hidden on desktop, revealed ≤720px (§mobile console) */
.mc-menuhead,.mc-mback{display:none}

/* ---- responsive ---- */
@media(max-width:1180px){
  .mc-body{grid-template-columns:220px 1fr}
  .mc-preview{display:none}
}
/* ============================================================
   MOBILE CONSOLE (≤720px) — iOS-Settings menu → detail.
   The rail becomes a full-screen vertical section list (the MENU);
   tapping a row drills into that section's editor (DETAIL) with a
   "‹ All sections" back control. .mc-shell.mc-m-menu / .mc-m-detail
   (set in manage.js) decide which pane is on screen.
   ============================================================ */
@media(max-width:720px){
  .mc-topbar{padding:10px 14px;gap:10px}
  .mc-badge{display:none}          /* redundant on a phone; keep the wordmark */
  .mc-pending{display:none}        /* the live pill now lives in the menu header */

  /* Live-site button: compact bordered header pill (was display:none) */
  .mc-link{display:inline-flex;align-items:center;font-size:12.5px;font-weight:700;
    padding:7px 11px;border:1px solid var(--border-2);border-radius:9px;
    color:var(--muted-2);background:var(--panel)}
  .mc-link:active{color:var(--text)}

  /* one pane at a time, filling the height under the top bar */
  .mc-body{grid-template-columns:1fr;grid-template-rows:1fr;min-height:0}
  .mc-center{border-right:none}
  .mc-preview{display:none}        /* already hidden ≤1180; explicit for safety */

  /* ---- rail → vertical iOS-Settings list ---- */
  .mc-rail{display:block;overflow-x:hidden;overflow-y:auto;border-right:none;border-bottom:none;
    padding:0 12px calc(20px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch}
  .mc-railgroup{display:block}     /* re-show group captions */
  .mc-railsep{display:block}       /* re-show the separator */
  .mc-navdot{display:none}         /* iOS rows drop the dot */
  .mc-ext{display:inline}          /* external ↗ stays on data-view rows */
  /* .mc-count is intentionally NOT hidden here → returns to its default inline */

  .mc-navitem{display:flex;align-items:center;justify-content:flex-start;gap:10px;
    padding:14px 12px;margin-bottom:0;border-radius:0;white-space:normal;
    border-bottom:1px solid var(--border-2);font-size:15.5px;min-height:52px;color:var(--muted-2)}
  .mc-navitem:hover{background:transparent;color:var(--muted-2)}   /* no hover paint on touch */
  .mc-navleft{flex:1 1 auto;min-width:0}                            /* pushes count+chevron to the edge */
  .mc-count{color:var(--dim)}
  /* returning from detail leaves `tab` set → neutralise the blue active row */
  .mc-navitem.active{background:transparent;color:var(--text);font-weight:600}
  .mc-navitem.active .mc-count{color:var(--dim)}
  /* chevron ONLY on internal drill-in rows (data-tab); external data-view rows keep ↗ */
  .mc-navitem[data-tab]::after{content:'\203A';margin-left:2px;flex:none;
    color:var(--dim);font-size:20px;line-height:1;font-weight:400}

  /* ---- menu header (title + status pill) ---- */
  .mc-menuhead{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 12px 10px}
  .mc-menutitle{font-weight:900;font-size:26px;letter-spacing:-.01em;color:var(--text)}
  .mc-menupend{display:flex}

  /* ---- detail back control ---- */
  .mc-mback{display:inline-flex;align-items:center;background:none;border:none;cursor:pointer;
    padding:2px 0 12px;margin:0;font-family:var(--font);font-size:15px;font-weight:700;color:var(--blue-light)}

  /* ---- one-screen switch (specificity 0,3,0 beats the base 0,1,0) ---- */
  .mc-shell.mc-m-menu   .mc-center{display:none}
  .mc-shell.mc-m-detail .mc-rail{display:none}
  .mc-shell.mc-m-detail .mc-center{display:flex}

  .mc-center-scroll{padding:16px 16px calc(16px + env(safe-area-inset-bottom))}
  .mc-savebar{padding:12px 16px;flex-wrap:wrap}
  .mc-saveactions{margin-left:0}
}

/* ============================================================
   MATCHES PAGE — next-fixture spotlight, upcoming list, results
   (markup lives in app.js: viewMatches / nextSpotlight / upcomingSection)
   ============================================================ */

/* ---- compact matches hero (mockup proportions) ---- */
.hero-matches{height:clamp(420px,52vh,520px)}
.hero-matches .lower-third{bottom:42px}
.hero-matches .hero-h1{font-size:80px;line-height:.92;margin-top:14px}
.hero-matches .hero-sub{max-width:520px;color:var(--muted)}

/* ---- 01 next-fixture broadcast spotlight ---- */
.spot{position:relative;border:1px solid var(--border);border-radius:18px;overflow:hidden;
  background:radial-gradient(120% 140% at 50% -10%,#16233F 0%,var(--card) 55%)}
.spot-meta{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;
  padding:20px 32px;border-bottom:1px solid #1F2A41}
.spot-date{font-family:var(--mono);font-size:12px;color:var(--muted-2);letter-spacing:.06em}
.spot-info{display:flex;align-items:center;gap:16px;font-size:12.5px;color:var(--muted-2);font-weight:500;flex-wrap:wrap}
.spot-info .dot{color:#3A434F}

.spot-matchup{display:flex;align-items:center;justify-content:center;gap:clamp(20px,5vw,56px);
  flex-wrap:nowrap;padding:38px 32px 34px}
.spot-side{display:flex;align-items:center;gap:16px;flex:1;min-width:0}
.spot-side.home{justify-content:flex-end}
.spot-side.away{justify-content:flex-start}
.spot-side.home .spot-tx{text-align:right}
.spot-side.away .spot-tx{text-align:left}
.spot-team{font-weight:900;font-size:clamp(30px,5vw,52px);line-height:1}
.spot-team.away{color:var(--muted-2)}
.spot-role{font-family:var(--mono);font-size:10px;letter-spacing:.2em;color:var(--dim);margin-top:7px}
.spot-side.home .spot-role{color:var(--blue-light)}
.spot-crest{height:clamp(52px,8vw,76px);width:auto;filter:drop-shadow(0 6px 16px rgba(0,0,0,.5))}
.spot-badge{height:clamp(52px,8vw,76px);width:clamp(52px,8vw,76px);border-radius:50%;
  border:1px solid var(--divider);background:var(--panel);display:flex;align-items:center;justify-content:center;
  font-weight:900;font-size:clamp(16px,2.4vw,22px);color:var(--muted-2);flex-shrink:0}

.spot-center{display:flex;flex-direction:column;align-items:center;gap:10px;flex-shrink:0}
.cd-label{font-family:var(--mono);font-size:9.5px;letter-spacing:.2em;color:var(--dim)}
.cd{display:flex;align-items:flex-start;gap:8px;font-family:var(--mono)}
.cd-u{text-align:center}
.cd-n{font-size:24px;font-weight:700;color:var(--text);line-height:1}
.cd-n.blue{color:var(--blue-light)}
.cd-l{font-size:8.5px;letter-spacing:.14em;color:var(--dim);margin-top:4px}
.cd-sep{font-size:22px;color:var(--divider);line-height:1}
.spot-vs{font-weight:900;font-style:italic;font-size:13px;color:var(--blue);letter-spacing:.04em;margin-top:2px}

.spot-cta{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding:22px 32px;background:var(--panel);border-top:1px solid #1F2A41}
.spot-fill{flex:1;min-width:240px}
.spot-spots{display:flex;align-items:baseline;gap:9px}
.spot-spots .n{font-weight:900;font-size:30px;color:var(--blue-light);line-height:1}
.spot-spots .t{font-size:13.5px;color:var(--muted-2)}
.spot-spots .t.dim{font-size:13px;color:var(--dim)}
.spot-prog{margin-top:11px;max-width:420px;background:var(--card)}

/* ---- 02 upcoming fixtures list ---- */
.upc-list{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--card)}
.upc-row{display:grid;grid-template-columns:108px 1fr 220px 150px;align-items:center;gap:22px;
  padding:20px 24px;border-bottom:1px solid #1F2A41;transition:.15s}
.upc-row:last-child{border-bottom:none}
.upc-row.lk:hover{background:#13203A}
.upc-cal{display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:10px 6px}
.upc-cal .d1{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:var(--dim)}
.upc-cal .d2{font-weight:900;font-size:22px;line-height:1.1}
.upc-cal .d3{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--dim)}
.upc-team{font-weight:800;font-size:18px}
.upc-team .v{color:var(--dim);font-style:italic;font-size:14px;font-weight:600}
.upc-sub{margin-top:6px;font-size:12.5px;color:var(--muted-2)}
.upc-prog .pl{font-size:12.5px;color:var(--muted-2);margin-bottom:8px}
.upc-prog .progress{margin-top:0;height:6px;background:var(--panel)}
.upc-reg{background:rgba(61,123,240,.14);border:1px solid #2F5BB0;color:var(--blue-light);
  font-weight:700;font-size:13px;padding:11px 18px;border-radius:8px;text-align:center;white-space:nowrap;transition:.15s}
.upc-reg:hover{background:var(--blue);color:#fff}

/* ---- internal games & tournaments (Matches page) ---- */
.int-group{margin-bottom:18px}
.int-group:last-child{margin-bottom:0}
.int-ghead{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:10px}
.int-ghead[data-intgroup]{cursor:pointer;-webkit-user-select:none;user-select:none}
.int-caret{display:inline-block;width:16px;color:var(--muted-2);font-size:11px}
.int-gname{font-weight:800;font-size:15px;letter-spacing:.01em}
.int-gcount{font-size:10.5px;letter-spacing:.08em;color:var(--dim)}
.int-list{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--card)}
.int-row{display:grid;grid-template-columns:200px 1fr 180px;align-items:center;gap:18px;
  padding:16px 22px;border-bottom:1px solid #1F2A41}
.int-row:last-child{border-bottom:none}
.int-meta{font-size:11px;letter-spacing:.06em;color:var(--muted-2)}
.int-sides{font-weight:800;font-size:16px}
.int-sides .v{color:var(--dim);font-style:italic;font-size:13px;font-weight:600}
.int-res{display:flex;align-items:center;justify-content:flex-end;gap:10px}
.int-score{font-weight:900;font-size:20px;color:var(--text)}
.int-tag{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:.08em;border-radius:6px;
  padding:4px 9px;background:rgba(61,123,240,.14);border:1px solid #2F5BB0;color:var(--blue-light)}
.int-tag.played{background:var(--panel);border-color:var(--border);color:var(--muted-2)}
.int-note{font-size:12px;color:var(--muted-2)}
.int-row.lk{cursor:pointer;transition:.15s}
.int-row.lk:hover{background:#13203A}
.int-go{font-family:var(--mono);font-size:10.5px;color:var(--dim);white-space:nowrap;transition:.15s}
.int-row.lk:hover .int-go{color:var(--blue-light)}
.rbadge.int{color:var(--blue-light);background:rgba(61,123,240,.14);border:1px solid #2F5BB0}
.rcard.internal{border-left-color:var(--blue)}
/* mini league table above a tournament's matchdays */
.int-standings{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--card);margin-bottom:12px}
.int-strow{display:grid;grid-template-columns:34px minmax(0,1fr) 34px 34px 34px 34px 66px 44px 52px;
  align-items:center;gap:6px;padding:10px 18px;border-bottom:1px solid #1F2A41;font-size:13.5px}
.int-strow:last-child{border-bottom:none}
.int-sthead{font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--dim);background:var(--panel)}
.int-sthead .int-stname,.int-sthead .int-stpts{font-weight:400}
.int-strk{font-family:var(--mono);font-size:11px;color:var(--dim)}
.int-strow.lead{background:rgba(245,197,66,.05)}
.int-strow.lead .int-strk{color:var(--gold);font-weight:700}
.int-stname{font-weight:700}
.int-stc{text-align:center;color:var(--muted-2)}
.int-stc.gfga{font-size:12px}
.int-stpts{text-align:right;font-weight:900;color:var(--text)}
@media (max-width:720px){
  .int-row{grid-template-columns:1fr auto;row-gap:6px}
  .int-meta{grid-column:1 / -1}
}
@media (max-width:560px){
  .int-strow{grid-template-columns:26px minmax(0,1fr) 28px 28px 28px 28px 44px;padding:10px 14px}
  .int-stc.gfga,.int-stc.gd{display:none}
}

/* ---- 03 all results table ---- */
.shead.rec{justify-content:space-between;gap:16px;flex-wrap:wrap}
.shead-tag{display:flex;align-items:center}
.rec-line{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--muted-2)}
.rec-line .lab{color:var(--dim)}
.rec-line .w{font-weight:700;color:var(--win)}
.rec-line .d{font-weight:700;color:var(--gold-2)}
.rec-line .l{font-weight:700;color:var(--loss)}
.rec-line .s{color:var(--divider)}

.restable{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--card)}
.rt-head{display:grid;grid-template-columns:18px 86px 1fr auto 150px;align-items:center;gap:18px;
  padding:13px 24px;background:var(--panel);border-bottom:1px solid var(--border);
  font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--dim)}
.rt-head .r{text-align:right}
.rt-row{display:grid;grid-template-columns:18px 86px 1fr auto 150px;align-items:center;gap:18px;
  padding:17px 24px;border-bottom:1px solid #1F2A41;transition:.15s}
.rt-row:last-child{border-bottom:none}
.rt-row.lk:hover{background:#13203A}
.rt-dot{width:9px;height:9px;border-radius:50%}
.rt-dot.win{background:var(--win);box-shadow:0 0 0 3px rgba(54,210,123,.16)}
.rt-dot.draw{background:var(--draw);box-shadow:0 0 0 3px rgba(224,181,40,.16)}
.rt-dot.loss{background:var(--loss);box-shadow:0 0 0 3px rgba(240,88,75,.16)}
.rt-dot.int{background:var(--blue-light);box-shadow:0 0 0 3px rgba(61,123,240,.16)}
.rt-date{font-family:var(--mono);font-size:11.5px;color:var(--muted-2)}
.rt-fix{font-weight:800;font-size:16.5px}
.rt-fix .v{color:var(--dim);font-style:italic;font-size:13px;font-weight:600}
.rt-score{display:flex;align-items:center;gap:12px;justify-content:flex-end}
.rt-sc{font-weight:900;font-size:23px;letter-spacing:.01em}
.rt-score .rbadge{width:52px;text-align:center;padding:3px 8px}
.rt-report{font-family:var(--mono);font-size:11.5px;font-weight:700;color:var(--dim);text-align:right;white-space:nowrap;transition:.15s}
.rt-row.lk:hover .rt-report{color:var(--text)}

/* ---- matches page responsive ---- */
@media(max-width:860px){
  .hero-matches .hero-h1{font-size:46px !important}
  .spot-cta{flex-direction:column;align-items:stretch}
  .upc-row{grid-template-columns:88px 1fr;row-gap:14px}
  .upc-prog{grid-column:1 / -1}
  .upc-row > .upc-reg,.upc-row > .upc-actions{grid-column:1 / -1}
  .rt-head{display:none}
  .rt-row{grid-template-columns:14px 66px 1fr;row-gap:6px}
  .rt-fix{font-size:15px}
  .rt-score{grid-column:2 / -1;justify-content:flex-start}
  .rt-report{display:none}
}
@media(max-width:560px){
  .hero-matches .hero-h1{font-size:38px !important}
  .spot-matchup{gap:16px}
  .spot-team{font-size:30px}
}

/* ============================================================
   VIEW TRANSITIONS — depth swap on page navigation (ClubNav)
   Only #app is named, so the header/footer never animate. The
   root group's default cross-fade is disabled for the same
   reason. JS applies transitions to user navigation only.
   ============================================================ */
main#app{view-transition-name:psia-view}
::view-transition-old(root),::view-transition-new(root){animation:none}
/* Cube quarter-turn on #app. r = 50vw ⇒ a viewport-wide cube, so each
   face rests at natural size and never crosses the camera plane. The
   brightness ramp fakes a lit edge and makes the volume read as solid. */
@keyframes vt-cube-out{
  0%  {opacity:1;filter:brightness(1);
       transform:perspective(150vw) translateZ(-50vw) rotateY(0)      translateZ(50vw)}
  55% {opacity:1;filter:brightness(.72)}
  100%{opacity:0;filter:brightness(.45);
       transform:perspective(150vw) translateZ(-50vw) rotateY(-90deg) translateZ(50vw)}
}
@keyframes vt-cube-in{
  0%  {opacity:0;filter:brightness(.45);
       transform:perspective(150vw) translateZ(-50vw) rotateY(90deg)  translateZ(50vw)}
  45% {opacity:1;filter:brightness(.72)}
  100%{opacity:1;filter:brightness(1);
       transform:perspective(150vw) translateZ(-50vw) rotateY(0)      translateZ(50vw)}
}
::view-transition-old(psia-view){transform-origin:50% 50%;
  animation:vt-cube-out 440ms cubic-bezier(.66,0,.2,1) both}
::view-transition-new(psia-view){transform-origin:50% 50%;
  animation:vt-cube-in  440ms cubic-bezier(.66,0,.2,1) both}
/* Reverse turn when navigating backwards through the nav order. */
:root[data-vt-dir="back"]::view-transition-old(psia-view){animation-name:vt-cube-out-r}
:root[data-vt-dir="back"]::view-transition-new(psia-view){animation-name:vt-cube-in-r}
@keyframes vt-cube-out-r{
  0%  {opacity:1;filter:brightness(1);
       transform:perspective(150vw) translateZ(-50vw) rotateY(0)     translateZ(50vw)}
  55% {opacity:1;filter:brightness(.72)}
  100%{opacity:0;filter:brightness(.45);
       transform:perspective(150vw) translateZ(-50vw) rotateY(90deg) translateZ(50vw)}
}
@keyframes vt-cube-in-r{
  0%  {opacity:0;filter:brightness(.45);
       transform:perspective(150vw) translateZ(-50vw) rotateY(-90deg) translateZ(50vw)}
  45% {opacity:1;filter:brightness(.72)}
  100%{opacity:1;filter:brightness(1);
       transform:perspective(150vw) translateZ(-50vw) rotateY(0)      translateZ(50vw)}
}
@media (prefers-reduced-motion:reduce){
  ::view-transition-old(psia-view),::view-transition-new(psia-view){animation:none !important}
}

/* ---- nav: animated gradient underline (ClubNav) ---- */
.nav-main a{position:relative;padding:6px 0;transition:color 160ms ease}
.nav-main a::after{
  content:"";position:absolute;left:0;right:0;bottom:-2px;height:2.5px;border-radius:2px;
  background:linear-gradient(90deg,var(--blue),var(--gold));
  opacity:0;transform:scaleX(0);transform-origin:left;
  transition:opacity 160ms ease,transform 220ms cubic-bezier(.22,.61,.36,1);
}
.nav-main a.active::after{opacity:1;transform:scaleX(1)}

/* ============================================================
   TACTICAL BOARD — roles & duties (FM-style markers)
   ============================================================ */
.slot .slot-duty{position:absolute;left:50%;transform:translateX(-50%);font-size:10px;line-height:1;pointer-events:none;text-shadow:0 1px 3px rgba(0,0,0,.9)}
.slot .slot-duty.AT{top:-12px;color:var(--loss)}
.slot .slot-duty.DE{top:32px;color:var(--win)}
.slot .slot-duty.SU{top:34px;color:var(--blue-light);font-weight:900}
.slot .slot-role.long{font-size:9px;letter-spacing:0}
.slot .slot-troleline{font-family:var(--mono);font-size:9px;color:rgba(255,255,255,.65);text-shadow:0 1px 3px rgba(0,0,0,.9);opacity:0}
.slot.filled .slot-troleline{opacity:1}

/* slot editor: role select + duty chips */
.se-rolesel{margin-bottom:10px}
.duty-chips{display:flex;gap:8px;flex-wrap:wrap}
.dutychip{min-width:88px}
.dutychip[disabled]{opacity:.35;cursor:not-allowed;pointer-events:none}
@media(max-width:560px){
  .slot .slot-duty.AT{top:-10px}
  .slot .slot-duty.DE{top:26px}
  .slot .slot-duty.SU{top:28px}
  .slot .slot-troleline{display:none}
}

/* ---- tactics panel (Feature B) ---- */
.tactics-wrap{max-width:var(--wrap);margin:0 auto 18px;padding:0 var(--pad)}
.tactics-panel{padding:18px;background:var(--panel);border:1px solid var(--border);border-radius:12px;display:flex;flex-direction:column;gap:16px}
.tac-label{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);margin-bottom:7px}
.tac-chips{display:flex;gap:6px;flex-wrap:wrap}
.tac-chips .poolfilt{flex:0 0 auto;min-width:56px;padding:7px 13px}
.tac-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px 20px}
@media(max-width:860px){.tac-grid{grid-template-columns:1fr}}

/* ---- profile pictures ---- */
.acct-btn{display:flex;align-items:center;gap:8px}
.acct-btn img,.acct-btn>div{margin:-3px 0}

/* cropper modal (avatar.js) */
.avc-ovl{position:fixed;inset:0;z-index:220;background:rgba(4,8,18,.78);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;padding:18px}
.avc-box{background:#111B2E;border:1px solid #25324A;border-radius:16px;padding:20px;width:min(340px,100%);box-shadow:0 30px 80px -20px rgba(0,0,0,.8)}
.avc-h{font-weight:800;font-size:15px;margin-bottom:14px}
.avc-vp{position:relative;width:280px;height:280px;margin:0 auto;overflow:hidden;border-radius:12px;background:#0A1326;touch-action:none;cursor:grab;user-select:none}
.avc-vp:active{cursor:grabbing}
.avc-vp img{position:absolute;left:0;top:0;transform-origin:0 0;max-width:none;pointer-events:none;-webkit-user-drag:none}
.avc-mask{position:absolute;inset:0;border-radius:50%;box-shadow:0 0 0 999px rgba(7,12,24,.55);pointer-events:none}
.avc-zoom{width:100%;margin:16px 0 2px;accent-color:#3D7BF0;cursor:pointer}
.avc-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:12px}

/* ============================================================
   Account page — signed-out card (sign in | create account)
   One dark card, hero band on top, two columns split by a
   center seam with an "OR" badge. Matches the Account.dc design.
   ============================================================ */
.acct-wrap{max-width:var(--wrap);margin:0 auto;padding:56px var(--pad) 64px}
.acct-card{
  background:linear-gradient(180deg,#0A101E 0%,#070C18 100%);
  border:1px solid rgba(255,255,255,.08);border-radius:22px;overflow:hidden;
  box-shadow:0 40px 90px -30px rgba(0,0,0,.7);
}
/* hero band */
.acct-hero{
  display:flex;justify-content:space-between;align-items:flex-end;gap:24px;
  padding:40px 46px 32px;border-bottom:1px solid rgba(255,255,255,.07);
  background:radial-gradient(120% 160% at 0% 0%, rgba(61,123,240,.14), transparent 55%);
}
.acct-kicker{font-family:var(--mono);font-size:11px;letter-spacing:.22em;color:var(--blue);text-transform:uppercase;font-weight:700}
.acct-hero h1{margin:10px 0;font-size:52px;line-height:.94;font-weight:900;letter-spacing:-.02em;color:var(--text);text-transform:uppercase}
.acct-hero-sub{margin:0;color:var(--muted-2);font-size:15px;line-height:1.5;max-width:440px}
.acct-hero-side{display:flex;align-items:center;gap:14px;flex-shrink:0}
.acct-next{text-align:right}
.acct-next .cap{font-family:var(--mono);font-size:11px;letter-spacing:.16em;color:var(--dim)}
.acct-next .when{font-size:15px;font-weight:800;color:var(--text);margin-top:3px}
.acct-next .where{font-size:12px;color:var(--muted-2)}
.acct-hero-side img{width:60px;height:auto}
/* body: two columns with center seam */
.acct-cols{position:relative;display:grid;grid-template-columns:1fr 1fr}
.acct-seam{position:absolute;top:0;bottom:0;left:50%;width:1px;background:rgba(255,255,255,.08)}
.acct-or{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);z-index:1;
  width:44px;height:44px;border-radius:50%;border:1px solid rgba(255,255,255,.12);
  background:#0A101E;display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.05em;color:var(--muted-2);
}
.acct-col{padding:38px 44px;min-width:0}
/* step chip ("01 · Sign in" / "02 · Create account") */
.acct-step{
  display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);
  font-weight:700;font-size:12px;letter-spacing:.1em;padding:6px 12px;
  border-radius:8px;text-transform:uppercase;
  background:rgba(61,123,240,.14);border:1px solid rgba(61,123,240,.35);color:#7DA9FF;
}
.acct-step.gold{background:rgba(245,197,66,.14);border-color:rgba(245,197,66,.4);color:var(--gold)}
.acct-hint{margin:14px 0 22px;font-size:13px;color:var(--muted-2)}
.acct-hint b{color:var(--text)}
/* fields inside the card sit on the darker card bg, not in a sub-panel */
.acct-col .reg-form{background:transparent;border:none;border-radius:0;padding:0;max-width:none}
.acct-col .fld>span{font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--muted-2)}
.acct-col .fld input,.acct-col .fld select,.acct-col .fld textarea{background:#0B1220;border:1px solid rgba(255,255,255,.09);border-radius:10px}
.acct-col .fld input:focus{border-color:var(--blue);background:#0D1526;box-shadow:none}
.acct-col .btn-google{max-width:none;border:none;border-radius:11px;padding:14px;font-weight:700;font-size:15px}
.acct-col .or-divider{max-width:none;margin:22px 0;font-family:var(--mono);font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.acct-col .or-divider::before,.acct-col .or-divider::after{background:rgba(255,255,255,.08)}
/* compact position chips (design shows abbreviations only) */
.acct-col .poschips{gap:8px}
.acct-col .poschip{align-items:center;justify-content:center;padding:10px 6px;border-radius:9px;background:transparent;border-color:rgba(255,255,255,.1)}
.acct-col .poschip b{font-size:11px;color:var(--muted-2)}
.acct-col .poschip i{display:none}
.acct-col .poschip:hover{border-color:rgba(255,255,255,.28)}
.acct-col .poschip.on{border-color:var(--blue);background:rgba(61,123,240,.16);box-shadow:none}
.acct-col .poschip.on b{color:#DCE7FF}
/* full-width CTAs */
.acct-col .btn-cta{width:100%;border-radius:11px;padding:15px;font-weight:800;font-size:15px;letter-spacing:.02em}
.acct-col .btn-cta:hover{transform:none;filter:brightness(1.08);box-shadow:none}
.acct-col .btn-cta:active{transform:translateY(1px)}
.btn-gold{background:var(--gold);color:#1a1200}
.acct-col .reg-actions{flex-direction:column;align-items:stretch;gap:10px}
.acct-forgot{display:inline-block;margin-top:4px;color:var(--blue-light);font-size:13px;font-weight:600;cursor:pointer}
.acct-forgot:hover{color:#6FA0FF}
@media(max-width:880px){
  .acct-wrap{padding-top:28px}
  .acct-hero{flex-direction:column;align-items:flex-start;padding:30px 24px 26px}
  .acct-hero h1{font-size:40px}
  .acct-hero-side{width:100%;justify-content:space-between}
  .acct-next{text-align:left}
  .acct-cols{grid-template-columns:1fr}
  .acct-seam,.acct-or{display:none}
  .acct-col{padding:28px 24px}
  .acct-col + .acct-col{border-top:1px solid rgba(255,255,255,.08)}
}

/* ---- form-badges.js: live form chips next to player names ----
   Every badge a player holds, in priority order (emoji + optional streak
   count), one pill each, inside a .formflags wrapper — so the wrapper MUST
   wrap: a strong run can carry six or more pills and an unwrapped inline-flex
   row would push straight out of its container. Each pill carries a native
   title tooltip (desktop hover) plus a JS tap tooltip (.formflag-tip below,
   for touch, where title= never fires). Self-contained sizing — deliberately
   NOT reusing .poschip (which has two competing definitions). Empty wrappers
   are placeholders that fill in place when badge data lands; hidden until then. */
.formflags{display:inline-flex;align-items:center;flex-wrap:wrap;gap:4px;vertical-align:middle;margin-left:6px}
.formflags:empty{display:none}
.formflag{display:inline-flex;align-items:center;gap:3px;font-family:var(--mono);font-weight:700;font-size:11px;line-height:1;letter-spacing:.02em;padding:2px 7px;border-radius:var(--pill);background:var(--draw-bg);border:1px solid var(--draw-bd);color:var(--gold);white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
/* compact variant for tight rows (admin board pool/slot chips) */
.formflags.ff-sm{margin-left:4px;gap:3px}
.formflags.ff-sm .formflag{padding:1px 5px;font-size:10px}
/* Tap tooltip (form-badges.js): a single floating bubble on <body>, shown on
   tap since the native title= only fires on desktop hover. position:fixed +
   viewport coords; pointer-events:none so it never eats its own close tap;
   display stays block (visibility/opacity toggle) so it can be measured while hidden. */
.formflag-tip{position:fixed;left:0;top:0;z-index:200;max-width:min(280px,calc(100vw - 24px));padding:8px 11px;border-radius:10px;background:var(--card);border:1px solid var(--draw-bd);color:var(--gold);font-family:var(--mono);font-weight:700;font-size:12px;line-height:1.35;white-space:normal;overflow-wrap:break-word;text-align:left;box-shadow:0 18px 44px -12px rgba(0,0,0,.65);pointer-events:none;visibility:hidden;opacity:0;transition:opacity .12s ease}
.formflag-tip.show{visibility:visible;opacity:1}

/* ---- effects.js: presence chip ----
   (confetti draws on its own canvas and needs no CSS) */
.presence-chip{position:relative;display:inline-flex;align-items:center;gap:7px;background:rgba(54,210,123,.10);border:1px solid var(--win-bd);color:var(--win);border-radius:var(--pill);padding:6px 12px;font-family:var(--mono);font-size:11px;font-weight:700;letter-spacing:.04em;white-space:nowrap;cursor:default}
/* who's-online list — revealed on hover, or focus for touch/keyboard */
.presence-pop{display:none;position:absolute;top:calc(100% + 8px);right:0;min-width:180px;max-height:260px;overflow-y:auto;background:var(--card);border:1px solid var(--border);border-radius:10px;padding:10px 13px;box-shadow:0 18px 44px -12px rgba(0,0,0,.65);z-index:130;text-align:left}
.presence-pop::before{content:'';position:absolute;top:-10px;left:0;right:0;height:10px}  /* hover bridge over the gap */
.presence-chip:hover .presence-pop,.presence-chip:focus-within .presence-pop,.presence-chip:focus .presence-pop{display:block}
.presence-pop .ph{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted-2);margin-bottom:8px}
.presence-pop .row{display:flex;align-items:center;gap:8px;color:var(--text);font-family:var(--font);font-weight:600;font-size:13px;letter-spacing:0;padding:3.5px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.presence-pop .row .dot{flex:0 0 auto;width:6px;height:6px;border-radius:50%;background:var(--win);animation:none}
.presence-pop .row.guest{color:var(--muted-2)}
.presence-pop .row.guest .dot{background:var(--dim)}
.presence-chip .dot{width:7px;height:7px;border-radius:50%;background:var(--win);animation:psia-presence 1.8s ease-out infinite}
@keyframes psia-presence{
  0%{box-shadow:0 0 0 0 rgba(54,210,123,.5)}
  70%{box-shadow:0 0 0 6px rgba(54,210,123,0)}
  100%{box-shadow:0 0 0 0 rgba(54,210,123,0)}
}
.presence-chip.bump{animation:psia-bump .4s ease}
@keyframes psia-bump{0%{transform:scale(1)}40%{transform:scale(1.12)}100%{transform:scale(1)}}
@media(max-width:560px){
  .presence-chip{padding:6px 8px}
  .presence-chip .n{display:none}
}
@media (prefers-reduced-motion:reduce){
  .presence-chip .dot,.presence-chip.bump{animation:none}
}

/* ---- "you were added" notification dot (admin-added registrations) ----
   Inline pill after the account button label — inline (not absolute) so the
   mobile header's overflow:hidden ellipsis can never clip it. Painted by
   auth.js paintHeader from the pendingAdds cache. */
.acct-dot{display:inline-block;min-width:16px;height:16px;padding:0 4px;margin-left:6px;border-radius:99px;background:#F0584B;color:#fff;font-family:var(--mono);font-weight:700;font-size:10px;line-height:16px;text-align:center;vertical-align:1px}
.acct-dot.inline{vertical-align:1px}

/* ---- Manage: Activity log (audit tab) ----
   Read-only feed over the audit_log table (migration-audit-log.sql).
   Day headers, one row per action (bursts collapse to "+N more"), flagged
   rows for high-stakes actions (role changes, suspensions, restores). */
.mc-audfilters{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end;margin-bottom:6px}
.mc-audfilters .mng-fld{flex:1 1 130px;margin:0}
/* Search earns the extra width — the three selects hold short fixed labels. */
.mc-audfilters .mng-fld:first-child{flex:2 1 190px}
.mc-audday{font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);margin:16px 0 6px;padding-bottom:5px;border-bottom:1px solid var(--border)}
.mc-audrow{display:flex;gap:10px;align-items:baseline;padding:7px 8px;border-radius:8px;font-size:13.5px;line-height:1.45}
.mc-audrow:hover{background:rgba(255,255,255,.03)}
.mc-audrow.flag{border-left:2px solid var(--gold);background:rgba(240,200,90,.06)}
.mc-audtime{font-family:var(--mono);font-size:11px;color:var(--dim);flex:0 0 40px}
.mc-audbody{flex:1;min-width:0;overflow-wrap:break-word}
.mc-audmore{font-family:var(--mono);font-size:10.5px;color:#5C95F5;margin-left:6px;white-space:nowrap}
/* Role badge. Admins are the assumed author, so only members and out-of-app
   dashboard writes are marked — the feed stays quiet, the exceptions stand out. */
.mc-audrole{font-family:var(--mono);font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--dim);border:1px solid var(--border);border-radius:4px;padding:1px 4px;margin-left:5px;white-space:nowrap;vertical-align:1px}
.mc-audrole.sys{color:#E0A33C;border-color:rgba(224,163,60,.4)}
.mc-audtoggle{color:var(--dim);font-size:11px;flex:0 0 auto}
.mc-auddet{margin:2px 0 8px 58px;padding:8px 12px;border-left:2px solid var(--border);font-size:12.5px;color:var(--dim)}
.mc-auddetline{padding:2px 0}
.mc-auddetline .mc-audtime{margin-right:6px}
.mc-audchanges{font-family:var(--mono);font-size:11.5px;line-height:1.7;white-space:pre-wrap;word-break:break-word}

/* ============================================================
   Matchday Squad status page (squad-status.js, view: squad)
   Redesigned mobile view — "Matchday Squad Mobile — Final":
   readiness card (gradient hero + kit + stats), grouped roster
   cards, four-way status chips + unpaid dot, chip section heads.
   ============================================================ */
/* fixture switcher */
.sqs-pick{display:flex;align-items:center;gap:10px;margin-bottom:14px;font-size:12.5px;color:var(--muted-2)}
.sqs-pick > span{flex-shrink:0}
.sqs-pick select{flex:1;background:var(--panel);border:1px solid var(--border);color:#EEF3FB;border-radius:10px;padding:10px 12px;font:inherit;font-size:13px}

/* chip section header (01 · Readiness) */
.sqs-sh{display:flex;align-items:center;margin:0 0 14px}
.sqs-sh-num{background:var(--blue);color:#fff;font-family:var(--mono);font-weight:700;font-size:10px;letter-spacing:.16em;padding:6px 10px;border-radius:6px 0 0 6px}
.sqs-sh-num.gold{background:var(--gold);color:#07101F}
.sqs-sh-lbl{background:var(--card);border:1px solid var(--border);border-left:none;font-weight:800;font-size:12px;letter-spacing:.05em;padding:5px 12px;border-radius:0 6px 6px 0;text-transform:uppercase}
.sqs-sh-count{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--dim);border:1px solid var(--border);border-radius:99px;padding:3px 10px}

/* readiness card */
.sqs-ready{border:1px solid var(--border);border-radius:16px;overflow:hidden}
.sqs-hero{position:relative;background:linear-gradient(125deg,#173561,#0e1e3a);padding:16px 16px 15px}
.sqs-strip{position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--blue),var(--gold))}
.sqs-hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.sqs-hero-l{min-width:0}
.sqs-eyebrow{font-family:var(--mono);font-size:9px;letter-spacing:.18em;color:#8FB4F8}
.sqs-vs{font-weight:900;font-size:19px;color:#fff;margin-top:6px;letter-spacing:-.01em}
.sqs-vs .v{color:#8FA6C8;font-weight:600;font-style:italic;font-size:13px}
.sqs-hero-r{display:flex;flex-direction:column;align-items:flex-end;gap:7px;flex-shrink:0}
.sqs-count{display:inline-flex;align-items:center;gap:5px;font-weight:700;font-size:12px;color:#EAF1FF;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.28);border-radius:8px;padding:5px 9px;white-space:nowrap}
.sqs-tools{display:flex;align-items:center;gap:8px}
.sqs-live{font-family:var(--mono);font-size:9.5px;color:var(--muted-2)}
.sqs-live.on{color:var(--win)}
.sqs-refresh{font-family:var(--mono);font-size:12px;line-height:1;color:#8FB4F8;cursor:pointer;border:1px solid rgba(255,255,255,.2);border-radius:7px;padding:5px 8px;background:rgba(255,255,255,.06);transition:.15s}
.sqs-refresh:hover{background:rgba(255,255,255,.16);color:#fff}
.sqs-meta{font-size:12.5px;color:#C4D3EA;margin-top:11px;font-weight:500;line-height:1.55}
.sqs-fee{color:var(--gold);font-weight:700}
/* kit row */
.sqs-kit{display:flex;align-items:center;flex-wrap:wrap;gap:8px 16px;margin-top:12px;padding-top:12px;border-top:1px solid rgba(255,255,255,.1)}
.sqs-kit-lbl{font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;color:#8FB4F8}
.sqs-kit-item{display:inline-flex;align-items:center;gap:7px;font-size:12px;color:#DBE6F6}
.sqs-kit-sw{width:16px;height:16px;border-radius:5px;border:1px solid rgba(255,255,255,.28);flex-shrink:0}
/* stats panel */
.sqs-stats{padding:15px 15px 16px;background:var(--panel)}
.sqs-tiles{display:flex;gap:8px}
.sqs-tile{flex:1;border:1px solid var(--border);border-radius:11px;background:var(--bg);padding:10px 6px;text-align:center}
.sqs-tile b{display:block;font-size:20px;font-weight:900;color:#EEF3FB}
.sqs-tile span{font-family:var(--mono);font-size:8px;letter-spacing:.1em;color:var(--dim)}
.sqs-tile.ok b{color:var(--win)}
.sqs-tile.pay b{color:var(--blue-light)}
.sqs-prog{margin-top:12px;height:7px;background:var(--bg)}
.sqs-progline{font-size:11px;color:#7C8AA6;margin-top:9px;font-weight:500}
.sqs-notyet{border:1px dashed var(--border);border-radius:11px;padding:12px 14px;font-size:12.5px;line-height:1.5;color:var(--muted)}

/* section states */
.sqs-err{margin-top:12px;color:#F0584B;font-size:13px}
.sqs-loading{margin-top:12px;color:var(--dim);font-size:13px}
.sqs-swaphint{margin-top:14px;font-size:12.5px;line-height:1.55;color:#C4CEDE;background:var(--panel);border:1px dashed var(--border);border-radius:10px;padding:11px 14px}
.sqs-swaphint .lk{color:var(--blue-light);font-weight:700;cursor:pointer}

/* roster: position group */
.sqs-group{margin-top:16px}
.sqs-gh{display:flex;align-items:center;gap:8px;margin:0 3px 8px;font-family:var(--mono);font-size:10px;letter-spacing:.14em;color:var(--dim);text-transform:uppercase}
.sqs-gdot{width:8px;height:8px;border-radius:2px;flex-shrink:0}
.sqs-gdot.gk{background:var(--gold)}
.sqs-gdot.df{background:var(--blue-light)}
.sqs-gdot.mf{background:var(--win)}
.sqs-gdot.fw{background:#E8974E}
.sqs-gn{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--blue-light);letter-spacing:0}
.sqs-groupcard{background:var(--card);border:1px solid var(--border-2);border-radius:14px;overflow:hidden}

/* player row */
.sqs-row{border-top:1px solid #171F31}
.sqs-groupcard > .sqs-row:first-child{border-top:none}
.sqs-row.me{background:rgba(61,123,240,.08)}
.sqs-rowmain{display:flex;align-items:center;gap:10px;padding:9px 12px}
.sqs-info{flex:1;min-width:0}
/* The row wraps so a full badge set spills onto a second line instead of being
   clipped; the NAME keeps the single-line ellipsis it always had. */
.sqs-name{display:flex;align-items:center;flex-wrap:wrap;font-weight:700;font-size:13.5px;color:#EEF3FB}
.sqs-name .nm{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sqs-name .you{color:var(--blue-light);font-style:normal;font-weight:700;font-size:10px}
.sqs-meta{font-size:11.5px;color:var(--dim);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* status chips + unpaid dot */
.sqs-chip{font-family:var(--mono);font-size:9.5px;letter-spacing:.04em;border-radius:99px;padding:3px 8px;white-space:nowrap;flex-shrink:0}
.sqs-chip.paid,.sqs-chip.conf{color:var(--win);background:rgba(54,210,123,.12);border:1px solid var(--win-bd)}
.sqs-chip.claim{color:var(--gold);background:rgba(245,197,66,.1);border:1px solid rgba(245,197,66,.35)}
.sqs-chip.await{color:var(--muted-2);background:var(--panel);border:1px solid var(--border)}
.sqs-unpaid{width:7px;height:7px;border-radius:50%;background:#F0584B;flex-shrink:0}

/* admin: remove (✕) */
.sqs-rem{flex-shrink:0;width:26px;height:26px;border-radius:7px;border:1px solid #5A2420;background:transparent;color:#F0584B;font-size:12px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:.15s}
.sqs-rem:hover{background:rgba(240,88,75,.12)}
.sqs-rem:disabled{opacity:.5;cursor:default}

/* self row: attendance + pay actions (own row, when unpaid) */
.sqs-self{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 12px 11px;padding-top:10px;border-top:1px dashed var(--border-2)}
.sqs-b{font-weight:800;font-size:12.5px;padding:8px 14px;border-radius:8px;white-space:nowrap;cursor:pointer;border:1px solid transparent;transition:.15s}
.sqs-b.in{background:var(--win-bg);border-color:var(--win-bd);color:#EAFBF0}
.sqs-b.in:hover{background:#1E5237}
.sqs-b.in:disabled{opacity:.5;cursor:default}
.sqs-b.pay{background:rgba(61,123,240,.14);border-color:#2F5BB0;color:var(--blue-light)}
.sqs-b.pay:hover{background:var(--blue);color:#fff}
.sqs-b.out{background:transparent;border-color:#5A2420;color:#F0584B;margin-left:auto}
.sqs-b.out:hover{background:rgba(240,88,75,.12)}
.sqs-in-tag{font-weight:700;font-size:12.5px;color:var(--win)}
.sqs-in-tag.claim{color:var(--gold)}

/* empty states */
.sqs-empty{border:1px dashed var(--border);border-radius:12px;background:var(--panel);padding:14px 15px;color:var(--dim);font-size:12px;line-height:1.55}

/* waiting list / standby */
.sqs-waitnote{margin:2px 0 10px;font-size:12px;color:var(--dim);line-height:1.5}
.sqs-waitnote b{color:var(--muted-2)}
.sqs-wrow.me{background:rgba(61,123,240,.08)}
.sqs-wtag{flex-shrink:0;font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;color:var(--dim);border:1px solid var(--border);border-radius:99px;padding:4px 9px}
.sqs-callup{flex-shrink:0;font-weight:800;font-size:12px;padding:7px 13px;border-radius:8px;white-space:nowrap;cursor:pointer;background:var(--win-bg);border:1px solid var(--win-bd);color:#EAFBF0;transition:.15s}
.sqs-callup:hover{background:#1E5237}
.sqs-callup:disabled{opacity:.5;cursor:default}
.sqs-wrow.picking .sqs-rowmain{padding-bottom:5px}
/* slot chooser under a standby row (admin) */
.sqs-wpick{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:11px 12px;border-top:1px solid #171F31;background:rgba(61,123,240,.06)}
.sqs-wpick-lbl{font-size:12.5px;color:#C4CEDE}
.sqs-wpick-lbl b{color:#EEF3FB}
.sqs-wpick select{flex:1;min-width:150px;background:var(--panel);border:1px solid var(--border);color:#EEF3FB;border-radius:9px;padding:8px 11px;font:inherit;font-size:12.5px}
.sqs-wpick-x{flex-shrink:0;font-weight:700;font-size:12px;padding:7px 12px;border-radius:8px;cursor:pointer;background:transparent;border:1px solid var(--border);color:var(--muted);transition:.15s}
.sqs-wpick-x:hover{background:rgba(255,255,255,.06);color:#EEF3FB}

/* withdrawn / dropped */
.sqs-drop{margin-top:16px}
.sqs-drop summary{cursor:pointer;font-family:var(--mono);font-size:11px;color:var(--dim);list-style:none}
.sqs-drop summary::-webkit-details-marker{display:none}
.sqs-drop summary::before{content:'\25B8  '}
.sqs-drop[open] summary::before{content:'\25BE  '}
.sqs-droplist{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:12px;color:var(--dim)}

/* admin footer: pengurus tools */
.sqs-admfoot{display:flex;flex-direction:column;gap:10px}
.sqs-admbtn{width:100%;text-align:left;display:flex;align-items:center;gap:10px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 15px;color:#EEF3FB;font-weight:700;font-size:13px;cursor:pointer;font-family:inherit;transition:.15s}
.sqs-admbtn:hover{background:var(--card);border-color:var(--divider)}

/* guest gate */
.sqs-gate{border:1px solid var(--border);border-radius:16px;background:var(--card);padding:30px;text-align:center;max-width:520px}
.sqs-gate-emoji{font-size:26px;margin-bottom:8px}
.sqs-gate p{color:#C4CEDE;font-size:13.5px;line-height:1.6;margin:0 0 16px}

/* entry buttons on other pages (Home / Matches / Upcoming / Register) */
.spot-btns{display:flex;gap:10px;flex-wrap:wrap}
.upc-actions{display:flex;flex-direction:column;gap:8px;align-items:stretch}
.upc-squad{background:rgba(255,255,255,.06);border:1px solid var(--border);color:#C4CEDE;border-radius:8px;padding:9px 18px;text-align:center;font-weight:700;font-size:13px;cursor:pointer;white-space:nowrap;transition:.15s}
.upc-squad:hover{background:rgba(255,255,255,.14);color:#fff}
.sqs-jump{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px}
.sqs-jump-note{font-size:12px;color:var(--dim)}

/* ---- Team selection board: committed / locked ---- */
.board-locked-note{display:flex;align-items:center;gap:14px;flex-wrap:wrap;justify-content:space-between;border:1px solid var(--gold-2);background:rgba(245,197,66,.08);border-radius:12px;padding:14px 16px;margin:14px 0}
.board-locked-note .bln-main{flex:1;min-width:240px;font-size:13.5px;line-height:1.5;color:#EEE4C4}
.board-locked-note .lk{color:var(--gold);font-weight:700;cursor:pointer}
.board-readonly{pointer-events:none;opacity:.97}
