/* _content/LeagueHub/Components/Layout/MainLayout.razor.rz.scp.css */
/* Scoped CSS for MainLayout.razor — currently empty.
   The default Blazor-template rules (.page flex-direction: row at 641px+,
   .sidebar gradient, .top-row bar, #blazor-error-ui styling) targeted
   class names that don't exist in the current LeagueHub public layout,
   but the .page flex-direction rule matches an element we DO render and
   would reorganize the header/main/footer stack horizontally. Cleared
   when the scoped-CSS bundle got wired up so activation doesn't break
   the public UI. Add scoped public-layout rules here as needed.
*/
/* _content/LeagueHub/Components/Layout/NavMenu.razor.rz.scp.css */
/* NavMenu styles intentionally live in wwwroot/css/public-kit.css under
   "Public NavMenu v3" rather than this scoped file.

   Reason: Blazor's scoped CSS only attaches the b-{hash} attribute to
   direct DOM elements of this component. <NavLink>-rendered <a> tags are
   child-component output and don't get the hash, so scoped selectors
   like `.lh-pub-nav-link` would only style the <button> dropdown
   triggers — not the <a> NavLinks. Moving to public-kit.css applies the
   rules globally so both render correctly.

   Per public-gamepreview-v3.md Q2 lessons + memory rule "canonical
   utilities first — check public-kit.css before scoping". */
/* _content/LeagueHub/Components/Pages/admin/AdminAlumni.razor.rz.scp.css */
.lh-alumni-rollup-grid[b-oxm61rsq9z] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    margin-bottom: 16px;
}

@media (max-width: 640px) {
    .lh-alumni-rollup-grid[b-oxm61rsq9z] {
        grid-template-columns: 1fr;
    }
}

.lh-admin-alumni-highlights-grid[b-oxm61rsq9z] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 16px;
}

.lh-row-selected[b-oxm61rsq9z] {
    background: var(--accent-light) !important;
}

.lh-alumni-highlight-form-grid[b-oxm61rsq9z] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

@media (max-width: 480px) {
    .lh-alumni-highlight-form-grid[b-oxm61rsq9z] {
        grid-template-columns: 1fr;
    }
}

.lh-player-search-results[b-oxm61rsq9z] {
    list-style: none;
    padding: 0;
    margin: 4px 0 0;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 6px;
    max-height: 180px;
    overflow-y: auto;
    box-shadow: var(--shadow-sm);
}

.lh-player-search-results li[b-oxm61rsq9z] {
    border-bottom: 1px solid var(--border-light);
}

.lh-player-search-results li:last-child[b-oxm61rsq9z] {
    border-bottom: none;
}

.lh-player-search-results .lh-link-btn[b-oxm61rsq9z] {
    width: 100%;
    padding: 8px 12px;
    text-align: left;
    font-size: 13px;
    color: var(--text);
    display: block;
}

.lh-player-search-results .lh-link-btn:hover[b-oxm61rsq9z] {
    background: var(--bg);
}

/* ── Tab-card chrome (#558 — extracted from inline styles) ──
   The two-card tab pattern: a top card containing the tab switcher with
   square bottom corners + zero bottom margin, and a bottom card containing
   the active-tab content with square top corners. Visually one card. */
.lh-admin-alumni-tab-card[b-oxm61rsq9z] {
    margin-bottom: 0;
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
}

.lh-admin-alumni-tab-card-h[b-oxm61rsq9z] {
    padding-bottom: 0;
    border-bottom: none;
}

.lh-admin-alumni-tab-content[b-oxm61rsq9z] {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

.lh-admin-alumni-tab-content--padded[b-oxm61rsq9z] {
    padding: 20px;
}

.lh-admin-alumni-table-scroll[b-oxm61rsq9z] {
    overflow-x: auto;
}

.lh-admin-alumni-actions-col[b-oxm61rsq9z] {
    width: 140px;
}

.lh-admin-alumni-inline-form-cell[b-oxm61rsq9z] {
    padding: 0;
}

/* ── Inline-form banner spacing ── */
.lh-admin-alumni-banner[b-oxm61rsq9z] {
    margin-bottom: 12px;
}

/* ── Highlight card internals ── */
.lh-admin-alumni-highlight-card[b-oxm61rsq9z] {
    padding: 16px;
}

.lh-admin-alumni-highlight-head[b-oxm61rsq9z] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 8px;
}

.lh-admin-alumni-highlight-name[b-oxm61rsq9z] {
    font-weight: 600;
    color: var(--text);
}

.lh-admin-alumni-highlight-meta[b-oxm61rsq9z] {
    font-size: 12px;
    color: var(--text-muted);
    font-family: 'Geist Mono', monospace;
}

.lh-admin-alumni-highlight-note[b-oxm61rsq9z] {
    margin-bottom: 8px;
    -webkit-line-clamp: 2;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.lh-admin-alumni-highlight-foot[b-oxm61rsq9z] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.lh-admin-alumni-highlight-order[b-oxm61rsq9z] {
    font-size: 11px;
    color: var(--text-muted);
}

.lh-admin-alumni-highlight-actions[b-oxm61rsq9z] {
    display: flex;
    gap: 6px;
}

/* ── Form-field margin used inside the highlight modal ── */
.lh-admin-alumni-form-field[b-oxm61rsq9z] {
    margin-bottom: 12px;
}

/* ── Player picker dim-position helper ── */
.lh-admin-alumni-player-position[b-oxm61rsq9z] {
    color: var(--text-muted);
}

/* ── Form grid span-2 cell — replaces inline `style="grid-column: span 2"` ── */
.lh-alumni-highlight-form-grid .lh-field--span-2[b-oxm61rsq9z] {
    grid-column: span 2;
}

@media (max-width: 480px) {
    .lh-alumni-highlight-form-grid .lh-field--span-2[b-oxm61rsq9z] {
        grid-column: span 1;
    }
}
/* _content/LeagueHub/Components/Pages/admin/AdminHome.razor.rz.scp.css */
/* ═════════════════════════════════════════════════════════════════════
   AdminHome.razor.css — page-scoped layout classes extracted from
   admin-redesign.css (RESOLVES audit L2).

   RULES:
   - Theme-sensitive values (especially colors/borders/surfaces) reference
     CSS custom properties (BRAND-KIT tokens); literal layout, spacing,
     sizing, typography, and timing values may remain inline where needed.
   - No raw hex. No Bootstrap utility classes.
   - Classes prefixed lh-* per BRAND-KIT §4 naming convention.

   Classes left in admin-redesign.css (shared with other pages):
   - .lh-live-strip, .lh-live-dot, .lh-live-text, .lh-live-cta — these
     have a duplicate rule in admin-redesign.css because AdminSchedule and
     the scoring surface reference the same visual. Conservative choice:
     keep global rule intact; scoped rule below adds any AdminHome-specific
     overrides only.
   - .lh-setup-grid, .lh-setup-step, .lh-setup-ring and their sub-rules
     are kept in admin-redesign.css because the responsive breakpoint rule
     at line 1746 bundles `.lh-settings-grid, .lh-setup-grid` together —
     removing just the AdminHome half would break Settings page layout.
   - .lh-chip, .lh-team-badge, .lh-dot-sep, .lh-mono-label,
     .lh-card-empty — shared global tokens used across all admin pages.
   - .lh-susp-fill override (width: var(--progress)) — kept in global CSS
     (Phase 0c utility section) and also duplicated in this scoped file
     intentionally so the AdminHome suspension bar keeps the same width
     behavior under CSS isolation.

   Classes extracted here (AdminHome-exclusive):
   - .lh-finalize-* — unfinalized games list layout
   - .lh-upcoming / .lh-game-* — upcoming games rows
   - .lh-susp-list / .lh-susp-row / .lh-susp-avatar / .lh-susp-body /
     .lh-susp-name / .lh-susp-meta / .lh-susp-bar / .lh-susp-bar-label /
     .lh-susp-track — suspension card layout
   - .lh-activity / .lh-act-* — recent activity feed layout
   - .lh-success-note — all-games-finalised empty-state success variant
   - .lh-setup-step-count-row — dismiss CTA row layout (new in Gate 3)
   ═════════════════════════════════════════════════════════════════════ */

/* ── Setup banner dismiss row ─────────────────────────────────────── */
.lh-setup-step-count-row[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 12px;
}

/* ── Finalize list ────────────────────────────────────────────────── */
.lh-finalize-list[b-abad506x3i] {
  display: flex;
  flex-direction: column;
}

.lh-finalize-row[b-abad506x3i] {
  display: flex;
  align-items: center;
  padding: 12px 20px;
  gap: 16px;
  border-bottom: 1px solid var(--border-light);
}

.lh-finalize-row:last-child[b-abad506x3i] { border-bottom: none; }

.lh-finalize-matchup[b-abad506x3i] {
  display: flex;
  gap: 14px;
  flex: 1;
  min-width: 0;
  align-items: center;
}

.lh-finalize-date[b-abad506x3i] {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 50px;
}

.lh-finalize-teams[b-abad506x3i] {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.lh-ft-row[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 12.5px;
}

.lh-finalize-actions[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 8px;
}

/* ── Upcoming games ──────────────────────────────────────────────── */
.lh-upcoming[b-abad506x3i] {
  display: flex;
  flex-direction: column;
}

.lh-game-row[b-abad506x3i] {
  display: grid;
  grid-template-columns: 60px 1fr auto auto;
  align-items: center;
  gap: 16px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--border-light);
  transition: background 150ms ease;
}

.lh-game-row:hover[b-abad506x3i] { background: var(--surface-2); }
.lh-game-row:last-child[b-abad506x3i] { border-bottom: none; }

.lh-game-when[b-abad506x3i] {
  display: flex;
  flex-direction: column;
}

.lh-game-date[b-abad506x3i] {
  font-family: 'Geist', sans-serif;
  font-size: 13px;
  font-weight: 600;
}

.lh-game-time[b-abad506x3i] {
  font-family: 'Geist Mono', ui-monospace, monospace;
  font-size: 10.5px;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.6px;
  margin-top: 2px;
}

.lh-game-matchup[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 10px;
  min-width: 0;
  font-size: 13px;
}

.lh-game-team[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 7px;
  min-width: 0;
}

.lh-game-team span[b-abad506x3i] {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  max-width: 140px;
}

.lh-game-at[b-abad506x3i] {
  color: var(--text-muted);
  font-size: 11px;
}

.lh-game-score[b-abad506x3i] {
  font-family: 'Geist Mono', ui-monospace, monospace;
  font-size: 11.5px;
  color: var(--text-muted);
}

/* ── Suspensions card layout ─────────────────────────────────────── */
.lh-susp-list[b-abad506x3i] {
  display: flex;
  flex-direction: column;
}

.lh-susp-row[b-abad506x3i] {
  display: grid;
  grid-template-columns: 36px 1fr 120px;
  align-items: center;
  gap: 14px;
  padding: 12px 20px;
  border-bottom: 1px solid var(--border-light);
}

.lh-susp-row:last-child[b-abad506x3i] { border-bottom: none; }

.lh-susp-avatar[b-abad506x3i] {
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: linear-gradient(135deg, var(--danger-tint), var(--danger-bg));
  color: var(--danger-dark);
  font-weight: 600;
  font-size: 11.5px;
  display: grid;
  place-items: center;
}

.lh-susp-body[b-abad506x3i] { flex: 1; }

.lh-susp-name[b-abad506x3i] {
  font-size: 13px;
  font-weight: 500;
}

.lh-susp-meta[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 7px;
  font-size: 11.5px;
  color: var(--text-muted);
  margin-top: 2px;
}

.lh-susp-bar[b-abad506x3i] {
  min-width: 0;
}

.lh-susp-bar-label[b-abad506x3i] {
  font-size: 9.5px;
  margin-bottom: 4px;
  color: var(--text-muted);
}

.lh-susp-track[b-abad506x3i] {
  height: 4px;
  background: var(--border-light);
  border-radius: 2px;
  overflow: hidden;
}

.lh-susp-fill[b-abad506x3i] {
  height: 100%;
  background: linear-gradient(90deg, var(--danger), var(--danger-light));
  border-radius: 2px;
  width: var(--progress, 0%);
}

/* ── Activity feed ───────────────────────────────────────────────── */
.lh-activity[b-abad506x3i] {
  padding: 4px 0;
}

.lh-act-row[b-abad506x3i] {
  display: grid;
  grid-template-columns: 16px 1fr auto;
  align-items: flex-start;
  gap: 10px;
  padding: 10px 20px;
  position: relative;
}

.lh-act-row:not(:last-child)[b-abad506x3i] {
  border-bottom: 1px solid var(--border-light);
}

.lh-act-dot[b-abad506x3i] {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--border);
  margin-top: 6px;
  margin-left: 4px;
}

.lh-act-row:first-child .lh-act-dot[b-abad506x3i] {
  background: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-glow);
}

.lh-act-body[b-abad506x3i] {
  flex: 1;
  min-width: 0;
}

.lh-act-top[b-abad506x3i] {
  display: flex;
  gap: 6px;
  font-size: 12.5px;
  align-items: baseline;
  flex-wrap: wrap;
}

.lh-act-who[b-abad506x3i] { font-weight: 600; }

.lh-act-what[b-abad506x3i] { color: var(--text-secondary); }

.lh-act-detail[b-abad506x3i] {
  font-size: 11.5px;
  color: var(--text-muted);
  margin-top: 2px;
}

.lh-act-time[b-abad506x3i] {
  font-size: 10px;
  color: var(--text-muted);
  white-space: nowrap;
}

/* ── Success note — "zero items = desired state" (audit §10.2) ───── */
/* lh-success-note: kept as-is per audit §10.2.
   BRAND-KIT §6.2 entry scheduled for Phase 5 (see PR description).
   Mirrors the global rule in admin-redesign.css Phase 0c section. */
.lh-success-note[b-abad506x3i] {
  display: flex;
  align-items: center;
  gap: 6px;
  color: var(--success-dark);
  font-size: 13px;
  font-weight: 500;
}
/* _content/LeagueHub/Components/Pages/admin/AdminSchedule.razor.rz.scp.css */
/* Scoped CSS for AdminSchedule.razor (Phase 2).
   Blazor scopes these rules by hashed [b-xxxxx] attributes so class names
   don't collide with other components. Co-located to keep schedule-specific
   layout out of the global admin-redesign.css. */

/* ─── Icon leading spacer ───
   Small right margin for icons that precede text inside buttons / links. */
.ico-lead[b-nw6dsnbeb4] { margin-right: 6px; }

/* ─── Banner / filter-bar spacing ─── */
.error-banner[b-nw6dsnbeb4] { margin-bottom: 14px; }
.filter-bar[b-nw6dsnbeb4] { margin-bottom: 14px; }
.filter-group-right[b-nw6dsnbeb4] { margin-left: auto; }

/* Filter-bar select widths — prototype-matched. */
.field-team[b-nw6dsnbeb4] { min-width: 160px; }
.field-type[b-nw6dsnbeb4] { min-width: 140px; }

/* ─── Loading + empty-state cards ─── */
.loader-card[b-nw6dsnbeb4] {
    padding: 48px;
    text-align: center;
    color: var(--text-muted);
}
.loader-icon[b-nw6dsnbeb4] { font-size: 22px; }
.loader-label[b-nw6dsnbeb4] { margin-top: 8px; font-size: 13px; }

.empty-card[b-nw6dsnbeb4] {
    padding: 56px 24px;
    text-align: center;
}
.empty-icon-wrap[b-nw6dsnbeb4] {
    font-size: 36px;
    color: var(--text-muted);
    margin-bottom: 12px;
}
.empty-heading[b-nw6dsnbeb4] {
    margin: 0 0 8px;
    font-family: 'Geist', sans-serif;
}
.empty-sub[b-nw6dsnbeb4] {
    margin: 0 0 20px;
}

/* ─── Table layout ─── */
.sched-table[b-nw6dsnbeb4] { table-layout: fixed; width: 100%; }
.table-wrap[b-nw6dsnbeb4] { padding: 0; }
.table-scroll[b-nw6dsnbeb4] { overflow-x: auto; }

/* Colgroup widths — tight date/time/score/status columns, flex team columns. */
.col-date[b-nw6dsnbeb4] { width: 94px; }
.col-time[b-nw6dsnbeb4] { width: 76px; }
.col-score[b-nw6dsnbeb4] { width: 74px; }
.col-status[b-nw6dsnbeb4] { width: 92px; }
.col-actions[b-nw6dsnbeb4] { width: 168px; }

/* Cell shared rules. */
.cell-nowrap[b-nw6dsnbeb4] { white-space: nowrap; }
.cell-team[b-nw6dsnbeb4] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.cell-team-name[b-nw6dsnbeb4] { margin-left: 6px; }

/* Filter-empty placeholder rendered inside the table body. */
.filter-empty-cell[b-nw6dsnbeb4] {
    padding: 48px 24px;
    text-align: center;
    color: var(--text-muted);
}
.filter-empty-icon[b-nw6dsnbeb4] {
    font-size: 28px;
    margin-bottom: 8px;
}
.filter-empty-text[b-nw6dsnbeb4] {
    font-size: 13px;
    margin-bottom: 10px;
}

/* Row actions cluster (icon buttons, right-aligned). */
.row-actions[b-nw6dsnbeb4] {
    display: flex;
    gap: 2px;
    justify-content: flex-end;
}

/* Needs-finalize count chip rendered inside the segment tab. */
.segment-count[b-nw6dsnbeb4] {
    margin-left: 4px;
    padding: 1px 6px;
    font-size: 10px;
}

/* ─── Detail panel ─── */
.detail-placeholder[b-nw6dsnbeb4] {
    text-align: center;
    padding: 40px 24px;
    color: var(--text-muted);
}
.detail-placeholder-icon[b-nw6dsnbeb4] {
    font-size: 28px;
    margin-bottom: 8px;
}
.detail-placeholder-text[b-nw6dsnbeb4] {
    font-size: 12.5px;
}

/* "AWAY" / "HOME" small caption under each team block. */
.detail-team-side[b-nw6dsnbeb4] {
    font-size: 11px;
    color: var(--text-muted);
}

/* Meta label + value typography. */
.meta-label[b-nw6dsnbeb4] {
    font-size: 11px;
    color: var(--text-muted);
}
.meta-notes-value[b-nw6dsnbeb4] {
    font-size: 12px;
    color: var(--text-muted);
}

/* ─── Reschedule modal ─── */
.reschedule-current[b-nw6dsnbeb4] {
    font-size: 12.5px;
    color: var(--text-muted);
    margin-bottom: 8px;
}
.reschedule-field[b-nw6dsnbeb4] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 10px;
}
.reschedule-field label[b-nw6dsnbeb4] {
    font-family: 'Geist Mono', monospace;
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--text-muted);
}
.reschedule-field input[b-nw6dsnbeb4],
.reschedule-field textarea[b-nw6dsnbeb4] {
    font-family: 'Inter', sans-serif;
    font-size: 13px;
    padding: 8px 10px;
    border: 1px solid var(--border);
    border-radius: 7px;
    background: var(--surface);
    color: var(--text);
}
.reschedule-field input:focus[b-nw6dsnbeb4],
.reschedule-field textarea:focus[b-nw6dsnbeb4] {
    outline: 2px solid var(--accent);
    outline-offset: -1px;
    border-color: var(--accent);
}
.reschedule-field textarea[b-nw6dsnbeb4] {
    resize: vertical;
    min-height: 70px;
}
/* _content/LeagueHub/Components/Pages/admin/AdminStandings.razor.rz.scp.css */
/* ═════════════════════════════════════════════════════════════════════
   AdminStandings — scoped styles for Phase 3 Gate 3.
   Ported from wwwroot/mockups/admin/standings.html. All rules compile to
   Blazor-scoped attribute selectors so they do not leak beyond this page.
   ═════════════════════════════════════════════════════════════════════ */

/* ────────── Filter bar ────────── */
.standings-filter-bar[b-4njflrge6d] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.standings-filter-bar .lh-field[b-4njflrge6d] {
    min-width: 180px;
}

.standings-filter-bar .standings-search[b-4njflrge6d] {
    flex: 1 1 280px;
    max-width: 360px;
}

.standings-filter-bar .standings-search input[b-4njflrge6d] {
    width: 100%;
}

/* ────────── Filter-zero inline empty ────────── */
.standings-filter-empty[b-4njflrge6d] {
    padding: 40px 24px;
    text-align: center;
    margin-top: 16px;
}

.standings-filter-empty-icon[b-4njflrge6d] {
    font-size: 28px;
    color: var(--text-muted);
    margin-bottom: 10px;
}

.standings-filter-empty-title[b-4njflrge6d] {
    margin: 0 0 6px;
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 600;
    color: var(--text);
}

.standings-filter-empty-sub[b-4njflrge6d] {
    margin: 0;
    font-size: 13px;
    color: var(--text-muted);
}

/* ────────── Empty-state inline CTA row ────────── */
.lh-empty-actions[b-4njflrge6d] {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
}

/* ────────── Info icon in PageHeader actions ────────── */
.lh-info-icon[b-4njflrge6d] {
    color: var(--text-muted);
    cursor: help;
    font-size: 16px;
}

/* ────────── Table column widths ────────── */
.lh-table .col-rank[b-4njflrge6d] {
    width: 44px;
}

/* ────────── Rank chip ────────── */
.lh-rank[b-4njflrge6d] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 26px;
    height: 24px;
    padding: 0 6px;
    background: var(--surface-2);
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: 6px;
    font-family: 'Geist Mono', monospace;
    font-size: 11.5px;
    font-weight: 600;
    letter-spacing: 0.2px;
}

.lh-rank.is-leader[b-4njflrge6d] {
    background: color-mix(in srgb, var(--accent) 14%, white);
    border-color: color-mix(in srgb, var(--accent) 30%, var(--border));
    color: var(--accent-dark);
}

/* ────────── Team cell ────────── */
.lh-cell-team a[b-4njflrge6d] {
    text-decoration: none;
    color: inherit;
}

.lh-cell-team a:hover .lh-team-name strong[b-4njflrge6d] {
    color: var(--accent-dark);
}

.lh-team-name strong[b-4njflrge6d] {
    font-weight: 600;
}

.lh-team-name .lh-muted[b-4njflrge6d] {
    color: var(--text-muted);
    margin-left: 6px;
    font-size: 12px;
    font-variant-numeric: tabular-nums;
}

/* ────────── Team removed fallback ────────── */
.lh-team-removed[b-4njflrge6d] {
    color: var(--text-muted);
    font-style: italic;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.lh-team-removed i[b-4njflrge6d] {
    color: var(--warning-dark);
}

/* ────────── Points bar cell — T5 custom-property passthrough ────────── */
.lh-pts-cell[b-4njflrge6d] {
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: flex-end;
}

.lh-pts-bar[b-4njflrge6d] {
    width: 42px;
    height: 6px;
    background: var(--surface-2);
    border-radius: 3px;
    overflow: hidden;
    flex-shrink: 0;
}

.lh-pts-fill[b-4njflrge6d] {
    height: 100%;
    background: var(--accent);
    width: var(--pts-width);
    transition: width 200ms ease;
}

.lh-pts-val[b-4njflrge6d] {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
}

/* ────────── Goal-differential sign ────────── */
td.num.is-pos[b-4njflrge6d] {
    color: var(--success-dark);
}

td.num.is-neg[b-4njflrge6d] {
    color: var(--danger-dark);
}

/* ────────── Not-tracked-yet columns (SF / SA / PIM until M3) ────────── */
td.num.is-untracked[b-4njflrge6d] {
    color: var(--text-muted);
    font-style: italic;
}

/* ────────── Footer strip ────────── */
.lh-table-foot[b-4njflrge6d] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 10px 16px;
    background: var(--surface-2);
    border-top: 1px solid var(--border-light);
    border-radius: 0 0 8px 8px;
    margin-top: -1px;
    font-size: 11.5px;
    color: var(--text-muted);
}

.lh-table-foot .lh-mono-label[b-4njflrge6d] {
    font-family: 'Geist Mono', monospace;
    font-size: 10.5px;
    letter-spacing: 0.3px;
}

.lh-table-foot .lh-footnote-m3[b-4njflrge6d] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--text-muted);
}

.lh-table-foot .lh-footnote-m3 i[b-4njflrge6d] {
    color: var(--warning-dark);
}

/* ────────── Responsive ────────── */
@media (max-width: 900px) {
    .standings-filter-bar[b-4njflrge6d] {
        gap: 8px;
    }

    .standings-filter-bar .lh-field[b-4njflrge6d] {
        min-width: 140px;
    }

    .standings-filter-bar .standings-search[b-4njflrge6d] {
        flex: 1 1 100%;
        max-width: none;
    }
}
/* _content/LeagueHub/Components/Pages/admin/GameGoalies.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════════
   GameGoalies scoped CSS
   Gate 3 port: docs/design-audit/admin-game-goalies.md
   Replaces all inline-style declarations flagged under L3.
   ══════════════════════════════════════════════════════════════════════════ */

/* ── Two-column team card grid ─────────────────────────────────────────── */
/* Replaces inline style="display:grid; grid-template-columns:1fr 1fr; gap:var(--space-3)" */
.game-goalies-grid[b-44i3jjpvsx] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-3);
}

/* Mobile stack — §10.2: cards full-width below 640 px */
@media (max-width: 639px) {
    .game-goalies-grid[b-44i3jjpvsx] {
        grid-template-columns: 1fr;
    }
}

/* Loading skeleton grid — same shape as game-goalies-grid */
/* Replaces inline style on the _loading branch */
.game-goalies-skel-grid[b-44i3jjpvsx] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-3);
}

@media (max-width: 639px) {
    .game-goalies-skel-grid[b-44i3jjpvsx] {
        grid-template-columns: 1fr;
    }
}

/* ── Team card ─────────────────────────────────────────────────────────── */
/* Replaces inline style="height:100%" on .lh-card wrapper */
.game-goalies-team-card[b-44i3jjpvsx] {
    height: 100%;
}

/* Dirty state: left accent border on the card header */
/* Audit §10 / mockup AGG-04 */
.game-goalies-team-card.is-dirty .lh-card-h[b-44i3jjpvsx] {
    border-left: 3px solid var(--accent);
    padding-left: calc(var(--space-3) - 3px);
}

/* "Away" / "Home" label — rendered inside .lh-card-h next to team name */
.game-goalies-team-label[b-44i3jjpvsx] {
    color: var(--text-muted);
    font-size: var(--fs-sm);
    font-weight: 400;
    margin-left: var(--space-1);
}

/* "Unsaved changes" dirty indicator label in header */
.game-goalies-dirty-label[b-44i3jjpvsx] {
    margin-left: auto;
    font-size: var(--fs-sm);
    color: var(--accent);
    display: flex;
    align-items: center;
    gap: var(--space-1);
}

/* ── Per-period shots reference panel ─────────────────────────────────── */
/* Sits between .lh-card-h and .lh-card__body; read-only context strip */
.game-goalies-shots-ref[b-44i3jjpvsx] {
    padding: 8px 16px 10px;
    border-bottom: 1px solid var(--border-light, var(--border));
    background: var(--bg);
}

.game-goalies-shots-ref-heading[b-44i3jjpvsx] {
    font-family: var(--font-mono, monospace);
    font-size: 9px;
    font-weight: 500;
    letter-spacing: 0.8px;
    text-transform: uppercase;
    color: var(--text-muted);
    margin: 0 0 5px;
}

.game-goalies-shots-ref-grid[b-44i3jjpvsx] {
    display: grid;
    grid-template-columns: repeat(5, auto);
    gap: 0 20px;
    width: fit-content;
}

.game-goalies-shots-ref-label[b-44i3jjpvsx] {
    font-family: var(--font-mono, monospace);
    font-size: 9.5px;
    font-weight: 500;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    color: var(--text-muted);
    text-align: center;
}

.game-goalies-shots-ref-value[b-44i3jjpvsx] {
    font-family: var(--font-mono, monospace);
    font-size: 13px;
    font-weight: 600;
    color: var(--text);
    text-align: center;
    line-height: 1.4;
}

/* Total column — heavier weight to distinguish from per-period cells */
.game-goalies-shots-ref-cell--total .game-goalies-shots-ref-label[b-44i3jjpvsx],
.game-goalies-shots-ref-cell--total .game-goalies-shots-ref-value[b-44i3jjpvsx] {
    color: var(--text);
    font-weight: 700;
}

/* ── Goalie table ──────────────────────────────────────────────────────── */
/* Column widths — replaces per-td style="width:5rem" / style="width:7rem" */
.lh-goalie-table colgroup col.col-sa[b-44i3jjpvsx],
.lh-goalie-table colgroup col.col-ga[b-44i3jjpvsx] {
    width: 5rem;
}

.lh-goalie-table colgroup col.col-periods[b-44i3jjpvsx] {
    width: 7rem;
}

/* Goalie name + Sub badge wrapper — keeps name and badge on one line */
.game-goalies-goalie-name[b-44i3jjpvsx] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
}

/* Centered numeric input — replaces inline style="text-align:center" */
.lh-input-center[b-44i3jjpvsx] {
    text-align: center;
}

/* ── Action cell ───────────────────────────────────────────────────────── */
/* Replaces inline style="display:flex; gap:var(--space-1); justify-content:flex-end" */
.lh-actions-gap[b-44i3jjpvsx] {
    display: flex;
    gap: var(--space-1);
    justify-content: flex-end;
}

/* ── Hint paragraph ────────────────────────────────────────────────────── */
/* Replaces inline style on the recalculate disclaimer (lines 61-64) */
.lh-goalie-hint[b-44i3jjpvsx] {
    color: var(--text-muted);
    font-size: var(--fs-sm);
    margin-top: var(--space-3);
    margin-bottom: 0;
    line-height: 1.5;
}

/* ── Modal hint text ───────────────────────────────────────────────────── */
/* Replaces inline style on the delete modal body paragraph (line 75) */
.lh-hint[b-44i3jjpvsx] {
    color: var(--text-muted);
    font-size: var(--fs-sm);
    margin: 0;
}
/* _content/LeagueHub/Components/Pages/admin/LeagueActivity.razor.rz.scp.css */
/* ═════════════════════════════════════════════════════════════════════
   Scoped CSS for LeagueActivity.razor — Suspensions tab block.

   Transactions-tab rules live in admin-redesign.css § "LeagueActivity /
   Transactions tab — promoted from scoped CSS" (a workaround for the
   scoped-CSS bundle bug fixed in PR #377). Moving those back here is a
   separate cleanup — not part of D2.

   D2 adds Suspensions-specific scoped rules. All selectors scoped via
   the Blazor-generated [b-xxxxx] attribute so they don't leak outside
   the Suspensions tab markup.
   ═════════════════════════════════════════════════════════════════════ */

