/* Stage 8: shared User Portal-style tournament workspace. The existing
   competitive renderer owns the event/bracket details inside #tournament-app. */
:root { --tournament-ink:#17221c; --tournament-muted:#66736b; --tournament-soft:#f4f7f4; --tournament-panel:#fff; --tournament-line:#d8e2d9; --tournament-green:#355e2c; --tournament-lime:#a8db65; --tournament-dark:#10281d; --tournament-shadow:0 14px 40px rgba(25,52,31,.08); }
body:has(.tournament-portal-shell) { background:var(--tournament-soft); color:var(--tournament-ink); }
body:has(.tournament-portal-shell) .site-header { display:none; }
body:has(.tournament-portal-shell) .site-main { width:auto; margin:0; padding:0; }
body:has(.tournament-portal-shell) .site-footer { margin:0; border-color:var(--tournament-line); color:#718177; background:var(--tournament-soft); }
.tournament-portal-shell { min-height:100vh; }
.tournament-portal-sidebar { position:fixed; z-index:30; inset:0 auto 0 0; display:flex; flex-direction:column; width:272px; padding:26px 18px 20px; color:#e5f0e5; background:var(--tournament-dark); box-shadow:8px 0 24px rgba(7,25,15,.08); }
.tournament-portal-brand { display:flex; align-items:center; gap:11px; padding:0 8px 28px; }
.tournament-portal-brand-mark { display:inline-grid; place-items:center; width:38px; height:38px; border-radius:12px; color:#1a2a18; background:var(--tournament-lime); font:900 20px/1 system-ui,sans-serif; }
.tournament-portal-brand strong { display:block; font:800 17px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.02em; }
.tournament-portal-brand small { display:block; margin-top:2px; color:#aabdaf; font:11px/1.3 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-close { display:none; margin-left:auto; border:0; color:#d7e8d9; background:transparent; font-size:28px; line-height:1; cursor:pointer; }
.tournament-portal-nav { min-height:0; overflow:auto; padding:0 0 14px; scrollbar-color:#496a4a transparent; }
.tournament-portal-nav-label { margin:0 8px 9px; color:#8ca491; font:800 10px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:.15em; text-transform:uppercase; }
.tournament-portal-nav a { display:flex; align-items:center; min-height:41px; margin:3px 0; border-radius:8px; padding:10px 11px; color:#c4d2c5; font:700 12px/1.25 Inter,ui-sans-serif,system-ui,sans-serif; text-decoration:none; }
.tournament-portal-nav a:hover { color:#fff; background:rgba(159,214,91,.12); }
.tournament-portal-nav a.is-active { color:#fff; background:#31572f; box-shadow:inset 3px 0 var(--tournament-lime); }
.tournament-portal-sidebar-footer { margin-top:auto; padding-top:15px; border-top:1px solid #2c4435; }
.tournament-portal-sidebar-footer strong { display:block; overflow:hidden; padding:3px 8px 10px; color:#eef8ef; font:700 12px/1.25 Inter,ui-sans-serif,system-ui,sans-serif; text-overflow:ellipsis; white-space:nowrap; }
.tournament-portal-sidebar-footer a { display:block; padding:8px; color:#c8d9ca; font:700 12px/1.25 Inter,ui-sans-serif,system-ui,sans-serif; text-decoration:none; }
.tournament-portal-sidebar-footer a:hover { color:#fff; }
.tournament-portal-content { min-height:100vh; margin-left:272px; padding:48px clamp(24px,5vw,64px) 60px; }
.tournament-portal-mobile-header { display:none; }
.tournament-portal-heading,.tournament-portal-overview,.tournament-portal-panel,.tournament-portal-grid { width:min(1180px,100%); margin-right:auto; margin-left:auto; }
.tournament-portal-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:28px; margin-bottom:24px; }
.tournament-portal-kicker { margin:0 0 8px; color:#6a7b6d; font:800 10px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:.15em; text-transform:uppercase; }
.tournament-portal-heading h1 { margin:0; color:var(--tournament-ink); font:800 clamp(32px,4vw,46px)/1.05 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.045em; }
.tournament-portal-heading p:not(.tournament-portal-kicker) { max-width:720px; margin:12px 0 0; color:var(--tournament-muted); font:15px/1.5 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-access-pill,.tournament-portal-status-pill { display:inline-flex; align-items:center; border-radius:99px; padding:7px 10px; color:#3b6a2b; background:#e9f4d9; font:800 10px/1 Inter,ui-sans-serif,system-ui,sans-serif; white-space:nowrap; }
.tournament-portal-outline-button { display:inline-flex; align-items:center; justify-content:center; min-height:42px; border:1px solid #9eb1a1; border-radius:7px; padding:10px 15px; color:#314a36; background:rgba(255,255,255,.7); font:800 12px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; text-decoration:none; white-space:nowrap; }
.tournament-portal-outline-button:hover { border-color:var(--tournament-green); background:#fff; }
.tournament-portal-overview,.tournament-portal-panel,.tournament-portal-card { border:1px solid var(--tournament-line); border-radius:12px; background:var(--tournament-panel); box-shadow:var(--tournament-shadow); scroll-margin-top:24px; }
.tournament-portal-overview,.tournament-portal-panel { padding:25px; margin-bottom:16px; }
.tournament-portal-section-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; }
.tournament-portal-section-heading h2 { margin:0; color:var(--tournament-ink); font:800 21px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.025em; }
.tournament-portal-section-heading p:not(.tournament-portal-kicker) { margin:6px 0 0; color:var(--tournament-muted); font:13px/1.5 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-stat-grid { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:12px; margin-top:22px; }
.tournament-portal-stat-grid article { min-width:0; padding:17px; border:1px solid var(--tournament-line); border-radius:9px; background:linear-gradient(145deg,#fff,#f8fbf8); }
.tournament-portal-stat-grid span,.tournament-portal-stat-grid small { display:block; color:#728176; font:11px/1.35 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-stat-grid strong { display:block; margin:7px 0 4px; color:#1f3024; font:800 25px/1 Inter,ui-sans-serif,system-ui,sans-serif; letter-spacing:-.04em; }
.tournament-portal-access-notice { display:flex; align-items:baseline; flex-wrap:wrap; gap:4px 14px; margin-top:20px; padding:14px 16px; border:1px solid #dbe8c6; border-left:4px solid #8bc34c; border-radius:9px; background:#f5faed; color:#5e7359; font:12px/1.45 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-access-notice strong { color:#385b2c; font-size:13px; }
.tournament-portal-access-notice p { flex-basis:100%; margin:0; }
.tournament-portal-access-notice a { color:#396530; font-weight:800; text-decoration:none; }
.tournament-portal-access-notice a:hover { text-decoration:underline; }
.tournament-portal-text-link,.tournament-portal-help-links a { color:#396530; font:800 12px/1.4 Inter,ui-sans-serif,system-ui,sans-serif; text-decoration:none; }
.tournament-portal-text-link:hover,.tournament-portal-help-links a:hover { text-decoration:underline; }
.tournament-portal-panel #tournament-app { margin-top:20px; }
.tournament-portal-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.tournament-portal-card { min-width:0; padding:22px; }
.tournament-portal-card-mark { display:inline-grid; place-items:center; width:29px; height:29px; border-radius:8px; color:#697d6c; background:#edf3ed; font:800 14px/1 system-ui,sans-serif; }
.tournament-portal-list { margin-top:17px; }
.tournament-portal-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; padding:11px 0; border-bottom:1px solid #e8eee8; color:#52645a; font:12px/1.35 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-row:last-child { border-bottom:0; }
.tournament-portal-row strong { display:block; color:#2e4634; font-size:12px; }
.tournament-portal-row small { display:block; margin-top:2px; color:#87958b; font-size:10px; }
.tournament-portal-row span { align-self:center; color:#5d755f; font-weight:700; text-align:right; }
.tournament-portal-empty,.tournament-portal-muted-note { color:#7b897e; font:12px/1.5 Inter,ui-sans-serif,system-ui,sans-serif; }
.tournament-portal-help-links { display:flex; flex-wrap:wrap; gap:10px 18px; margin-top:19px; }

@media (max-width:980px) {
  .tournament-portal-sidebar { width:260px; transform:translateX(-105%); transition:transform 180ms ease; }
  .tournament-portal-sidebar.is-open { transform:translateX(0); }
  .tournament-portal-close { display:block; }
  .tournament-portal-backdrop { position:fixed; z-index:20; inset:0; display:block; background:rgba(14,28,19,.46); }
  .tournament-portal-backdrop[hidden] { display:none; }
  .tournament-portal-content { margin-left:0; padding:0 20px 48px; }
  .tournament-portal-mobile-header { position:sticky; z-index:10; top:0; display:flex; align-items:center; justify-content:space-between; height:58px; margin:0 -20px 28px; padding:9px 20px; border-bottom:1px solid var(--tournament-line); background:rgba(255,255,255,.94); backdrop-filter:blur(12px); }
  .tournament-portal-mobile-header a,.tournament-portal-menu { border:0; color:var(--tournament-green); background:transparent; font:800 13px/1.2 Inter,ui-sans-serif,system-ui,sans-serif; text-decoration:none; cursor:pointer; }
  .tournament-portal-menu span { margin-right:7px; font-size:20px; }
  .tournament-portal-heading { align-items:flex-start; flex-direction:column; gap:18px; }
  .tournament-portal-stat-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width:620px) {
  .tournament-portal-content { padding:0 12px 38px; }
  .tournament-portal-mobile-header { margin-right:-12px; margin-left:-12px; padding-right:12px; padding-left:12px; }
  .tournament-portal-heading h1 { font-size:34px; }
  .tournament-portal-overview,.tournament-portal-panel,.tournament-portal-card { padding:18px; }
  .tournament-portal-section-heading { gap:12px; }
  .tournament-portal-section-heading h2 { font-size:19px; }
  .tournament-portal-stat-grid,.tournament-portal-grid { grid-template-columns:1fr; }
  .tournament-portal-row { grid-template-columns:1fr; }
  .tournament-portal-row span { text-align:left; }
}
@media (prefers-reduced-motion:reduce) { .tournament-portal-sidebar { transition:none; } }
