*{box-sizing:border-box;margin:0;padding:0}
:root{
  --nk-navy:#00144c;
  --nk-navy2:#001a63;
  --nk-blue:#0032A0;
  --nk-red:#D22730;
  --nk-red2:#BE0000;
  --nk-border:rgba(255,255,255,0.13);
  --nk-card:rgba(255,255,255,0.07);
  --nk-card-hover:rgba(255,255,255,0.11);
  --nk-muted:rgba(255,255,255,0.5);
  --nk-offwhite:#d0d4e8;
}
body{background:var(--nk-navy);color:#fff;font-family:'Inter',sans-serif;min-height:100vh;padding-bottom:2rem}
body *{color:inherit}
.topbar{background:var(--nk-navy2);border-bottom:1px solid var(--nk-border);padding:0 1.5rem;display:flex;align-items:center;justify-content:space-between;height:60px;position:sticky;top:0;z-index:10}
.topbar-left{display:flex;align-items:center;gap:14px}
.knights-badge{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.knights-badge svg{width:24px;height:24px;fill:#fff}
.topbar-title{font-family:'Anton',sans-serif;font-size:19px;letter-spacing:0.04em;color:#fff;text-transform:uppercase}
.topbar-sub{font-size:11px;color:var(--nk-muted);text-transform:uppercase;letter-spacing:0.08em;margin-top:1px}
.nav-tabs{display:flex;gap:2px}
.nav-tab{padding:7px 16px;font-size:12px;font-weight:500;border:none;background:transparent;color:var(--nk-muted);cursor:pointer;border-radius:6px;font-family:'Inter',sans-serif;transition:all 0.15s}
.nav-tab.active{background:var(--nk-red);color:#fff}
.nav-tab:hover:not(.active){background:rgba(255,255,255,0.08);color:#fff}
.hero{background:var(--nk-navy2);border-bottom:1px solid var(--nk-border);padding:1.5rem}
.hero-inner{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;flex-wrap:wrap}
.round-label{font-size:10px;font-weight:500;letter-spacing:0.12em;color:var(--nk-muted);text-transform:uppercase;margin-bottom:4px}
.round-title{font-family:'Anton',sans-serif;font-size:36px;color:#fff;text-transform:uppercase;line-height:1}
.round-dates{font-size:12px;color:var(--nk-muted);margin-top:6px}
.hero-stats{display:flex;gap:10px;flex-wrap:wrap}
.hstat{background:rgba(255,255,255,0.07);border:1px solid var(--nk-border);border-radius:8px;padding:12px 18px;min-width:95px;text-align:center}
.hstat-val{font-family:'Anton',sans-serif;font-size:28px;color:#fff;line-height:1}
.hstat-val.red{color:#ff8080}
.hstat-val.green{color:#4ade80}
.hstat-label{font-size:10px;color:var(--nk-muted);text-transform:uppercase;letter-spacing:0.08em;margin-top:3px}
.controls{padding:1rem 1.5rem;display:flex;gap:8px;align-items:center;flex-wrap:wrap;border-bottom:1px solid var(--nk-border)}
.ctrl-select,.ctrl-input{height:34px;padding:0 10px;font-size:12px;background:rgba(255,255,255,0.08);border:1px solid var(--nk-border);border-radius:6px;color:#fff;font-family:'Inter',sans-serif}
.ctrl-select option{background:#001469;color:#fff}
.ctrl-input::placeholder{color:rgba(255,255,255,0.35)}
.ctrl-btn{height:34px;padding:0 14px;font-size:12px;font-weight:500;border-radius:6px;border:1px solid var(--nk-border);background:transparent;color:rgba(255,255,255,0.6);cursor:pointer;font-family:'Inter',sans-serif;transition:all 0.15s}
.ctrl-btn:hover{background:rgba(255,255,255,0.08);color:#fff}
.ctrl-btn.primary{background:var(--nk-red);border-color:var(--nk-red);color:#fff}
.ctrl-btn.primary:hover{background:var(--nk-red2)}
.week-strip{padding:0.85rem 1.5rem;display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--nk-border)}
.wtab{padding:4px 13px;font-size:11px;font-weight:500;border-radius:20px;border:1px solid var(--nk-border);background:transparent;color:var(--nk-muted);cursor:pointer;font-family:'Inter',sans-serif;transition:all 0.15s}
.wtab.active{background:var(--nk-red);border-color:var(--nk-red);color:#fff}
.wtab:hover:not(.active){background:rgba(255,255,255,0.08);color:#fff}
.games-area{padding:1.5rem}
.age-section{margin-bottom:2rem}
.age-header{display:flex;align-items:center;gap:10px;margin-bottom:0.85rem}
.age-pill{font-family:'Anton',sans-serif;font-size:12px;letter-spacing:0.06em;padding:3px 12px;border-radius:4px;text-transform:uppercase;color:#fff}
.age-pill.u14{background:#6B21A8}.age-pill.u15{background:#0032A0}
.age-pill.u16{background:#D22730}
.age-pill.u17{background:rgba(255,255,255,0.15);border:1px solid rgba(255,255,255,0.3)}
.age-pill.u19{background:#8C0000}
.age-count{font-size:11px;color:var(--nk-muted)}
.age-line{flex:1;height:1px;background:var(--nk-border)}
.games-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(290px,1fr));gap:12px}
.game-card{background:var(--nk-card);border:1px solid var(--nk-border);border-radius:10px;padding:15px;border-left:3px solid rgba(255,255,255,0.15);color:#fff;transition:background 0.15s}
.game-card:hover{background:var(--nk-card-hover)}
.game-card.u14{border-left-color:#6B21A8}.game-card.u15{border-left-color:#0032A0}
.game-card.u16{border-left-color:#D22730}
.game-card.u17{border-left-color:rgba(255,255,255,0.3)}
.game-card.u19{border-left-color:#8C0000}
.game-card.allocated{border-left-color:#4ade80}
.card-top{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:10px}
.card-div{font-size:10px;font-weight:500;letter-spacing:0.08em;color:var(--nk-muted);text-transform:uppercase}
.card-time{font-size:11px;color:var(--nk-muted);text-align:right}
.card-time strong{display:block;font-size:14px;color:#fff;font-weight:500}
.team-row{display:flex;align-items:center;gap:6px;margin-bottom:3px}
.team-dot{width:6px;height:6px;border-radius:50%;background:rgba(255,255,255,0.25);flex-shrink:0}
.team-dot.home{background:#4a90d9}
.team-name{font-size:12px;color:#e0e4f4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:230px}
.vs-label{font-size:9px;color:rgba(255,255,255,0.25);margin-left:12px;text-transform:uppercase;letter-spacing:0.06em}
.card-venue{font-size:10px;color:var(--nk-muted);margin-bottom:12px;margin-top:8px;display:flex;align-items:center;gap:4px}
.alloc-row{display:flex;align-items:center;gap:6px}
.alloc-sel{flex:1;height:30px;padding:0 8px;font-size:11px;background:rgba(255,255,255,0.07);border:1px solid rgba(255,255,255,0.18);border-radius:6px;color:#fff;font-family:'Inter',sans-serif;cursor:pointer}
.alloc-sel option{background:#001469;color:#fff}
.alloc-sel.has-staff{border-color:rgba(74,222,128,0.5);background:rgba(74,222,128,0.1);color:#4ade80}
.saving-dot{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,0.15);flex-shrink:0;transition:background 0.3s}
.saving-dot.saving{background:#fbbf24}
.saving-dot.saved{background:#4ade80}
.empty-week{padding:4rem 1.5rem;text-align:center;color:var(--nk-muted)}
.empty-week p{font-size:14px;margin-top:8px}
.report-area{padding:1.5rem}
.report-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin-bottom:2rem}
.rstat{background:var(--nk-card);border:1px solid var(--nk-border);border-radius:8px;padding:14px;text-align:center;color:#fff}
.rstat-val{font-family:'Anton',sans-serif;font-size:32px;color:#fff;line-height:1}
.rstat-label{font-size:10px;color:var(--nk-muted);text-transform:uppercase;letter-spacing:0.06em;margin-top:5px}
.report-section{margin-bottom:2rem}
.report-title{font-size:11px;font-weight:500;letter-spacing:0.1em;color:var(--nk-muted);text-transform:uppercase;margin-bottom:12px;padding-bottom:8px;border-bottom:1px solid var(--nk-border)}
.bar-row{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.bar-label{font-size:12px;color:var(--nk-offwhite);width:140px;flex-shrink:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-track{flex:1;height:7px;background:rgba(255,255,255,0.08);border-radius:4px;overflow:hidden}
.bar-fill{height:100%;border-radius:4px;transition:width 0.4s}
.bar-fill.blue{background:#0032A0}
.bar-fill.red{background:#D22730}
.bar-val{font-size:11px;color:var(--nk-muted);width:60px;text-align:right;flex-shrink:0}
.export-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 20px;background:var(--nk-red);border:none;border-radius:6px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;font-family:'Inter',sans-serif;margin-top:0.5rem;transition:background 0.15s}
.export-btn:hover{background:var(--nk-red2)}
.staff-area{padding:1.5rem}
.staff-modal{background:var(--nk-navy2);border:1px solid var(--nk-border);border-radius:12px;padding:1.5rem;max-width:420px}
.staff-modal h3{font-family:'Anton',sans-serif;font-size:17px;letter-spacing:0.04em;text-transform:uppercase;margin-bottom:1rem;color:#fff}
.staff-chips{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:1rem}
.staff-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 12px;background:rgba(255,255,255,0.08);border:1px solid var(--nk-border);border-radius:20px;font-size:12px;color:var(--nk-offwhite)}
.staff-chip button{background:none;border:none;color:var(--nk-muted);cursor:pointer;font-size:15px;line-height:1;padding:0;transition:color 0.15s}
.staff-chip button:hover{color:#fff}
.staff-input-row{display:flex;gap:8px}
.staff-input{flex:1;height:36px;padding:0 12px;font-size:13px;background:rgba(255,255,255,0.07);border:1px solid var(--nk-border);border-radius:6px;color:#fff;font-family:'Inter',sans-serif}
.staff-input::placeholder{color:rgba(255,255,255,0.35)}
.add-btn{height:36px;padding:0 16px;background:var(--nk-red);border:none;border-radius:6px;color:#fff;font-size:13px;font-weight:500;cursor:pointer;font-family:'Inter',sans-serif;transition:background 0.15s}
.add-btn:hover{background:var(--nk-red2)}
.back-btn{margin-top:1rem;width:100%;height:36px;background:transparent;border:1px solid var(--nk-border);border-radius:6px;color:var(--nk-muted);font-size:12px;cursor:pointer;font-family:'Inter',sans-serif;transition:all 0.15s}
.back-btn:hover{color:#fff;border-color:rgba(255,255,255,0.3)}
.notice{background:rgba(210,39,48,0.12);border:1px solid rgba(210,39,48,0.3);border-radius:8px;padding:10px 14px;font-size:12px;color:rgba(255,255,255,0.7);margin:0 1.5rem 0;margin-top:10px;display:flex;align-items:center;gap:8px}
.notice strong{color:#fff}
.hidden{display:none}

/* ── Portal additions (stack the topbar under the shared strip) ───────────── */
.topbar{top:44px}

/* Sign-in / admin state in the topbar */
.who{display:flex;align-items:center;gap:10px}
.who-state{font-size:11px;color:var(--nk-muted);white-space:nowrap}
.who-state b{color:#fff;font-weight:600}
.who-btn{height:30px;padding:0 12px;font-size:11px;font-weight:500;border-radius:6px;border:1px solid var(--nk-border);background:transparent;color:var(--nk-muted);cursor:pointer;font-family:'Inter',sans-serif;transition:all .15s;text-decoration:none;display:inline-flex;align-items:center}
.who-btn:hover{background:rgba(255,255,255,.08);color:#fff}
.who-btn.admin{border-color:var(--nk-red);color:#ff9a9a}

/* Admin bar (shown only to hjrl-admin): upload + add game */
.admin-bar{display:none;align-items:center;gap:10px;flex-wrap:wrap;padding:0.9rem 1.5rem;background:rgba(210,39,48,.08);border-bottom:1px solid rgba(210,39,48,.25)}
.admin-bar.show{display:flex}
.admin-bar .ab-label{font-size:11px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:#ff9a9a;margin-right:2px}
.admin-bar .spacer{flex:1}
.file-hidden{display:none}

/* Editable game card affordance for admins */
.game-card .edit-game{display:none;background:none;border:none;color:var(--nk-muted);cursor:pointer;font-size:13px;padding:2px 4px;border-radius:4px;line-height:1}
.game-card .edit-game:hover{color:#fff;background:rgba(255,255,255,.1)}
body.is-admin .game-card .edit-game{display:inline-block}

/* Modal (add / edit game) */
.modal-back{position:fixed;inset:0;background:rgba(0,8,30,.66);display:none;align-items:center;justify-content:center;z-index:300;padding:1rem}
.modal-back.show{display:flex}
.modal{background:var(--nk-navy2);border:1px solid var(--nk-border);border-radius:12px;padding:1.4rem 1.5rem;width:100%;max-width:520px;max-height:90vh;overflow:auto}
.modal h3{font-family:'Anton',sans-serif;font-size:18px;letter-spacing:.04em;text-transform:uppercase;margin-bottom:1rem;color:#fff}
.modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:.75rem}
.mfield{display:flex;flex-direction:column;gap:4px}
.mfield.full{grid-column:1/-1}
.mfield label{font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--nk-muted)}
.mfield input{height:34px;padding:0 10px;font-size:13px;background:rgba(255,255,255,.07);border:1px solid var(--nk-border);border-radius:6px;color:#fff;font-family:'Inter',sans-serif}
.modal-actions{display:flex;gap:8px;margin-top:1.2rem;align-items:center}
.modal-actions .spacer{flex:1}
.btn-danger{height:36px;padding:0 14px;background:transparent;border:1px solid rgba(210,39,48,.5);border-radius:6px;color:#ff9a9a;font-size:12px;cursor:pointer;font-family:'Inter',sans-serif}
.btn-danger:hover{background:rgba(210,39,48,.15)}

/* Toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#001a63;border:1px solid var(--nk-border);border-radius:8px;padding:10px 16px;font-size:13px;color:#fff;box-shadow:0 8px 30px rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:400}
.toast.show{opacity:1;transform:translateX(-50%) translateY(-4px)}
.toast.err{border-color:rgba(210,39,48,.6)}