/* Filter bar row — mirrors the lh-filter-bar shape Transactions uses. */
.lh-susp-filter[b-hcnomh6qx9] {
    display: flex;
    gap: 12px;
    align-items: flex-end;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.lh-susp-filter .lh-field[b-hcnomh6qx9] {
    min-width: 160px;
}

.lh-susp-clear[b-hcnomh6qx9] {
    align-self: flex-end;
    margin-bottom: 1px;
}

/* Filter → zero matches — inline empty card below the active filter. */
.lh-susp-filter-empty[b-hcnomh6qx9] {
    padding: 40px 24px;
    text-align: center;
    margin-top: 16px;
}

.lh-susp-filter-empty-icon[b-hcnomh6qx9] {
    font-size: 28px;
    color: var(--text-muted);
    margin-bottom: 10px;
}

.lh-susp-filter-empty-title[b-hcnomh6qx9] {
    margin: 0 0 6px;
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 600;
    color: var(--text);
}

.lh-susp-filter-empty-sub[b-hcnomh6qx9] {
    margin: 0 0 16px;
    font-size: 13px;
    color: var(--text-muted);
}

/* Remaining / Total cell — monospace value + muted total. */
.lh-remaining-cell[b-hcnomh6qx9] {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
}

.lh-remaining-cell-val[b-hcnomh6qx9] {
    font-family: 'Geist Mono', monospace;
    font-weight: 600;
    font-size: 14px;
    color: var(--text);
    font-variant-numeric: tabular-nums;
}

.lh-remaining-cell-total[b-hcnomh6qx9] {
    color: var(--text-muted);
    font-size: 13px;
    font-variant-numeric: tabular-nums;
}

/* Column alignment / typography utilities — replace inline text-align styles. */
.lh-table th.col-status[b-hcnomh6qx9],
.lh-table td.col-status[b-hcnomh6qx9] {
    text-align: center;
}

.lh-table th.col-actions[b-hcnomh6qx9],
.lh-table td.col-actions[b-hcnomh6qx9] {
    text-align: right;
    white-space: nowrap;
}

.lh-table th.col-date[b-hcnomh6qx9],
.lh-table td.col-date[b-hcnomh6qx9] {
    color: var(--text-muted);
    font-size: 0.85rem;
}

.lh-table td.cell-player[b-hcnomh6qx9] {
    font-weight: 500;
}

/* Action cell: icons separated by 4px. */
.lh-actions-gap > * + *[b-hcnomh6qx9] {
    margin-left: 4px;
}
/* _content/LeagueHub/Components/Pages/admin/Players.razor.rz.scp.css */
/* ═════════════════════════════════════════════════════════════════════
   AdminPlayers — scoped styles (Phase Gate 3, ports the signed-off mockup
   at wwwroot/mockups/admin/admin-players.html).
   All selectors compile to Blazor-scoped attribute selectors so they don't
   leak beyond the Players page.
   ═════════════════════════════════════════════════════════════════════ */

/* ────────── Filter bar (desktop) ────────── */
.players-filter-bar[b-0vci4kevyq] {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.players-filter-bar .lh-field[b-0vci4kevyq] {
    min-width: 160px;
}

.players-search[b-0vci4kevyq] {
    flex: 1 1 280px;
    max-width: 360px;
    position: relative;
}

.players-search input[b-0vci4kevyq] {
    width: 100%;
    padding-left: 32px;
}

.players-search .fa-magnifying-glass[b-0vci4kevyq] {
    position: absolute;
    left: 10px;
    top: 50%;
    transform: translateY(-30%);
    color: var(--text-muted);
    font-size: 12px;
    pointer-events: none;
}

.players-clear[b-0vci4kevyq] {
    align-self: flex-end;
    margin-bottom: 1px;
}

/* ────────── Filter-zero inline empty card ────────── */
.players-filter-empty[b-0vci4kevyq] {
    padding: 40px 24px;
    text-align: center;
    margin-top: 16px;
}

.players-filter-empty-icon[b-0vci4kevyq] {
    font-size: 28px;
    color: var(--text-muted);
    margin-bottom: 10px;
}

.players-filter-empty-title[b-0vci4kevyq] {
    margin: 0 0 6px;
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 600;
    color: var(--text);
}

.players-filter-empty-sub[b-0vci4kevyq] {
    margin: 0 0 16px;
    font-size: 13px;
    color: var(--text-muted);
}

/* ────────── Empty-state CTA row ────────── */
.lh-empty-actions[b-0vci4kevyq] {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
}

/* ────────── Table column widths ────────── */
.lh-table th.col-jersey[b-0vci4kevyq],
.lh-table td.col-jersey[b-0vci4kevyq] {
    width: 50px;
}

.lh-table th.col-pos[b-0vci4kevyq],
.lh-table td.col-pos[b-0vci4kevyq] {
    width: 60px;
}

.lh-table th.col-rookie[b-0vci4kevyq],
.lh-table td.col-rookie[b-0vci4kevyq] {
    width: 90px;
}

.lh-table th.col-actions[b-0vci4kevyq],
.lh-table td.col-actions[b-0vci4kevyq] {
    width: 90px;
    text-align: right;
    white-space: nowrap;
}

.lh-table td.col-jersey[b-0vci4kevyq] {
    font-weight: 600;
}

.lh-table td.cell-player[b-0vci4kevyq] {
    font-weight: 500;
}

.lh-actions-gap[b-0vci4kevyq] {
    display: flex;
    gap: 4px;
    justify-content: flex-end;
}

/* ────────── Position pill ────────── */
.lh-pos-pill[b-0vci4kevyq] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 26px;
    height: 22px;
    padding: 0 8px;
    border-radius: 999px;
    font-family: 'Geist Mono', monospace;
    font-size: 10.5px;
    font-weight: 600;
    letter-spacing: 0.3px;
    border: 1px solid;
}

.lh-pos-pill.pos-F[b-0vci4kevyq] {
    background: color-mix(in srgb, var(--accent) 10%, white);
    border-color: color-mix(in srgb, var(--accent) 35%, var(--border));
    color: var(--accent-dark);
}

.lh-pos-pill.pos-D[b-0vci4kevyq] {
    background: color-mix(in srgb, var(--info) 10%, white);
    border-color: color-mix(in srgb, var(--info) 35%, var(--border));
    color: var(--info-dark);
}

.lh-pos-pill.pos-G[b-0vci4kevyq] {
    background: color-mix(in srgb, var(--warning) 12%, white);
    border-color: color-mix(in srgb, var(--warning) 35%, var(--border));
    color: var(--warning-dark);
}

/* ────────── Mobile card list (< 640px) ────────── */
.players-mobile-list[b-0vci4kevyq] {
    display: none;
}

@media (max-width: 640px) {
    .players-desktop-table[b-0vci4kevyq] {
        display: none;
    }

    .players-filter-bar[b-0vci4kevyq] {
        flex-direction: column;
        gap: 10px;
        padding: 12px;
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: 10px;
    }

    .players-filter-bar .lh-field[b-0vci4kevyq] {
        min-width: 0;
        width: 100%;
    }

    .players-filter-bar select[b-0vci4kevyq],
    .players-filter-bar input[b-0vci4kevyq] {
        width: 100%;
    }

    .players-search[b-0vci4kevyq] {
        flex: 1 1 auto;
        max-width: none;
    }

    .players-clear[b-0vci4kevyq] {
        align-self: stretch;
    }

    .players-mobile-list[b-0vci4kevyq] {
        display: flex;
        flex-direction: column;
        gap: 6px;
        margin-top: 12px;
    }

    .players-mobile-card[b-0vci4kevyq] {
        display: grid;
        grid-template-columns: 38px 1fr auto;
        gap: 10px;
        align-items: center;
        padding: 10px 12px;
        background: var(--surface);
        border: 1px solid var(--border);
        border-radius: 10px;
    }

    .players-mobile-jersey[b-0vci4kevyq] {
        display: grid;
        place-items: center;
        height: 34px;
        width: 34px;
        background: var(--surface-2);
        border: 1px solid var(--border);
        border-radius: 8px;
        font-family: 'Geist Mono', monospace;
        font-size: 13px;
        font-weight: 700;
        color: var(--text);
        font-variant-numeric: tabular-nums;
    }

    .players-mobile-body[b-0vci4kevyq] {
        min-width: 0;
    }

    .players-mobile-name[b-0vci4kevyq] {
        font-size: 14px;
        font-weight: 600;
        color: var(--text);
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
        display: flex;
        align-items: center;
        gap: 4px;
    }

    .players-mobile-meta[b-0vci4kevyq] {
        display: flex;
        align-items: center;
        gap: 6px;
        margin-top: 4px;
        flex-wrap: wrap;
    }

    .players-mobile-team[b-0vci4kevyq] {
        font-size: 12px;
        color: var(--text-muted);
        max-width: 140px;
        overflow: hidden;
        text-overflow: ellipsis;
        white-space: nowrap;
    }

    .players-mobile-action[b-0vci4kevyq] {
        color: var(--text-muted);
    }
}
/* _content/LeagueHub/Components/Pages/admin/Profile.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════════════
   Profile.razor.css — scoped styles for /admin/profile
   Ported from wwwroot/mockups/admin/admin-profile.html <style> block.
   Gate 3 — signed off 2026-04-25.
   All color values use design tokens (var(--*)) — no raw hex.
   ═══════════════════════════════════════════════════════════════════════ */

/* Two-column card grid */
.profile-grid[b-6z09zttqk6] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
    margin-bottom: 20px;
}

@media (max-width: 640px) {
    .profile-grid[b-6z09zttqk6] {
        grid-template-columns: 1fr;
    }
}

/* ── Definition list (identity + access cards) ── */

.profile-dl[b-6z09zttqk6] {
    display: grid;
    grid-template-columns: 140px 1fr;
    row-gap: 0;
    font-size: 13px;
}

.profile-dt[b-6z09zttqk6] {
    padding: 10px 0 10px 20px;
    font-family: var(--font-mono, 'Geist Mono', monospace);
    font-size: 10.5px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--text-muted);
    border-bottom: 1px solid var(--border-light);
    display: flex;
    align-items: center;
}

.profile-dd[b-6z09zttqk6] {
    padding: 10px 20px 10px 0;
    color: var(--text);
    border-bottom: 1px solid var(--border-light);
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 0;
}

/* Remove bottom border from the last row pair */
.profile-dl > .profile-dt:last-of-type[b-6z09zttqk6],
.profile-dl > .profile-dd:last-of-type[b-6z09zttqk6] {
    border-bottom: none;
}

/* ── OID / tenant code value (full GUID, wraps if narrow) ── */

.profile-id-value[b-6z09zttqk6] {
    font-family: var(--font-mono, 'Geist Mono', monospace);
    font-size: 12px;
    word-break: break-all;
    overflow-wrap: anywhere;
    flex: 1 1 auto;
    min-width: 0;
}

/* ── Role dot — decorative bullet ── */

.profile-role-dot[b-6z09zttqk6] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--border);
    flex-shrink: 0;
}

.profile-role-dot.is-active[b-6z09zttqk6] {
    background: var(--accent);
}

/* ── Held-roles list ── */

.profile-roles-list[b-6z09zttqk6] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.profile-role-row[b-6z09zttqk6] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--text);
}

.profile-role-row.is-active-role[b-6z09zttqk6] {
    color: var(--text);
    font-weight: 500;
}

/* Active badge chip — compact size override */
.profile-active-badge[b-6z09zttqk6] {
    font-size: 9px;
    padding: 2px 6px;
}

/* ── SuperAdmin indicator ── */

.profile-superadmin-yes[b-6z09zttqk6] {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--success-dark);
}

.profile-superadmin-yes i[b-6z09zttqk6] {
    color: var(--success);
}

.profile-superadmin-no[b-6z09zttqk6] {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--text-muted);
}

/* ── Role switcher strip (multi-role only) ── */

.profile-role-switcher[b-6z09zttqk6] {
    border-top: 1px solid var(--border-light);
    padding: 12px 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.profile-switcher-label[b-6z09zttqk6] {
    font-family: var(--font-mono, 'Geist Mono', monospace);
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--text-muted);
    flex-shrink: 0;
}

/* ── Card footer — right-aligned action area ── */

.lh-card-footer[b-6z09zttqk6] {
    padding: 10px 20px;
    border-top: 1px solid var(--border-light);
    background: var(--surface-2);
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: 8px;
}

/* ── Permissions card spacing ── */

.profile-permissions-card[b-6z09zttqk6] {
    margin-bottom: 20px;
}

/* ── Raw claims <details> ── */

.profile-claims-details[b-6z09zttqk6] {
    margin-top: 0;
}

.profile-claims-summary[b-6z09zttqk6] {
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 20px;
    font-family: var(--font-mono, 'Geist Mono', monospace);
    font-size: 10.5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    color: var(--text-muted);
    background: var(--surface-2);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    user-select: none;
    transition: color 150ms ease, background 150ms ease;
}

.profile-claims-summary[b-6z09zttqk6]::-webkit-details-marker {
    display: none;
}

.profile-claims-summary[b-6z09zttqk6]::before {
    content: '';
    display: inline-block;
    width: 0;
    height: 0;
    border-top: 4px solid transparent;
    border-bottom: 4px solid transparent;
    border-left: 6px solid var(--text-muted);
    flex-shrink: 0;
    transition: transform 150ms ease;
}

.profile-claims-details[open] .profile-claims-summary[b-6z09zttqk6]::before {
    transform: rotate(90deg);
}

.profile-claims-summary:hover[b-6z09zttqk6] {
    color: var(--text);
    background: var(--bg);
}

/* Raw claims card — connects visually to the summary */
.profile-claims-card[b-6z09zttqk6] {
    border-radius: 0 0 12px 12px;
    border-top: none;
    margin-top: -1px;
}

/* ── is-none chip variant (no-access permissions) ── */

.lh-chip.is-none[b-6z09zttqk6] {
    background: var(--bg);
    color: var(--text-muted);
    border: 1px solid var(--border);
}
/* _content/LeagueHub/Components/Pages/admin/SeasonRollover.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════════════
   SeasonRollover scoped CSS — Gate 3 port from
   wwwroot/mockups/admin/season-rollover.html <style> block.

   Ported rules:
     - .lh-wizard* idiom (new pattern)
     - .season-rollover-current-card / .season-rollover-playoff-grid
     - Inline-style replacements (T3, L3 violations)

   Token discipline: var(--*) only — no raw hex.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Seasons table — current-row highlight (T3 fix) ─────────────────── */
.lh-table tr.is-current[b-5gw4b8rtnh] {
    background: var(--accent-light);
}

/* ── Card header flex layout (L3 fix — .lh-card-h--space-between) ────── */
/* Note: .lh-card-h--space-between is defined in admin.css / admin-redesign.css.
   If it is not yet present, the local rule below applies as fallback. */
[b-5gw4b8rtnh] .lh-card-h--space-between {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* ── Card header title (L3 fix — h5 margin) ─────────────────────────── */
.lh-card-h-title[b-5gw4b8rtnh] {
    margin: 0;
}

/* ── Seasons table dim while wizard is open (SR-03/SR-04) ───────────── */
.seasons-table-dimmed[b-5gw4b8rtnh] {
    opacity: 0.65;
    pointer-events: none;
    user-select: none;
}

/* ── Inline new-season form (L3 fix) ────────────────────────────────── */
.lh-card-inline-form[b-5gw4b8rtnh] {
    padding: 1rem;
    border-bottom: 1px solid var(--border);
}

.lh-season-form-grid[b-5gw4b8rtnh] {
    display: grid;
    grid-template-columns: 2fr 4fr 2fr;
    gap: 8px;
    align-items: end;
}

.season-form-submit[b-5gw4b8rtnh] {
    width: 100%;
}

/* ── Season action row (L3 fix — inline margin on row buttons) ───────── */
.lh-season-row-actions[b-5gw4b8rtnh] {
    display: flex;
    justify-content: flex-end;
    gap: 6px;
    align-items: center;
}

.lh-row-spinner[b-5gw4b8rtnh] {
    color: var(--text-muted);
    font-size: 13px;
}

/* ── Playoff config grid (L3 fix) ────────────────────────────────────── */
.season-rollover-playoff-grid[b-5gw4b8rtnh] {
    display: grid;
    grid-template-columns: 2fr 5fr;
    gap: 12px;
    align-items: end;
}

.playoff-save-col[b-5gw4b8rtnh] {
    display: flex;
    justify-content: flex-end;
    align-items: flex-end;
}

/* ── Hint text (L3 fix — inline hint paragraph styles) ───────────────── */
.lh-hint[b-5gw4b8rtnh] {
    font-size: 0.875rem;
    color: var(--text-muted);
    margin-bottom: 12px;
    line-height: 1.45;
}

.lh-hint a[b-5gw4b8rtnh] {
    color: var(--accent);
}

/* ── Required marker ─────────────────────────────────────────────────── */
.lh-required-marker[b-5gw4b8rtnh] {
    color: var(--danger);
}

/* ── Modal body paragraph ────────────────────────────────────────────── */
.modal-body-para[b-5gw4b8rtnh] {
    margin-bottom: 0.5rem;
}

/* ═══════════════════════════════════════════════════════════════════════
   Skeleton lines (M2 fix — replaces fa-spin page spinner)
   ═══════════════════════════════════════════════════════════════════════ */
.lh-skeleton-line[b-5gw4b8rtnh] {
    height: 14px;
    border-radius: 6px;
    background: linear-gradient(
        90deg,
        var(--surface-2, var(--border-light)) 25%,
        var(--border-light, var(--border)) 50%,
        var(--surface-2, var(--border-light)) 75%
    );
    background-size: 200% 100%;
    animation: sr-shimmer-b-5gw4b8rtnh 1.4s infinite;
}

.lh-skeleton-line--sm[b-5gw4b8rtnh] {
    height: 11px;
}

.lh-skeleton-line--lg[b-5gw4b8rtnh] {
    height: 20px;
}

@media (prefers-reduced-motion: reduce) {
    .lh-skeleton-line[b-5gw4b8rtnh] {
        animation: none;
        background: var(--border-light, var(--border));
    }
}

@keyframes sr-shimmer-b-5gw4b8rtnh {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Skeleton sizing helpers */
.season-skeleton-header[b-5gw4b8rtnh] {
    width: 280px;
}

.season-skeleton-hint[b-5gw4b8rtnh] {
    width: 60%;
    margin-bottom: 12px;
}

.season-skeleton-hint-short[b-5gw4b8rtnh] {
    width: 40%;
    margin-bottom: 8px;
}

.season-skeleton-body[b-5gw4b8rtnh] {
    width: 55%;
    margin-bottom: 12px;
}

.season-skeleton-body-short[b-5gw4b8rtnh] {
    width: 35%;
    margin-bottom: 8px;
}

.season-skeleton-cta[b-5gw4b8rtnh] {
    width: 120px;
}

/* ═══════════════════════════════════════════════════════════════════════
   Wizard idiom — .lh-wizard*
   New pattern; no prior global precedent.
   ═══════════════════════════════════════════════════════════════════════ */

/* Outer container */
.lh-wizard[b-5gw4b8rtnh] {
    border: 1px solid var(--border);
    border-radius: 10px;
    overflow: hidden;
    background: var(--surface);
}

/* Step indicator strip */
.lh-wizard-steps[b-5gw4b8rtnh] {
    display: flex;
    align-items: stretch;
    background: var(--surface-2, var(--bg));
    border-bottom: 1px solid var(--border);
    padding: 0;
}

.lh-wizard-step[b-5gw4b8rtnh] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 20px;
    font-size: 13px;
    font-weight: 500;
    color: var(--text-muted);
    position: relative;
}

/* Separator between steps */
.lh-wizard-step + .lh-wizard-step[b-5gw4b8rtnh]::before {
    content: '';
    position: absolute;
    left: 0;
    top: 20%;
    bottom: 20%;
    width: 1px;
    background: var(--border);
}

.lh-wizard-step.is-done[b-5gw4b8rtnh] {
    color: var(--success-dark, var(--text));
}

.lh-wizard-step.is-active[b-5gw4b8rtnh] {
    color: var(--text);
    font-weight: 600;
    background: var(--surface);
}

/* Step number bubble */
.lh-wizard-step-num[b-5gw4b8rtnh] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 11px;
    font-weight: 600;
    flex-shrink: 0;
    border: 1.5px solid var(--border);
    background: var(--surface);
    color: var(--text-muted);
}

.lh-wizard-step.is-done .lh-wizard-step-num[b-5gw4b8rtnh] {
    background: var(--success-dark, var(--accent));
    border-color: var(--success-dark, var(--accent));
    color: var(--white);
}

.lh-wizard-step.is-active .lh-wizard-step-num[b-5gw4b8rtnh] {
    background: var(--accent);
    border-color: var(--accent);
    color: var(--white);
}

.lh-wizard-step-label[b-5gw4b8rtnh] {
    line-height: 1.3;
}

.lh-wizard-step-sublabel[b-5gw4b8rtnh] {
    display: block;
    font-size: 11px;
    font-weight: 400;
    color: var(--text-muted);
    margin-top: 1px;
}

/* Step content area */
.lh-wizard-body[b-5gw4b8rtnh] {
    padding: 24px 24px 20px;
}

/* Step footer */
.lh-wizard-footer[b-5gw4b8rtnh] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 24px;
    background: var(--surface-2, var(--bg));
    border-top: 1px solid var(--border);
    gap: 8px;
}

.lh-wizard-footer-left[b-5gw4b8rtnh] {
    display: flex;
    gap: 8px;
}

.lh-wizard-footer-right[b-5gw4b8rtnh] {
    display: flex;
    gap: 8px;
}

/* Preview list (step 1) */
.lh-wizard-preview-list[b-5gw4b8rtnh] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lh-wizard-preview-list li[b-5gw4b8rtnh] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    font-size: 13px;
    color: var(--text);
    padding: 8px 12px;
    background: var(--surface-2, var(--bg));
    border: 1px solid var(--border-light, var(--border));
    border-radius: 7px;
}

.lh-wizard-preview-list li i[b-5gw4b8rtnh] {
    color: var(--accent);
    flex-shrink: 0;
    font-size: 12px;
}

/* Year field inside wizard step 1 */
.wizard-year-field[b-5gw4b8rtnh] {
    margin-top: 20px;
    max-width: 260px;
}

/* Confirm summary table (step 2) */
.wizard-summary-table[b-5gw4b8rtnh] {
    margin-bottom: 16px;
}

.wizard-summary-label[b-5gw4b8rtnh] {
    font-weight: 600;
    width: 40%;
}

/* Progress list (step 3 — Run) */
.lh-wizard-progress-list[b-5gw4b8rtnh] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.lh-wizard-progress-item[b-5gw4b8rtnh] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.lh-wizard-progress-icon[b-5gw4b8rtnh] {
    width: 20px;
    height: 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.lh-wizard-progress-item.is-done .lh-wizard-progress-icon[b-5gw4b8rtnh]    { color: var(--success-dark, var(--accent)); }
.lh-wizard-progress-item.is-running .lh-wizard-progress-icon[b-5gw4b8rtnh] { color: var(--accent); }
.lh-wizard-progress-item.is-pending .lh-wizard-progress-icon[b-5gw4b8rtnh] { color: var(--border); }

.lh-wizard-progress-item.is-done .lh-wizard-progress-label[b-5gw4b8rtnh]    { color: var(--text-muted); }
.lh-wizard-progress-item.is-running .lh-wizard-progress-label[b-5gw4b8rtnh] { color: var(--text); font-weight: 500; }
.lh-wizard-progress-item.is-pending .lh-wizard-progress-label[b-5gw4b8rtnh] { color: var(--text-muted); }

/* Skeleton shimmer strip during run (step 3 body) */
.wizard-run-skeleton[b-5gw4b8rtnh] {
    margin-top: 20px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.wizard-skeleton-wide[b-5gw4b8rtnh]   { width: 75%; }
.wizard-skeleton-med[b-5gw4b8rtnh]    { width: 60%; }
.wizard-skeleton-narrow[b-5gw4b8rtnh] { width: 45%; }

/* Terminal state (steps 4 + 5) */
.lh-wizard-terminal[b-5gw4b8rtnh] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 32px 24px;
    gap: 12px;
}

.lh-wizard-terminal-icon[b-5gw4b8rtnh] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 24px;
}

.lh-wizard-terminal-icon--success[b-5gw4b8rtnh] {
    background: var(--success-bg, var(--accent-light));
    color: var(--success-dark, var(--accent));
}

.lh-wizard-terminal-icon--error[b-5gw4b8rtnh] {
    background: var(--danger-bg);
    color: var(--danger-dark, var(--danger));
}

.lh-wizard-terminal-title[b-5gw4b8rtnh] {
    margin: 0;
    font-size: 17px;
    font-weight: 600;
    color: var(--text);
}

.lh-wizard-terminal-desc[b-5gw4b8rtnh] {
    margin: 0;
    font-size: 13px;
    color: var(--text-muted);
    max-width: 420px;
}

/* ── Mobile — wizard collapses step labels ─────────────────────────── */
@media (max-width: 640px) {
    .lh-wizard-step-label[b-5gw4b8rtnh]       { display: none; }
    .lh-wizard-step[b-5gw4b8rtnh]             { padding: 12px; justify-content: center; }
    .lh-season-form-grid[b-5gw4b8rtnh]        { grid-template-columns: 1fr; }
    .season-rollover-playoff-grid[b-5gw4b8rtnh] { grid-template-columns: 1fr; }
    .lh-wizard-footer[b-5gw4b8rtnh]           { flex-direction: column; align-items: stretch; }
    .lh-wizard-footer-left[b-5gw4b8rtnh],
    .lh-wizard-footer-right[b-5gw4b8rtnh]     { width: 100%; justify-content: flex-start; }
}
/* _content/LeagueHub/Components/Pages/admin/SeasonsArchive.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════════════
   SeasonsArchive — scoped styles
   Ported from wwwroot/mockups/admin/admin-seasons-archive.html <style>
   Gate 3 — 2026-04-25
   Colors use design tokens; no raw hex values.
   ═══════════════════════════════════════════════════════════════════════ */

/* Footer hint paragraph — T2 fix: replaces Bootstrap .text-muted.small.mt-2 */
.lh-archive-hint[b-cqtpv2czr9] {
    color: var(--text-muted);
    font-size: var(--text-body, 13px);
    margin-top: 8px;
    line-height: 1.5;
}

/* Season name cell — slightly bolder */
.col-season-name[b-cqtpv2czr9] {
    font-weight: 600;
}

/* "View" column — right-aligned button cluster, no-wrap */
.col-view[b-cqtpv2czr9] {
    text-align: right;
    white-space: nowrap;
    min-width: 280px;
}

/* Inline gap between view buttons */
.lh-view-btn + .lh-view-btn[b-cqtpv2czr9] {
    margin-left: 4px;
}

/* Numeric stat columns */
.col-year[b-cqtpv2czr9],
.col-games[b-cqtpv2czr9],
.col-final[b-cqtpv2czr9] {
    width: 80px;
    text-align: right;
    font-variant-numeric: tabular-nums;
}

/* Playoff badge chip on season name */
.lh-playoff-chip[b-cqtpv2czr9] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    margin-left: 6px;
    padding: 1px 6px;
    background: color-mix(in srgb, var(--accent) 12%, var(--white));
    border: 1px solid color-mix(in srgb, var(--accent) 35%, var(--border));
    color: var(--accent-dark);
    border-radius: 4px;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.6px;
    text-transform: uppercase;
    vertical-align: middle;
}

.lh-playoff-chip .fa-trophy[b-cqtpv2czr9] {
    font-size: 8px;
}

/* Row hover highlight */
.lh-table tbody tr[b-cqtpv2czr9] {
    transition: background 120ms ease;
}

.lh-table tbody tr:hover[b-cqtpv2czr9] {
    background: color-mix(in srgb, var(--accent-light, var(--white)) 50%, var(--white));
}
/* _content/LeagueHub/Components/Pages/admin/Settings.razor.rz.scp.css */
/* Scoped styles for Settings.razor — Gate 3 redesign port.
   All selectors compile to Blazor-scoped attribute selectors so they don't
   leak beyond this page. No raw hex — token vars only. */

/* ────────── Tab strip icon spacing ────────── */
.lh-seg-item i[b-wms6oa1mo8] { margin-right: 6px; }

/* ────────── Form field rhythm ────────── */
.lh-field[b-wms6oa1mo8] { margin-bottom: 16px; }

/* ────────── Tab panel visibility ────────── */
/* Hide inactive tab panels with display: none. The fields remain in the DOM,
   which preserves Blazor form binding while removing the panel from layout. */
.settings-tab-hidden[b-wms6oa1mo8] {
    display: none;
}

/* ────────── ValidationSummary wrapper ────────── */
/* §10.2: ValidationSummary lives inside AdminBanner ChildContent.
   Hide the whole wrapper when the <ul> rendered by ValidationSummary is empty
   — Blazor renders a <ul> with no <li> children when there are no errors,
   so we guard at the ul level. */
.settings-validation-wrapper[b-wms6oa1mo8] { margin-bottom: 16px; }
.settings-validation-wrapper:has(.settings-validation-list:empty)[b-wms6oa1mo8] { display: none; }

.settings-validation-list[b-wms6oa1mo8] {
    margin: 4px 0 0;
    padding-left: 18px;
    font-size: 12.5px;
    line-height: 1.6;
}

/* ────────── Color triplet grid (Branding tab) ────────── */
.settings-color-grid[b-wms6oa1mo8] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 16px;
}

/* ────────── Inline color-input row (Admin Accent) ────────── */
.settings-color-row[b-wms6oa1mo8] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* §10.1 decision: max-width accepted as input-sizing exception — not a layout gap.
   The color picker native UI needs a bounded width; this is not a spacing value. */
.settings-color-row input[type="color"][b-wms6oa1mo8] {
    max-width: 5rem;
    height: 38px;
    border-radius: 6px;
    cursor: pointer;
    border: 1px solid var(--border);
}

.settings-color-row .settings-color-help[b-wms6oa1mo8] {
    color: var(--text-secondary);
    font: var(--text-body);
    line-height: 1.4;
}

/* ────────── Toggle blocks (checkbox + label + helper paragraph) ────────── */
.settings-toggle-block[b-wms6oa1mo8] { margin-bottom: 20px; }

.settings-toggle-row[b-wms6oa1mo8] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 6px;
}

.settings-toggle-row input[type="checkbox"][b-wms6oa1mo8] {
    accent-color: var(--accent);
    width: 16px;
    height: 16px;
    margin-top: 2px;
    flex-shrink: 0;
    cursor: pointer;
}

.settings-toggle-row label[b-wms6oa1mo8] {
    font: var(--text-body-strong);
    color: var(--text);
    margin: 0;
    cursor: pointer;
}

.settings-toggle-help[b-wms6oa1mo8] {
    margin: 0 0 0 24px;
    color: var(--text-secondary);
    font: var(--text-body);
    line-height: 1.5;
}

/* ────────── Inline checkbox row (League tab — no helper paragraph) ────────── */
.settings-inline-toggle[b-wms6oa1mo8] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
}

.settings-inline-toggle input[type="checkbox"][b-wms6oa1mo8] {
    accent-color: var(--accent);
    width: 16px;
    height: 16px;
    cursor: pointer;
}

.settings-inline-toggle label[b-wms6oa1mo8] {
    font: var(--text-body-strong);
    color: var(--text);
    margin: 0;
    cursor: pointer;
}

/* ────────── Section helper copy (Points tab intro / outro) ────────── */
.settings-section-help[b-wms6oa1mo8] {
    color: var(--text-secondary);
    font: var(--text-body);
    line-height: 1.5;
    margin-bottom: 16px;
}

.settings-section-help--trail[b-wms6oa1mo8] { margin: 0; }

/* ────────── Form divider ────────── */
.settings-divider[b-wms6oa1mo8] {
    margin: 24px 0 16px;
    border: none;
    border-top: 1px solid var(--border);
}

/* ────────── Points triplet ────────── */
.settings-points-grid[b-wms6oa1mo8] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 12px;
}

/* ────────── AST-03: Dirty-state indicator strip ────────── */
.settings-dirty-strip[b-wms6oa1mo8] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: color-mix(in srgb, var(--warning) 10%, var(--white));
    border: 1px solid color-mix(in srgb, var(--warning) 30%, var(--border));
    border-radius: 8px;
    margin-bottom: 8px;
    font-size: 12px;
    color: color-mix(in srgb, var(--warning) 70%, black);
}

.settings-dirty-strip i[b-wms6oa1mo8] { font-size: 12px; }

/* ────────── AST-05: Saving overlay — dims all inputs while saving ────────── */
.settings-saving-overlay input[b-wms6oa1mo8],
.settings-saving-overlay select[b-wms6oa1mo8],
.settings-saving-overlay input[type="color"][b-wms6oa1mo8],
.settings-saving-overlay input[type="checkbox"][b-wms6oa1mo8],
.settings-saving-overlay button:not([type="submit"])[b-wms6oa1mo8] {
    opacity: 0.5;
    pointer-events: none;
}

/* ────────── AST-01: Skeleton helpers ────────── */
.settings-skel-seg[b-wms6oa1mo8] {
    height: 42px;
    width: 340px;
    border-radius: 10px;
    margin-bottom: 18px;
}

.settings-skel-grid[b-wms6oa1mo8] {
    display: grid;
    gap: 16px;
    margin-bottom: 16px;
}

.settings-skel-grid--2[b-wms6oa1mo8] { grid-template-columns: 1fr 1fr; }
.settings-skel-grid--3[b-wms6oa1mo8] { grid-template-columns: repeat(3, 1fr); }

.settings-skel-single[b-wms6oa1mo8] { margin-bottom: 16px; }

.settings-skel-btn[b-wms6oa1mo8] {
    width: 120px;
    height: 44px;
    border-radius: 9px;
}

/* ────────── AST-08: Mobile — single-column stack at <640px ────────── */
@media (max-width: 640px) {
    .settings-color-grid[b-wms6oa1mo8] {
        grid-template-columns: 1fr;
    }

    .settings-points-grid[b-wms6oa1mo8] {
        grid-template-columns: 1fr;
    }

    .settings-color-row input[type="color"][b-wms6oa1mo8] {
        height: 48px;
        flex: 0 0 54px;
        max-width: none;
    }

    .lh-filter-bar .lh-seg[b-wms6oa1mo8] {
        overflow-x: auto;
        scrollbar-width: none;
    }

    .lh-filter-bar .lh-seg[b-wms6oa1mo8]::-webkit-scrollbar {
        display: none;
    }

    .lh-form-sticky .btn-lh-primary[b-wms6oa1mo8] {
        width: 100%;
        justify-content: center;
        min-height: 44px;
    }
}
/* _content/LeagueHub/Components/Pages/admin/Setup.razor.rz.scp.css */
/* Scoped styles for Setup.razor (first-run league setup wizard).
   Gate 3 port — audit fixes applied:
     C1  — PageHeader above the card (structural change in Razor).
     L2  — padding: 10px 14px → 12px 16px (14px was off the spacing scale).
     §10.5 — border-radius: 8px kept as hardcoded structural value
             (no --radius-md token confirmed in BRAND-KIT.md). */

/* Narrow centered shell. */
.setup-shell[b-mam6eerfok] {
    max-width: 720px;
    margin: 32px auto;
    padding: 0 16px;
}

/* Card body padding — consistent with Settings port. */
.setup-card-body[b-mam6eerfok] {
    padding: 20px;
}

/* Form field rhythm. */
.lh-field[b-mam6eerfok] { margin-bottom: 16px; }

/* Color-triplet grid for Primary / Secondary / Accent. */
.setup-color-grid[b-mam6eerfok] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 16px;
}

/* Color swatch + native picker row — AS-02 et al. */
.setup-color-row[b-mam6eerfok] {
    display: flex;
    align-items: center;
    gap: 10px;
}

/* Color swatch preview — small square next to the native <input type="color">. */
.setup-color-swatch[b-mam6eerfok] {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    border: 1px solid var(--border);
    flex-shrink: 0;
}

/* Icon/text spacing in banners comes from the parent flex gap. */

/* Banner padding — L2 fix: was 10px 14px (14px off-scale); now 12px 16px.
   border-radius: 8px is a structural value (no token equivalent). */
.setup-banner[b-mam6eerfok] {
    margin-bottom: 16px;
    padding: 12px 16px;
    border-radius: 8px;
    font: var(--text-body);
}

/* ValidationSummary — Blazor renders a <ul> when errors exist.
   Styled to match the lh-info-banner--danger pattern without an extra wrapper div.
   The :not(:empty) guard hides the empty <ul> before any submit. */
.setup-validation-summary:not(:empty)[b-mam6eerfok] {
    display: block;
    margin-bottom: 16px;
    padding: 12px 16px;
    border-radius: 8px;
    background: var(--danger-bg);
    border: 1px solid var(--danger);
    color: var(--danger-dark);
    font: var(--text-body);
    list-style: none;
    padding-left: 16px;
}

.setup-validation-summary:empty[b-mam6eerfok] {
    display: none;
}

.setup-validation-summary li[b-mam6eerfok] {
    font-size: 12.5px;
    line-height: 1.5;
    padding-left: 4px;
}

/* UseDivisions toggle row. */
.setup-inline-toggle[b-mam6eerfok] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 20px;
}

.setup-inline-toggle input[type="checkbox"][b-mam6eerfok] {
    accent-color: var(--accent);
    width: 16px;
    height: 16px;
}

.setup-inline-toggle label[b-mam6eerfok] {
    font: var(--text-body-strong);
    color: var(--text);
    margin: 0;
    cursor: pointer;
}

/* Redirect-notice state — centered interstitial (AS-10). */
.setup-redirect-notice[b-mam6eerfok] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 280px;
    padding: 48px 24px;
    gap: 12px;
}

.setup-redirect-icon[b-mam6eerfok] {
    font-size: 36px;
    color: var(--success);
    margin-bottom: 8px;
}

.setup-redirect-title[b-mam6eerfok] {
    font: var(--text-card-title);
    color: var(--text);
    margin: 0;
}

.setup-redirect-sub[b-mam6eerfok] {
    font: var(--text-body);
    color: var(--text-secondary);
    margin: 0;
}

.setup-redirect-spinner[b-mam6eerfok] {
    width: 20px;
    height: 20px;
    border: 2.5px solid var(--border);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: setup-spin-b-mam6eerfok 800ms linear infinite;
    margin-top: 4px;
}

@keyframes setup-spin-b-mam6eerfok { to { transform: rotate(360deg); } }

/* Loading skeleton shapes — form-field rhythm. */
.skel-field[b-mam6eerfok] { margin-bottom: 16px; }

.skel-label[b-mam6eerfok] {
    height: 10px;
    width: 80px;
    border-radius: 4px;
    margin-bottom: 6px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--border) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    animation: skel-sweep-b-mam6eerfok 1.4s ease-in-out infinite;
}

.skel-input[b-mam6eerfok] {
    height: 42px;
    width: 100%;
    border-radius: 9px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--border) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    animation: skel-sweep-b-mam6eerfok 1.4s ease-in-out infinite;
}

.skel-color-grid[b-mam6eerfok] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin-bottom: 16px;
}

.skel-color[b-mam6eerfok] {
    height: 42px;
    border-radius: 9px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--border) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    animation: skel-sweep-b-mam6eerfok 1.4s ease-in-out infinite;
}

.skel-btn[b-mam6eerfok] {
    height: 40px;
    width: 140px;
    border-radius: 9px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--border) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    animation: skel-sweep-b-mam6eerfok 1.4s ease-in-out infinite;
}

@keyframes skel-sweep-b-mam6eerfok {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

/* Responsive: color grid collapses to single column on mobile (AS-09). */
@media (max-width: 640px) {
    .setup-color-grid[b-mam6eerfok] {
        grid-template-columns: 1fr;
    }
}

/* Reduced-motion: disable all skeleton + redirect-spinner animations. */
@media (prefers-reduced-motion: reduce) {
    .skel-label[b-mam6eerfok],
    .skel-input[b-mam6eerfok],
    .skel-color[b-mam6eerfok],
    .skel-btn[b-mam6eerfok] { animation: none; }

    .setup-redirect-spinner[b-mam6eerfok] { animation: none; }
}
/* _content/LeagueHub/Components/Pages/admin/SubGoalies.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════════════════════
   SubGoalies page — scoped CSS
   Audit: docs/design-audit/admin-subgoalies.md (Gate 3, §10.2 + L3 fixes)
   ═══════════════════════════════════════════════════════════════════════════ */

/* §10.2 — --text-sm token at page scope.
   Global alias --text-sm: 12px added to style.css :root.
   Redeclared here as a scoped fallback so the page renders correctly even
   before the global token propagates (hot-reload / isolation edge case). */
:root[b-o1bhyxapii] {
    --text-sm: 12px;
}

/* ── Add-form layout (lifted from inline L3 violations — SubGoalieListPanel) ── */

.lh-pool-form-body[b-o1bhyxapii] {
    padding: 20px;
}

.lh-pool-add-row-1[b-o1bhyxapii] {
    display: grid;
    grid-template-columns: 1fr 1fr 100px;
    gap: 12px;
    margin-bottom: 12px;
}

.lh-pool-add-row-2[b-o1bhyxapii] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 12px;
}

.lh-pool-add-row-3[b-o1bhyxapii] {
    display: grid;
    grid-template-columns: 1fr 2fr;
    gap: 12px;
    margin-bottom: 12px;
}

.lh-pool-eligible-row[b-o1bhyxapii] {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
}

/* ── Shared meta-cell utility (both panels — L3 fix for font-size: 0.85rem) ── */

.lh-cell-meta[b-o1bhyxapii] {
    color: var(--text-muted);
    font-size: var(--text-sm);
}

/* ── Null / empty value muting (WaiverListPanel L3 fix) ── */

.lh-null-value[b-o1bhyxapii] {
    color: var(--text-muted);
}

/* ── Modal hint text (WaiverListPanel add-modal intro paragraph) ── */

.lh-hint[b-o1bhyxapii] {
    color: var(--text-muted);
    font-size: var(--text-sm);
    margin-bottom: 12px;
}

/* ── Inactive row muting (SubGoalieListPanel L3 fix) ── */

.lh-row--inactive td[b-o1bhyxapii] {
    color: var(--text-muted);
}

/* ── Badge sibling margin (SubGoalieListPanel — inline margin-left: 6px) ── */

.badge-lh-neutral + .badge-lh-warning[b-o1bhyxapii],
.badge-lh-neutral + .lh-cell-meta[b-o1bhyxapii],
.lh-cell-meta + .badge-lh-neutral[b-o1bhyxapii],
.lh-cell-meta + .badge-lh-warning[b-o1bhyxapii] {
    margin-left: 6px;
}
/* _content/LeagueHub/Components/Pages/admin/SuspensionDetail.razor.rz.scp.css */
/* ═════════════════════════════════════════════════════════════════════
   SuspensionDetail — scoped styles (Phase Gate 3, ports the signed-off
   mockup at wwwroot/mockups/admin/suspension-detail.html).
   All selectors compile to Blazor-scoped attribute selectors so they
   don't leak beyond this page.
   ═════════════════════════════════════════════════════════════════════ */

/* ────────── Page-level grid (7/5 fr → single column at <900px) ────────── */
.suspension-detail-grid[b-ke52byj4st] {
    display: grid;
    grid-template-columns: minmax(0, 7fr) minmax(0, 5fr);
    gap: 16px;
}

@media (max-width: 900px) {
    .suspension-detail-grid[b-ke52byj4st] {
        grid-template-columns: 1fr;
    }
}

/* ────────── Summary card ────────── */
.suspension-summary-card[b-ke52byj4st] {
    margin-bottom: 16px;
}

.suspension-summary-head[b-ke52byj4st] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 8px;
}

.suspension-summary-head h2[b-ke52byj4st] {
    margin: 0 0 4px;
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 600;
    color: var(--text);
}

.suspension-summary-team[b-ke52byj4st] {
    color: var(--text-muted);
    font-size: 13px;
}

.suspension-summary-divider[b-ke52byj4st] {
    border: none;
    border-top: 1px solid var(--border-light);
    margin: 12px 0;
}

.suspension-summary-dl[b-ke52byj4st] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 4px 16px;
    margin: 0;
    font-size: 13px;
}

.suspension-summary-dl dt[b-ke52byj4st] {
    font-weight: 600;
    color: var(--text);
}

.suspension-summary-dl dd[b-ke52byj4st] {
    margin: 0;
    color: var(--text);
}

/* ────────── Action card ────────── */
.suspension-action-card[b-ke52byj4st] {
    margin-bottom: 16px;
}

.suspension-action-head[b-ke52byj4st] {
    margin: 0 0 12px;
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
    letter-spacing: 0.2px;
}

.suspension-action-row[b-ke52byj4st] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.suspension-terminal-note[b-ke52byj4st] {
    color: var(--text-muted);
    font-size: 13px;
    margin: 0;
}

@media (max-width: 900px) {
    .suspension-action-row[b-ke52byj4st] {
        flex-direction: column;
    }

    .suspension-action-row > .btn-lh-secondary[b-ke52byj4st],
    .suspension-action-row > .btn-lh-primary[b-ke52byj4st] {
        justify-content: center;
    }
}

/* ────────── Pending appeal card ────────── */
.suspension-appeal-card[b-ke52byj4st] {
    margin-bottom: 16px;
}

.suspension-appeal-head[b-ke52byj4st] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
}

.suspension-appeal-head i[b-ke52byj4st] {
    color: var(--warning-dark);
}

.suspension-appeal-meta[b-ke52byj4st] {
    font-size: 12px;
    color: var(--text-muted);
}

.suspension-appeal-reason[b-ke52byj4st] {
    font-size: 13px;
    color: var(--text);
    white-space: pre-wrap;
    padding: 8px 0 0;
    border-top: 1px solid var(--border-light);
    margin-top: 8px;
}

/* ────────── Notes card / unified timeline ────────── */
.suspension-notes-card[b-ke52byj4st] {
    margin-bottom: 16px;
}

.suspension-notes-head[b-ke52byj4st] {
    margin: 0 0 12px;
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
}

.suspension-notes-empty[b-ke52byj4st] {
    color: var(--text-muted);
    font-size: 13px;
    margin: 0 0 12px;
}

.suspension-notes-timeline[b-ke52byj4st] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.suspension-note-item[b-ke52byj4st] {
    padding: 10px 12px;
    background: var(--surface-2);
    border: 1px solid var(--border-light);
    border-radius: 8px;
}

.suspension-note-meta[b-ke52byj4st] {
    display: flex;
    gap: 8px;
    align-items: baseline;
    flex-wrap: wrap;
    font-size: 11px;
    color: var(--text-muted);
    margin-bottom: 4px;
}

.suspension-note-author[b-ke52byj4st] {
    font-weight: 600;
    color: var(--text);
}

.suspension-note-source[b-ke52byj4st] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    letter-spacing: 0.5px;
    color: var(--text-muted);
    text-transform: uppercase;
}

.suspension-note-body[b-ke52byj4st] {
    font-size: 13px;
    color: var(--text);
    white-space: pre-wrap;
    line-height: 1.4;
}

/* ────────── Add note row (admin-only via AuthorizeView in markup) ────────── */
.suspension-add-note[b-ke52byj4st] {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--border-light);
}

.suspension-add-note-row[b-ke52byj4st] {
    display: flex;
    gap: 8px;
    align-items: flex-end;
}

.suspension-add-note-row .lh-field[b-ke52byj4st] {
    flex: 1;
    margin-bottom: 0;
}

.suspension-add-note-row textarea[b-ke52byj4st] {
    width: 100%;
}

@media (max-width: 900px) {
    .suspension-add-note-row[b-ke52byj4st] {
        flex-direction: column;
        align-items: stretch;
    }

    .suspension-add-note-row > .btn-lh-primary[b-ke52byj4st] {
        align-self: stretch;
    }
}

/* ────────── Decide-appeal modal — appeal-reason readout ────────── */
.suspension-decision-readout[b-ke52byj4st] {
    font-size: 13px;
    color: var(--text-muted);
    white-space: pre-wrap;
    padding: 4px 0;
}
/* _content/LeagueHub/Components/Pages/Alumni.razor.rz.scp.css */
/* ── Subhero ──
   Standard public-page subhero block. Per the established convention in
   Stats / Schedule / GameCenter / Awards, every public page duplicates these
   rules in its scoped CSS — there is no global subhero rule. Missing this
   block was the regression behind PR 546 (Stats Leaders) and is the same
   gap that made the Alumni hero render as plain text. */
.lh-pub-subhero[b-klzjvb6qv2] {
    background: var(--navy);
    border-bottom: 1px solid var(--text-on-slate-secondary);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-klzjvb6qv2] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-klzjvb6qv2] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--league-secondary);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-klzjvb6qv2] {
    font-family: var(--font-heading);
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-klzjvb6qv2] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-body);
    color: var(--text-on-slate-secondary);
    margin: 0 0 12px;
}

/* ── Page body ── */
.lh-pub-alumni-content[b-klzjvb6qv2] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 40px 32px 60px;
    display: flex;
    flex-direction: column;
    gap: 40px;
}

/* ── Section header (kicker + title) ── */
.lh-pub-alumni-section-header[b-klzjvb6qv2] {
    margin-bottom: 20px;
}

.lh-pub-alumni-section-kicker[b-klzjvb6qv2] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 500;
    color: var(--league-secondary);
    text-transform: uppercase;
    letter-spacing: 1.6px;
    margin-bottom: 6px;
}

.lh-pub-alumni-section-title[b-klzjvb6qv2] {
    font-family: var(--font-heading);
    font-size: var(--pub-text-section-title);
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.4px;
}

/* ── Season History table card ── */
.lh-pub-alumni-table-card[b-klzjvb6qv2] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.lh-pub-alumni-table-wrap[b-klzjvb6qv2] {
    overflow-x: auto;
}

.lh-pub-alumni-table[b-klzjvb6qv2] {
    width: 100%;
    border-collapse: collapse;
    table-layout: auto;
}

.lh-pub-alumni-table thead[b-klzjvb6qv2] {
    background: var(--slate);
    position: sticky;
    top: 0;
    z-index: 1;
}

.lh-pub-alumni-table thead th[b-klzjvb6qv2] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-on-slate-secondary);
    padding: 12px 16px;
    text-align: left;
    white-space: nowrap;
}

.lh-pub-alumni-table thead th:first-child[b-klzjvb6qv2] {
    padding-left: 20px;
}

.lh-pub-alumni-table thead th:last-child[b-klzjvb6qv2] {
    padding-right: 20px;
}

.lh-pub-alumni-table tbody tr[b-klzjvb6qv2] {
    border-bottom: 1px solid var(--border-light);
    transition: background 150ms ease;
}

.lh-pub-alumni-table tbody tr:last-child[b-klzjvb6qv2] {
    border-bottom: none;
}

.lh-pub-alumni-table tbody tr:hover[b-klzjvb6qv2] {
    background: var(--surface-2);
}

.lh-pub-alumni-table tbody tr:nth-child(even)[b-klzjvb6qv2] {
    background: var(--surface-2);
}

.lh-pub-alumni-table tbody tr:nth-child(even):hover[b-klzjvb6qv2] {
    background: var(--border-light);
}

.lh-pub-alumni-table tbody td[b-klzjvb6qv2] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-meta);
    color: var(--text);
    padding: 12px 16px;
    vertical-align: middle;
}

.lh-pub-alumni-table tbody td:first-child[b-klzjvb6qv2] {
    padding-left: 20px;
    font-family: var(--font-mono);
    font-size: var(--pub-text-micro);
    font-weight: 600;
}

.lh-pub-alumni-table tbody td:last-child[b-klzjvb6qv2] {
    padding-right: 20px;
}

.lh-pub-alumni-null[b-klzjvb6qv2] {
    color: var(--text-muted);
    font-style: italic;
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-alumni-table tbody tr[b-klzjvb6qv2] {
        transition: none;
    }
}

/* ── Mobile card-stack for Season History (< 640px) ── */
.lh-pub-alumni-season-list[b-klzjvb6qv2] {
    display: none;
    flex-direction: column;
    gap: 8px;
    padding: 12px;
}

.lh-pub-alumni-season-card[b-klzjvb6qv2] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 8px;
    padding: 14px 16px;
    box-shadow: var(--shadow-sm);
}

.lh-pub-alumni-season-card-label[b-klzjvb6qv2] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-label);
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-alumni-season-card-row[b-klzjvb6qv2] {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: 4px 12px;
    margin-bottom: 4px;
}

.lh-pub-alumni-season-card-row:last-child[b-klzjvb6qv2] {
    margin-bottom: 0;
}

.lh-pub-alumni-season-card-key[b-klzjvb6qv2] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--text-muted);
    align-self: center;
}

.lh-pub-alumni-season-card-val[b-klzjvb6qv2] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-micro);
    color: var(--text);
    align-self: center;
}

@media (max-width: 640px) {
    .lh-pub-alumni-table-wrap[b-klzjvb6qv2] {
        display: none;
    }

    .lh-pub-alumni-season-list[b-klzjvb6qv2] {
        display: flex;
    }
}

/* ── Notable Alumni grid ── */
.lh-pub-alumni-grid[b-klzjvb6qv2] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}

@media (max-width: 1023px) {
    .lh-pub-alumni-grid[b-klzjvb6qv2] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 639px) {
    .lh-pub-alumni-grid[b-klzjvb6qv2] {
        grid-template-columns: 1fr;
    }
}

/* ── Notable Alumni card ── */
.lh-pub-alumni-card[b-klzjvb6qv2] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: 20px;
    box-shadow: var(--shadow-sm);
    display: flex;
    flex-direction: column;
    gap: 12px;
    transition: box-shadow 150ms ease, transform 150ms ease;
}

.lh-pub-alumni-card:hover[b-klzjvb6qv2] {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-alumni-card[b-klzjvb6qv2] {
        transition: none;
    }

    .lh-pub-alumni-card:hover[b-klzjvb6qv2] {
        transform: none;
    }
}

.lh-pub-alumni-card-top[b-klzjvb6qv2] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.lh-pub-alumni-card-meta-block[b-klzjvb6qv2] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}

.lh-pub-alumni-card-name[b-klzjvb6qv2] {
    font-family: var(--font-heading);
    font-size: var(--pub-text-body);
    font-weight: 700;
    color: var(--text);
    line-height: 1.25;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lh-pub-alumni-card-meta[b-klzjvb6qv2] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 500;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    white-space: nowrap;
}

.lh-pub-alumni-card-note[b-klzjvb6qv2] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-micro);
    font-style: italic;
    color: var(--text-muted);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin: 0;
}

/* ── Empty states ── */
.lh-pub-alumni-empty[b-klzjvb6qv2] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
    padding: 48px 24px;
    text-align: center;
}

.lh-pub-alumni-empty-icon[b-klzjvb6qv2] {
    font-size: 32px;
    color: var(--text-muted);
    margin-bottom: 16px;
}

.lh-pub-alumni-empty-headline[b-klzjvb6qv2] {
    font-family: var(--font-heading);
    font-size: var(--pub-text-subtitle);
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
}

.lh-pub-alumni-empty-desc[b-klzjvb6qv2] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-meta);
    color: var(--text-secondary);
    max-width: 380px;
    margin: 0 auto;
}

/* ── Mobile layout tweaks ── */
@media (max-width: 768px) {
    .lh-pub-alumni-content[b-klzjvb6qv2] {
        padding: 24px 16px 48px;
        gap: 32px;
    }
}
/* _content/LeagueHub/Components/Pages/Error.razor.rz.scp.css */
/* Public Error — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-error.md.
   Mockup: wwwroot/mockups/public/error.html (Gate 2, signed off in #454).
   Tokens adopted from admin BRAND-KIT v1 per BRAND-KIT-PUBLIC §0 lazy-merge.
   No new tokens required (audit §8). */

/* ─── Public-only accent override (same scoped pattern as Rules / PublicAwards) ── */
.lh-pub-subhero[b-hjbru3kqpt],
.lh-pub-error-content[b-hjbru3kqpt] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero ────────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(slate-deep → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-hjbru3kqpt] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-hjbru3kqpt] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-hjbru3kqpt] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-hjbru3kqpt] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-hjbru3kqpt] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Body layout ────────────────────────────────────────────────────────── */
.lh-pub-error-content[b-hjbru3kqpt] {
    max-width: 540px;
    margin: 40px auto 60px;
    padding: 0 32px;
}

/* ─── Card ───────────────────────────────────────────────────────────────── */
.lh-pub-error-card[b-hjbru3kqpt] {
    background: var(--surface);
    border-radius: 16px;
    border: 1px solid var(--border-light);
    box-shadow: var(--shadow-sm);
    padding: 40px 36px;
    text-align: center;
}

/* ─── Warning icon ───────────────────────────────────────────────────────── */
.lh-pub-error-icon[b-hjbru3kqpt] {
    width: 64px;
    height: 64px;
    border-radius: 18px;
    background: rgba(184, 119, 0, 0.12);
    display: grid;
    place-items: center;
    margin: 0 auto 20px;
    color: var(--accent);
}

.lh-pub-error-icon svg[b-hjbru3kqpt] {
    width: 32px;
    height: 32px;
}

/* ─── Copy / text ────────────────────────────────────────────────────────── */
.lh-pub-error-headline[b-hjbru3kqpt] {
    font-family: 'Geist', sans-serif;
    font-size: 24px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
    letter-spacing: -0.5px;
}

.lh-pub-error-sub[b-hjbru3kqpt] {
    font-size: 14px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 24px;
}

/* ─── CTA buttons ────────────────────────────────────────────────────────── */
.lh-pub-error-ctas[b-hjbru3kqpt] {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
    margin-bottom: 28px;
}

/* CTAs use canonical .btn-lh-pub-primary / .btn-lh-pub-outline-secondary
   from public-kit.css — they ship 48×48-conformant heights, focus rings,
   and motion guards. No scoped overrides needed here. */

/* ─── Request ID block ───────────────────────────────────────────────────── */
.lh-pub-req-id[b-hjbru3kqpt] {
    background: var(--surface-2);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: 14px 16px;
}

.lh-pub-req-id-label[b-hjbru3kqpt] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1.2px;
    margin-bottom: 8px;
}

.lh-pub-req-id-row[b-hjbru3kqpt] {
    display: flex;
    align-items: center;
    gap: 10px;
    justify-content: center;
}

.lh-pub-req-id-code[b-hjbru3kqpt] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text);
    background: var(--bg);
    padding: 6px 12px;
    border-radius: 6px;
    user-select: all;
    flex: 1;
    max-width: 320px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lh-pub-copy-btn[b-hjbru3kqpt] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    padding: 8px 12px;
    min-height: 44px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 6px;
    color: var(--text-secondary);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    transition: background 150ms ease-out;
}

.lh-pub-copy-btn:focus-visible[b-hjbru3kqpt] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-copy-btn:hover[b-hjbru3kqpt] {
    background: var(--bg);
    color: var(--text);
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 600px) {
    .lh-pub-subhero-title[b-hjbru3kqpt] { font-size: 26px; }
    .lh-pub-error-card[b-hjbru3kqpt] { padding: 32px 24px; }
}

/* ─── Reduced motion ─────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .btn-lh-pub-primary[b-hjbru3kqpt],
    .btn-lh-pub-outline-secondary[b-hjbru3kqpt],
    .lh-pub-copy-btn[b-hjbru3kqpt] {
        transition: none;
    }
}
/* _content/LeagueHub/Components/Pages/GameCenter.razor.rz.scp.css */
/* Public GameCenter — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-gamecenter.md.
   Mockup: wwwroot/mockups/public/gamecenter.html. */

.lh-pub-gc[b-o7z345znhu] {
    --accent: #B87700;
    --pub-live: #EF4444;
    --pub-final: #10B981;
    --pub-scheduled: #6B7280;
    --pub-postponed: #F59E0B;
    --pub-cancelled: #9CA3AF;
}

/* ─── Hero (dark slate, full-width) ─────────────────────────────────────── */
.lh-pub-gc-hero[b-o7z345znhu] {
    background: var(--navy, #0F172A);
    padding: 40px 0 36px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.lh-pub-gc-hero-inner[b-o7z345znhu] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-gc-meta-row[b-o7z345znhu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 12px;
}

.lh-pub-gc-meta[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.4);
    text-transform: uppercase;
    letter-spacing: 1.4px;
}

.lh-pub-gc-status[b-o7z345znhu] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    padding: 5px 12px;
    border-radius: 6px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

/* v3: status pill recipe pulled to design — soft fill at 12%, full-strength text.
   Was 18% bg + lighter text in v2. Per docs/design-audit/public-gamecenter-v3.md §1.5. */
.lh-pub-gc-status.live[b-o7z345znhu] {
    background: rgba(239, 68, 68, 0.12);
    color: var(--pub-live);
}

.lh-pub-gc-status.live[b-o7z345znhu]::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--pub-live);
    animation: lh-pub-pulse-b-o7z345znhu 1.6s ease-in-out infinite;
}

@keyframes lh-pub-pulse-b-o7z345znhu {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.4; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-gc-status.live[b-o7z345znhu]::before { animation: none; }
}

.lh-pub-gc-status.final[b-o7z345znhu]     { background: rgba(16, 185, 129, 0.12);  color: var(--pub-final); }
.lh-pub-gc-status.scheduled[b-o7z345znhu] { background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.6); }
.lh-pub-gc-status.postponed[b-o7z345znhu] { background: rgba(245, 158, 11, 0.12);  color: var(--pub-postponed); }
.lh-pub-gc-status.cancelled[b-o7z345znhu] { background: rgba(156, 163, 175, 0.12); color: var(--pub-cancelled); }

/* Reconnecting pill — appears next to LIVE when SignalR drops */
.lh-pub-reconnect-pill[b-o7z345znhu] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    padding: 4px 10px;
    background: rgba(245, 158, 11, 0.18);
    color: #FBBF24;
    border-radius: 5px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    margin-left: 10px;
}

/* ─── Matchup grid ──────────────────────────────────────────────────────── */
.lh-pub-gc-matchup[b-o7z345znhu] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 32px;
}

.lh-pub-gc-team[b-o7z345znhu] {
    text-align: center;
    cursor: pointer;
}

.lh-pub-gc-team:focus-visible[b-o7z345znhu] {
    outline: 2px solid var(--accent);
    outline-offset: 4px;
    border-radius: 8px;
}

.lh-pub-gc-team-badge-large[b-o7z345znhu] {
    width: 72px;
    height: 72px;
    border-radius: 16px;
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 800;
    font-size: 22px;
    color: #fff;
    margin: 0 auto;
}

.lh-pub-gc-team-name[b-o7z345znhu] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 20px;
    color: #fff;
    margin-top: 12px;
}

.lh-pub-gc-team-side[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.35);
    margin-top: 4px;
    text-transform: uppercase;
    letter-spacing: 1px;
}

/* ─── Center (score / puck-drop / H2H pill) ─────────────────────────────── */
.lh-pub-gc-center[b-o7z345znhu] {
    text-align: center;
}

.lh-pub-gc-score[b-o7z345znhu] {
    font-family: 'Geist', sans-serif;
    font-size: 72px;
    font-weight: 800;
    letter-spacing: -3px;
    color: #fff;
    line-height: 1;
}

.lh-pub-gc-clock[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--pub-live);
    margin-top: 8px;
    letter-spacing: 0.8px;
    text-transform: uppercase;
}

.lh-pub-gc-puckdrop-label[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: rgba(255, 255, 255, 0.4);
    text-transform: uppercase;
    letter-spacing: 1.4px;
    margin-bottom: 8px;
}

.lh-pub-gc-puckdrop-time[b-o7z345znhu] {
    font-family: 'Geist', sans-serif;
    font-size: 36px;
    font-weight: 700;
    color: #fff;
}

/* Hero H2H pill chrome (.lh-pub-h2h-pill / -label / -value) lives in
   wwwroot/css/public-kit.css — shared with GamePreview hero. */

/* ─── Body ──────────────────────────────────────────────────────────────── */
.lh-pub-gc-body[b-o7z345znhu] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    display: flex;
    flex-direction: column;
    gap: 20px;
    /* Page-scoped min-height — same shim as sibling pages */
    min-height: calc(100vh - 320px);
}

.lh-pub-gc-preview-cta[b-o7z345znhu] {
    display: inline-block;
    padding: 10px 20px;
    background: var(--accent);
    color: #fff;
    border-radius: 8px;
    font-size: 13px;
    font-weight: 600;
    align-self: flex-start;
    text-decoration: none;
}

.lh-pub-gc-preview-cta:hover[b-o7z345znhu] {
    background: var(--accent-dark, #8B5A00);
}

.lh-pub-2col[b-o7z345znhu] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.lh-pub-card[b-o7z345znhu] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

.lh-pub-card-header[b-o7z345znhu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-card-title[b-o7z345znhu] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

.lh-pub-card-action[b-o7z345znhu] {
    display: flex;
    gap: 4px;
}

/* ─── Play-by-play feed ─────────────────────────────────────────────────── */
.lh-pub-pbp-filter-btn[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    padding: 4px 10px;
    border-radius: 6px;
    border: 1px solid var(--border);
    background: var(--surface);
    color: var(--text-secondary);
    cursor: pointer;
}

.lh-pub-pbp-filter-btn.active[b-o7z345znhu] {
    background: var(--navy, #0F172A);
    color: #fff;
    border-color: var(--navy, #0F172A);
}

.lh-pub-pbp-filter-btn:focus-visible[b-o7z345znhu] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-pbp-row[b-o7z345znhu] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 12px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-pbp-row:last-child[b-o7z345znhu] { border-bottom: none; }

.lh-pub-pbp-time[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: var(--text-muted);
    min-width: 70px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
}

.lh-pub-pbp-dot[b-o7z345znhu] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-top: 5px;
    flex-shrink: 0;
}

.lh-pub-pbp-dot.goal[b-o7z345znhu] { background: var(--pub-final); }
.lh-pub-pbp-dot.penalty[b-o7z345znhu] { background: #F59E0B; }

.lh-pub-pbp-text[b-o7z345znhu] {
    font-size: 13px;
    flex: 1;
    color: var(--text);
}

.lh-pub-pbp-event-type[b-o7z345znhu] {
    font-weight: 600;
    margin-right: 6px;
}

.lh-pub-pbp-team-mini[b-o7z345znhu] {
    width: 20px;
    height: 20px;
    border-radius: 5px;
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 8px;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
}

/* H2H card chrome moved to Components/Shared/PublicH2HCard.razor.css.
   Captain matchup card chrome moved to Components/Shared/PublicCaptainMatchupCard.razor.css.
   Per public-gamepreview-v3.md Q2 (extraction). */

/* ─── Top performers (leader rows) ──────────────────────────────────────── */
.lh-pub-leader-row[b-o7z345znhu] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 10px 20px;
    cursor: pointer;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-leader-row:last-child[b-o7z345znhu] { border-bottom: none; }

.lh-pub-leader-row:hover[b-o7z345znhu],
.lh-pub-leader-row:focus-visible[b-o7z345znhu] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-leader-row:focus-visible[b-o7z345znhu] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-leader-label[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    width: 80px;
}

.lh-pub-leader-player[b-o7z345znhu] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.lh-pub-leader-avatar[b-o7z345znhu] {
    width: 28px;
    height: 28px;
    border-radius: 8px;
    background: var(--border-light);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 10px;
    color: var(--text-secondary);
    flex-shrink: 0;
}

.lh-pub-leader-name[b-o7z345znhu] {
    font-size: 12.5px;
    font-weight: 500;
    color: var(--text);
}

.lh-pub-leader-meta[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    color: var(--text-muted);
    margin-top: 1px;
}

.lh-pub-leader-value[b-o7z345znhu] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

/* ─── Shots-per-period table (preserved from legacy) ────────────────────── */
.lh-pub-table-wrap[b-o7z345znhu] { overflow-x: auto; }

.lh-pub-table[b-o7z345znhu] {
    width: 100%;
    border-collapse: collapse;
}

.lh-pub-table thead[b-o7z345znhu] {
    background: var(--slate, #1E293B);
}

.lh-pub-table thead th[b-o7z345znhu] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 11px 14px;
}

.lh-pub-table thead th.left[b-o7z345znhu] { text-align: left; }
.lh-pub-table thead th.right[b-o7z345znhu] { text-align: right; }

.lh-pub-table tbody tr[b-o7z345znhu] {
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-num[b-o7z345znhu] {
    padding: 11px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text-secondary);
}

/* ─── Empty / error / skeleton ──────────────────────────────────────────── */
.lh-pub-empty-row[b-o7z345znhu] {
    padding: 28px;
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
}

.lh-pub-error-banner[b-o7z345znhu] {
    background: var(--warning-bg, #FFFBEB);
    border: 1px solid var(--warning, #FDE68A);
    color: var(--warning-dark, #92400E);
    border-radius: 10px;
    padding: 14px 18px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
    margin-bottom: 20px;
}

.lh-pub-retry-btn[b-o7z345znhu] {
    margin-left: auto;
    padding: 6px 12px;
    background: var(--warning-dark, #92400E);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
}

.lh-pub-skel-bar[b-o7z345znhu] {
    display: inline-block;
    background: linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0.1) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-o7z345znhu 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-o7z345znhu {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-o7z345znhu] { animation: none; }
}

/* ─── Mobile ────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-gc-matchup[b-o7z345znhu] {
        grid-template-columns: 1fr;
        gap: 24px;
    }
    .lh-pub-gc-score[b-o7z345znhu] { font-size: 56px; }
    .lh-pub-2col[b-o7z345znhu] { grid-template-columns: 1fr; }
    .lh-pub-gc-body[b-o7z345znhu] { padding: 24px 16px 40px; }
}
/* _content/LeagueHub/Components/Pages/GamePreview.razor.rz.scp.css */
/* Public GamePreview — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-gamepreview.md.
   Mockup: wwwroot/mockups/public/game-preview.html. */

.lh-pub-gp[b-ks22qt6dxy] {
    --accent: #B87700;
    --pub-postponed: #F59E0B;
    --pub-cancelled: #9CA3AF;
}

/* ─── Hero (dark slate — does NOT use team-color gradient like TeamDetail) ─ */
.lh-pub-gp-hero[b-ks22qt6dxy] {
    background: var(--navy, #0F172A);
    padding: 40px 0 36px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
}

.lh-pub-gp-hero.is-dim[b-ks22qt6dxy] {
    opacity: 0.85;
}

.lh-pub-gp-hero-inner[b-ks22qt6dxy] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-gp-meta-row[b-ks22qt6dxy] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 12px;
}

.lh-pub-gp-meta[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.4);
    text-transform: uppercase;
    letter-spacing: 1.4px;
}

.lh-pub-gp-status[b-ks22qt6dxy] {
    display: inline-flex;
    align-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    padding: 5px 12px;
    border-radius: 6px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.lh-pub-gp-status.scheduled[b-ks22qt6dxy] { background: rgba(255, 255, 255, 0.08); color: rgba(255, 255, 255, 0.6); }
.lh-pub-gp-status.postponed[b-ks22qt6dxy] { background: rgba(245, 158, 11, 0.18); color: #FBBF24; }
.lh-pub-gp-status.cancelled[b-ks22qt6dxy] { background: rgba(156, 163, 175, 0.18); color: rgba(255, 255, 255, 0.7); }

/* ─── Matchup grid ──────────────────────────────────────────────────────── */
.lh-pub-gp-matchup[b-ks22qt6dxy] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 32px;
}

.lh-pub-gp-team[b-ks22qt6dxy] {
    text-align: center;
    cursor: pointer;
}

.lh-pub-gp-team:focus-visible[b-ks22qt6dxy] {
    outline: 2px solid var(--accent);
    outline-offset: 4px;
    border-radius: 8px;
}

.lh-pub-gp-team-badge-large[b-ks22qt6dxy] {
    width: 72px;
    height: 72px;
    border-radius: 16px;
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 800;
    font-size: 22px;
    color: #fff;
    margin: 0 auto;
}

.lh-pub-gp-team-name[b-ks22qt6dxy] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 20px;
    color: #fff;
    margin-top: 12px;
}

.lh-pub-gp-team-rank[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.35);
    margin-top: 4px;
}

/* ─── Center (puck-drop time) ───────────────────────────────────────────── */
.lh-pub-gp-center[b-ks22qt6dxy] {
    text-align: center;
}

.lh-pub-gp-puckdrop-label[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: rgba(255, 255, 255, 0.4);
    text-transform: uppercase;
    letter-spacing: 1.4px;
    margin-bottom: 10px;
}

.lh-pub-gp-puckdrop-time[b-ks22qt6dxy] {
    font-family: 'Geist', sans-serif;
    font-size: 40px;
    font-weight: 800;
    color: #fff;
    letter-spacing: -1px;
}

.lh-pub-gp-puckdrop-meta[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: rgba(255, 255, 255, 0.4);
    margin-top: 6px;
}

/* ─── Body ──────────────────────────────────────────────────────────────── */
.lh-pub-gp-body[b-ks22qt6dxy] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    /* Page-scoped min-height — same shim as sibling pages */
    min-height: calc(100vh - 320px);
}

.lh-pub-2col[b-ks22qt6dxy] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.lh-pub-card[b-ks22qt6dxy] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

.lh-pub-card-header[b-ks22qt6dxy] {
    display: flex;
    align-items: center;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-card-title[b-ks22qt6dxy] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

/* ─── Key Players leader rows ───────────────────────────────────────────── */
/* Class names match GameCenter's leader-row recipe (same visual output, both
   pages have their own Blazor-scoped copy of the rules). Mirroring lets us
   share the markup helpers without an extracted shared component for now. */
.lh-pub-leader-row[b-ks22qt6dxy] {
    display: grid;
    grid-template-columns: 90px 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 12px 20px;
    border-bottom: 1px solid var(--border-light);
    cursor: pointer;
}

.lh-pub-leader-row:last-child[b-ks22qt6dxy] { border-bottom: none; }

.lh-pub-leader-row:hover[b-ks22qt6dxy],
.lh-pub-leader-row:focus-visible[b-ks22qt6dxy] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-leader-row:focus-visible[b-ks22qt6dxy] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-leader-label[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.lh-pub-leader-player[b-ks22qt6dxy] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.lh-pub-leader-avatar[b-ks22qt6dxy] {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: var(--border-light);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 10px;
    color: var(--text-secondary);
    flex-shrink: 0;
}

.lh-pub-leader-name[b-ks22qt6dxy] {
    font-size: 13px;
    font-weight: 500;
    color: var(--text);
}

.lh-pub-leader-meta[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    margin-top: 2px;
}

.lh-pub-leader-value[b-ks22qt6dxy] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
    white-space: nowrap;
}

/* ─── Mini roster table embedded in Key Players card (v3 Q3 + Q7) ────────── */
.lh-pub-mini-roster[b-ks22qt6dxy] {
    padding: 8px 0;
    border-top: 1px solid var(--border-light);
}

.lh-pub-mini-roster-thead[b-ks22qt6dxy] {
    display: grid;
    grid-template-columns: 50px 1fr 50px 50px 50px;
    padding: 8px 20px 4px;
}

.lh-pub-mini-roster-thead span[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: right;
}

.lh-pub-mini-roster-thead span:nth-child(1)[b-ks22qt6dxy],
.lh-pub-mini-roster-thead span:nth-child(2)[b-ks22qt6dxy] { text-align: left; }

.lh-pub-mini-roster-row[b-ks22qt6dxy] {
    display: grid;
    grid-template-columns: 50px 1fr 50px 50px 50px;
    padding: 8px 20px;
    cursor: pointer;
    align-items: center;
}

.lh-pub-mini-roster-row:hover[b-ks22qt6dxy],
.lh-pub-mini-roster-row:focus-visible[b-ks22qt6dxy] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-mini-roster-row:focus-visible[b-ks22qt6dxy] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-mini-roster-row span[b-ks22qt6dxy] {
    font-size: 13px;
    text-align: right;
    color: var(--text);
}

.lh-pub-mini-roster-row span:nth-child(1)[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    color: var(--text-muted);
    text-align: left;
}

.lh-pub-mini-roster-row span:nth-child(2)[b-ks22qt6dxy] {
    text-align: left;
    font-weight: 500;
}

/* ─── Probable starter row (v3 Q5) ──────────────────────────────────────── */
.lh-pub-probable-starter[b-ks22qt6dxy] {
    border-top: 1px solid var(--border-light);
    padding: 12px 20px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 12px;
    cursor: pointer;
}

.lh-pub-probable-starter:hover[b-ks22qt6dxy],
.lh-pub-probable-starter:focus-visible[b-ks22qt6dxy] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-probable-starter:focus-visible[b-ks22qt6dxy] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-probable-starter-kicker[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
}

.lh-pub-probable-starter-info[b-ks22qt6dxy] {
    display: flex;
    flex-direction: column;
}

.lh-pub-probable-starter-name[b-ks22qt6dxy] {
    font-size: 13px;
    font-weight: 500;
    color: var(--text);
}

.lh-pub-probable-starter-meta[b-ks22qt6dxy] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    color: var(--text-muted);
    margin-top: 1px;
}

.lh-pub-probable-starter-value[b-ks22qt6dxy] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: var(--text);
    white-space: nowrap;
}

/* ─── Cancelled note + redirect placeholder + empty ─────────────────────── */
.lh-pub-cancelled-note[b-ks22qt6dxy] {
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
    padding: 32px 0;
}

.lh-pub-redirect-msg[b-ks22qt6dxy] {
    text-align: center;
    color: var(--text-muted);
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    padding: 60px 0;
}

.lh-pub-empty[b-ks22qt6dxy] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 32px auto;
}

.lh-pub-empty-icon[b-ks22qt6dxy] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--surface-2, #FAFBFC);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}
.lh-pub-empty-icon svg[b-ks22qt6dxy] { width: 28px; height: 28px; }

.lh-pub-empty-headline[b-ks22qt6dxy] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-ks22qt6dxy] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.lh-pub-empty-cta[b-ks22qt6dxy] {
    display: inline-block;
    padding: 8px 16px;
    background: var(--navy, #0F172A);
    color: #fff;
    border-radius: 8px;
    font-size: 12.5px;
    font-weight: 500;
    text-decoration: none;
}

.lh-pub-empty-cta:hover[b-ks22qt6dxy] { background: var(--slate, #1E293B); }

/* ─── Skeleton ──────────────────────────────────────────────────────────── */
.lh-pub-skel-bar[b-ks22qt6dxy] {
    display: inline-block;
    background: linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0.1) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-ks22qt6dxy 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-ks22qt6dxy {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-ks22qt6dxy] { animation: none; }
}

/* ─── Mobile ────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-gp-matchup[b-ks22qt6dxy] { grid-template-columns: 1fr; gap: 24px; }
    .lh-pub-2col[b-ks22qt6dxy] { grid-template-columns: 1fr; }
    .lh-pub-gp-body[b-ks22qt6dxy] { padding: 24px 16px 40px; }
    .lh-pub-gp-puckdrop-time[b-ks22qt6dxy] { font-size: 32px; }
}
/* _content/LeagueHub/Components/Pages/Home.razor.rz.scp.css */
/* Public Home — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-home.md.
   Mockup: wwwroot/mockups/public/home.html.
   Tokens: admin BRAND-KIT v1 (--accent / --bg / --text / --slate / --navy / etc.)
           per BRAND-KIT-PUBLIC.md §0 lazy-merge contract; --pub-live retained
           per §0.2.
*/

/* ─── Public-only accent override ────────────────────────────────────────
   Public uses a dimmer accent than admin (#E59500 → #B87700) so the dark
   hero gradient + Geist 800 headline don't shout. Admin's --accent stays
   #E59500 globally; this override is scoped to the Home page only. The
   descendant components (PublicGameScoreCard, PublicLeaderRow, GameStatusBadge,
   TeamBadge) inherit the redefined custom property via the CSS cascade.
   See LeagueHub/wwwroot/mockups/public/home.html for the signed-off mockup
   and the matching :root tweak. Will be promoted to a public-only token in
   BRAND-KIT-PUBLIC §0.1 once 2-3 public ports settle the pattern. */
.lh-pub-hero[b-9s41ovx2h5],
.lh-pub-content[b-9s41ovx2h5] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── Hero ─────────────────────────────────────────────────────────────── */
.lh-pub-hero[b-9s41ovx2h5] {
    background: linear-gradient(135deg, #0F172A 0%, var(--slate) 60%, #0F172A 100%);
    padding: 60px 0 48px;
    position: relative;
    overflow: hidden;
}

.lh-pub-hero[b-9s41ovx2h5]::before {
    content: '';
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 70% 50%, rgba(184, 119, 0, 0.06) 0%, transparent 60%);
    pointer-events: none;
}

.lh-pub-hero-inner[b-9s41ovx2h5] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
    position: relative;
}

.lh-pub-hero-grid[b-9s41ovx2h5] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 48px;
    align-items: center;
}

.lh-pub-hero.is-pre-season .lh-pub-hero-grid[b-9s41ovx2h5] {
    grid-template-columns: 1fr;
}

.lh-pub-hero-kicker[b-9s41ovx2h5] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: rgba(184, 119, 0, 0.16);
    border: 1px solid rgba(184, 119, 0, 0.32);
    border-radius: 6px;
    padding: 5px 12px;
    margin-bottom: 20px;
}

.lh-pub-hero-kicker span[b-9s41ovx2h5] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    font-weight: 600;
    color: var(--accent);
    text-transform: uppercase;
    letter-spacing: 1.4px;
}

.lh-pub-hero-title[b-9s41ovx2h5] {
    font-family: 'Geist', sans-serif;
    font-size: 48px;
    font-weight: 800;
    letter-spacing: -1.5px;
    color: #fff;
    line-height: 1.1;
    margin: 0 0 16px;
}

.lh-pub-hero-title .accent[b-9s41ovx2h5] {
    color: var(--accent);
}

.lh-pub-hero-sub[b-9s41ovx2h5] {
    font-family: 'Inter', sans-serif;
    font-size: var(--text-card-title-size);
    color: rgba(255, 255, 255, 0.55);
    line-height: 1.65;
    max-width: 420px;
    margin: 0 0 28px;
}

.lh-pub-hero-ctas[b-9s41ovx2h5] {
    display: flex;
    gap: 12px;
}

.btn-lh-pub-primary[b-9s41ovx2h5] {
    background: var(--accent);
    color: #1A1100;
    border: none;
    border-radius: 9px;
    padding: 12px 22px;
    font-size: var(--text-body-size);
    font-weight: 600;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
}

.btn-lh-pub-primary:hover[b-9s41ovx2h5] {
    background: var(--accent-dark, #B87700);
    color: #fff;
}

.btn-lh-pub-primary:focus-visible[b-9s41ovx2h5] {
    outline: 2px solid #fff;
    outline-offset: 2px;
}

.btn-lh-pub-ghost[b-9s41ovx2h5] {
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 9px;
    padding: 12px 22px;
    font-size: var(--text-body-size);
    font-weight: 500;
    text-decoration: none;
}

.btn-lh-pub-ghost:hover[b-9s41ovx2h5] {
    background: rgba(255, 255, 255, 0.14);
}

.btn-lh-pub-ghost:focus-visible[b-9s41ovx2h5] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-hero-kpis[b-9s41ovx2h5] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

.lh-pub-hero-kpi[b-9s41ovx2h5] {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.07);
    border-radius: 12px;
    padding: 18px 20px;
}

.lh-pub-hero-kpi-label[b-9s41ovx2h5] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: rgba(255, 255, 255, 0.4);
    margin-bottom: 8px;
}

.lh-pub-hero-kpi-value[b-9s41ovx2h5] {
    font-family: 'Geist', sans-serif;
    font-size: 36px;
    font-weight: 700;
    letter-spacing: -1px;
    color: #fff;
}

.lh-pub-hero-kpi-value.lh-skeleton[b-9s41ovx2h5] {
    display: block;
    width: 80px;
    height: 36px;
    background: rgba(255, 255, 255, 0.06);
}

/* Pre-season variant CTAs */
.lh-pub-empty-cta-row[b-9s41ovx2h5] {
    display: flex;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 28px;
}

.lh-pub-quick-link[b-9s41ovx2h5] {
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.07);
    border-radius: 10px;
    padding: 12px 18px;
    color: rgba(255, 255, 255, 0.85);
    font-size: var(--text-body-size);
    font-weight: 500;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.lh-pub-quick-link:hover[b-9s41ovx2h5] {
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
}

/* ─── Content shell ─────────────────────────────────────────────────────── */
.lh-pub-content[b-9s41ovx2h5] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 40px 32px 0;
}

.lh-pub-section[b-9s41ovx2h5] {
    margin-bottom: 40px;
}

.lh-pub-section-h[b-9s41ovx2h5] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 18px;
}

.lh-pub-section-h h2[b-9s41ovx2h5] {
    font-family: 'Geist', sans-serif;
    font-size: 20px;
    font-weight: 700;
    margin: 0;
    letter-spacing: -0.3px;
    color: var(--text);
    display: inline-flex;
    align-items: center;
    gap: 12px;
}

.lh-pub-section-link[b-9s41ovx2h5] {
    color: var(--accent);
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.lh-pub-section-link:hover[b-9s41ovx2h5] {
    text-decoration: underline;
}

.lh-pub-section-link:focus-visible[b-9s41ovx2h5] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    border-radius: 4px;
}

/* "+N more live" chip in the Games section header */
.lh-pub-more-live-chip[b-9s41ovx2h5] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: rgba(239, 68, 68, 0.12);
    border: 1px solid rgba(239, 68, 68, 0.30);
    border-radius: 6px;
    padding: 4px 10px;
    color: var(--pub-live);
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    text-decoration: none;
}

.lh-pub-more-live-chip:hover[b-9s41ovx2h5] {
    background: rgba(239, 68, 68, 0.18);
}

.lh-pub-live-dot[b-9s41ovx2h5] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--pub-live);
    animation: lh-pub-pulse-b-9s41ovx2h5 1.2s ease-out infinite;
}

@keyframes lh-pub-pulse-b-9s41ovx2h5 {
    0%   { opacity: 1; transform: scale(1); }
    100% { opacity: 0; transform: scale(2.2); }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-live-dot[b-9s41ovx2h5] { animation: none; }
}

/* ─── Games strip ──────────────────────────────────────────────────────── */
.lh-pub-games-strip[b-9s41ovx2h5] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 14px;
}

/* ─── Two-col (standings + leaderboard) ────────────────────────────────── */
.lh-pub-two-col[b-9s41ovx2h5] {
    display: grid;
    grid-template-columns: 1fr 1.1fr;
    gap: 24px;
    margin-bottom: 40px;
}

.lh-pub-card[b-9s41ovx2h5] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 14px;
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.lh-pub-card-h[b-9s41ovx2h5] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-card-h h3[b-9s41ovx2h5] {
    margin: 0;
    font-family: 'Geist', sans-serif;
    font-size: var(--text-card-title-size);
    font-weight: 600;
    letter-spacing: -0.1px;
    color: var(--text);
}

/* Standings snapshot table */
.lh-pub-standings-table[b-9s41ovx2h5] {
    width: 100%;
    border-collapse: collapse;
}

.lh-pub-standings-table thead[b-9s41ovx2h5] {
    background: var(--slate);
}

.lh-pub-standings-table th[b-9s41ovx2h5] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 9px 12px;
    text-align: right;
}

.lh-pub-standings-table th.cell-team[b-9s41ovx2h5] {
    text-align: left;
}

.lh-pub-standings-table tbody tr[b-9s41ovx2h5] {
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-standings-table tbody tr:hover[b-9s41ovx2h5] {
    background: var(--surface-2);
}

.lh-pub-standings-table td[b-9s41ovx2h5] {
    padding: 10px 12px;
}

.lh-pub-standings-rank[b-9s41ovx2h5] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    color: var(--text-muted);
    text-align: right;
}

.lh-pub-standings-team[b-9s41ovx2h5] {
    display: flex;
    align-items: center;
    gap: 9px;
}

.lh-pub-standings-team-name[b-9s41ovx2h5] {
    font-family: 'Inter', sans-serif;
    font-size: var(--text-body-size);
    font-weight: 500;
    color: var(--text);
}

.lh-pub-standings-num[b-9s41ovx2h5] {
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-body-size);
    color: var(--text-secondary);
}

.lh-pub-standings-pts[b-9s41ovx2h5] {
    text-align: right;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: var(--text-body-size);
    color: var(--text);
}

/* Leaderboard tabs */
.lh-pub-leader-tabs[b-9s41ovx2h5] {
    display: inline-flex;
    background: var(--bg);
    border-radius: 8px;
    padding: 3px;
    gap: 2px;
}

.lh-pub-leader-tab[b-9s41ovx2h5] {
    padding: 5px 12px;
    border-radius: 6px;
    border: none;
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 600;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
}

.lh-pub-leader-tab:hover[b-9s41ovx2h5] {
    color: var(--text-secondary);
}

.lh-pub-leader-tab.is-active[b-9s41ovx2h5] {
    background: var(--text);
    color: #fff;
}

.lh-pub-leader-tab:focus-visible[b-9s41ovx2h5] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-leader-list[b-9s41ovx2h5] {
    padding: 4px 20px 12px;
}

.lh-pub-leader-cta[b-9s41ovx2h5] {
    display: block;
    margin-top: 10px;
    width: 100%;
    padding: 8px;
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 8px;
    font-family: 'Inter', sans-serif;
    font-size: var(--text-body-size);
    color: var(--text-secondary);
    font-weight: 500;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
}

.lh-pub-leader-cta:hover[b-9s41ovx2h5] {
    background: var(--bg);
}

.lh-pub-leader-cta:focus-visible[b-9s41ovx2h5] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* ─── Skeleton + error + empty ─────────────────────────────────────────── */
.lh-skeleton[b-9s41ovx2h5] {
    background: var(--border-light);
    border-radius: 6px;
    animation: lh-skeleton-pulse-b-9s41ovx2h5 1.4s ease-in-out infinite;
}

@keyframes lh-skeleton-pulse-b-9s41ovx2h5 {
    0%, 100% { opacity: 0.55; }
    50%      { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-skeleton[b-9s41ovx2h5] { animation: none; }
}

.lh-skeleton-card[b-9s41ovx2h5] {
    box-shadow: none !important;
}

.lh-skeleton-card .lh-skeleton[b-9s41ovx2h5] {
    background: var(--border-light);
}

.lh-pub-skel-rows[b-9s41ovx2h5] {
    padding: 4px 20px 12px;
}

.lh-pub-error[b-9s41ovx2h5],
.lh-pub-empty[b-9s41ovx2h5] {
    padding: 24px;
    text-align: center;
    font-family: 'Inter', sans-serif;
    font-size: var(--text-body-size);
    color: var(--text-secondary);
}

.lh-pub-error a[b-9s41ovx2h5] {
    color: var(--accent);
    text-decoration: underline;
}

/* ─── Responsive (mobile breakpoint) — audit risk R5 ───────────────────── */
@media (max-width: 768px) {
    .lh-pub-hero[b-9s41ovx2h5] { padding: 40px 0 32px; }
    .lh-pub-hero-grid[b-9s41ovx2h5] { grid-template-columns: 1fr; gap: 32px; }
    .lh-pub-hero-title[b-9s41ovx2h5] { font-size: 36px; letter-spacing: -1px; }
    .lh-pub-hero-kpis[b-9s41ovx2h5] { grid-template-columns: 1fr 1fr; gap: 8px; }
    .lh-pub-hero-kpi[b-9s41ovx2h5] { padding: 14px 16px; }
    .lh-pub-hero-kpi-value[b-9s41ovx2h5] { font-size: 28px; }
    .lh-pub-content[b-9s41ovx2h5] { padding: 24px 16px 0; }
    .lh-pub-games-strip[b-9s41ovx2h5] { grid-template-columns: 1fr; gap: 12px; }
    .lh-pub-two-col[b-9s41ovx2h5] { grid-template-columns: 1fr; gap: 16px; }
}
/* _content/LeagueHub/Components/Pages/PlayerProfile.razor.rz.scp.css */
/* Public PlayerProfile — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-playerprofile.md.
   Mockup: wwwroot/mockups/public/player-profile.html. */

.lh-pub-pp[b-60548vguxw] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
    --accent-bg-soft: #FFFBEB;
    --success-text: #047857;
    --danger-text: #B91C1C;
}

/* ─── Hero (team-color gradient) ────────────────────────────────────────── */
.lh-pub-pp-hero[b-60548vguxw] {
    padding: 48px 0 40px;
}

.lh-pub-pp-hero-inner[b-60548vguxw] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
    display: flex;
    align-items: flex-start;
    gap: 28px;
    flex-wrap: wrap;
}

.lh-pub-pp-avatar[b-60548vguxw] {
    width: 90px;
    height: 90px;
    border-radius: 22px;
    background: rgba(255, 255, 255, 0.18);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 800;
    font-size: 32px;
    color: #fff;
    flex-shrink: 0;
}

.lh-pub-pp-hero-info[b-60548vguxw] {
    flex: 1;
    min-width: 240px;
}

.lh-pub-pp-hero-meta[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 1.4px;
    margin-bottom: 7px;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.lh-pub-pp-team-link[b-60548vguxw] {
    color: rgba(255, 255, 255, 0.7);
    cursor: pointer;
    text-decoration: underline;
    text-decoration-color: rgba(255, 255, 255, 0.3);
}

.lh-pub-pp-team-link:hover[b-60548vguxw] {
    color: #fff;
    text-decoration-color: rgba(255, 255, 255, 0.6);
}

.lh-pub-pp-hero-title[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    font-size: 40px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 8px;
    letter-spacing: -1px;
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.lh-pub-pp-captain-c[b-60548vguxw] {
    display: inline-grid;
    place-items: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.18);
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    font-weight: 700;
    color: #fff;
}

.lh-pub-pp-hero-tags[b-60548vguxw] {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    align-items: center;
}

.lh-pub-pp-suspended-pill[b-60548vguxw] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    background: rgba(239, 68, 68, 0.2);
    border: 1px solid rgba(239, 68, 68, 0.35);
    color: #FCA5A5;
    border-radius: 6px;
    padding: 4px 10px;
    font-size: 11px;
    font-weight: 600;
    font-family: 'Geist Mono', monospace;
}

.lh-pub-pp-shoots[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: rgba(255, 255, 255, 0.45);
}

.lh-pub-pp-hero-tiles[b-60548vguxw] {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.lh-pub-pp-tile[b-60548vguxw] {
    text-align: center;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    padding: 12px 18px;
    min-width: 64px;
}

.lh-pub-pp-tile-label[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 1.2px;
    margin-bottom: 6px;
}

.lh-pub-pp-tile-value[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    font-size: 28px;
    font-weight: 700;
    color: #fff;
    letter-spacing: -0.8px;
}

/* ─── Body 2-col grid ───────────────────────────────────────────────────── */
.lh-pub-pp-body[b-60548vguxw] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    /* Page-scoped min-height — same shim as sibling pages */
    min-height: calc(100vh - 320px);
}

.lh-pub-pp-grid[b-60548vguxw] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 24px;
    align-items: flex-start;
}

.lh-pub-pp-main[b-60548vguxw] {
    display: flex;
    flex-direction: column;
    gap: 20px;
    min-width: 0;
}

.lh-pub-pp-side[b-60548vguxw] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

@media (max-width: 900px) {
    .lh-pub-pp-grid[b-60548vguxw] {
        grid-template-columns: 1fr;
    }
}

/* ─── Suspension callout under hero ─────────────────────────────────────── */
.lh-pub-pp-susp-callout[b-60548vguxw] {
    display: flex;
    align-items: center;
    gap: 12px;
    background: #FEF2F2;
    border: 1px solid #FECACA;
    border-radius: 10px;
    padding: 12px 18px;
    margin-bottom: 20px;
    color: #B91C1C;
    font-size: 13px;
}

/* ─── Card pattern ──────────────────────────────────────────────────────── */
.lh-pub-card[b-60548vguxw] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

.lh-pub-card-skel[b-60548vguxw] {
    min-height: 200px;
}

.lh-pub-card-header[b-60548vguxw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-card-title[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

/* ─── Season Stats grid ─────────────────────────────────────────────────── */
.lh-pub-pp-stats-grid[b-60548vguxw] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
}

.lh-pub-pp-stat-cell[b-60548vguxw] {
    padding: 18px 20px;
    border-right: 1px solid var(--border-light);
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-pp-stat-cell:nth-child(4n)[b-60548vguxw] { border-right: none; }
.lh-pub-pp-stat-cell:nth-last-child(-n+4)[b-60548vguxw] { border-bottom: none; }

.lh-pub-pp-stat-label[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: var(--text-muted);
    margin-bottom: 8px;
}

.lh-pub-pp-stat-value[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    font-size: 28px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--text);
}

.lh-pub-pp-stat-status[b-60548vguxw] {
    font-size: 16px;
    color: var(--success-text);
}

@media (max-width: 600px) {
    .lh-pub-pp-stats-grid[b-60548vguxw] { grid-template-columns: repeat(2, 1fr); }
    .lh-pub-pp-stat-cell:nth-child(2n)[b-60548vguxw] { border-right: none; }
    .lh-pub-pp-stat-cell[b-60548vguxw] { border-right: 1px solid var(--border-light); border-bottom: 1px solid var(--border-light) !important; }
}

/* ─── Recent games / Career tables ──────────────────────────────────────── */
.lh-pub-table-wrap[b-60548vguxw] { overflow-x: auto; }

.lh-pub-table[b-60548vguxw] {
    width: 100%;
    border-collapse: collapse;
}

.lh-pub-table thead[b-60548vguxw] {
    background: var(--slate, #1E293B);
}

.lh-pub-table thead th[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 10px 14px;
}

.lh-pub-table thead th.left[b-60548vguxw] { text-align: left; }
.lh-pub-table thead th.right[b-60548vguxw] { text-align: right; }

.lh-pub-table tbody tr[b-60548vguxw] {
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-table tbody tr.current[b-60548vguxw] {
    background: var(--accent-bg-soft);
}

.lh-pub-num[b-60548vguxw] {
    padding: 11px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text-secondary);
}

.lh-pub-num.muted[b-60548vguxw] { color: var(--text-muted); }
.lh-pub-num.primary[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    color: var(--text);
    font-weight: 700;
    font-size: 14px;
}
.lh-pub-num.accent[b-60548vguxw] { color: var(--accent); font-weight: 600; }
.lh-pub-num.won[b-60548vguxw] { color: var(--success-text); font-weight: 600; }
.lh-pub-num.lost[b-60548vguxw] { color: var(--danger-text); font-weight: 600; }

.lh-pub-cell[b-60548vguxw] { padding: 11px 14px; }

.lh-pub-opp-abbr[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-secondary);
}

.lh-pub-current-tag[b-60548vguxw] {
    margin-left: 8px;
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--accent);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.lh-pub-playoff-tag[b-60548vguxw] {
    margin-left: 8px;
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

/* ─── Sidebar — Team card ───────────────────────────────────────────────── */
.lh-pub-side-team-link[b-60548vguxw] {
    cursor: pointer;
    text-decoration: none;
    color: inherit;
    display: block;
}

.lh-pub-side-team-link:hover[b-60548vguxw] {
    box-shadow: 0 4px 12px rgba(15, 23, 42, 0.08);
}

.lh-pub-side-team[b-60548vguxw] {
    padding: 14px 20px;
}

.lh-pub-side-team-stack[b-60548vguxw] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
}

.lh-pub-team-large[b-60548vguxw] {
    width: 52px;
    height: 52px;
    border-radius: 12px;
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: #fff;
    flex-shrink: 0;
}

.lh-pub-side-team-name[b-60548vguxw] {
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

.lh-pub-side-team-kicker[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    margin-top: 3px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.lh-pub-side-team-stats[b-60548vguxw] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 8px;
    border-top: 1px solid var(--border-light);
    padding-top: 12px;
}

.lh-pub-side-stat[b-60548vguxw] { text-align: center; }

.lh-pub-side-stat-label[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 3px;
}

.lh-pub-side-stat-value[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 18px;
    color: var(--text);
}

/* ─── Sidebar — Player Info ─────────────────────────────────────────────── */
.lh-pub-side-info[b-60548vguxw] {
    padding: 6px 20px 14px;
}

.lh-pub-side-info-row[b-60548vguxw] {
    display: flex;
    justify-content: space-between;
    padding: 9px 0;
    border-bottom: 1px solid var(--border-light);
    font-size: 13px;
}

.lh-pub-side-info-row:last-child[b-60548vguxw] { border-bottom: none; }

.lh-pub-side-info-label[b-60548vguxw] { color: var(--text-muted); }

.lh-pub-side-info-value[b-60548vguxw] {
    font-weight: 500;
    color: var(--text);
}

.lh-pub-side-info-value.danger[b-60548vguxw] { color: var(--danger-text); }
.lh-pub-side-info-value.success[b-60548vguxw] { color: var(--success-text); }

/* ─── Sidebar — Awards ──────────────────────────────────────────────────── */
.lh-pub-side-awards[b-60548vguxw] { padding: 8px 0; }

.lh-pub-side-award-row[b-60548vguxw] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 20px;
}

.lh-pub-side-award-pill[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    font-weight: 600;
    padding: 3px 7px;
    background: var(--accent-bg-soft);
    color: var(--accent);
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.lh-pub-side-award-name[b-60548vguxw] {
    font-size: 12px;
    font-weight: 500;
    flex: 1;
    color: var(--text);
}

.lh-pub-side-award-season[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
}

/* ─── Sidebar — Teammates ───────────────────────────────────────────────── */
.lh-pub-side-teammates[b-60548vguxw] { padding: 8px 0; }

.lh-pub-tm-row[b-60548vguxw] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 20px;
    cursor: pointer;
}

.lh-pub-tm-row:hover[b-60548vguxw],
.lh-pub-tm-row:focus-visible[b-60548vguxw] { background: var(--surface-2, #FAFBFC); }

.lh-pub-tm-row:focus-visible[b-60548vguxw] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-tm-avatar[b-60548vguxw] {
    width: 32px;
    height: 32px;
    border-radius: 9px;
    background: var(--border-light);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 11px;
    color: var(--text-secondary);
    flex-shrink: 0;
}

.lh-pub-tm-name[b-60548vguxw] {
    font-size: 13px;
    font-weight: 500;
    color: var(--text);
}

.lh-pub-tm-meta[b-60548vguxw] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    margin-top: 2px;
}

.lh-pub-tm-c-tag[b-60548vguxw] {
    color: var(--accent);
    font-weight: 700;
}

/* ─── Empty / 404 ───────────────────────────────────────────────────────── */
.lh-pub-empty[b-60548vguxw] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 32px auto;
}

.lh-pub-empty-icon[b-60548vguxw] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--surface-2, #FAFBFC);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}
.lh-pub-empty-icon svg[b-60548vguxw] { width: 28px; height: 28px; }

.lh-pub-empty-headline[b-60548vguxw] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-60548vguxw] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.lh-pub-empty-cta[b-60548vguxw] {
    display: inline-block;
    padding: 8px 16px;
    background: var(--navy, #0F172A);
    color: #fff;
    border-radius: 8px;
    font-size: 12.5px;
    font-weight: 500;
    text-decoration: none;
}

.lh-pub-empty-cta:hover[b-60548vguxw] { background: var(--slate, #1E293B); }

.lh-pub-empty-row[b-60548vguxw] {
    padding: 32px;
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
}

/* ─── Skeleton ──────────────────────────────────────────────────────────── */
.lh-pub-skel-bar[b-60548vguxw] {
    display: inline-block;
    background: linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0.1) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-60548vguxw 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-60548vguxw {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-60548vguxw] { animation: none; }
}

/* ─── Mobile ────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-pp-hero[b-60548vguxw] { padding: 32px 0 28px; }
    .lh-pub-pp-hero-title[b-60548vguxw] { font-size: 30px; }
    .lh-pub-pp-body[b-60548vguxw] { padding: 24px 16px 40px; }
}
/* _content/LeagueHub/Components/Pages/PublicAwards.razor.rz.scp.css */
/* Public Awards — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-awards.md.
   Mockup: wwwroot/mockups/public/awards.html.
   Tokens adopted from admin BRAND-KIT v1 per BRAND-KIT-PUBLIC §0 lazy-merge.
   Trophy gradient uses --pub-gold-from / --pub-gold-to added to style.css P.7. */

/* ─── Public-only accent override (same scoped pattern as Rules/Home) ────── */
.lh-pub-subhero[b-fgakc9onlh],
.lh-pub-awards-content[b-fgakc9onlh] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero ────────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(slate-deep → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-fgakc9onlh] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-fgakc9onlh] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-fgakc9onlh] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-fgakc9onlh] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-fgakc9onlh] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Page body ──────────────────────────────────────────────────────────── */
.lh-pub-awards-content[b-fgakc9onlh] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
}

/* ─── Award grid ─────────────────────────────────────────────────────────── */
.lh-pub-awards-grid[b-fgakc9onlh] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
}

/* ─── Award card ─────────────────────────────────────────────────────────── */
.lh-pub-award-card[b-fgakc9onlh] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: var(--shadow-sm);
    padding: 24px 22px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.lh-pub-award-card-header[b-fgakc9onlh] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
}

/* Trophy mark */
.lh-pub-award-icon[b-fgakc9onlh] {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--pub-gold-from), var(--pub-gold-to));
    display: grid;
    place-items: center;
    flex-shrink: 0;
}

.lh-pub-award-icon svg[b-fgakc9onlh] {
    width: 22px;
    height: 22px;
    color: var(--accent-dark);
}

/* Season kicker */
.lh-pub-award-season[b-fgakc9onlh] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

/* Category label */
.lh-pub-award-cat[b-fgakc9onlh] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.2px;
    color: var(--accent);
    margin-bottom: 6px;
}

/* Winner name */
.lh-pub-award-winner[b-fgakc9onlh] {
    font-family: 'Geist', sans-serif;
    font-size: 20px;
    font-weight: 700;
    letter-spacing: -0.4px;
    color: var(--text);
    margin-bottom: 4px;
}

.lh-pub-award-winner-link[b-fgakc9onlh] {
    color: inherit;
    text-decoration: none;
}

.lh-pub-award-winner-link:hover[b-fgakc9onlh] {
    color: var(--accent);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.lh-pub-award-winner-link:focus-visible[b-fgakc9onlh] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    border-radius: 2px;
}

/* Team row */
.lh-pub-award-team[b-fgakc9onlh] {
    display: flex;
    align-items: center;
    gap: 7px;
}

.lh-pub-team-badge[b-fgakc9onlh] {
    width: 22px;
    height: 22px;
    border-radius: 5px;
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 8px;
    font-weight: 700;
    color: var(--white);
    flex-shrink: 0;
}

.lh-pub-award-team-name[b-fgakc9onlh] {
    font-size: 12px;
    color: var(--text-muted);
}

/* ─── Stat strips ────────────────────────────────────────────────────────── */
.lh-pub-stat-strip[b-fgakc9onlh] {
    display: grid;
    gap: 2px;
    background: var(--bg);
    border-radius: 8px;
    padding: 10px 8px;
}

.lh-pub-stat-strip--skater[b-fgakc9onlh] {
    grid-template-columns: repeat(5, 1fr);
}

.lh-pub-stat-strip--goalie[b-fgakc9onlh] {
    grid-template-columns: repeat(4, 1fr);
}

.lh-pub-stat-cell[b-fgakc9onlh] {
    text-align: center;
}

.lh-pub-stat-label[b-fgakc9onlh] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    margin-bottom: 3px;
}

.lh-pub-stat-value[b-fgakc9onlh] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 16px;
    letter-spacing: -0.3px;
    color: var(--text-secondary);
}

.lh-pub-stat-value--primary[b-fgakc9onlh] {
    color: var(--text);
}

/* ─── Non-player / team award note row ──────────────────────────────────── */
.lh-pub-award-note[b-fgakc9onlh] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: var(--text-muted);
    background: var(--bg);
    border-radius: 7px;
    padding: 7px 10px;
}

/* ─── Empty state ────────────────────────────────────────────────────────── */
.lh-pub-empty-state[b-fgakc9onlh] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-empty-icon[b-fgakc9onlh] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--pub-gold-from), var(--pub-gold-to));
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
}

.lh-pub-empty-icon svg[b-fgakc9onlh] {
    width: 28px;
    height: 28px;
    color: var(--accent-dark);
}

.lh-pub-empty-headline[b-fgakc9onlh] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-fgakc9onlh] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin: 0;
}

/* ─── Error state ────────────────────────────────────────────────────────── */
.lh-pub-awards-error[b-fgakc9onlh] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 18px;
    border-radius: 10px;
    font-size: var(--text-body-size);
}

.lh-pub-awards-error-icon[b-fgakc9onlh] {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

/* ─── Skeleton (loading state) ───────────────────────────────────────────── */
.lh-pub-award-card--skeleton[b-fgakc9onlh] {
    pointer-events: none;
}

.lh-pub-skeleton[b-fgakc9onlh] {
    background: var(--border-light);
    border-radius: 6px;
    animation: lh-awards-pulse-b-fgakc9onlh 1.4s ease-in-out infinite;
}

.lh-pub-skeleton--icon[b-fgakc9onlh] {
    width: 44px;
    height: 44px;
    border-radius: 12px;
}

.lh-pub-skeleton--kicker[b-fgakc9onlh] {
    width: 56px;
    height: 12px;
    border-radius: 4px;
    margin-top: 4px;
}

.lh-pub-skeleton--label[b-fgakc9onlh] {
    width: 40%;
    height: 10px;
    margin-bottom: 8px;
}

.lh-pub-skeleton--name[b-fgakc9onlh] {
    width: 75%;
    height: 20px;
    margin-bottom: 6px;
}

.lh-pub-skeleton--team[b-fgakc9onlh] {
    width: 55%;
    height: 14px;
}

.lh-pub-skeleton--strip[b-fgakc9onlh] {
    height: 44px;
    border-radius: 8px;
    margin-top: 4px;
}

@keyframes lh-awards-pulse-b-fgakc9onlh {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.45; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skeleton[b-fgakc9onlh] {
        animation: none;
    }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .lh-pub-awards-grid[b-fgakc9onlh] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 600px) {
    .lh-pub-subhero[b-fgakc9onlh] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-fgakc9onlh] { font-size: 26px; }
    .lh-pub-awards-content[b-fgakc9onlh] { padding: 24px 16px 40px; }
    .lh-pub-awards-grid[b-fgakc9onlh] {
        grid-template-columns: 1fr;
        gap: 12px;
    }
}
/* _content/LeagueHub/Components/Pages/Rules.razor.rz.scp.css */
/* Public Rules — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-rules.md.
   Mockup: wwwroot/mockups/public/rules.html.
   Tokens adopted from admin BRAND-KIT v1 per BRAND-KIT-PUBLIC §0 lazy-merge.
   Uses existing global --warning-bg / --warning / --warning-dark tokens from
   style.css :root, aligned with audit Q2. */

/* Public-only accent override (same scoped pattern as Home). */
.lh-pub-rules-content[b-h23st8xz5s],
.lh-pub-subhero[b-h23st8xz5s] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero ────────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(navy-hex → slate) in v2.
   Also drops the raw #0F172A hex in favour of the var() (still BRAND-KIT-PUBLIC-clean).
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-h23st8xz5s] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-h23st8xz5s] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-h23st8xz5s] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-h23st8xz5s] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: #fff;
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-h23st8xz5s] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Rules accordion list ───────────────────────────────────────────────── */
.lh-pub-rules-content[b-h23st8xz5s] {
    max-width: 900px;
    margin: 0 auto;
    padding: 40px 32px 60px;
}

.lh-pub-rules-list[b-h23st8xz5s] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.lh-pub-rule-item[b-h23st8xz5s] {
    background: var(--surface);
    border-radius: 12px;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.03);
    overflow: hidden;
}

.lh-pub-rule-toggle[b-h23st8xz5s] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 18px 22px;
    background: transparent;
    border: none;
    cursor: pointer;
    text-align: left;
}

.lh-pub-rule-toggle:focus-visible[b-h23st8xz5s] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-rule-num[b-h23st8xz5s] {
    width: 32px;
    height: 32px;
    border-radius: 9px;
    background: var(--bg);
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-weight: 700;
    font-size: 12px;
    color: var(--text-muted);
    flex-shrink: 0;
    transition: background 150ms ease, color 150ms ease;
}

.lh-pub-rule-item.is-open .lh-pub-rule-num[b-h23st8xz5s] {
    background: #0F172A;
    color: #fff;
}

.lh-pub-rule-title[b-h23st8xz5s] {
    font-family: 'Geist', sans-serif;
    font-weight: 600;
    font-size: var(--text-card-title-size);
    flex: 1;
    color: var(--text);
}

.lh-pub-rule-chev[b-h23st8xz5s] {
    width: 16px;
    height: 16px;
    color: var(--text-muted);
    transition: transform 150ms ease;
    flex-shrink: 0;
}

.lh-pub-rule-item.is-open .lh-pub-rule-chev[b-h23st8xz5s] {
    transform: rotate(90deg);
    color: var(--accent);
}

.lh-pub-rule-body[b-h23st8xz5s] {
    padding: 0 22px 20px 70px;
    font-family: 'Inter', sans-serif;
    font-size: var(--text-body-size);
    color: var(--text-secondary);
    line-height: 1.7;
}

.lh-pub-rule-body p[b-h23st8xz5s] {
    margin: 0 0 10px;
}

.lh-pub-rule-body p:last-child[b-h23st8xz5s] {
    margin-bottom: 0;
}

.lh-pub-rule-body strong[b-h23st8xz5s] {
    color: var(--text);
    font-weight: 600;
}

.lh-pub-rule-body del[b-h23st8xz5s] {
    color: var(--text-muted);
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-rule-num[b-h23st8xz5s],
    .lh-pub-rule-chev[b-h23st8xz5s] {
        transition: none;
    }
}

/* ─── Migration notice + warning callout ─────────────────────────────────── */
.lh-pub-rules-note[b-h23st8xz5s] {
    margin-top: 28px;
    padding: 16px 20px;
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 12px;
    font-size: var(--text-body-size);
    color: var(--text-secondary);
    line-height: 1.6;
}

.lh-pub-rules-note strong[b-h23st8xz5s] {
    color: var(--text);
    font-weight: 700;
}

.lh-pub-rules-callout[b-h23st8xz5s] {
    margin-top: 16px;
    padding: 18px 22px;
    background: var(--warning-bg);
    border: 1px solid var(--warning);
    border-radius: 12px;
    font-size: var(--text-body-size);
    color: var(--warning-dark);
    line-height: 1.6;
}

.lh-pub-rules-callout strong[b-h23st8xz5s] {
    color: var(--warning-dark);
    font-weight: 700;
}

.lh-pub-rules-callout a[b-h23st8xz5s] {
    color: var(--warning-dark);
    font-weight: 600;
    text-decoration: underline;
}

.lh-pub-rules-callout a:focus-visible[b-h23st8xz5s] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* ─── Penalty Reference section (#450 — Tables 1-5) ──
   Reuses the existing .lh-pub-rule-item accordion shell so tables and rules
   share visual language. Only the inner table chrome and intro paragraph are
   table-specific. */
.lh-pub-rules-section-heading[b-h23st8xz5s] {
    margin: 56px 0 6px;
    font-family: var(--font-heading);
    font-size: var(--pub-text-section-title);
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.4px;
}

.lh-pub-rules-section-sub[b-h23st8xz5s] {
    margin: 0 0 20px;
    font-family: var(--font-sans);
    font-size: var(--pub-text-meta);
    color: var(--text-muted);
}

.lh-pub-penalty-table-intro[b-h23st8xz5s] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-body);
    color: var(--text);
    margin: 0 0 16px;
    line-height: 1.6;
}

.lh-pub-penalty-table-wrap[b-h23st8xz5s] {
    overflow-x: auto;
}

.lh-pub-penalty-table[b-h23st8xz5s] {
    width: 100%;
    border-collapse: collapse;
}

.lh-pub-penalty-table thead th[b-h23st8xz5s] {
    text-align: left;
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.4px;
    color: var(--text-muted);
    padding: 8px 12px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-penalty-table tbody td[b-h23st8xz5s] {
    padding: 12px;
    border-bottom: 1px solid var(--border-light);
    font-family: var(--font-sans);
    font-size: var(--pub-text-body);
    color: var(--text);
    line-height: 1.6;
    vertical-align: top;
}

.lh-pub-penalty-table tbody tr:last-child td[b-h23st8xz5s] {
    border-bottom: none;
}

.lh-pub-penalty-table-name[b-h23st8xz5s] {
    font-weight: 600;
    width: 28%;
    min-width: 180px;
}

.lh-pub-penalty-table-desc[b-h23st8xz5s] {
    color: var(--text-secondary);
}

/* ─── Mobile ────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-subhero[b-h23st8xz5s] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-h23st8xz5s] { font-size: 26px; }
    .lh-pub-rules-content[b-h23st8xz5s] { padding: 24px 16px 40px; }
    .lh-pub-rule-toggle[b-h23st8xz5s] { padding: 14px 16px; gap: 12px; }
    .lh-pub-rule-body[b-h23st8xz5s] { padding: 0 16px 16px 60px; }

    .lh-pub-rules-section-heading[b-h23st8xz5s] { margin-top: 40px; }
    .lh-pub-penalty-table-name[b-h23st8xz5s] { width: 35%; min-width: 110px; }
    .lh-pub-penalty-table thead th[b-h23st8xz5s],
    .lh-pub-penalty-table tbody td[b-h23st8xz5s] { padding: 8px; }
}
/* _content/LeagueHub/Components/Pages/Schedule.razor.rz.scp.css */
/* Public Schedule — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-schedule.md.
   Mockup: wwwroot/mockups/public/schedule.html.
   Tokens adopted from admin BRAND-KIT v1 per BRAND-KIT-PUBLIC §0 lazy-merge. */

/* Public-only accent override — dim-amber matches Home / Rules / Awards. */
.lh-pub-schedule-content[b-uggqdbvwl0],
.lh-pub-subhero[b-uggqdbvwl0] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero (shared chrome pattern) ───────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(navy → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1. */
.lh-pub-subhero[b-uggqdbvwl0] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-uggqdbvwl0] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-uggqdbvwl0] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-uggqdbvwl0] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: #fff;
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-uggqdbvwl0] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Page content frame ────────────────────────────────────────────────── */
.lh-pub-schedule-content[b-uggqdbvwl0] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
}

/* ─── Filter row ────────────────────────────────────────────────────────── */
.lh-pub-filters[b-uggqdbvwl0] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 16px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.lh-pub-tab-group[b-uggqdbvwl0] {
    display: inline-flex;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 10px;
    padding: 3px;
    gap: 2px;
}

.lh-pub-tab[b-uggqdbvwl0] {
    padding: 7px 16px;
    border-radius: 7px;
    border: none;
    background: transparent;
    font-family: 'Inter', sans-serif;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background 120ms ease, color 120ms ease;
}

.lh-pub-tab:hover[b-uggqdbvwl0] {
    color: var(--text);
}

.lh-pub-tab.active[b-uggqdbvwl0] {
    background: var(--navy, #0F172A);
    color: #fff;
}

.lh-pub-tab:focus-visible[b-uggqdbvwl0] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-team-chip[b-uggqdbvwl0] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 9px;
    padding: 7px 14px;
}

.lh-pub-team-chip-label[b-uggqdbvwl0] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
}

.lh-pub-team-chip select[b-uggqdbvwl0] {
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 12.5px;
    color: var(--text);
    font-weight: 500;
    outline: none;
    cursor: pointer;
}

/* ─── Date group ────────────────────────────────────────────────────────── */
.lh-pub-date-group[b-uggqdbvwl0] {
    margin-bottom: 28px;
}

.lh-pub-date-header[b-uggqdbvwl0] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 12px;
}

.lh-pub-date-text[b-uggqdbvwl0] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: var(--text);
}

.lh-pub-date-day[b-uggqdbvwl0] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.lh-pub-date-divider[b-uggqdbvwl0] {
    flex: 1;
    height: 1px;
    background: var(--border-light);
}

/* ─── Game rows ─────────────────────────────────────────────────────────── */
.lh-pub-rows[b-uggqdbvwl0] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.lh-pub-row[b-uggqdbvwl0] {
    display: grid;
    grid-template-columns: 80px 1fr auto auto;
    align-items: center;
    gap: 20px;
    width: 100%;
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 10px;
    padding: 14px 20px;
    cursor: pointer;
    text-align: left;
    font-family: inherit;
    color: inherit;
    transition: background 120ms ease;
}

.lh-pub-row:hover[b-uggqdbvwl0] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-row:focus-visible[b-uggqdbvwl0] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* Live row — dark gradient, no hover state flip */
.lh-pub-row.is-live[b-uggqdbvwl0] {
    background: var(--navy, #0F172A);
    border: 1px solid rgba(239, 68, 68, 0.25);
    color: #fff;
}

.lh-pub-row.is-live:hover[b-uggqdbvwl0] {
    background: var(--navy, #0F172A);
}

/* Audit Q4: postponed/cancelled dim only on All filter */
.lh-pub-row.is-dim[b-uggqdbvwl0] {
    opacity: 0.6;
}

/* Time cell */
.lh-pub-time-cell[b-uggqdbvwl0] {
    min-width: 0;
}

.lh-pub-time[b-uggqdbvwl0] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    font-weight: 600;
    color: var(--text);
}

.lh-pub-row.is-live .lh-pub-time[b-uggqdbvwl0] {
    color: rgba(255, 255, 255, 0.9);
}

.lh-pub-venue[b-uggqdbvwl0] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    margin-top: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lh-pub-row.is-live .lh-pub-venue[b-uggqdbvwl0] {
    color: rgba(255, 255, 255, 0.35);
}

/* Matchup */
.lh-pub-matchup[b-uggqdbvwl0] {
    display: flex;
    flex-direction: column;
    gap: 7px;
    min-width: 0;
}

.lh-pub-team-line[b-uggqdbvwl0] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.lh-pub-team-name[b-uggqdbvwl0] {
    font-size: 13px;
    font-weight: 500;
    flex: 1;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lh-pub-row.is-live .lh-pub-team-name[b-uggqdbvwl0] {
    color: #fff;
}

.lh-pub-team-score[b-uggqdbvwl0] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 18px;
    min-width: 20px;
    text-align: right;
    color: var(--text);
}

.lh-pub-row.is-live .lh-pub-team-score[b-uggqdbvwl0] {
    color: #fff;
}

/* Chevron */
.lh-pub-chev[b-uggqdbvwl0] {
    width: 14px;
    height: 14px;
    color: var(--border);
    flex-shrink: 0;
}

.lh-pub-row.is-live .lh-pub-chev[b-uggqdbvwl0] {
    color: rgba(255, 255, 255, 0.3);
}

/* ─── Skeleton loading ──────────────────────────────────────────────────── */
.lh-pub-row-skel[b-uggqdbvwl0] {
    display: grid;
    grid-template-columns: 80px 1fr 80px;
    gap: 16px;
    cursor: default;
}

.lh-pub-row-skel:hover[b-uggqdbvwl0] {
    background: var(--surface);
}

.lh-pub-skel-stack[b-uggqdbvwl0] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.lh-pub-skel-bar[b-uggqdbvwl0] {
    display: block;
    height: 12px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--surface-2, #FAFBFC) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-uggqdbvwl0 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-uggqdbvwl0 {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-uggqdbvwl0] { animation: none; background: var(--border-light); }
}

/* ─── Empty / pre-season state ──────────────────────────────────────────── */
.lh-pub-empty[b-uggqdbvwl0] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-empty-icon[b-uggqdbvwl0] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--surface-2, #FAFBFC);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}

.lh-pub-empty-icon svg[b-uggqdbvwl0] {
    width: 28px;
    height: 28px;
}

.lh-pub-empty-headline[b-uggqdbvwl0] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-uggqdbvwl0] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.lh-pub-empty-cta[b-uggqdbvwl0] {
    display: inline-block;
    padding: 8px 16px;
    background: var(--navy, #0F172A);
    color: #fff;
    border-radius: 8px;
    border: none;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 500;
    cursor: pointer;
    text-decoration: none;
}

.lh-pub-empty-cta:hover[b-uggqdbvwl0] {
    background: var(--slate, #1E293B);
}

/* ─── Error banner ──────────────────────────────────────────────────────── */
.lh-pub-error-banner[b-uggqdbvwl0] {
    background: var(--warning-bg, #FFFBEB);
    border: 1px solid var(--warning, #FDE68A);
    color: var(--warning-dark, #92400E);
    border-radius: 10px;
    padding: 14px 18px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.lh-pub-retry-btn[b-uggqdbvwl0] {
    margin-left: auto;
    padding: 6px 12px;
    background: var(--warning-dark, #92400E);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
}

/* ─── Mobile (audit Q5: collapse to 2 rows under 480px) ─────────────────── */
@media (max-width: 768px) {
    .lh-pub-subhero[b-uggqdbvwl0] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-uggqdbvwl0] { font-size: 26px; }
    .lh-pub-schedule-content[b-uggqdbvwl0] { padding: 24px 16px 40px; }

    .lh-pub-row[b-uggqdbvwl0] {
        grid-template-columns: 1fr auto;
        gap: 12px;
        padding: 12px 14px;
    }

    .lh-pub-row .lh-pub-chev[b-uggqdbvwl0] { display: none; }

    .lh-pub-time-cell[b-uggqdbvwl0] {
        grid-column: 1 / -1;
        display: flex;
        justify-content: space-between;
        align-items: baseline;
        gap: 8px;
    }

    .lh-pub-matchup[b-uggqdbvwl0] {
        grid-column: 1;
    }

    .lh-pub-row > :global(.lh-game-status)[b-uggqdbvwl0] {
        grid-column: 2;
        justify-self: end;
    }
}
/* _content/LeagueHub/Components/Pages/Sponsors.razor.rz.scp.css */
/* Public Sponsors page (v3) — scoped styles.
   Mockup: wwwroot/mockups/public/sponsors.html
   UI spec: prd-templates/ui-design-sponsors.md §1a
   Tokens: BRAND-KIT-PUBLIC.md (public surface) */

/* ── Subhero ──
   Standard public-page subhero block. Per the established convention in
   Stats / Schedule / GameCenter / Awards / Alumni, every public page duplicates
   these rules in its scoped CSS — there is no global subhero rule. Missing this
   block was the regression behind PR 546 (Stats Leaders) and PR 557 (Alumni). */
.lh-pub-subhero[b-ouom8lbl23] {
    background: var(--navy);
    border-bottom: 1px solid var(--text-on-slate-secondary);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-ouom8lbl23] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
    display: flex;
    align-items: center;
    gap: 40px;
}

.lh-pub-subhero-text[b-ouom8lbl23] {
    flex: 1;
}

.lh-pub-subhero-kicker[b-ouom8lbl23] {
    font-family: var(--font-mono);
    font-size: var(--pub-text-table-head);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--league-secondary);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-ouom8lbl23] {
    font-family: var(--font-heading);
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-ouom8lbl23] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-body);
    color: var(--text-on-slate-secondary);
    margin: 0;
}

.lh-pub-subhero-figure[b-ouom8lbl23] {
    flex-shrink: 0;
    max-width: 320px;
}

.lh-pub-subhero-figure img[b-ouom8lbl23] {
    max-width: 100%;
    height: auto;
    display: block;
}

/* ── Page body ── */
.lh-pub-sponsors-content[b-ouom8lbl23] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 40px 32px 60px;
}

/* ── Tier section ── */
.lh-pub-sponsors-tier-section[b-ouom8lbl23] {
    margin-bottom: 40px;
}

.lh-pub-sponsors-tier-section:last-of-type[b-ouom8lbl23] {
    margin-bottom: 0;
}

.lh-pub-sponsors-tier-heading[b-ouom8lbl23] {
    font-family: var(--font-heading);
    font-size: var(--pub-text-subtitle);
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.3px;
    margin: 0 0 16px;
}

/* ── Sponsor card grid ── */
.lh-pub-sponsors-grid[b-ouom8lbl23] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}

@media (max-width: 991px) {
    .lh-pub-sponsors-grid[b-ouom8lbl23] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 575px) {
    .lh-pub-sponsors-grid[b-ouom8lbl23] {
        grid-template-columns: 1fr;
    }
}

/* ── Sponsor card ── */
.lh-pub-sponsor-card[b-ouom8lbl23] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: 20px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 12px;
    min-height: 140px;
    text-align: center;
    transition: box-shadow 200ms ease, transform 200ms ease;
}

.lh-pub-sponsor-card:hover[b-ouom8lbl23] {
    box-shadow: var(--shadow-md);
    transform: translateY(-2px);
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-sponsor-card[b-ouom8lbl23] {
        transition: none;
    }
    .lh-pub-sponsor-card:hover[b-ouom8lbl23] {
        transform: none;
    }
}

.lh-pub-sponsor-card a[b-ouom8lbl23] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
}

.lh-pub-sponsor-card-logo[b-ouom8lbl23] {
    max-width: 100%;
    max-height: 80px;
    object-fit: contain;
}

.lh-pub-sponsor-card-name[b-ouom8lbl23] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-body);
    font-weight: 500;
    color: var(--text);
    line-height: 1.3;
}

/* ── Skeleton cards (loading state) ── */
.lh-pub-sponsor-card.is-skel[b-ouom8lbl23] {
    pointer-events: none;
}

.lh-pub-sponsors-tier-heading-skel[b-ouom8lbl23] {
    display: block;
    height: 24px;
    width: 120px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.lh-pub-sponsor-card-logo-skel[b-ouom8lbl23] {
    display: block;
    width: 100%;
    height: 60px;
    border-radius: 8px;
}

.lh-pub-sponsor-card-name-skel[b-ouom8lbl23] {
    display: block;
    width: 70%;
    height: 14px;
    border-radius: 4px;
}

/* ── Empty state ── */
.lh-pub-sponsors-empty-state[b-ouom8lbl23] {
    text-align: center;
    padding: 60px 20px;
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
}

.lh-pub-sponsors-empty-state i[b-ouom8lbl23] {
    font-size: var(--pub-icon-empty-state, 32px);
    color: var(--text-muted);
    margin-bottom: 16px;
    display: block;
}

.lh-pub-sponsors-empty-heading[b-ouom8lbl23] {
    font-family: var(--font-heading);
    font-size: var(--pub-text-subtitle);
    font-weight: 700;
    color: var(--text);
    margin-bottom: 8px;
}

.lh-pub-sponsors-empty-sub[b-ouom8lbl23] {
    font-family: var(--font-sans);
    font-size: var(--pub-text-body);
    color: var(--text-muted);
    margin: 0;
}

/* ── Partner CTA block ── */
.lh-pub-sponsors-cta-block[b-ouom8lbl23] {
    margin-top: 40px;
    padding: 32px;
    background: var(--league-primary, var(--navy));
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}

.lh-pub-sponsors-cta-heading[b-ouom8lbl23] {
    font-family: var(--font-heading);
    font-size: var(--pub-text-subtitle);
    font-weight: 700;
    color: var(--white);
    margin: 0;
}

@media (max-width: 575px) {
    .lh-pub-sponsors-cta-block[b-ouom8lbl23] {
        flex-direction: column;
        text-align: center;
        padding: 24px 16px;
    }

    .lh-pub-subhero-inner[b-ouom8lbl23] {
        flex-direction: column;
        align-items: flex-start;
        gap: 24px;
    }

    .lh-pub-subhero-figure[b-ouom8lbl23] {
        max-width: 100%;
    }
}
/* _content/LeagueHub/Components/Pages/Standings.razor.rz.scp.css */
/* Public Standings — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-standings.md.
   Mockup: wwwroot/mockups/public/standings.html.

   --success / --danger / --pub-* eligibility tokens already exist globally —
   reused here per audit §8 (no redundant token additions). */

.lh-pub-standings-content[b-3zbv0om0fs],
.lh-pub-subhero[b-3zbv0om0fs] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero ───────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(navy → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-3zbv0om0fs] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-3zbv0om0fs] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-3zbv0om0fs] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-3zbv0om0fs] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: #fff;
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-3zbv0om0fs] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Page content frame ────────────────────────────────────────────────── */
.lh-pub-standings-content[b-3zbv0om0fs] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    /* Page-scoped min-height — same rationale as Schedule.razor.css: keeps
       footer at viewport bottom when the table is short (small leagues, or
       the empty/error/pre-season EmptyState branches). Layout-level fix
       (<main> flex-grow in MainLayout) deferred until a MainLayout pass. */
    min-height: calc(100vh - 320px);
}

/* ─── Card wrapper ──────────────────────────────────────────────────────── */
.lh-pub-card[b-3zbv0om0fs] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: var(--shadow-sm, 0 1px 3px rgba(15, 23, 42, 0.04));
    overflow: hidden;
}

.lh-pub-card + .lh-pub-card[b-3zbv0om0fs] {
    margin-top: 18px;
}

.lh-pub-card-header[b-3zbv0om0fs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-card-title[b-3zbv0om0fs] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

.lh-pub-card-kicker[b-3zbv0om0fs] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

/* ─── Table ─────────────────────────────────────────────────────────────── */
.lh-pub-table-wrap[b-3zbv0om0fs] {
    overflow-x: auto;
}

.lh-pub-table[b-3zbv0om0fs] {
    width: 100%;
    border-collapse: collapse;
    min-width: 700px;
}

.lh-pub-table thead[b-3zbv0om0fs] {
    background: var(--slate, #1E293B);
}

.lh-pub-table thead th[b-3zbv0om0fs] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 12px 14px;
    white-space: nowrap;
}

.lh-pub-table thead th.left[b-3zbv0om0fs] { text-align: left; }
.lh-pub-table thead th.right[b-3zbv0om0fs] { text-align: right; }

.lh-pub-table tbody tr[b-3zbv0om0fs] {
    border-bottom: 1px solid var(--border-light);
    transition: background 100ms ease;
    cursor: pointer;
}

.lh-pub-table tbody tr:hover[b-3zbv0om0fs],
.lh-pub-table tbody tr:focus-visible[b-3zbv0om0fs] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-table tbody tr:focus-visible[b-3zbv0om0fs] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

/* ─── Cell variants ─────────────────────────────────────────────────────── */
.lh-pub-rank[b-3zbv0om0fs] {
    padding: 13px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    color: var(--text-muted);
}

.lh-pub-rank.top-highlight[b-3zbv0om0fs] {
    color: var(--accent);
}

.lh-pub-team-cell[b-3zbv0om0fs] {
    padding: 13px 14px;
}

.lh-pub-team-stack[b-3zbv0om0fs] {
    display: flex;
    align-items: center;
    gap: 12px;
}

.lh-pub-team-name[b-3zbv0om0fs] {
    font-weight: 600;
    font-size: 14px;
    color: var(--text);
}

.lh-pub-team-abbr[b-3zbv0om0fs] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    margin-top: 2px;
}

.lh-pub-num[b-3zbv0om0fs] {
    padding: 13px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 13px;
    color: var(--text-secondary);
}

/* ─── PTS column with progress bar ──────────────────────────────────────── */
.lh-pub-pts-cell[b-3zbv0om0fs] {
    padding: 13px 14px;
    text-align: right;
}

.lh-pub-pts-stack[b-3zbv0om0fs] {
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: flex-end;
}

.lh-pub-pts-bar[b-3zbv0om0fs] {
    width: 40px;
    height: 5px;
    background: var(--border-light);
    border-radius: 3px;
    overflow: hidden;
}

.lh-pub-pts-bar-fill[b-3zbv0om0fs] {
    height: 100%;
    background: var(--navy, #0F172A);
    border-radius: 3px;
    transition: width 300ms ease;
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-pts-bar-fill[b-3zbv0om0fs] { transition: none; }
}

.lh-pub-pts-value[b-3zbv0om0fs] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
    min-width: 22px;
    text-align: right;
    color: var(--text);
}

/* ─── GD column coloring ────────────────────────────────────────────────── */
.lh-pub-gd[b-3zbv0om0fs] {
    padding: 13px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 13px;
    font-weight: 600;
}

.lh-pub-gd.pos[b-3zbv0om0fs] { color: var(--success, #10B981); }
.lh-pub-gd.neg[b-3zbv0om0fs] { color: var(--danger, #EF4444); }
.lh-pub-gd.zero[b-3zbv0om0fs] { color: var(--text-muted); }

/* ─── Footer caption + legend ───────────────────────────────────────────── */
.lh-pub-table-footer[b-3zbv0om0fs] {
    padding: 10px 20px;
    background: var(--surface-2, #FAFBFC);
    border-top: 1px solid var(--border-light);
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    letter-spacing: 0.5px;
}

.lh-pub-legend[b-3zbv0om0fs] {
    margin-top: 14px;
    font-size: 12px;
    color: var(--text-muted);
}

.lh-pub-legend strong[b-3zbv0om0fs] {
    color: var(--text-secondary);
}

/* ─── Skeleton bar ──────────────────────────────────────────────────────── */
.lh-pub-skel-bar[b-3zbv0om0fs] {
    display: block;
    height: 12px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--surface-2, #FAFBFC) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-3zbv0om0fs 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-3zbv0om0fs {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-3zbv0om0fs] { animation: none; background: var(--border-light); }
}

/* ─── EmptyState ────────────────────────────────────────────────────────── */
.lh-pub-empty[b-3zbv0om0fs] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-empty-icon[b-3zbv0om0fs] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--surface-2, #FAFBFC);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}

.lh-pub-empty-icon svg[b-3zbv0om0fs] {
    width: 28px;
    height: 28px;
}

.lh-pub-empty-headline[b-3zbv0om0fs] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-3zbv0om0fs] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.lh-pub-empty-cta[b-3zbv0om0fs] {
    display: inline-block;
    padding: 8px 16px;
    background: var(--navy, #0F172A);
    color: #fff;
    border-radius: 8px;
    font-size: 12.5px;
    font-weight: 500;
    text-decoration: none;
}

.lh-pub-empty-cta:hover[b-3zbv0om0fs] {
    background: var(--slate, #1E293B);
}

/* ─── Error banner ──────────────────────────────────────────────────────── */
.lh-pub-error-banner[b-3zbv0om0fs] {
    background: var(--warning-bg, #FFFBEB);
    border: 1px solid var(--warning, #FDE68A);
    color: var(--warning-dark, #92400E);
    border-radius: 10px;
    padding: 14px 18px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.lh-pub-retry-btn[b-3zbv0om0fs] {
    margin-left: auto;
    padding: 6px 12px;
    background: var(--warning-dark, #92400E);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
}

/* ─── Mobile (audit Q4: horizontal scroll under 768px) ──────────────────── */
@media (max-width: 768px) {
    .lh-pub-subhero[b-3zbv0om0fs] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-3zbv0om0fs] { font-size: 26px; }
    .lh-pub-standings-content[b-3zbv0om0fs] { padding: 24px 16px 40px; }
}
/* _content/LeagueHub/Components/Pages/Stats.razor.rz.scp.css */
/* Public Stats — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-stats.md.
   Mockup: wwwroot/mockups/public/stats.html.
   Tokens from docs/BRAND-KIT-PUBLIC.md §P.1–P.9.
   Position pill tokens (--pub-pos-*) added to style.css P.9. */

/* ─── Public-only accent override (same scoped pattern as PublicAwards/Rules/Home) ──
   Re-declares --accent / --accent-dark as static values within this component's scope
   so the amber used on the subhero kicker and top-3 rank cells is not pulled from
   the admin BRAND-KIT v1 runtime channel. The values are identical to the mockup vars. */
.lh-pub-subhero[b-yofze14po9],
.lh-pub-stats-content[b-yofze14po9] {
    --accent:      #E59500;
    --accent-dark: #B87700;
}


/* ─── SubHero ────────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(slate-deep → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-yofze14po9] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-yofze14po9] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-yofze14po9] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent-dark);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-yofze14po9] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-yofze14po9] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0 0 12px;
}

.lh-pub-stats-archive-link[b-yofze14po9] {
    font-size: 12px;
    color: rgba(255, 255, 255, 0.4);
    text-decoration: none;
    transition: color 150ms ease;
}

.lh-pub-stats-archive-link:hover[b-yofze14po9],
.lh-pub-stats-archive-link:focus-visible[b-yofze14po9] {
    color: rgba(255, 255, 255, 0.75);
}


/* ─── Page body ──────────────────────────────────────────────────────────── */
.lh-pub-stats-content[b-yofze14po9] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 24px 32px 60px;
}


/* ─── Filters row ────────────────────────────────────────────────────────── */
.lh-pub-stats-filters[b-yofze14po9] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 20px;
}


/* ─── Mode toggle (Players / Goalies) ────────────────────────────────────── */
.lh-pub-mode-group[b-yofze14po9] {
    display: flex;
    gap: 4px;
}

.lh-pub-mode-btn[b-yofze14po9] {
    padding: 8px 16px;
    border-radius: var(--radius-sm);
    border: 1px solid var(--pub-border);
    font-size: 12.5px;
    font-weight: 500;
    background: var(--pub-surface);
    color: var(--pub-text-secondary);
    cursor: pointer;
    transition: background-color var(--lh-motion-fast) ease,
                border-color   var(--lh-motion-fast) ease,
                color          var(--lh-motion-fast) ease;
}

.lh-pub-mode-btn.active[b-yofze14po9],
.lh-pub-mode-btn:focus-visible[b-yofze14po9] {
    background: var(--pub-slate-deep);
    color: var(--white);
    border-color: var(--pub-slate-deep);
}

.lh-pub-mode-btn:hover:not(.active)[b-yofze14po9] {
    background: var(--pub-surface-alt);
    border-color: var(--pub-border);
}


/* ─── Pill groups (sort tabs + position filter) ───────────────────────────── */
.lh-pub-pill-group[b-yofze14po9] {
    display: inline-flex;
    background: var(--pub-surface);
    border: 1px solid var(--pub-border);
    border-radius: var(--radius-sm);
    padding: 3px;
    gap: 2px;
}

.lh-pub-pill-btn[b-yofze14po9] {
    padding: 6px 14px;
    border-radius: 6px;
    font-family: 'Geist Mono', monospace;
    font-size: 11.5px;
    font-weight: 600;
    color: var(--pub-text-muted);
    cursor: pointer;
    background: transparent;
    border: none;
    transition: background-color var(--lh-motion-fast) ease,
                color          var(--lh-motion-fast) ease;
}

.lh-pub-pill-btn.active[b-yofze14po9] {
    background: var(--pub-slate-deep);
    color: var(--white);
}

.lh-pub-pill-btn:hover:not(.active)[b-yofze14po9] {
    background: var(--pub-surface-alt);
    color: var(--pub-text);
}

.lh-pub-pill-btn:focus-visible[b-yofze14po9] {
    outline: 2px solid var(--league-secondary);
    outline-offset: 2px;
}


/* ─── Card + table ───────────────────────────────────────────────────────── */
.lh-pub-stats-card[b-yofze14po9] {
    background: var(--pub-surface);
    border-radius: var(--r-lg);
    border: 1px solid var(--pub-border-light);
    box-shadow: var(--pub-shadow-sm);
    overflow: hidden;
}

.lh-pub-table-wrap[b-yofze14po9] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.lh-pub-table[b-yofze14po9] {
    width: 100%;
    border-collapse: collapse;
    min-width: 680px;
}

.lh-pub-th[b-yofze14po9] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 12px 14px;
    white-space: nowrap;
    background: var(--slate);
}

.lh-pub-th--left[b-yofze14po9]  { text-align: left; }
.lh-pub-th--right[b-yofze14po9] { text-align: right; }

.lh-pub-table-row[b-yofze14po9] {
    border-bottom: 1px solid var(--pub-border-light);
}

.lh-pub-table-row:hover[b-yofze14po9] {
    background: var(--pub-surface-alt);
}

.lh-pub-table-row:last-child[b-yofze14po9] {
    border-bottom: none;
}


/* ─── Rank cell ──────────────────────────────────────────────────────────── */
.lh-pub-rank[b-yofze14po9] {
    padding: 12px 14px;
    text-align: left;
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    color: var(--pub-text-muted);
    white-space: nowrap;
}

/* top-3 amber — audit R1. Applied by index position AFTER sort,
   so GAA ascending rank-1 is still correctly coloured. */
.lh-pub-rank--top3[b-yofze14po9] {
    color: var(--accent-dark);
}


/* ─── Player cell ────────────────────────────────────────────────────────── */
.lh-pub-player-cell[b-yofze14po9] {
    padding: 12px 14px;
    font-weight: 500;
    font-size: 13px;
    white-space: nowrap;
}

.lh-pub-player-link[b-yofze14po9] {
    color: var(--pub-text);
    text-decoration: none;
}

.lh-pub-player-link:hover[b-yofze14po9],
.lh-pub-player-link:focus-visible[b-yofze14po9] {
    color: var(--league-primary);
    text-decoration: underline;
}

.lh-pub-player-num[b-yofze14po9] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--pub-text-muted);
    margin-left: 6px;
}


/* ─── Team cell ──────────────────────────────────────────────────────────── */
.lh-pub-team-cell[b-yofze14po9] {
    padding: 12px 14px;
    white-space: nowrap;
}

.lh-pub-team-stack[b-yofze14po9] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.lh-pub-team-mini[b-yofze14po9] {
    width: 22px;
    height: 22px;
    border-radius: 5px;
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 8px;
    font-weight: 700;
    color: var(--white);
    flex-shrink: 0;
}

.lh-pub-team-name[b-yofze14po9] {
    font-size: 12px;
    color: var(--pub-text-secondary);
}


/* ─── Position pill cell ─────────────────────────────────────────────────── */
.lh-pub-pos-cell[b-yofze14po9] {
    padding: 12px 14px;
}

.lh-pub-pos-pill[b-yofze14po9] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 5px;
    white-space: nowrap;
}

/* Position colours via P.9 tokens from style.css :root */
.lh-pub-pos-pill--F[b-yofze14po9] { background: var(--pub-pos-F-bg); color: var(--pub-pos-F); }
.lh-pub-pos-pill--D[b-yofze14po9] { background: var(--pub-pos-D-bg); color: var(--pub-pos-D); }
.lh-pub-pos-pill--G[b-yofze14po9] { background: var(--pub-pos-G-bg); color: var(--pub-pos-G); }


/* ─── Numeric stat cell ──────────────────────────────────────────────────── */
.lh-pub-num[b-yofze14po9] {
    padding: 12px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--pub-text-secondary);
    white-space: nowrap;
}

/* Primary stat — bold, larger, full text colour */
.lh-pub-num--primary[b-yofze14po9] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--pub-text);
}

/* Muted text helper */
.lh-pub-text-muted[b-yofze14po9] {
    color: var(--pub-text-muted);
}


/* ─── Empty state ────────────────────────────────────────────────────────── */
.lh-pub-empty-state[b-yofze14po9] {
    background: var(--pub-surface);
    border: 1px dashed var(--pub-border);
    border-radius: var(--r-lg);
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 32px auto;
}

.lh-pub-empty-state--center[b-yofze14po9] {
    margin-top: 48px;
}

.lh-pub-empty-icon[b-yofze14po9] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--pub-surface-alt);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--pub-text-muted);
}

.lh-pub-empty-icon svg[b-yofze14po9] {
    width: 28px;
    height: 28px;
}

.lh-pub-empty-headline[b-yofze14po9] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--pub-text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-yofze14po9] {
    font-size: 13px;
    color: var(--pub-text-secondary);
    line-height: 1.6;
}


/* ─── CTA link (404 state) ───────────────────────────────────────────────── */
.lh-pub-stats-cta-link[b-yofze14po9] {
    display: inline-block;
    margin-top: 16px;
    font-size: 13px;
}


/* ─── Loading ─────────────────────────────────────────────────────────────── */
.lh-pub-stats-loading[b-yofze14po9] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 40px 0;
    justify-content: center;
    color: var(--pub-text-secondary);
}

.lh-pub-loading-label[b-yofze14po9] {
    font-size: 13px;
}


/* ─── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-subhero-inner[b-yofze14po9],
    .lh-pub-stats-content[b-yofze14po9] {
        padding-left: 16px;
        padding-right: 16px;
    }

    .lh-pub-subhero-title[b-yofze14po9] {
        font-size: 26px;
    }

    .lh-pub-stats-filters[b-yofze14po9] {
        gap: 8px;
    }

    .lh-pub-mode-btn[b-yofze14po9] {
        padding: 6px 12px;
        font-size: 12px;
    }
}

/* A11y motion guard */
@media (prefers-reduced-motion: reduce) {
    .lh-pub-mode-btn[b-yofze14po9],
    .lh-pub-pill-btn[b-yofze14po9],
    .lh-pub-stats-archive-link[b-yofze14po9] { transition: none; }
}
/* _content/LeagueHub/Components/Pages/StatsLeaders.razor.rz.scp.css */
/* StatsLeaders page-scoped CSS.
   Section header (LEADERBOARDS / Reg-Playoffs toggle) lives on this component.
   Leader-card chrome is in PublicLeaderCard.razor.css (scoped to that component
   so its <button> dropdown triggers and per-row gauge bars apply correctly to
   its own DOM). */

/* Per-page accent override — same scoped pattern as sibling pages
   (Standings/Schedule/Stats etc.). */
.lh-pub-subhero[b-nwx8ep8b2q],
.lh-pub-leaders-content[b-nwx8ep8b2q] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero (solid navy — matches sibling pages after the v3 sweep PR #527).
   Each public page scopes its own copy of these rules in its .razor.css per the
   established convention; if .lh-pub-subhero ever moves to public-kit.css this
   block can be removed. */
.lh-pub-subhero[b-nwx8ep8b2q] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-nwx8ep8b2q] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-nwx8ep8b2q] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-nwx8ep8b2q] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: #fff;
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-nwx8ep8b2q] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Page body ─── */
.lh-pub-leaders-content[b-nwx8ep8b2q] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    /* Page-scoped min-height — same shim as sibling pages */
    min-height: calc(100vh - 320px);
}

/* ─── Section header ─── */
.lh-pub-leaders-section-header[b-nwx8ep8b2q] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    margin-bottom: 20px;
    flex-wrap: wrap;
    gap: 16px;
}

.lh-pub-leaders-section-kicker[b-nwx8ep8b2q] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    color: var(--league-secondary, #E59500);
    text-transform: uppercase;
    letter-spacing: 1.6px;
    margin-bottom: 6px;
}

.lh-pub-leaders-section-title[b-nwx8ep8b2q] {
    font-family: 'Geist', sans-serif;
    font-size: 22px;
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.4px;
}

/* ─── Reg/Playoffs segmented toggle ─── */
.lh-pub-leaders-mode[b-nwx8ep8b2q] {
    display: inline-flex;
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 8px;
    padding: 4px;
    gap: 2px;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
}

.lh-pub-leaders-mode-btn[b-nwx8ep8b2q] {
    font-family: 'Inter', sans-serif;
    font-size: 12.5px;
    font-weight: 500;
    padding: 6px 14px;
    border: none;
    border-radius: 6px;
    background: none;
    color: var(--text-secondary);
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease;
}

.lh-pub-leaders-mode-btn.is-active[b-nwx8ep8b2q] {
    background: var(--navy, #0F172A);
    color: #fff;
    font-weight: 600;
}

.lh-pub-leaders-mode-btn:hover:not(.is-active)[b-nwx8ep8b2q] {
    background: var(--surface-2, #FAFBFC);
    color: var(--text);
}

.lh-pub-leaders-mode-btn:focus-visible[b-nwx8ep8b2q] {
    outline: 2px solid var(--league-secondary, #E59500);
    outline-offset: 2px;
}

/* ─── 2×2 grid ─── */
.lh-pub-leaders-grid[b-nwx8ep8b2q] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
}

/* ─── View full stats CTA ─── */
.lh-pub-leaders-cta-wrap[b-nwx8ep8b2q] {
    display: flex;
    justify-content: center;
    margin-top: 32px;
}

.lh-pub-leaders-cta[b-nwx8ep8b2q] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 22px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 999px;
    font-family: 'Inter', sans-serif;
    font-size: 13.5px;
    font-weight: 500;
    color: var(--text);
    text-decoration: none;
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    transition: background 150ms ease, border-color 150ms ease;
}

.lh-pub-leaders-cta:hover[b-nwx8ep8b2q] {
    background: var(--surface-2, #FAFBFC);
    border-color: var(--league-secondary, #E59500);
}

.lh-pub-leaders-cta:focus-visible[b-nwx8ep8b2q] {
    outline: 2px solid var(--league-secondary, #E59500);
    outline-offset: 2px;
}

/* Mobile */
@media (max-width: 768px) {
    .lh-pub-leaders-grid[b-nwx8ep8b2q] {
        grid-template-columns: 1fr;
    }
    .lh-pub-leaders-section-header[b-nwx8ep8b2q] {
        align-items: flex-start;
    }
    .lh-pub-leaders-content[b-nwx8ep8b2q] {
        padding: 24px 16px 40px;
    }
}
/* _content/LeagueHub/Components/Pages/Suspensions.razor.rz.scp.css */
/* Public Suspensions — scoped CSS for the v2 redesign.
   Audit:   docs/design-audit/public-suspensions.md
   Mockup:  wwwroot/mockups/public/suspensions.html
   Tokens:  --pub-* from style.css :root public section (P.1–P.9).
   Hard rules: no raw hex, no Bootstrap semantic classes, no admin token consumption. */

/* ─── Public-only accent override (same scoped pattern as Awards/Rules/Home) ─ */
.lh-pub-subhero[b-nmxahk634i],
.lh-pub-susp-content[b-nmxahk634i] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero ────────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(slate-deep → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-nmxahk634i] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-nmxahk634i] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-nmxahk634i] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-nmxahk634i] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-nmxahk634i] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Page body ──────────────────────────────────────────────────────────── */
.lh-pub-susp-content[b-nmxahk634i] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
}

/* ─── Filter pill group ──────────────────────────────────────────────────── */
.lh-pub-pill-group[b-nmxahk634i] {
    display: inline-flex;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 3px;
    gap: 2px;
    margin-bottom: 20px;
}

.lh-pub-pill-btn[b-nmxahk634i] {
    padding: 7px 16px;
    border-radius: 6px;
    font-size: 12.5px;
    font-weight: 500;
    color: var(--text-secondary);
    cursor: pointer;
    background: transparent;
    border: none;
    font-family: inherit;
    transition: background-color 150ms ease, color 150ms ease;
}

.lh-pub-pill-btn--active[b-nmxahk634i] {
    background: var(--slate);
    color: var(--white);
}

.lh-pub-pill-btn:focus-visible[b-nmxahk634i] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* ─── Card + table wrapper ───────────────────────────────────────────────── */
.lh-pub-card[b-nmxahk634i] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: var(--shadow-sm);
    overflow: hidden;
}

.lh-pub-table-wrap[b-nmxahk634i] {
    overflow-x: auto;
}

/* ─── Table ──────────────────────────────────────────────────────────────── */
.lh-pub-table[b-nmxahk634i] {
    width: 100%;
    border-collapse: collapse;
    min-width: 700px;
}

.lh-pub-table thead[b-nmxahk634i] {
    background: var(--slate);
}

.lh-pub-th-left[b-nmxahk634i],
.lh-pub-th-right[b-nmxahk634i] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 12px 14px;
}

.lh-pub-th-left[b-nmxahk634i]  { text-align: left; }
.lh-pub-th-right[b-nmxahk634i] { text-align: right; }

.lh-pub-table tbody tr[b-nmxahk634i] {
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-table tbody tr:last-child[b-nmxahk634i] {
    border-bottom: none;
}

/* ─── Table cells ────────────────────────────────────────────────────────── */
.lh-pub-cell[b-nmxahk634i] {
    padding: 13px 14px;
}

.lh-pub-player-cell[b-nmxahk634i] {
    padding: 13px 14px;
    font-weight: 500;
    font-size: 13px;
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lh-pub-reason[b-nmxahk634i] {
    padding: 13px 14px;
    font-size: 13px;
    color: var(--text-secondary);
}

.lh-pub-issued[b-nmxahk634i] {
    padding: 13px 14px;
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text-muted);
    white-space: nowrap;
}

.lh-pub-num[b-nmxahk634i] {
    padding: 13px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 13px;
}

/* ─── Remaining count color signal ───────────────────────────────────────── */
/* R1 (WCAG 1.4.1): color is paired with progress bar + "X served" kicker.  */
.lh-pub-remaining[b-nmxahk634i] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
}

.lh-pub-remaining--active[b-nmxahk634i] { color: var(--pub-danger); }
.lh-pub-remaining--served[b-nmxahk634i] { color: var(--pub-success); }

/* ─── Team stack (abbr + name) ───────────────────────────────────────────── */
.lh-pub-team-stack[b-nmxahk634i] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 12.5px;
}

.lh-pub-team-mini[b-nmxahk634i] {
    width: 22px;
    height: 22px;
    border-radius: 5px;
    background: var(--slate);
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    font-weight: 700;
    color: var(--white);
    flex-shrink: 0;
}

/* ─── Inline rare-status pills ───────────────────────────────────────────── */
.lh-pub-susp-pill[b-nmxahk634i] {
    display: inline-block;
    margin-left: 8px;
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    font-weight: 600;
    padding: 2px 7px;
    border-radius: 4px;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    vertical-align: middle;
}

/* Appealed — amber/warning tone */
.lh-pub-susp-pill--appealed[b-nmxahk634i] {
    background: var(--pub-postponed-bg);
    color: var(--pub-postponed);
}

/* Overturned / Rescinded — neutral tone */
.lh-pub-susp-pill--neutral[b-nmxahk634i] {
    background: var(--pub-cancelled-bg);
    color: var(--pub-cancelled);
}

/* ─── Progress bar ───────────────────────────────────────────────────────── */
.lh-pub-progress-cell[b-nmxahk634i] {
    padding: 13px 14px;
    min-width: 130px;
}

.lh-pub-progress-bar[b-nmxahk634i] {
    height: 6px;
    background: var(--border-light);
    border-radius: 3px;
    overflow: hidden;
}

.lh-pub-progress-fill[b-nmxahk634i] {
    height: 100%;
    background: var(--pub-danger);
    border-radius: 3px;
    transition: width 300ms ease;
}

.lh-pub-progress-fill--served[b-nmxahk634i] {
    background: var(--pub-success);
}

.lh-pub-progress-meta[b-nmxahk634i] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    color: var(--text-muted);
    margin-top: 3px;
}

/* ─── Error alert ────────────────────────────────────────────────────────── */
.lh-pub-susp-error[b-nmxahk634i] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.lh-pub-susp-error-icon[b-nmxahk634i] {
    width: 18px;
    height: 18px;
    flex-shrink: 0;
}

/* ─── Empty state ────────────────────────────────────────────────────────── */
.lh-pub-empty[b-nmxahk634i] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-empty-icon[b-nmxahk634i] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--pub-success-bg);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--pub-success);
}

.lh-pub-empty-icon svg[b-nmxahk634i] {
    width: 28px;
    height: 28px;
}

.lh-pub-empty-headline[b-nmxahk634i] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-nmxahk634i] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin: 0;
}

/* ─── Skeleton (loading state) ───────────────────────────────────────────── */
.lh-pub-skeleton[b-nmxahk634i] {
    background: var(--border-light);
    border-radius: 4px;
    animation: lh-susp-pulse-b-nmxahk634i 1.4s ease-in-out infinite;
}

.lh-pub-skeleton--name[b-nmxahk634i]   { height: 14px; width: 140px; }
.lh-pub-skeleton--team[b-nmxahk634i]   { height: 14px; width: 100px; }
.lh-pub-skeleton--reason[b-nmxahk634i] { height: 14px; width: 160px; }
.lh-pub-skeleton--date[b-nmxahk634i]   { height: 12px; width: 80px; }
.lh-pub-skeleton--num[b-nmxahk634i]    { height: 14px; width: 24px; margin-left: auto; }
.lh-pub-skeleton--bar[b-nmxahk634i]    { height: 6px;  width: 100px; border-radius: 3px; }

@keyframes lh-susp-pulse-b-nmxahk634i {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.45; }
}

/* ─── Mobile card stack (xs/sm) ──────────────────────────────────────────── */
.lh-pub-mob-card[b-nmxahk634i] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    box-shadow: var(--shadow-sm);
    padding: 14px 16px;
    margin-bottom: 10px;
}

.lh-pub-mob-header[b-nmxahk634i] {
    margin-bottom: 10px;
}

.lh-pub-mob-player[b-nmxahk634i] {
    font-weight: 600;
    font-size: 14px;
    color: var(--text);
    margin-bottom: 3px;
}

.lh-pub-mob-meta[b-nmxahk634i] {
    font-size: 12px;
    color: var(--text-muted);
}

.lh-pub-mob-body[b-nmxahk634i] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.lh-pub-mob-games[b-nmxahk634i] {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.lh-pub-mob-games-of[b-nmxahk634i] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text-muted);
}

.lh-pub-mob-reason[b-nmxahk634i] {
    font-size: 12px;
    color: var(--text-secondary);
    border-top: 1px solid var(--border-light);
    padding-top: 6px;
    margin-top: 2px;
}

/* ─── Motion guards ──────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .lh-pub-skeleton[b-nmxahk634i] {
        animation: none;
    }

    .lh-pub-progress-fill[b-nmxahk634i] {
        transition: none;
    }

    .lh-pub-pill-btn[b-nmxahk634i] {
        transition: none;
    }
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 600px) {
    .lh-pub-subhero[b-nmxahk634i] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-nmxahk634i] { font-size: 26px; }
    .lh-pub-susp-content[b-nmxahk634i] { padding: 24px 16px 40px; }
}
/* _content/LeagueHub/Components/Pages/TeamDetail.razor.rz.scp.css */
/* Public TeamDetail — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-teams.md.
   Mockup: wwwroot/mockups/public/team-detail.html. */

.lh-pub-teamdetail[b-74ubg6t01h] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
    --success-bg: #ECFDF5;
    --success-text: #047857;
    --danger-bg: #FEF2F2;
    --danger-text: #B91C1C;
}

/* ─── Hero (team-color gradient) ────────────────────────────────────────── */
.lh-pub-team-hero[b-74ubg6t01h] {
    padding: 44px 0 40px;
}

.lh-pub-team-hero-inner[b-74ubg6t01h] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
    display: flex;
    align-items: center;
    gap: 28px;
    flex-wrap: wrap;
}

.lh-pub-team-sponsor-tile[b-74ubg6t01h] {
    width: 100px;
    height: 100px;
    border-radius: 16px;
    flex-shrink: 0;
    background: rgba(255, 255, 255, 0.12);
    border: 1.5px solid rgba(255, 255, 255, 0.22);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    overflow: hidden;
    position: relative;
}

.lh-pub-team-sponsor-logo[b-74ubg6t01h] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.lh-pub-team-sponsor-initials[b-74ubg6t01h] {
    font-family: 'Geist', sans-serif;
    font-weight: 800;
    font-size: 22px;
    color: rgba(255, 255, 255, 0.9);
    letter-spacing: -0.5px;
}

.lh-pub-team-sponsor-name[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 8px;
    color: rgba(255, 255, 255, 0.45);
    text-transform: uppercase;
    letter-spacing: 1px;
    text-align: center;
    padding: 0 8px;
    line-height: 1.4;
}

.lh-pub-team-hero-info[b-74ubg6t01h] {
    flex: 1;
    min-width: 240px;
}

.lh-pub-team-hero-kicker[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 1.4px;
    margin-bottom: 6px;
}

.lh-pub-team-hero-title[b-74ubg6t01h] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 800;
    color: #fff;
    margin: 0 0 6px;
    letter-spacing: -0.8px;
}

.lh-pub-team-hero-meta[b-74ubg6t01h] {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.55);
    margin: 0;
}

/* v3: SPONSORED BY mini-block under captain meta (per public-team-player-v3.md §1.2). */
.lh-pub-team-hero-sponsoredby[b-74ubg6t01h] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin-top: 10px;
    padding: 4px 10px;
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 6px;
}

.lh-pub-team-hero-sponsoredby-kicker[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 1.2px;
}

.lh-pub-team-hero-sponsoredby-logo[b-74ubg6t01h] {
    height: 18px;
    width: auto;
    max-width: 80px;
    object-fit: contain;
}

.lh-pub-team-hero-sponsoredby-name[b-74ubg6t01h] {
    font-family: 'Inter', sans-serif;
    font-size: 12px;
    font-weight: 500;
    color: rgba(255, 255, 255, 0.85);
}

/* KPI strip — 7 tiles desktop, collapse to 4 on mobile (audit Q5) */
.lh-pub-team-kpis[b-74ubg6t01h] {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
}

.lh-pub-team-kpi[b-74ubg6t01h] {
    text-align: center;
    background: rgba(255, 255, 255, 0.1);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 10px;
    padding: 10px 14px;
    min-width: 52px;
}

.lh-pub-team-kpi-label[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 5px;
}

.lh-pub-team-kpi-value[b-74ubg6t01h] {
    font-family: 'Geist', sans-serif;
    font-size: 22px;
    font-weight: 700;
    color: #fff;
}

/* ─── Body ──────────────────────────────────────────────────────────────── */
.lh-pub-team-content[b-74ubg6t01h] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    display: flex;
    flex-direction: column;
    gap: 24px;
    /* Page-scoped min-height — same as sibling pages. */
    min-height: calc(100vh - 320px);
}

.lh-pub-card[b-74ubg6t01h] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    overflow: hidden;
}

.lh-pub-card-skel[b-74ubg6t01h] {
    min-height: 200px;
}

.lh-pub-card-header[b-74ubg6t01h] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 20px;
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-card-title[b-74ubg6t01h] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    color: var(--text);
}

.lh-pub-card-action[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
}

/* Goalie table (inline — only TeamDetail uses this shape today) */
.lh-pub-goalie-table[b-74ubg6t01h] {
    width: 100%;
    border-collapse: collapse;
}

.lh-pub-goalie-table thead[b-74ubg6t01h] {
    background: var(--slate, #1E293B);
}

.lh-pub-goalie-table thead th[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 11px 14px;
    white-space: nowrap;
}

.lh-pub-goalie-table thead th.left[b-74ubg6t01h] { text-align: left; }
.lh-pub-goalie-table thead th.right[b-74ubg6t01h] { text-align: right; }

.lh-pub-goalie-table tbody tr[b-74ubg6t01h] {
    border-bottom: 1px solid var(--border-light);
    cursor: pointer;
    transition: background 100ms ease;
}

.lh-pub-goalie-table tbody tr:hover[b-74ubg6t01h],
.lh-pub-goalie-table tbody tr:focus-visible[b-74ubg6t01h] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-goalie-table tbody tr:focus-visible[b-74ubg6t01h] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-roster-wrap[b-74ubg6t01h] {
    overflow-x: auto;
}

.lh-pub-roster-num[b-74ubg6t01h] {
    padding: 12px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text-secondary);
}

.lh-pub-roster-num.muted[b-74ubg6t01h] { color: var(--text-muted); }

.lh-pub-roster-player-cell[b-74ubg6t01h] { padding: 12px 14px; }

.lh-pub-roster-player-stack[b-74ubg6t01h] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.lh-pub-roster-initials[b-74ubg6t01h] {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: var(--border-light);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 10px;
    color: var(--text-secondary);
    flex-shrink: 0;
}

.lh-pub-roster-name[b-74ubg6t01h] {
    font-weight: 600;
    font-size: 13px;
    color: var(--text);
}

/* ─── Results + Upcoming 50/50 ──────────────────────────────────────────── */
.lh-pub-results-grid[b-74ubg6t01h] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
    align-items: start;
}

.lh-pub-empty-row[b-74ubg6t01h] {
    padding: 32px;
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
}

.lh-pub-result-row[b-74ubg6t01h] {
    display: grid;
    grid-template-columns: 64px 26px 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 11px 16px;
    border-bottom: 1px solid var(--border-light);
    cursor: pointer;
    text-decoration: none;
    color: inherit;
}

.lh-pub-result-row:last-child[b-74ubg6t01h] { border-bottom: none; }
.lh-pub-result-row:hover[b-74ubg6t01h] { background: var(--surface-2, #FAFBFC); }

.lh-pub-result-date[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
}

.lh-pub-result-wl[b-74ubg6t01h] {
    width: 22px;
    height: 22px;
    border-radius: 5px;
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    font-weight: 700;
}

.lh-pub-result-wl.W[b-74ubg6t01h] {
    background: var(--success-bg);
    color: var(--success-text);
}

.lh-pub-result-wl.L[b-74ubg6t01h] {
    background: var(--danger-bg);
    color: var(--danger-text);
}

.lh-pub-result-opp[b-74ubg6t01h] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 12px;
    overflow: hidden;
}

.lh-pub-result-vs[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    flex-shrink: 0;
}

.lh-pub-result-name[b-74ubg6t01h] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lh-pub-result-score[b-74ubg6t01h] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
    letter-spacing: -0.3px;
    white-space: nowrap;
}

.lh-pub-result-score.W[b-74ubg6t01h] { color: var(--success-text); }
.lh-pub-result-score.L[b-74ubg6t01h] { color: var(--danger-text); }

.lh-pub-upcoming-row[b-74ubg6t01h] {
    display: grid;
    grid-template-columns: 64px 36px 1fr;
    align-items: center;
    gap: 10px;
    padding: 11px 16px;
    border-bottom: 1px solid var(--border-light);
    cursor: pointer;
    text-decoration: none;
    color: inherit;
}

.lh-pub-upcoming-row:last-child[b-74ubg6t01h] { border-bottom: none; }
.lh-pub-upcoming-row:hover[b-74ubg6t01h] { background: var(--surface-2, #FAFBFC); }

.lh-pub-upcoming-date[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 600;
    color: var(--text);
}

.lh-pub-upcoming-time[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
}

.lh-pub-upcoming-venue-kicker[b-74ubg6t01h] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

/* ─── Empty / 404 / error ───────────────────────────────────────────────── */
.lh-pub-empty[b-74ubg6t01h] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-empty-icon[b-74ubg6t01h] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--surface-2, #FAFBFC);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}

.lh-pub-empty-icon svg[b-74ubg6t01h] { width: 28px; height: 28px; }

.lh-pub-empty-headline[b-74ubg6t01h] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-empty-sub[b-74ubg6t01h] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.lh-pub-empty-cta[b-74ubg6t01h] {
    display: inline-block;
    padding: 8px 16px;
    background: var(--navy, #0F172A);
    color: #fff;
    border-radius: 8px;
    font-size: 12.5px;
    font-weight: 500;
    text-decoration: none;
}

.lh-pub-empty-cta:hover[b-74ubg6t01h] { background: var(--slate, #1E293B); }

.lh-pub-error-banner[b-74ubg6t01h] {
    background: var(--warning-bg, #FFFBEB);
    border: 1px solid var(--warning, #FDE68A);
    color: var(--warning-dark, #92400E);
    border-radius: 10px;
    padding: 14px 18px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.lh-pub-retry-btn[b-74ubg6t01h] {
    margin-left: auto;
    padding: 6px 12px;
    background: var(--warning-dark, #92400E);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
}

/* Skeleton */
.lh-pub-skel-bar[b-74ubg6t01h] {
    display: inline-block;
    background: linear-gradient(90deg, rgba(255,255,255,0.1) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0.1) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-74ubg6t01h 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-74ubg6t01h {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-74ubg6t01h] { animation: none; }
}

/* ─── Mobile ────────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-team-hero-title[b-74ubg6t01h] { font-size: 28px; }
    .lh-pub-team-content[b-74ubg6t01h] { padding: 24px 16px 40px; }
    .lh-pub-results-grid[b-74ubg6t01h] { grid-template-columns: 1fr; }
    /* Audit Q5: KPI strip collapses 7 → 4 on mobile (hide secondary tiles) */
    .lh-pub-team-kpi:nth-child(n+5)[b-74ubg6t01h] { display: none; }
}
/* _content/LeagueHub/Components/Pages/TeamsList.razor.rz.scp.css */
/* Public TeamsList — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-teams.md.
   Mockup: wwwroot/mockups/public/teams-list.html. */

.lh-pub-teams-content[b-xq6tfdi7yq],
.lh-pub-subhero[b-xq6tfdi7yq] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* SubHero (shared chrome pattern) */
.lh-pub-subhero[b-xq6tfdi7yq] {
    background: linear-gradient(180deg, var(--navy, #0F172A) 0%, var(--slate, #1E293B) 100%);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}
.lh-pub-subhero-inner[b-xq6tfdi7yq] { max-width: 1280px; margin: 0 auto; padding: 0 32px; }
.lh-pub-subhero-kicker[b-xq6tfdi7yq] {
    font-family: 'Geist Mono', monospace; font-size: 11px; font-weight: 500;
    text-transform: uppercase; letter-spacing: 1.6px; color: var(--accent);
    margin-bottom: 8px;
}
.lh-pub-subhero-title[b-xq6tfdi7yq] {
    font-family: 'Geist', sans-serif; font-size: 34px; font-weight: 700;
    letter-spacing: -0.8px; color: #fff; margin: 0 0 6px;
}
.lh-pub-subhero-sub[b-xq6tfdi7yq] { font-family: 'Inter', sans-serif; font-size: 14px; color: rgba(255,255,255,0.5); margin: 0; }

.lh-pub-teams-content[b-xq6tfdi7yq] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
    /* Page-scoped min-height so a small league (3 teams) doesn't let the
       footer ride up. Same shim as Schedule / Standings. */
    min-height: calc(100vh - 320px);
}

.lh-pub-teams-grid[b-xq6tfdi7yq] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 18px;
}

/* ─── Team card ─────────────────────────────────────────────────────────── */
.lh-pub-team-card[b-xq6tfdi7yq] {
    border-radius: 14px;
    overflow: hidden;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    background: var(--surface);
    cursor: pointer;
    text-decoration: none;
    color: inherit;
    transition: transform 150ms ease, box-shadow 150ms ease;
    display: block;
}

.lh-pub-team-card:hover[b-xq6tfdi7yq] {
    transform: translateY(-3px);
    box-shadow: 0 8px 24px rgba(15, 23, 42, 0.1);
}

.lh-pub-team-card:focus-visible[b-xq6tfdi7yq] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-team-card[b-xq6tfdi7yq] { transition: none; }
    .lh-pub-team-card:hover[b-xq6tfdi7yq] { transform: none; }
}

.lh-pub-team-card-top[b-xq6tfdi7yq] {
    padding: 28px 24px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    color: #fff;
}

.lh-pub-team-large-badge[b-xq6tfdi7yq] {
    width: 54px;
    height: 54px;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.18);
    border: 1.5px solid rgba(255, 255, 255, 0.25);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 800;
    font-size: 18px;
    color: #fff;
}

.lh-pub-team-rank-pill[b-xq6tfdi7yq] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: rgba(255, 255, 255, 0.65);
    text-transform: uppercase;
    letter-spacing: 1px;
    background: rgba(255, 255, 255, 0.1);
    padding: 4px 10px;
    border-radius: 6px;
}

.lh-pub-team-card-body[b-xq6tfdi7yq] {
    padding: 16px 20px;
}

.lh-pub-team-card-name[b-xq6tfdi7yq] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 15px;
    margin-bottom: 4px;
    color: var(--text);
}

.lh-pub-team-card-captain[b-xq6tfdi7yq] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    margin-bottom: 14px;
}

.lh-pub-team-card-stats[b-xq6tfdi7yq] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    padding-top: 12px;
    border-top: 1px solid var(--border-light);
}

.lh-pub-stat-cell[b-xq6tfdi7yq] { text-align: center; }

.lh-pub-stat-label[b-xq6tfdi7yq] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    margin-bottom: 3px;
}

.lh-pub-stat-value[b-xq6tfdi7yq] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 16px;
    color: var(--text);
}

.lh-pub-stat-value.gd-pos[b-xq6tfdi7yq] { color: var(--success, #10B981); }
.lh-pub-stat-value.gd-neg[b-xq6tfdi7yq] { color: var(--danger, #EF4444); }
.lh-pub-stat-value.gd-zero[b-xq6tfdi7yq] { color: var(--text-muted); }

/* Skeleton */
.lh-pub-team-card-skel[b-xq6tfdi7yq] { cursor: default; }
.lh-pub-team-card-skel:hover[b-xq6tfdi7yq] { transform: none; box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04); }
.lh-pub-team-card-skel .lh-pub-team-card-top[b-xq6tfdi7yq] { min-height: 110px; }

.lh-pub-skel-bar[b-xq6tfdi7yq] {
    display: block;
    height: 12px;
    background: linear-gradient(90deg, var(--border-light) 0%, var(--surface-2, #FAFBFC) 50%, var(--border-light) 100%);
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-pub-skel-shimmer-b-xq6tfdi7yq 1.6s linear infinite;
}

@keyframes lh-pub-skel-shimmer-b-xq6tfdi7yq {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-xq6tfdi7yq] { animation: none; background: var(--border-light); }
}

/* Empty + error */
.lh-pub-empty[b-xq6tfdi7yq] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-empty-icon[b-xq6tfdi7yq] {
    width: 56px; height: 56px; border-radius: 16px;
    background: var(--surface-2, #FAFBFC);
    display: grid; place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}
.lh-pub-empty-icon svg[b-xq6tfdi7yq] { width: 28px; height: 28px; }

.lh-pub-empty-headline[b-xq6tfdi7yq] {
    font-family: 'Geist', sans-serif; font-size: 18px; font-weight: 700;
    color: var(--text); margin-bottom: 6px;
}

.lh-pub-empty-sub[b-xq6tfdi7yq] {
    font-size: 13px; color: var(--text-secondary); line-height: 1.6;
}

.lh-pub-error-banner[b-xq6tfdi7yq] {
    background: var(--warning-bg, #FFFBEB);
    border: 1px solid var(--warning, #FDE68A);
    color: var(--warning-dark, #92400E);
    border-radius: 10px;
    padding: 14px 18px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.lh-pub-retry-btn[b-xq6tfdi7yq] {
    margin-left: auto;
    padding: 6px 12px;
    background: var(--warning-dark, #92400E);
    color: #fff;
    border: none;
    border-radius: 6px;
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
}

@media (max-width: 900px) {
    .lh-pub-teams-grid[b-xq6tfdi7yq] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 600px) {
    .lh-pub-subhero[b-xq6tfdi7yq] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-xq6tfdi7yq] { font-size: 26px; }
    .lh-pub-teams-grid[b-xq6tfdi7yq] { grid-template-columns: 1fr; gap: 12px; }
    .lh-pub-teams-content[b-xq6tfdi7yq] { padding: 24px 16px 40px; }
}
/* _content/LeagueHub/Components/Pages/Transactions.razor.rz.scp.css */
/* Public Transactions — scoped CSS for the v2 redesign.
   Audit: docs/design-audit/public-transactions.md (Gate 1, Q1-Q6 locked, signed off #454).
   Lazy-merge contract: keep public page selectors scoped here, inherit shared theme tokens,
   and allow local accent overrides where the public v2 pattern requires them.
   Transaction-type pill tokens live in style.css P.11. */

/* ─── Public-only accent override (shared SubHero pattern) ──────────────── */
.lh-pub-subhero[b-dr9vi0uzqb],
.lh-pub-transactions-content[b-dr9vi0uzqb] {
    --accent: #B87700;
    --accent-dark: #8B5A00;
}

/* ─── SubHero ────────────────────────────────────────────────────────────── */
/* v3: solid var(--navy) — was linear-gradient(slate-deep → slate) in v2.
   Per docs/design-audit/public-schedule-v3.md §1.1 (sweep follow-up to PR #524). */
.lh-pub-subhero[b-dr9vi0uzqb] {
    background: var(--navy, #0F172A);
    border-bottom: 1px solid rgba(255, 255, 255, 0.06);
    padding: 40px 0 36px;
}

.lh-pub-subhero-inner[b-dr9vi0uzqb] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 0 32px;
}

.lh-pub-subhero-kicker[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1.6px;
    color: var(--accent);
    margin-bottom: 8px;
}

.lh-pub-subhero-title[b-dr9vi0uzqb] {
    font-family: 'Geist', sans-serif;
    font-size: 34px;
    font-weight: 700;
    letter-spacing: -0.8px;
    color: var(--white);
    margin: 0 0 6px;
}

.lh-pub-subhero-sub[b-dr9vi0uzqb] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    color: rgba(255, 255, 255, 0.5);
    margin: 0;
}

/* ─── Page body ──────────────────────────────────────────────────────────── */
.lh-pub-transactions-content[b-dr9vi0uzqb] {
    max-width: 1280px;
    margin: 0 auto;
    padding: 32px 32px 60px;
}

/* ─── Error banner ───────────────────────────────────────────────────────── */
.lh-pub-error-banner[b-dr9vi0uzqb] {
    background: var(--warning-bg);
    border: 1px solid var(--warning);
    color: var(--warning-dark);
    border-radius: 10px;
    padding: 14px 18px;
    margin-bottom: 20px;
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
}

.lh-pub-retry-btn[b-dr9vi0uzqb] {
    margin-left: auto;
    padding: 6px 12px;
    background: var(--warning-dark);
    color: var(--white);
    border: none;
    border-radius: 6px;
    font-family: inherit;
    font-size: 11.5px;
    font-weight: 600;
    cursor: pointer;
}

/* ─── Compact filter row (Q1) ────────────────────────────────────────────── */
.lh-pub-tx-filter-row[b-dr9vi0uzqb] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.lh-pub-tx-team-chip[b-dr9vi0uzqb] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 9px;
    padding: 7px 14px;
}

.lh-pub-tx-team-chip-label[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: var(--text-muted);
    white-space: nowrap;
}

.lh-pub-tx-team-select[b-dr9vi0uzqb] {
    border: none;
    background: transparent;
    font-family: inherit;
    font-size: 12.5px;
    color: var(--text);
    font-weight: 500;
    cursor: pointer;
    min-width: 130px;
}

/* Keyboard a11y — outline: none on the select removed the default focus
   ring; replace with the same amber ring used by sibling buttons (Copilot
   review #470). The outline renders directly on the <select> element;
   the 2px offset keeps it visually adjacent to the parent chip wrapper. */
.lh-pub-tx-team-select:focus-visible[b-dr9vi0uzqb] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    border-radius: 4px;
}

.lh-pub-tx-clear-btn[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 500;
    color: var(--text-secondary);
    background: transparent;
    border: 1px solid var(--border);
    border-radius: 7px;
    padding: 6px 12px;
    cursor: pointer;
    transition: color 120ms ease, border-color 120ms ease;
}

.lh-pub-tx-clear-btn:hover[b-dr9vi0uzqb] {
    color: var(--text);
    border-color: var(--text-muted);
}

.lh-pub-tx-clear-btn:focus-visible[b-dr9vi0uzqb] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

/* ─── Transaction card (wrapper) ─────────────────────────────────────────── */
.lh-pub-tx-card[b-dr9vi0uzqb] {
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    overflow: hidden;
}

/* ─── Transaction row ────────────────────────────────────────────────────── */
/* Default layout (Q4 — no Notes): 3 visible cols: date / type-pill / detail */
.lh-pub-tx-row[b-dr9vi0uzqb] {
    display: grid;
    grid-template-columns: 80px 120px 1fr;
    align-items: start;
    gap: 16px;
    padding: 13px 20px;
    border-bottom: 1px solid var(--border-light);
}

/* Q4: Notes-column variant adds a 4th col when ShowNotesColumn is true */
.lh-pub-tx-row.lh-pub-tx-row--with-notes[b-dr9vi0uzqb] {
    grid-template-columns: 80px 120px 1fr 200px;
}

.lh-pub-tx-row:last-child[b-dr9vi0uzqb] {
    border-bottom: none;
}

.lh-pub-tx-row:hover[b-dr9vi0uzqb] {
    background: var(--pub-surface-alt);
}

/* Skeleton row */
.lh-pub-tx-row--skel[b-dr9vi0uzqb] {
    pointer-events: none;
    gap: 12px;
    align-items: center;
}

.lh-pub-tx-row--skel:hover[b-dr9vi0uzqb] {
    background: var(--surface);
}

/* ─── Date col ───────────────────────────────────────────────────────────── */
.lh-pub-tx-date[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 400;
    color: var(--text-muted);
    padding-top: 2px;
    white-space: nowrap;
}

/* ─── Type-pill col ──────────────────────────────────────────────────────── */
.lh-pub-tx-type[b-dr9vi0uzqb] {
    display: flex;
    align-items: flex-start;
    padding-top: 1px;
}

.lh-pub-tx-pill[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    border-radius: 5px;
    padding: 3px 8px;
    display: inline-block;
    white-space: nowrap;
}

/* P.11 transaction pill variants — see style.css P.11 block */
.lh-pub-tx-pill--trade[b-dr9vi0uzqb] {
    background: var(--pub-tx-trade-bg);
    color: var(--pub-tx-trade);
}

.lh-pub-tx-pill--signing[b-dr9vi0uzqb] {
    background: var(--pub-tx-signing-bg);
    color: var(--pub-tx-signing);
}

.lh-pub-tx-pill--release[b-dr9vi0uzqb] {
    background: var(--pub-tx-release-bg);
    color: var(--pub-tx-release);
}

.lh-pub-tx-pill--callup[b-dr9vi0uzqb] {
    background: var(--pub-tx-callup-bg);
    color: var(--pub-tx-callup);
}

.lh-pub-tx-pill--neutral[b-dr9vi0uzqb] {
    background: var(--pub-surface-alt);
    color: var(--text-muted);
}

/* ─── Detail col ─────────────────────────────────────────────────────────── */
.lh-pub-tx-detail[b-dr9vi0uzqb] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}

.lh-pub-tx-player[b-dr9vi0uzqb] {
    font-size: 13px;
    font-weight: 500;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lh-pub-tx-move[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: var(--text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ─── Notes col (Q4 — rendered only when ShowNotesColumn is true) ────────── */
.lh-pub-tx-notes[b-dr9vi0uzqb] {
    font-size: 12px;
    color: var(--text-secondary);
    text-align: right;
    max-width: 200px;
    overflow: hidden;
    text-overflow: ellipsis;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    word-break: break-word;
}

/* ─── Skeleton bars ──────────────────────────────────────────────────────── */
.lh-pub-skel-bar[b-dr9vi0uzqb] {
    display: block;
    height: 12px;
    background: linear-gradient(
        90deg,
        var(--border-light) 0%,
        var(--pub-surface-alt) 50%,
        var(--border-light) 100%
    );
    background-size: 200% 100%;
    border-radius: 4px;
    animation: lh-tx-skel-shimmer-b-dr9vi0uzqb 1.6s linear infinite;
}

.lh-pub-tx-skel-detail[b-dr9vi0uzqb] {
    display: flex;
    flex-direction: column;
    gap: 5px;
}

@keyframes lh-tx-skel-shimmer-b-dr9vi0uzqb {
    0%   { background-position: 200% 0; }
    100% { background-position: -200% 0; }
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-skel-bar[b-dr9vi0uzqb] {
        animation: none;
        background: var(--border-light);
    }
}

/* ─── Pagination (Q2 — mono chevron buttons) ─────────────────────────────── */
.lh-pub-tx-pagination[b-dr9vi0uzqb] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    margin-top: 20px;
}

.lh-pub-tx-pag-btn[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 16px;
    font-weight: 500;
    color: var(--text-secondary);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 7px 14px;
    cursor: pointer;
    transition: color 120ms ease, background 120ms ease;
    line-height: 1;
}

.lh-pub-tx-pag-btn:hover:not(:disabled)[b-dr9vi0uzqb] {
    color: var(--text);
    background: var(--pub-surface-alt);
}

.lh-pub-tx-pag-btn:focus-visible[b-dr9vi0uzqb] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-tx-pag-btn.is-disabled[b-dr9vi0uzqb],
.lh-pub-tx-pag-btn:disabled[b-dr9vi0uzqb] {
    opacity: 0.35;
    cursor: not-allowed;
}

.lh-pub-tx-pag-indicator[b-dr9vi0uzqb] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    font-weight: 500;
    color: var(--text-muted);
    min-width: 80px;
    text-align: center;
}

/* ─── Empty state ────────────────────────────────────────────────────────── */
.lh-pub-tx-empty[b-dr9vi0uzqb] {
    background: var(--surface);
    border: 1px dashed var(--border);
    border-radius: 14px;
    padding: 60px 32px;
    text-align: center;
    max-width: 540px;
    margin: 0 auto;
}

.lh-pub-tx-empty-icon[b-dr9vi0uzqb] {
    width: 56px;
    height: 56px;
    border-radius: 16px;
    background: var(--pub-surface-alt);
    display: grid;
    place-items: center;
    margin: 0 auto 16px;
    color: var(--text-muted);
}

.lh-pub-tx-empty-icon svg[b-dr9vi0uzqb] {
    width: 28px;
    height: 28px;
}

.lh-pub-tx-empty-headline[b-dr9vi0uzqb] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 6px;
}

.lh-pub-tx-empty-sub[b-dr9vi0uzqb] {
    font-size: 13px;
    color: var(--text-secondary);
    line-height: 1.6;
    margin-bottom: 16px;
}

.lh-pub-tx-empty-cta[b-dr9vi0uzqb] {
    display: inline-block;
    padding: 8px 16px;
    background: var(--slate);
    color: var(--white);
    border-radius: 8px;
    border: none;
    font-family: inherit;
    font-size: 12.5px;
    font-weight: 500;
    cursor: pointer;
    transition: background 120ms ease;
    text-decoration: none;
}

.lh-pub-tx-empty-cta:hover[b-dr9vi0uzqb] {
    background: var(--navy);
}

.lh-pub-tx-empty-cta:focus-visible[b-dr9vi0uzqb] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
    border-radius: 8px;
}

/* ─── Responsive ─────────────────────────────────────────────────────────── */
@media (max-width: 768px) {
    .lh-pub-subhero[b-dr9vi0uzqb] { padding: 28px 0 24px; }
    .lh-pub-subhero-title[b-dr9vi0uzqb] { font-size: 26px; }
    .lh-pub-transactions-content[b-dr9vi0uzqb] { padding: 24px 16px 40px; }

    /* Q6: single layout collapses naturally — just reduce column widths */
    .lh-pub-tx-row[b-dr9vi0uzqb] {
        grid-template-columns: 72px 100px 1fr;
        gap: 10px;
        padding: 11px 14px;
    }

    /* Q4: on small screens, Notes wraps below the detail col */
    .lh-pub-tx-row.lh-pub-tx-row--with-notes[b-dr9vi0uzqb] {
        grid-template-columns: 72px 100px 1fr;
        grid-template-rows: auto auto;
    }

    .lh-pub-tx-notes[b-dr9vi0uzqb] {
        grid-column: 3;
        text-align: left;
        max-width: none;
        font-size: 11px;
    }
}

@media (max-width: 480px) {
    .lh-pub-tx-row[b-dr9vi0uzqb] {
        grid-template-columns: 64px 90px 1fr;
        gap: 8px;
        padding: 10px 12px;
    }
}
/* _content/LeagueHub/Components/Shared/AdminBanner.razor.rz.scp.css */
/* Scoped CSS for Components/Shared/AdminBanner.razor.
   Kept with the component so every consumer inherits the styles — Blazor's
   CSS isolation would otherwise strip rules written in a page's own
   .razor.css from child-component markup. */

.lh-admin-banner[b-hdgb6wfhyn] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    margin-bottom: 12px;
    border-radius: 8px;
    border: 1px solid;
    font-size: 13px;
    line-height: 1.45;
}

.lh-admin-banner-icon[b-hdgb6wfhyn] {
    margin-top: 2px;
    flex-shrink: 0;
}

.lh-admin-banner-body[b-hdgb6wfhyn] {
    flex: 1;
    min-width: 0;
}

.lh-admin-banner-actions[b-hdgb6wfhyn] {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
}

.lh-admin-banner-dismiss[b-hdgb6wfhyn] {
    padding: 4px 8px;
}

.lh-admin-banner--danger[b-hdgb6wfhyn] {
    background: var(--danger-bg);
    border-color: var(--danger-tint);
    color: var(--danger-dark);
}

.lh-admin-banner--warning[b-hdgb6wfhyn] {
    background: var(--warning-bg);
    border-color: color-mix(in srgb, var(--warning) 30%, white);
    color: var(--warning-dark);
}

.lh-admin-banner--info[b-hdgb6wfhyn] {
    background: var(--info-bg);
    border-color: var(--info-border);
    color: var(--info-dark);
}

.lh-admin-banner--success[b-hdgb6wfhyn] {
    background: var(--success-bg);
    border-color: color-mix(in srgb, var(--success) 30%, white);
    color: var(--success-dark);
}
/* _content/LeagueHub/Components/Shared/GameStatusBadge.razor.rz.scp.css */
.lh-game-status[b-pazoio020d] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.8px;
    line-height: 1;
}

.lh-game-status.is-live[b-pazoio020d] {
    background: var(--pub-live);
    color: var(--white, #fff);
    padding: 3px 8px;
    border-radius: 5px;
    font-weight: 600;
}

.lh-game-status.is-final[b-pazoio020d] {
    color: var(--text-secondary);
}

.lh-game-status.is-scheduled[b-pazoio020d] {
    color: var(--text-muted);
}

.lh-game-status.is-postponed[b-pazoio020d] {
    color: var(--pub-postponed);
}

.lh-game-status.is-cancelled[b-pazoio020d] {
    color: var(--pub-cancelled);
}

.lh-game-status-dot[b-pazoio020d] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--white, #fff);
    animation: lh-game-status-pulse-b-pazoio020d 1.2s ease-out infinite;
}

@keyframes lh-game-status-pulse-b-pazoio020d {
    0%   { opacity: 1; transform: scale(1); }
    100% { opacity: 0; transform: scale(2.2); }
}

@media (prefers-reduced-motion: reduce) {
    .lh-game-status-dot[b-pazoio020d] { animation: none; }
}
/* _content/LeagueHub/Components/Shared/InitialsAvatar.razor.rz.scp.css */
.lh-initials-avatar[b-y1t6kyj8os] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    background: var(--avatar-bg);
    color: var(--avatar-fg);
    font-family: 'Geist Mono', monospace;
    font-weight: 600;
    flex-shrink: 0;
    user-select: none;
}

.lh-initials-avatar--sm[b-y1t6kyj8os] {
    width: 32px;
    height: 32px;
    font-size: 11px;
    border-radius: 6px;
}

.lh-initials-avatar--md[b-y1t6kyj8os] {
    width: 48px;
    height: 48px;
    font-size: 14px;
    border-radius: 8px;
}

.lh-initials-avatar--lg[b-y1t6kyj8os] {
    width: 64px;
    height: 64px;
    font-size: 18px;
    border-radius: 12px;
}
/* _content/LeagueHub/Components/Shared/PublicCaptainMatchupCard.razor.rz.scp.css */
/* PublicCaptainMatchupCard — shared captain matchup chrome.
   Used by GameCenter + GamePreview body row 1.
   Per docs/design-audit/public-gamepreview-v3.md Q2 (extraction). */

.lh-pub-cap-row[b-cy7lbf89ez] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 22px;
    cursor: pointer;
}

.lh-pub-cap-row--divider[b-cy7lbf89ez] {
    border-bottom: 1px solid var(--border-light);
}

.lh-pub-cap-row:hover[b-cy7lbf89ez],
.lh-pub-cap-row:focus-visible[b-cy7lbf89ez] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-cap-row:focus-visible[b-cy7lbf89ez] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-cap-info[b-cy7lbf89ez] {
    flex: 1;
}

.lh-pub-cap-name[b-cy7lbf89ez] {
    font-weight: 600;
    font-size: 13px;
    color: var(--text);
}

.lh-pub-cap-meta[b-cy7lbf89ez] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    margin-top: 2px;
}

.lh-pub-cap-stat[b-cy7lbf89ez] {
    text-align: center;
    min-width: 36px;
}

.lh-pub-cap-stat-label[b-cy7lbf89ez] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-bottom: 2px;
}

.lh-pub-cap-stat-value[b-cy7lbf89ez] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 16px;
    color: var(--text);
}

/* .lh-pub-team-mid is also used by PublicH2HCard — duplicated here so the
   captain row's team tile renders identically when the H2H card is absent.
   Per-team background is passed in as the --team-color custom property
   (set inline by the consumer) so we don't violate the T5 design-lint rule
   against arbitrary inline styles. Falls back to --text-secondary. */
.lh-pub-team-mid[b-cy7lbf89ez] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    margin: 0;
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
    background: var(--team-color, var(--text-secondary));
}
/* _content/LeagueHub/Components/Shared/PublicFormDots.razor.rz.scp.css */
/* PublicFormDots — shared form-row component.
   Audit: docs/design-audit/public-gamecenter.md Q6. */

.lh-pub-form-dots[b-o0xcs0up3g] {
    display: flex;
    justify-content: center;
    gap: 5px;
    margin-top: 10px;
}

.lh-pub-form-dot[b-o0xcs0up3g] {
    width: 22px;
    height: 22px;
    border-radius: 6px;
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 700;
}

/* Light-on-dark variant — used inside the dark slate hero */
.lh-pub-form-dot.W[b-o0xcs0up3g] {
    background: rgba(16, 185, 129, 0.2);
    color: #34D399;
}

.lh-pub-form-dot.L[b-o0xcs0up3g] {
    background: rgba(239, 68, 68, 0.2);
    color: #F87171;
}
/* _content/LeagueHub/Components/Shared/PublicGameScoreCard.razor.rz.scp.css */
.lh-pub-game-card[b-ppzb0kjpro] {
    display: block;
    background: var(--surface);
    border: 1px solid var(--border-light);
    border-radius: 12px;
    padding: 16px 18px;
    box-shadow: var(--shadow-sm);
    text-decoration: none;
    color: inherit;
    transition: transform 150ms ease, box-shadow 150ms ease;
}

.lh-pub-game-card:hover[b-ppzb0kjpro] {
    transform: translateY(-2px);
    box-shadow: var(--shadow-md);
}

.lh-pub-game-card:focus-visible[b-ppzb0kjpro] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-game-card.is-live[b-ppzb0kjpro] {
    background: linear-gradient(135deg, var(--slate), #0F172A);
    border-color: rgba(239, 68, 68, 0.30);
    box-shadow: 0 4px 20px rgba(239, 68, 68, 0.12);
    color: #fff;
}

.lh-pub-game-card-h[b-ppzb0kjpro] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 14px;
}

.lh-pub-game-venue[b-ppzb0kjpro] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
}

.lh-pub-game-card.is-live .lh-pub-game-venue[b-ppzb0kjpro] {
    color: rgba(255, 255, 255, 0.4);
}

.lh-pub-game-row[b-ppzb0kjpro] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 12px;
}

.lh-pub-game-team[b-ppzb0kjpro] {
    text-align: center;
}

.lh-pub-game-team-name[b-ppzb0kjpro] {
    font-family: 'Geist', sans-serif;
    font-weight: 600;
    font-size: var(--text-body-size);
    color: var(--text);
    margin-top: 6px;
    line-height: 1.2;
}

.lh-pub-game-card.is-live .lh-pub-game-team-name[b-ppzb0kjpro] {
    color: #fff;
}

.lh-pub-game-team-side[b-ppzb0kjpro] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    color: var(--text-muted);
    margin-top: 2px;
}

.lh-pub-game-card.is-live .lh-pub-game-team-side[b-ppzb0kjpro] {
    color: rgba(255, 255, 255, 0.4);
}

.lh-pub-game-score[b-ppzb0kjpro] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 28px;
    letter-spacing: -1px;
    color: var(--text);
}

.lh-pub-game-card.is-live .lh-pub-game-score[b-ppzb0kjpro] {
    color: #fff;
}

.lh-pub-game-time[b-ppzb0kjpro] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: var(--text-card-title-size);
    color: var(--text);
}

.lh-pub-game-date[b-ppzb0kjpro] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    color: var(--text-muted);
    margin-top: 2px;
}
/* _content/LeagueHub/Components/Shared/PublicH2HCard.razor.rz.scp.css */
/* PublicH2HCard — shared H2H card chrome.
   Used by GameCenter + GamePreview body row 1.
   Per docs/design-audit/public-gamepreview-v3.md Q2 (extraction). */

.lh-pub-h2h-stack[b-bjd2awhc8i] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 12px;
    padding: 20px 22px;
}

.lh-pub-h2h-side[b-bjd2awhc8i] {
    text-align: center;
}

.lh-pub-team-mid[b-bjd2awhc8i] {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    margin: 0 auto;
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 700;
    color: #fff;
    background: var(--team-color, var(--text-secondary));
}

.lh-pub-h2h-num[b-bjd2awhc8i] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 28px;
    margin-top: 8px;
    color: var(--text);
}

.lh-pub-h2h-label[b-bjd2awhc8i] {
    font-family: 'Geist Mono', monospace;
    font-size: 9.5px;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 2px;
}

.lh-pub-h2h-vs[b-bjd2awhc8i] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: var(--text-muted);
}

.lh-pub-h2h-bar[b-bjd2awhc8i] {
    height: 6px;
    border-radius: 3px;
    overflow: hidden;
    display: flex;
    margin: 0 22px 10px;
}

/* Per-team background passes through as --team-color (set inline by the
   consumer); the away bar's width also passes through as --bar-width. The
   home bar takes the remaining space via flex: 1. */
.lh-pub-h2h-bar-away[b-bjd2awhc8i] {
    background: var(--team-color, var(--text-secondary));
    width: var(--bar-width, 0%);
}

.lh-pub-h2h-bar-home[b-bjd2awhc8i] {
    background: var(--team-color, var(--text-secondary));
    flex: 1;
}

.lh-pub-h2h-meta[b-bjd2awhc8i] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    border-top: 1px solid var(--border-light);
    padding: 12px 22px;
}

/* Empty state — first-ever meeting */
.lh-pub-h2h-empty[b-bjd2awhc8i] {
    padding: 22px;
    text-align: center;
}

.lh-pub-h2h-empty-text[b-bjd2awhc8i] {
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    color: var(--text-secondary);
}

.lh-pub-h2h-empty-sub[b-bjd2awhc8i] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    color: var(--text-muted);
    margin-top: 6px;
    text-transform: uppercase;
    letter-spacing: 1px;
}
/* _content/LeagueHub/Components/Shared/PublicLeaderCard.razor.rz.scp.css */
/* PublicLeaderCard — shared leader card chrome.
   Used by StatsLeaders.razor 4× (Forwards / Defencemen / Rookies / Goalies).
   Per docs/design-audit/public-stats-leaders-v3.md Q4 (extraction). */

.lh-pub-leader-card[b-niyeizqxnq] {
    background: var(--surface);
    border-radius: 14px;
    border: 1px solid var(--border-light);
    box-shadow: 0 1px 3px rgba(15, 23, 42, 0.04);
    padding: 18px 20px;
}

.lh-pub-leader-card-header[b-niyeizqxnq] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

.lh-pub-leader-card-title[b-niyeizqxnq] {
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 700;
    color: var(--text);
}

/* ─── Stat toggle (PTS/G/A or GAA/SV%/SO) ─── */
.lh-pub-leader-stat-toggle[b-niyeizqxnq] {
    display: inline-flex;
    gap: 2px;
    background: var(--surface-2, #FAFBFC);
    border-radius: 6px;
    padding: 3px;
}

.lh-pub-leader-stat-btn[b-niyeizqxnq] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 600;
    padding: 4px 10px;
    border: none;
    border-radius: 4px;
    background: none;
    color: var(--text-muted);
    cursor: pointer;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    transition: background 150ms ease, color 150ms ease;
}

.lh-pub-leader-stat-btn.is-active[b-niyeizqxnq] {
    background: var(--navy, #0F172A);
    color: #fff;
}

.lh-pub-leader-stat-btn:hover:not(.is-active)[b-niyeizqxnq] {
    background: var(--surface);
    color: var(--text);
}

.lh-pub-leader-stat-btn:focus-visible[b-niyeizqxnq] {
    outline: 2px solid var(--league-secondary, #E59500);
    outline-offset: 2px;
}

/* ─── Leader row ─── */
.lh-pub-leader-row[b-niyeizqxnq] {
    display: grid;
    grid-template-columns: 24px 28px 1fr auto;
    align-items: center;
    gap: 10px;
    padding: 10px 0;
    cursor: pointer;
    position: relative;
    border-bottom: 1px solid var(--border-light);
    text-decoration: none;
    color: inherit;
}

.lh-pub-leader-row:last-child[b-niyeizqxnq] {
    border-bottom: none;
}

.lh-pub-leader-row:hover[b-niyeizqxnq] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-leader-row:focus-visible[b-niyeizqxnq] {
    outline: 2px solid var(--league-secondary, #E59500);
    outline-offset: -2px;
}

/* Gauge bar — absolute below the row baseline. Scales with --gauge-pct (0–1)
   set inline by the consumer (StatsLeaders) as rowValue/topValue. */
.lh-pub-leader-row[b-niyeizqxnq]::after {
    content: '';
    position: absolute;
    left: 62px;     /* skip rank + tile + gap */
    right: 60px;    /* leave room for the value */
    bottom: 8px;
    height: 2px;
    background: var(--border, #E5E7EB);
    border-radius: 2px;
    transform-origin: left;
    transform: scaleX(var(--gauge-pct, 0));
    transition: transform 300ms ease;
}

.lh-pub-leader-row.is-rank-1[b-niyeizqxnq]::after {
    background: var(--league-secondary, #E59500);
    height: 3px;
}

@media (prefers-reduced-motion: reduce) {
    .lh-pub-leader-row[b-niyeizqxnq]::after {
        transition: none;
    }
}

/* ─── Leader row cells ─── */
.lh-pub-leader-rank[b-niyeizqxnq] {
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    font-weight: 600;
    color: var(--text-muted);
    text-align: center;
}

.lh-pub-leader-row.is-rank-1 .lh-pub-leader-rank[b-niyeizqxnq] {
    color: var(--league-secondary, #E59500);
}

.lh-pub-leader-tile[b-niyeizqxnq] {
    width: 24px;
    height: 24px;
    border-radius: 6px;
    display: grid;
    place-items: center;
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    font-weight: 700;
    color: #fff;
    background: var(--team-color, var(--text-secondary));
}

.lh-pub-leader-name-stack[b-niyeizqxnq] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    overflow: hidden;
}

.lh-pub-leader-name[b-niyeizqxnq] {
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    font-weight: 500;
    color: var(--text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lh-pub-leader-jersey[b-niyeizqxnq] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    color: var(--text-muted);
    flex-shrink: 0;
}

.lh-pub-leader-value[b-niyeizqxnq] {
    font-family: 'Geist', sans-serif;
    font-size: 18px;
    font-weight: 700;
    color: var(--text);
    letter-spacing: -0.3px;
    white-space: nowrap;
}

/* ─── Empty state inside card ─── */
.lh-pub-leader-empty[b-niyeizqxnq] {
    padding: 40px 20px;
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
}
/* _content/LeagueHub/Components/Shared/PublicLeaderRow.razor.rz.scp.css */
.lh-pub-leader-row[b-t9of66zh4i] {
    display: grid;
    grid-template-columns: 28px 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px solid var(--border-light);
    text-decoration: none;
    color: inherit;
    transition: background 150ms ease;
}

.lh-pub-leader-row:hover[b-t9of66zh4i] {
    background: var(--surface-2);
}

.lh-pub-leader-row:focus-visible[b-t9of66zh4i] {
    outline: 2px solid var(--accent);
    outline-offset: 2px;
}

.lh-pub-leader-rank[b-t9of66zh4i] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-mono-label-size);
    font-weight: 600;
    color: var(--text-muted);
    text-align: center;
}

.lh-pub-leader-rank.is-top3[b-t9of66zh4i] {
    color: var(--accent);
}

.lh-pub-leader-player[b-t9of66zh4i] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.lh-pub-leader-text[b-t9of66zh4i] {
    display: flex;
    flex-direction: column;
}

.lh-pub-leader-name[b-t9of66zh4i] {
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: var(--text-body-size);
    color: var(--text);
}

.lh-pub-leader-meta[b-t9of66zh4i] {
    font-family: 'Geist Mono', monospace;
    font-size: var(--text-micro-size);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.8px;
    margin-top: 2px;
}

.lh-pub-leader-stat[b-t9of66zh4i] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 20px;
    letter-spacing: -0.5px;
    color: var(--text);
}
/* _content/LeagueHub/Components/Shared/PublicRosterTable.razor.rz.scp.css */
/* PublicRosterTable — skater roster table shared across public pages.
   Audit: docs/design-audit/public-teams.md Q5. */

:root[b-z25954qzfq] {
    --pos-F-bg: #FEF3C7; --pos-F: #92400E;
    --pos-D-bg: #DBEAFE; --pos-D: #1E40AF;
    --pos-G-bg: #E9D5FF; --pos-G: #6B21A8;
}

.lh-pub-roster-wrap[b-z25954qzfq] {
    overflow-x: auto;
}

.lh-pub-roster-table[b-z25954qzfq] {
    width: 100%;
    border-collapse: collapse;
}

.lh-pub-roster-table thead[b-z25954qzfq] {
    background: var(--slate, #1E293B);
}

.lh-pub-roster-table thead th[b-z25954qzfq] {
    font-family: 'Geist Mono', monospace;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 1px;
    color: rgba(255, 255, 255, 0.65);
    padding: 11px 14px;
    white-space: nowrap;
}

.lh-pub-roster-table thead th.left[b-z25954qzfq] { text-align: left; }
.lh-pub-roster-table thead th.right[b-z25954qzfq] { text-align: right; }

.lh-pub-roster-table tbody tr[b-z25954qzfq] {
    border-bottom: 1px solid var(--border-light);
    cursor: pointer;
    transition: background 100ms ease;
}

.lh-pub-roster-table tbody tr:hover[b-z25954qzfq],
.lh-pub-roster-table tbody tr:focus-visible[b-z25954qzfq] {
    background: var(--surface-2, #FAFBFC);
}

.lh-pub-roster-table tbody tr:focus-visible[b-z25954qzfq] {
    outline: 2px solid var(--accent);
    outline-offset: -2px;
}

.lh-pub-roster-num[b-z25954qzfq] {
    padding: 12px 14px;
    text-align: right;
    font-family: 'Geist Mono', monospace;
    font-size: 12px;
    color: var(--text-secondary);
}

.lh-pub-roster-num.muted[b-z25954qzfq] {
    color: var(--text-muted);
}

.lh-pub-roster-num.primary[b-z25954qzfq] {
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 14px;
    color: var(--text);
}

.lh-pub-roster-player-cell[b-z25954qzfq] {
    padding: 12px 14px;
}

.lh-pub-roster-player-stack[b-z25954qzfq] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.lh-pub-roster-initials[b-z25954qzfq] {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    background: var(--border-light);
    display: grid;
    place-items: center;
    font-family: 'Geist', sans-serif;
    font-weight: 700;
    font-size: 10px;
    color: var(--text-secondary);
    flex-shrink: 0;
}

.lh-pub-roster-name[b-z25954qzfq] {
    font-weight: 600;
    font-size: 13px;
    color: var(--text);
}

.lh-pub-roster-captain-tag[b-z25954qzfq] {
    font-family: 'Geist Mono', monospace;
    font-size: 9px;
    color: var(--accent);
    text-transform: uppercase;
    letter-spacing: 1px;
    margin-top: 1px;
}

.lh-pub-pos-pill[b-z25954qzfq] {
    font-family: 'Geist Mono', monospace;
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 5px;
}

.lh-pub-pos-pill.F[b-z25954qzfq] { background: var(--pos-F-bg); color: var(--pos-F); }
.lh-pub-pos-pill.D[b-z25954qzfq] { background: var(--pos-D-bg); color: var(--pos-D); }
.lh-pub-pos-pill.G[b-z25954qzfq] { background: var(--pos-G-bg); color: var(--pos-G); }

/* Empty row (rendered when no players) */
.lh-pub-roster-empty[b-z25954qzfq] {
    padding: 32px;
    text-align: center;
    color: var(--text-muted);
    font-size: 13px;
}
