/* /Components/Account/Pages/Register.razor.rz.scp.css */
/* Extracted inline styles (Blazor audit Batch G). */
.reg-invite-title[b-qeszxe322n] { font-size: .95rem; font-weight: 700; }
.reg-invite-sub[b-qeszxe322n] { margin-top: .2rem; }

/* Was hardcoded #15803d (light-theme green) — now theme-aware */
.reg-email-hint[b-qeszxe322n] { color: var(--success-text); font-weight: 600; }
/* /Components/Account/Shared/ManageLayout.razor.rz.scp.css */
.pam-page[b-omj82uf8tt] {
    max-width: 980px;
    margin: 0 auto;
    padding: 1.5rem 1.5rem 4rem;
}

.pam-shell[b-omj82uf8tt] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.pam-header[b-omj82uf8tt],
.pam-nav[b-omj82uf8tt],
.pam-content[b-omj82uf8tt] {
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 14px;
    background: var(--player-surface-card, var(--b9-surface-alt));
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
}

.pam-header[b-omj82uf8tt] {
    padding: 1.1rem 1.25rem;
}

/* "Back to My Profile" — the only way out of account settings without the browser button, and
   it measured 136x20 at 13.12px. A control label with a verb is READ text, so 14px, and 20px is
   not a target. The hit area is grown with padding and given straight back as an equal negative
   margin, so a thumb gets 48px and the header does not move; the pair must stay equal and
   opposite. Same treatment as the leaderboard's sponsors link. */
.pam-back-link[b-omj82uf8tt] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    text-decoration: none;
    color: var(--player-link, var(--b9-link));
    font-size: var(--font-size-sm);
    font-weight: 700;
    min-width: 48px;
    padding-block: 14px;
    margin-block: -14px;
}

/* Uppercase, letter-spaced furniture over the page title — a chip, so the 13px chip floor.
   It was 11.52px, under even the absolute floor, on the page where a golfer changes their
   password, email and two-factor settings. */
.pam-eyebrow[b-omj82uf8tt] {
    margin-top: .9rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.pam-title[b-omj82uf8tt] {
    margin: .3rem 0 .25rem;
    font-size: 1.4rem;
    font-weight: 800;
    color: var(--player-text-primary, var(--b9-text));
}

.pam-subtitle[b-omj82uf8tt] {
    margin: 0;
    max-width: 48rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    line-height: 1.6;
}

.pam-grid[b-omj82uf8tt] {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 1rem;
}

.pam-nav[b-omj82uf8tt] {
    padding: .85rem;
    align-self: start;
}

.pam-content[b-omj82uf8tt] {
    padding: 1.1rem 1.2rem;
}

.pam-content[b-omj82uf8tt]  h3 {
    margin: 0 0 1rem;
    color: var(--player-text-primary, var(--b9-text));
    font-size: 1.05rem;
    font-weight: 700;
}

.pam-content[b-omj82uf8tt]  .row {
    margin: 0;
}

.pam-content[b-omj82uf8tt]  .col-xl-6,
.pam-content[b-omj82uf8tt]  .col-lg-9,
.pam-content[b-omj82uf8tt]  .col-lg-3 {
    padding: 0;
    width: 100%;
    max-width: none;
    flex: 1 1 auto;
}

.pam-content[b-omj82uf8tt]  .alert {
    border-radius: 10px;
    border: 1px solid var(--player-border, var(--b9-border));
}

.pam-content[b-omj82uf8tt]  .alert-success {
    background: rgba(34, 197, 94, .12);
    color: #bbf7d0;
    border-color: rgba(34, 197, 94, .35);
}

.pam-content[b-omj82uf8tt]  .alert-danger,
.pam-content[b-omj82uf8tt]  .text-danger {
    color: #fca5a5 !important;
}

.pam-content[b-omj82uf8tt]  .form-control,
.pam-content[b-omj82uf8tt]  .form-select {
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border-color: var(--player-border, var(--b9-border));
    color: var(--player-text-primary, var(--b9-text));
}

.pam-content[b-omj82uf8tt]  .form-control:focus,
.pam-content[b-omj82uf8tt]  .form-select:focus {
    border-color: var(--player-link, var(--b9-link));
    box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--player-link, var(--b9-link)) 18%, transparent);
}

.pam-content[b-omj82uf8tt]  .form-floating > label,
.pam-content[b-omj82uf8tt]  .form-label,
.pam-content[b-omj82uf8tt]  p,
.pam-content[b-omj82uf8tt]  li,
.pam-content[b-omj82uf8tt]  small,
.pam-content[b-omj82uf8tt]  span,
.pam-content[b-omj82uf8tt]  .text-body-secondary {
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.pam-content[b-omj82uf8tt]  .form-floating > .form-control:focus ~ label,
.pam-content[b-omj82uf8tt]  .form-floating > .form-control:not(:placeholder-shown) ~ label,
.pam-content[b-omj82uf8tt]  .form-floating > .form-select ~ label {
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.pam-content[b-omj82uf8tt]  .btn-primary,
.pam-content[b-omj82uf8tt]  .btn.btn-primary {
    background: var(--player-link, var(--b9-link));
    border-color: var(--player-link, var(--b9-link));
}

.pam-content[b-omj82uf8tt]  .btn-secondary,
.pam-content[b-omj82uf8tt]  .btn-outline-secondary,
.pam-content[b-omj82uf8tt]  .btn-outline-primary,
.pam-content[b-omj82uf8tt]  .btn-outline-danger {
    background: transparent;
    border-color: var(--player-border, var(--b9-border));
    color: var(--player-text-primary, var(--b9-text));
}

.pam-content[b-omj82uf8tt]  a {
    color: var(--player-link, var(--b9-link));
}

.pam-nav[b-omj82uf8tt]  .nav {
    gap: .35rem;
}

/* 314x46 measured — two pixels under the floor, which is the most easily missed kind of miss.
   These four links ARE the navigation of account settings. ::deep because <NavLink> is a child
   component and a plain .nav-link rule would match nothing here. */
.pam-nav[b-omj82uf8tt]  .nav-link {
    display: flex;
    align-items: center;
    min-height: 48px;
    border-radius: 10px;
    padding: .6rem .75rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    background: transparent;
    font-weight: 600;
}

.pam-nav[b-omj82uf8tt]  .nav-link.active,
.pam-nav[b-omj82uf8tt]  .nav-link:hover {
    background: var(--player-surface-elev, var(--b9-surface-muted));
    color: var(--player-text-primary, var(--b9-text));
}

@media (max-width: 760px) {
    .pam-page[b-omj82uf8tt] {
        padding: 1.25rem 1rem 3rem;
    }

    .pam-grid[b-omj82uf8tt] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Admin/Registration/RegistrationPanel.razor.rz.scp.css */
.reg-panel[b-dotng9kxqf] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.reg-panel__header[b-dotng9kxqf] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
}

.reg-panel__title-row[b-dotng9kxqf] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.reg-panel__title[b-dotng9kxqf] {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
}

.reg-panel__status[b-dotng9kxqf] {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 0.2rem 0.65rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.reg-panel__status--success[b-dotng9kxqf] {
    background: var(--b9-success-soft);
    color: var(--b9-success-text);
}

.reg-panel__status--warning[b-dotng9kxqf] {
    background: var(--b9-warning-soft);
    color: var(--b9-warning-text);
}

.reg-panel__status--danger[b-dotng9kxqf] {
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
}

.reg-panel__status--info[b-dotng9kxqf] {
    background: var(--b9-info-soft);
    color: var(--b9-info-text);
}

.reg-panel__status--neutral[b-dotng9kxqf] {
    background: var(--b9-badge-neutral-bg);
    color: var(--b9-badge-neutral-text);
}

.reg-panel__summary[b-dotng9kxqf],
.reg-panel__section-body[b-dotng9kxqf],
.reg-panel__help[b-dotng9kxqf],
.reg-panel__capacity[b-dotng9kxqf],
.reg-panel__public-link[b-dotng9kxqf] {
    margin: 0;
    color: var(--text-secondary);
    font-size: 0.9rem;
    line-height: 1.5;
}

.reg-panel__grid[b-dotng9kxqf] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.85rem;
}

.reg-panel__section[b-dotng9kxqf] {
    border: 1px solid var(--border-subtle);
    border-radius: 0.75rem;
    padding: 0.85rem;
    background: var(--bg-surface);
}

.reg-panel__section--preview[b-dotng9kxqf] {
    grid-column: 1 / -1;
}

.reg-panel__section-title[b-dotng9kxqf],
.reg-panel__preview-title[b-dotng9kxqf] {
    margin: 0 0 0.35rem;
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--text-primary);
}

.reg-panel__note-list[b-dotng9kxqf] {
    margin: 0.5rem 0 0;
    padding-left: 1rem;
}

.reg-panel__disabled-note[b-dotng9kxqf] {
    color: var(--b9-warning-text);
    font-size: var(--font-size-sm);
}

.reg-panel__warnings[b-dotng9kxqf] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.reg-panel__errors[b-dotng9kxqf] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.reg-panel__error[b-dotng9kxqf] {
    border-left: 3px solid var(--b9-danger);
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
    padding: 0.65rem 0.8rem;
    border-radius: 0.5rem;
    font-size: var(--font-size-sm);
}

.reg-panel__warning[b-dotng9kxqf] {
    border-left: 3px solid var(--b9-warning);
    background: var(--b9-warning-soft);
    color: var(--b9-warning-text);
    padding: 0.65rem 0.8rem;
    border-radius: 0.5rem;
    font-size: var(--font-size-sm);
}

.reg-panel__action-feedback[b-dotng9kxqf] {
    padding: 0.55rem 0.8rem;
    border-radius: 0.5rem;
    font-size: var(--font-size-sm);
    margin-top: 0.35rem;
}

.reg-panel__action-feedback--success[b-dotng9kxqf] {
    border-left: 3px solid var(--b9-success);
    background: var(--b9-success-soft);
    color: var(--b9-success-text);
}

.reg-panel__action-feedback--error[b-dotng9kxqf] {
    border-left: 3px solid var(--b9-danger);
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
}

.reg-panel__compact[b-dotng9kxqf] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

/* Calm, link-style expander to reveal/hide the full registration explainer grid.

   This rendered at 1.11:1 — in the DOM and invisible on screen — on every event page, in both
   themes. --brand-soft is a BACKGROUND TINT: rgba(29,78,216,0.15) in dark and 0.10 in light, so
   light was the worse of the two. It is used as `background` in fifteen places and was used as
   `color` in exactly this one. The declared #7dd3fc fallback never applied, because the token is
   defined; a fallback only rescues an UNDEFINED token, which is what made this survive review.

   --b9-primary-text is the palette's ink variant and already flips per theme (#93C5FD dark,
   #1E40AF light), so no theme selector is needed — the same fix as .cc-readiness-fix.

   The 48px floor is CLAUDE.md's, and this control was ~22px: padding 0.15rem on a 0.85rem font,
   with no min-height. inline-flex keeps the label optically where it was while the hit area grows. */
.reg-panel__details-toggle[b-dotng9kxqf] {
    align-self: flex-start;
    margin-top: 0.25rem;
    padding: 0.15rem 0;
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    background: none;
    border: none;
    color: var(--b9-primary-text, #7dd3fc);
    font-size: var(--font-size-sm);
    font-weight: 600;
    cursor: pointer;
}

.reg-panel__details-toggle:hover[b-dotng9kxqf],
.reg-panel__details-toggle:focus-visible[b-dotng9kxqf] {
    text-decoration: underline;
}

.reg-panel__footer[b-dotng9kxqf] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.reg-panel__edit[b-dotng9kxqf] {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.reg-panel__edit-actions[b-dotng9kxqf] {
    display: flex;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.reg-panel__subsection[b-dotng9kxqf] {
    margin-top: 0.65rem;
}

.reg-panel__subsection-title[b-dotng9kxqf] {
    margin: 0 0 0.35rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-primary);
}

.reg-panel__helper-note[b-dotng9kxqf] {
    margin: 0;
    font-size: var(--font-size-sm);
    line-height: 1.45;
    color: var(--text-secondary);
}

.reg-panel__divider[b-dotng9kxqf] {
    border: 0;
    border-top: 1px solid var(--border-subtle);
    margin: 0.85rem 0;
}

@media (max-width: 767px) {
    .reg-panel__footer[b-dotng9kxqf] {
        align-items: flex-start;
        flex-direction: column;
    }
}

/* ── Waitlist queue section ── */

.reg-panel__waitlist[b-dotng9kxqf] {
    grid-column: 1 / -1;
}

.reg-panel__waitlist-header[b-dotng9kxqf] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    margin-bottom: 0.5rem;
}

.reg-panel__waitlist-count[b-dotng9kxqf] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
}

.reg-panel__waitlist-empty[b-dotng9kxqf],
.reg-panel__waitlist-coming-soon[b-dotng9kxqf] {
    margin: 0.35rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.reg-panel__waitlist-table[b-dotng9kxqf] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
    margin-top: 0.45rem;
}

.reg-panel__waitlist-th[b-dotng9kxqf] {
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.3rem 0.5rem 0.3rem 0;
    border-bottom: 1px solid var(--border-subtle);
}

.reg-panel__waitlist-td[b-dotng9kxqf] {
    padding: 0.4rem 0.5rem 0.4rem 0;
    color: var(--text-primary);
    vertical-align: middle;
    border-bottom: 1px solid var(--border-subtle);
}

.reg-panel__waitlist-td--pos[b-dotng9kxqf] {
    color: var(--text-secondary);
    font-weight: 700;
    width: 2rem;
}

.reg-panel__waitlist-td--date[b-dotng9kxqf] {
    color: var(--text-secondary);
    white-space: nowrap;
}

.reg-panel__waitlist-status[b-dotng9kxqf] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--b9-warning-text);
    background: var(--b9-warning-soft);
    border-radius: 999px;
    padding: 0.15rem 0.55rem;
}

@media (max-width: 600px) {
    .reg-panel__waitlist-td--date[b-dotng9kxqf] {
        display: none;
    }
    .reg-panel__waitlist-th:nth-child(3)[b-dotng9kxqf] {
        display: none;
    }
}

.reg-panel__waitlist-th--action[b-dotng9kxqf] {
    width: 1%;
    white-space: nowrap;
}

.reg-panel__waitlist-td--action[b-dotng9kxqf] {
    white-space: nowrap;
    text-align: right;
}

.reg-panel__waitlist-confirm[b-dotng9kxqf] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    align-items: flex-start;
}

.reg-panel__waitlist-confirm-msg[b-dotng9kxqf] {
    font-size: var(--font-size-sm);
    color: #374151;
}

.reg-panel__waitlist-feedback[b-dotng9kxqf] {
    font-size: var(--font-size-sm);
    padding: 0.4rem 0.75rem;
    border-radius: 4px;
    margin-bottom: 0.5rem;
}

.reg-panel__waitlist-no-capacity[b-dotng9kxqf] {
    display: block;
    font-size: var(--font-size-sm);
    color: #6b7280;
    margin-top: 0.2rem;
}

.reg-panel__waitlist-feedback[role="status"][b-dotng9kxqf] {
    background: var(--success-soft);
    color: var(--success-text);
    border: 1px solid rgba(34,197,94,0.28);
}

.reg-panel__waitlist-feedback[role="alert"][b-dotng9kxqf] {
    background: var(--danger-soft);
    color: var(--danger-text);
    border: 1px solid rgba(239,68,68,0.28);
}
/* /Components/Handicaps/HandicapBadge.razor.rz.scp.css */
.hcp-badge[b-385luivua4] {
    --hcp-accent: #0f766e;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    border: 1px solid color-mix(in srgb, var(--hcp-accent) 40%, transparent);
    background: color-mix(in srgb, var(--hcp-accent) 18%, transparent);
    color: var(--text-primary, #f1f5f9);
    border-radius: 999px;
    padding: 0.2rem 0.6rem;
    font-size: 0.95rem;
    line-height: 1.1;
}

.hcp-badge-label[b-385luivua4] {
    font-size: 0.85rem;
    color: var(--text-secondary, #cbd5e1);
}

.hcp-badge-value[b-385luivua4] {
    font-weight: 700;
    letter-spacing: 0.01em;
}

.hcp-badge-player[b-385luivua4]  { --hcp-accent: #2563eb; }
.hcp-badge-team[b-385luivua4]    { --hcp-accent: #0f766e; }
.hcp-badge-league[b-385luivua4]  { --hcp-accent: #d97706; }
.hcp-badge-playing[b-385luivua4] { --hcp-accent: #b45309; }

/* ── Info button (mobile tap target) ──────────────────────────────── */
.hcp-badge-info[b-385luivua4] {
    display: inline-flex;
    position: relative;
}

.hcp-badge-info-btn[b-385luivua4] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    min-width: 44px;
    min-height: 44px;
    border-radius: 50%;
    border: none;
    background: transparent;
    color: var(--hcp-accent);
    cursor: pointer;
    padding: 0;
    list-style: none;
    font-size: 0.9rem;
}

.hcp-badge-info-btn[b-385luivua4]::-webkit-details-marker { display: none; }

.hcp-badge-popover[b-385luivua4] {
    display: none;
    position: absolute;
    top: calc(100% + 4px);
    left: 50%;
    transform: translateX(-50%);
    min-width: 180px;
    max-width: 260px;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
    font-size: 0.875rem;
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
    box-shadow: 0 4px 12px rgba(0,0,0,0.25);
    z-index: 100;
    white-space: normal;
    line-height: 1.4;
}

.hcp-badge-info[open] .hcp-badge-popover[b-385luivua4] {
    display: block;
}

/* Light mode overrides */
html[data-theme="light"] .hcp-badge[b-385luivua4] {
    background: color-mix(in srgb, var(--hcp-accent) 10%, #ffffff);
    border-color: color-mix(in srgb, var(--hcp-accent) 30%, #ffffff);
    color: #1f2937;
}

html[data-theme="light"] .hcp-badge-label[b-385luivua4] { color: #4b5563; }
html[data-theme="light"] .hcp-badge-popover[b-385luivua4] { background: #1f2937; color: #f9fafb; }
/* /Components/Handicaps/HandicapBreakdownPanel.razor.rz.scp.css */
.hcp-breakdown[b-829e9cpy4p] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    background: var(--b9-surface-muted, #111827);
}

.hcp-breakdown-summary[b-829e9cpy4p] {
    cursor: pointer;
    list-style: none;
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    align-items: baseline;
    padding: 0.8rem 1rem;
    font-size: 1rem;
    color: var(--b9-text, #f3f6fb);
}

.hcp-breakdown-summary .fw-semibold[b-829e9cpy4p] {
    color: var(--b9-text, #f3f6fb);
}

.hcp-breakdown-summary .text-muted[b-829e9cpy4p] {
    color: var(--b9-text-muted, #c2cfdf) !important;
}

.hcp-breakdown-body[b-829e9cpy4p] {
    border-top: 1px solid rgba(255,255,255,0.08);
    padding: 0.9rem 1rem;
    display: grid;
    gap: 0.75rem;
}

.hcp-breakdown-section h4[b-829e9cpy4p] {
    margin: 0 0 0.3rem 0;
    font-size: 1rem;
    color: var(--b9-text, #f3f6fb);
}

.hcp-breakdown-section p[b-829e9cpy4p],
.hcp-breakdown-section li[b-829e9cpy4p] {
    font-size: 1rem;
    color: var(--b9-text-muted, #c2cfdf);
}

.hcp-breakdown-section ul[b-829e9cpy4p] {
    margin-bottom: 0;
    padding-left: 1.2rem;
}
/* /Components/Handicaps/HandicapCard.razor.rz.scp.css */
.hcp-card[b-cwrvfp1856] {
    --hcp-accent: #0f766e;
    border: 1px solid var(--border-subtle, #334155);
    border-left: 4px solid var(--hcp-accent);
    border-radius: 14px;
    padding: 1rem;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
}

.hcp-card-player[b-cwrvfp1856]  { --hcp-accent: #2563eb; }
.hcp-card-team[b-cwrvfp1856]    { --hcp-accent: #0f766e; }
.hcp-card-league[b-cwrvfp1856]  { --hcp-accent: #d97706; }
.hcp-card-playing[b-cwrvfp1856] { --hcp-accent: #b45309; }

.hcp-card-header[b-cwrvfp1856] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.75rem;
}

.hcp-card-title[b-cwrvfp1856] {
    font-size: 1.08rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
}

.hcp-card-subtitle[b-cwrvfp1856] {
    font-size: 0.95rem;
    color: var(--text-secondary, #cbd5e1);
}

.hcp-card-summary[b-cwrvfp1856] {
    margin-top: 0.75rem;
    margin-bottom: 0.75rem;
    font-size: 1rem;
    color: var(--text-primary, #f1f5f9);
}

.hcp-card-meta[b-cwrvfp1856] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem 1rem;
    margin: 0;
    margin-bottom: 0.75rem;
}

.hcp-card-meta dt[b-cwrvfp1856] {
    font-size: 0.82rem;
    color: var(--text-muted, #94a3b8);
    margin: 0;
}

.hcp-card-meta dd[b-cwrvfp1856] {
    margin: 0;
    font-size: 0.98rem;
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
}

@media (max-width: 768px) {
    .hcp-card-meta[b-cwrvfp1856] {
        grid-template-columns: 1fr;
    }
}

/* Light mode overrides */
html[data-theme="light"] .hcp-card[b-cwrvfp1856] {
    background: #ffffff;
    border-color: #d1d5db;
    color: #1f2937;
}

html[data-theme="light"] .hcp-card-title[b-cwrvfp1856]  { color: #111827; }
html[data-theme="light"] .hcp-card-subtitle[b-cwrvfp1856] { color: #4b5563; }
html[data-theme="light"] .hcp-card-summary[b-cwrvfp1856]  { color: #1f2937; }
html[data-theme="light"] .hcp-card-meta dt[b-cwrvfp1856]  { color: #6b7280; }
html[data-theme="light"] .hcp-card-meta dd[b-cwrvfp1856]  { color: #1f2937; }
/* /Components/Handicaps/HandicapHistoryChart.razor.rz.scp.css */
.hcp-history[b-yxb3c2uqtq] {
    --hcp-accent: #0f766e;
    border: 1px solid var(--border-subtle, #334155);
    border-radius: 12px;
    padding: 0.85rem 1rem;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
}

.hcp-history-header[b-yxb3c2uqtq] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.35rem;
}

.hcp-history-header h3[b-yxb3c2uqtq] {
    margin: 0;
    font-size: 1.03rem;
}

.hcp-history-chart[b-yxb3c2uqtq] {
    width: 100%;
    height: 92px;
    border-radius: 8px;
    background: linear-gradient(180deg,
        color-mix(in srgb, var(--hcp-accent) 18%, var(--bg-surface, #0f172a)),
        var(--bg-surface, #0f172a));
    border: 1px solid color-mix(in srgb, var(--hcp-accent) 30%, transparent);
}

.hcp-history-labels[b-yxb3c2uqtq] {
    margin-top: 0.3rem;
    display: grid;
    grid-auto-flow: column;
    gap: 0.35rem;
    font-size: 0.82rem;
    color: var(--text-muted, #94a3b8);
    text-align: center;
}

/* Light mode overrides */
html[data-theme="light"] .hcp-history[b-yxb3c2uqtq] {
    background: #ffffff;
    border-color: #d1d5db;
    color: #1f2937;
}

html[data-theme="light"] .hcp-history-chart[b-yxb3c2uqtq] {
    background: linear-gradient(180deg, #ecfeff, #ffffff);
    border-color: #d1fae5;
}

html[data-theme="light"] .hcp-history-labels[b-yxb3c2uqtq] { color: #6b7280; }
/* /Components/Handicaps/HandicapSummaryBanner.razor.rz.scp.css */
.hcp-summary[b-x6vcl3jd5f] {
    --hcp-accent: #0f766e;
    border: 1px solid color-mix(in srgb, var(--hcp-accent) 40%, transparent);
    background: color-mix(in srgb, var(--hcp-accent) 12%, var(--bg-elevated, #1e293b));
    border-radius: 14px;
    padding: 0.95rem 1rem;
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: center;
    color: var(--text-primary, #f1f5f9);
}

.hcp-summary-player[b-x6vcl3jd5f]  { --hcp-accent: #2563eb; }
.hcp-summary-team[b-x6vcl3jd5f]    { --hcp-accent: #0f766e; }
.hcp-summary-league[b-x6vcl3jd5f]  { --hcp-accent: #d97706; }
.hcp-summary-playing[b-x6vcl3jd5f] { --hcp-accent: #b45309; }

.hcp-summary-kicker[b-x6vcl3jd5f] {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--text-secondary, #cbd5e1);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.hcp-summary-title[b-x6vcl3jd5f] {
    margin: 0;
    font-size: 1.2rem;
    color: var(--text-primary, #f1f5f9);
}

.hcp-summary-subtitle[b-x6vcl3jd5f] {
    margin: 0.2rem 0 0 0;
    font-size: 1rem;
    color: var(--text-secondary, #cbd5e1);
}

.hcp-summary-right[b-x6vcl3jd5f] {
    text-align: right;
}

.hcp-summary-timing[b-x6vcl3jd5f] {
    margin-top: 0.4rem;
    font-size: 0.9rem;
    color: var(--text-secondary, #cbd5e1);
}

@media (max-width: 768px) {
    .hcp-summary[b-x6vcl3jd5f] {
        flex-direction: column;
        align-items: flex-start;
    }

    .hcp-summary-right[b-x6vcl3jd5f] {
        text-align: left;
        width: 100%;
    }
}

/* Light mode overrides */
html[data-theme="light"] .hcp-summary[b-x6vcl3jd5f] {
    background: linear-gradient(120deg, color-mix(in srgb, var(--hcp-accent) 14%, #ffffff), #ffffff);
    border-color: color-mix(in srgb, var(--hcp-accent) 25%, #ffffff);
    color: #1f2937;
}

html[data-theme="light"] .hcp-summary-kicker[b-x6vcl3jd5f]  { color: #374151; }
html[data-theme="light"] .hcp-summary-title[b-x6vcl3jd5f]   { color: #111827; }
html[data-theme="light"] .hcp-summary-subtitle[b-x6vcl3jd5f] { color: #4b5563; }
html[data-theme="light"] .hcp-summary-timing[b-x6vcl3jd5f]  { color: #4b5563; }
/* /Components/Layout/FlyerLayout.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════
   FlyerLayout.razor.css
   Shell and admin toolbar for the flyer preview experience.

   .fly-toolbar  Fixed top bar with Back + Print buttons (screen only).
   .fly-stage    Full-viewport preview area — grey background, centers
                 the flyer card. Overrides any app dark-theme background.
   ══════════════════════════════════════════════════════════════════════ */

/* ── Admin toolbar ──────────────────────────────────────────────────── */
.fly-toolbar[b-7rynhxwq93] {
    position: fixed;
    top: 0; left: 0; right: 0;
    height: 52px;
    background: #ffffff;
    border-bottom: 1px solid #dde1e6;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.25rem;
    z-index: 400;
    box-shadow: 0 1px 6px rgba(0,0,0,.07);
}

.fly-back-btn[b-7rynhxwq93] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: none;
    border: 1px solid #dde1e6;
    font-size: .875rem;
    font-weight: 500;
    color: #444;
    cursor: pointer;
    padding: .4rem .75rem;
    border-radius: 6px;
    line-height: 1;
    transition: background .14s, border-color .14s;
}

.fly-back-btn:hover[b-7rynhxwq93] {
    background: #f4f5f7;
    border-color: #c8cdd4;
}

.fly-toolbar-right[b-7rynhxwq93] {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.fly-print-btn[b-7rynhxwq93] {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    background: #1a5c2a;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: .875rem;
    font-weight: 600;
    padding: .5rem 1.1rem;
    cursor: pointer;
    line-height: 1;
    box-shadow: 0 1px 4px rgba(26,92,42,.3);
    transition: background .14s, transform .1s;
}

.fly-print-btn:hover[b-7rynhxwq93] {
    background: #155224;
    transform: translateY(-1px);
}

.fly-print-btn:active[b-7rynhxwq93] {
    transform: translateY(0);
}

/* ── Preview stage ──────────────────────────────────────────────────── */
.fly-stage[b-7rynhxwq93] {
    min-height: 100vh;
    background: #e6e9ed;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding: 4.5rem 1rem 3rem;
}

/* ── Phone-screen containment (print output untouched) ─────────────────
   The flyer body is a fixed-width print sheet. On a phone the sheet pans
   inside the stage like a document preview instead of widening the whole
   page; the toolbar wraps rather than stretching. */
@media screen and (max-width: 720px) {
    .fly-toolbar[b-7rynhxwq93] {
        flex-wrap: wrap;
        height: auto;
        min-height: 52px;
        padding: 0.4rem 0.75rem;
        row-gap: 0.35rem;
    }

    .fly-stage[b-7rynhxwq93] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        justify-content: flex-start;
        padding: 4.5rem 0.75rem 3rem;
    }
}

/* ── Print overrides ────────────────────────────────────────────────── */
@media print {
    .fly-toolbar[b-7rynhxwq93],
    .no-print[b-7rynhxwq93] {
        display: none !important;
    }

    .fly-stage[b-7rynhxwq93] {
        min-height: unset;
        background: #fff !important;
        padding: 0;
        display: block;
    }
}

/* /Components/Layout/Header.razor.rz.scp.css */
/* ==================================================
   BACK9OPS SHELL HEADER
   Three-zone layout: left (page context) | right (actions + profile)
   Design system: matches .sb-* sidebar tokens exactly.

   Class inventory:
   .hdr               56px shell header - top of .main-col
   .hdr-left          flex column for section label + title
   .hdr-section       small muted uppercase section name
   .hdr-title         primary page title (h1, reset to inline)
   .hdr-right         flex row - icon buttons + profile wrap
   .hdr-icon-btn      32x32 icon-only action button
   .hdr-profile-wrap  relative positioner for dropdown
   .hdr-avatar-btn    button wrapping the avatar circle
   .hdr-avatar        initials circle
   .hdr-dismiss       full-screen click target, closes dropdown
   .hdr-profile-menu  floating dropdown panel
   .hdr-profile-header  identity block (name + email)
   .hdr-profile-name  bold display name
   .hdr-profile-email muted email address
   .hdr-profile-divider  1px rule between menu sections
   .hdr-menu-item     individual menu action (a or button)
   .hdr-menu-signout  danger tint variant of .hdr-menu-item
   .hdr-signout-form  display:contents form wrapper

   Tokens used (same as sidebar):
   --bg-surface, --bg-elevated, --bg-app
   --text-primary, --text-secondary, --text-muted
   --border-subtle, --border-default
   --brand, --brand-soft
================================================== */


/* SHELL HEADER */

.hdr[b-te0hhul7us] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    /* min-height, not height: at phone width the page title is allowed to wrap (see the media
       query at the foot of this file), and a hard height would clip the second line instead of
       making room for it. 56px is still exactly what this bar measures on every desktop route. */
    min-height: 56px;
    padding: 0 20px;
    background: var(--bg-surface, #0F172A);
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    flex-shrink: 0;
    gap: 12px;
    position: relative;
    z-index: 10;
}


/* LEFT: page context */

.hdr-left[b-te0hhul7us] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 2px;
}

.hdr-section[b-te0hhul7us] {
    display: block;
    font-size: var(--font-size-sm, 14px);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.10em;
    color: var(--text-secondary, #C2CFDF);
    line-height: 1;
    user-select: none;
}

.hdr-title[b-te0hhul7us] {
    font-size: 17px;
    font-weight: 600;
    color: var(--text-primary, #E5E7EB);
    margin: 0;
    padding: 0;
    line-height: 1.2;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-family: var(--b9-font-sans, Inter, system-ui, sans-serif);
}

.hdr-left:not(:has(.hdr-section)) .hdr-title[b-te0hhul7us] {
    font-size: 18px;
}


/* RIGHT: actions + profile */

.hdr-right[b-te0hhul7us] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
}


/* ICON BUTTONS */

.hdr-icon-btn[b-te0hhul7us] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 8px;
    border: none;
    background: transparent;
    color: var(--text-secondary, #C2CFDF);
    font-size: 17px;
    cursor: pointer;
    text-decoration: none;
    transition: background 160ms ease, color 160ms ease;
    flex-shrink: 0;
}

.hdr-icon-btn:hover:not(:disabled)[b-te0hhul7us] {
    background: rgba(255,255,255,0.06);
    color: var(--text-primary, #F3F6FB);
}

.hdr-icon-btn:focus-visible[b-te0hhul7us] {
    outline: none;
    box-shadow: 0 0 0 2px rgba(29,78,216,0.55);
}

.hdr-icon-btn:disabled[b-te0hhul7us] {
    opacity: 0.65;
    cursor: default;
}

.hdr-bell-link[b-te0hhul7us] {
    position: relative;
}

/* Theme toggle in the header */
[b-te0hhul7us] .theme-toggle.hdr-theme-toggle {
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 8px;
    color: var(--text-secondary, #C2CFDF);
    background: transparent;
    border: none;
}

[b-te0hhul7us] .theme-toggle.hdr-theme-toggle:hover {
    background: rgba(255,255,255,0.06);
    color: var(--text-primary, #F3F6FB);
}

.hdr-bell-dot[b-te0hhul7us] {
    position: absolute;
    top: 7px;
    right: 7px;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--b9-danger);
    box-shadow: 0 0 0 1.5px var(--bg-surface, #0F172A);
}


/* PROFILE AREA */

.hdr-profile-wrap[b-te0hhul7us] {
    position: relative;
    display: flex;
    align-items: center;
    margin-left: 4px;
}

.hdr-avatar-btn[b-te0hhul7us] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: none;
    border: 2px solid transparent;
    cursor: pointer;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    padding: 0;
    border-radius: 50%;
    transition: border-color 160ms ease;
    line-height: 1;
}

.hdr-avatar-btn:hover[b-te0hhul7us] {
    border-color: var(--border-strong, rgba(255,255,255,0.18));
}

.hdr-avatar-btn:focus-visible[b-te0hhul7us] {
    outline: none;
    box-shadow: 0 0 0 2px rgba(29,78,216,0.55);
    border-radius: 50%;
}

.hdr-avatar[b-te0hhul7us] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--brand-soft, rgba(29,78,216,0.18));
    /* The header rides --bg-surface, which flips to #FFFFFF in light — where this literal
       measured 1.76:1 on its own tint. --b9-primary-text is the themed twin (#93C5FD dark,
       #1E40AF light, 7.6:1 on that same tint). */
    color: var(--b9-primary-text);
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.03em;
    display: flex;
    align-items: center;
    justify-content: center;
    user-select: none;
    font-family: var(--b9-font-sans, Inter, system-ui, sans-serif);
    overflow: hidden;
}
.hdr-avatar--photo[b-te0hhul7us] {
    background: transparent;
}


/* PROFILE DROPDOWN */

.hdr-dismiss[b-te0hhul7us] {
    position: fixed;
    inset: 0;
    z-index: 199;
    background: transparent;
    cursor: default;
}

.hdr-profile-menu[b-te0hhul7us] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    width: 220px;
    background: var(--bg-elevated, #111827);
    border: 1px solid var(--border-default, rgba(255,255,255,0.10));
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.45), 0 2px 6px rgba(0,0,0,0.20);
    z-index: 200;
    padding: 6px;
    animation: hdr-menu-in-b-te0hhul7us 140ms ease both;
}

@keyframes hdr-menu-in-b-te0hhul7us {
    from { opacity: 0; transform: translateY(-4px) scale(0.98); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

.hdr-profile-header[b-te0hhul7us] {
    padding: 8px 10px 10px;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.hdr-profile-name[b-te0hhul7us] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-primary, #E5E7EB);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.hdr-profile-email[b-te0hhul7us] {
    font-size: var(--font-size-sm, 14px);
    color: var(--text-secondary, #C2CFDF);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.3;
}

.hdr-profile-divider[b-te0hhul7us] {
    height: 1px;
    background: var(--border-subtle, rgba(255,255,255,0.06));
    margin: 4px 0;
}

.hdr-menu-item[b-te0hhul7us] {
    display: flex;
    align-items: center;
    gap: 9px;
    width: 100%;
    padding: 7px 10px;
    border-radius: 8px;
    font-size: var(--font-size-sm);
    font-weight: 500;
    font-family: var(--b9-font-sans, Inter, system-ui, sans-serif);
    color: var(--text-secondary, #C2CFDF);
    text-decoration: none;
    background: transparent;
    border: none;
    cursor: pointer;
    transition: background 160ms ease, color 160ms ease;
    text-align: left;
    line-height: 1;
    box-sizing: border-box;
}

.hdr-menu-item:hover[b-te0hhul7us] {
    background: rgba(255,255,255,0.05);
    color: var(--text-primary, #E5E7EB);
}

.hdr-menu-item:focus-visible[b-te0hhul7us] {
    outline: none;
    box-shadow: inset 0 0 0 2px rgba(29,78,216,0.45);
    border-radius: 8px;
}

.hdr-menu-signout:hover[b-te0hhul7us] {
    background: rgba(239,68,68,0.10);
    /* #FCA5A5 measured 1.90:1 once the menu turns white in light. */
    color: var(--b9-danger-text);
}

.hdr-signout-form[b-te0hhul7us] { display: contents; }


/* ── The page title on a phone ───────────────────────────────────────────────────────────────────
   Measured against the real distribution on 2026-09-16: `.hdr-title` is a 186px box at 390px, and
   72 of the 166 event names in the production clone (43%) did not fit — "2026 Lake City
   Invitational Championship Calcutta" needs 402px. It carries a `title`, and a title is a HOVER
   tooltip: on the phone where this actually bites there is no hover, so the attribute recovers
   nothing here. Wrapping is the only honest fix, and the bar above now has min-height so the
   second and third lines have somewhere to go.

   Clamped rather than unbounded: a pathological name should cost the golfer a taller header, not
   the whole screen. Four lines, not three, because three still cut exactly one real name — Lake
   City's own "2026 Lake City Invitational Championship Calcutta", 49 characters of long words that
   break badly. Desktop is untouched — the bar is wide there and the tooltip does the work. */
@media (max-width: 640px) {
    .hdr-title[b-te0hhul7us] {
        white-space: normal;
        display: -webkit-box;
        -webkit-line-clamp: 4;
        -webkit-box-orient: vertical;
        overflow: hidden;
    }
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-o01qyrd7xn] {
    position: relative;
    display: flex;
    flex-direction: column;
}

/* Column that holds the header + scrollable main */
.main-col[b-o01qyrd7xn] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.main-col-public[b-o01qyrd7xn] {
    height: auto;
    overflow: visible;
}

.content[b-o01qyrd7xn] {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.content-admin[b-o01qyrd7xn] {
    --admin-list-page-max-width: 1120px;
    max-width: 1280px;
    margin: 0 auto;
}

.content-public-home[b-o01qyrd7xn] {
    padding-top: 0;
}

main[b-o01qyrd7xn] {
    flex: 1;
    background: var(--bg-app, #020617);
}

.sidebar[b-o01qyrd7xn] {
    background: var(--bg-sidebar, #0B1220);
    border-right: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
}

@media (min-width: 641px) {
    .page[b-o01qyrd7xn] {
        flex-direction: row;
        min-height: 100vh;
        height: 100vh;
        overflow: hidden;
    }

    .sidebar[b-o01qyrd7xn] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
        flex-shrink: 0;
    }

    /* Constrain main-col to viewport height so the header stays fixed
       and only the content area beneath it scrolls */
    .main-col[b-o01qyrd7xn] {
        height: 100vh;
        min-height: 0;
        overflow: hidden;
    }

    .main-col-public[b-o01qyrd7xn] {
        height: auto;
        overflow: visible;
    }

    main[b-o01qyrd7xn] {
        overflow-y: auto;
        overflow-x: hidden;
        min-height: 0;
        padding-bottom: max(72px, calc(env(safe-area-inset-bottom) + 2.5rem));
        scroll-padding-bottom: max(72px, calc(env(safe-area-inset-bottom) + 2.5rem));
    }

    .main-col-public main[b-o01qyrd7xn] {
        overflow: visible;
    }

    /* P0: let the public landing page scroll naturally — break the
       height:100vh + overflow:hidden shell trap for public routes only */
    .page-public[b-o01qyrd7xn] {
        height: auto !important;
        overflow: visible !important;
        min-height: 100vh;
    }
}

#blazor-error-ui[b-o01qyrd7xn] {
    color-scheme: light only;
    background: var(--b9-dark-surface);
    color: var(--b9-dark-text);
    bottom: 0;
    box-shadow: 0 -1px 0 var(--b9-dark-border);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
    font-size: 0.85rem;
}

    #blazor-error-ui .dismiss[b-o01qyrd7xn] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* ==================================================
   BACK9OPS SIDEBAR - Premium dark admin shell
   Linear/Stripe/Vercel quality design system.
   
   Class inventory:
   .sb-shell         full-height column flex container
   .sb-brand         logo + mobile hamburger
   .sb-body          scrollable nav area
   .sb-nav           flex column nav tree
   .sb-section       grouped nav items
   .sb-section-label uppercase group header
   .sb-item-wrap     Blazor scope anchor (display:contents)
   .sb-item          nav link/button (::deep target)
   .sb-icon          Bootstrap Icons element inside .sb-item
   .sb-text          label span inside .sb-item
   .sb-text-account  truncated account email
   .sb-divider       horizontal rule between sections
   .sb-spacer        flex:1 pusher
   .sb-footer        account actions region
   .sb-footer-rule   top border for footer
   .sb-logout-form   display:contents form wrapper
   
   Tokens:
   --bg-sidebar, --bg-sidebar-elevated, --bg-sidebar-active
   --text-primary, --text-secondary, --text-muted
   --border-subtle, --border-strong, --brand
================================================== */


/* SHELL */

.sb-shell[b-ywpn6ldy5k] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--bg-sidebar, #0B1220);
    overflow: hidden;
}


/* BRAND AREA */

.sb-brand[b-ywpn6ldy5k] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px 13px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
}

.sb-brand-link[b-ywpn6ldy5k] {
    display: flex;
    align-items: center;
    text-decoration: none;
    opacity: 0.90;
    transition: opacity 180ms ease;
}

.sb-brand-link:hover[b-ywpn6ldy5k] { opacity: 1; }

.sb-brand-wordmark[b-ywpn6ldy5k] {
    display: inline-flex;
    align-items: center;
}

.sb-brand-wordmark--light[b-ywpn6ldy5k] {
    display: none;
}

/* Mobile hamburger - hidden on desktop */
.sb-hamburger[b-ywpn6ldy5k] {
    display: none;
    align-items: center;
    justify-content: center;
    background: none;
    border: none;
    color: var(--text-secondary, #C2CFDF);
    font-size: 1.25rem;
    cursor: pointer;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    padding: 0;
    border-radius: 7px;
    line-height: 1;
    transition: background 160ms ease, color 160ms ease;
}

.sb-hamburger:hover[b-ywpn6ldy5k] {
    background: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.9);
}

.sb-toggle-check[b-ywpn6ldy5k] { display: none; }


/* SCROLLABLE NAV BODY */

.sb-body[b-ywpn6ldy5k] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    display: flex;
    flex-direction: column;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.07) transparent;
}

.sb-body[b-ywpn6ldy5k]::-webkit-scrollbar        { width: 3px; }
.sb-body[b-ywpn6ldy5k]::-webkit-scrollbar-track  { background: transparent; }
.sb-body[b-ywpn6ldy5k]::-webkit-scrollbar-thumb  { background: rgba(255,255,255,0.08); border-radius: 4px; }

.sb-nav[b-ywpn6ldy5k] {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 6px 0 8px;
}


/* SECTION */

.sb-section[b-ywpn6ldy5k] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 0 10px;
}

.sb-section-label[b-ywpn6ldy5k] {
    display: block;
    font-size: var(--font-size-sm, 14px);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.10em;
    color: var(--b9-sidebar-text, #B6C6DA);
    padding: 0 6px;
    margin-top: 20px;
    margin-bottom: 4px;
    user-select: none;
}

.sb-section:first-of-type .sb-section-label[b-ywpn6ldy5k] { margin-top: 8px; }


/* NAV ITEMS
   .sb-item-wrap receives the Blazor scope attribute.
   ::deep targets the NavLink-rendered <a> and native <button>. */

.sb-item-wrap[b-ywpn6ldy5k] {
    display: contents;
}

/* Base item */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item,
.sb-item[b-ywpn6ldy5k] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 10px;
    min-height: var(--touch-target-min, 48px);
    border-radius: 10px;
    position: relative;
    font-size: var(--font-size-base, 1rem);
    font-weight: 500;
    font-family: var(--b9-font-sans, Inter, system-ui, sans-serif);
    color: var(--b9-sidebar-text, #B6C6DA);
    text-decoration: none;
    background: transparent;
    border: none;
    cursor: pointer;
    width: 100%;
    transition: background 180ms ease, color 160ms ease;
    white-space: nowrap;
    overflow: hidden;
    line-height: 1;
}

/* Hover */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item:hover,
.sb-item:hover[b-ywpn6ldy5k] {
    background: var(--b9-sidebar-hover-bg, #0F172A);
    color: var(--b9-sidebar-active-text, #E5E7EB);
}

/* Active - Blazor NavLink adds .active */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.active {
    background: var(--b9-sidebar-active-bg, rgba(29,78,216,0.18));
    color: var(--b9-sidebar-active-text, #E5E7EB);
    font-weight: 600;
}

/* Active accent rail — a short primary-blue bar on the far-left edge anchors
   where the user is. */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.active::before {
    content: "";
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 22px;
    border-radius: 0 3px 3px 0;
    background: var(--brand, #1D4ED8);
}

/* Focus ring */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item:focus-visible,
.sb-item:focus-visible[b-ywpn6ldy5k] {
    outline: none;
    box-shadow: 0 0 0 2px rgba(29,78,216,0.55);
}

/* Small variant - footer items */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-sm,
.sb-item.sb-item-sm[b-ywpn6ldy5k] {
    min-height: var(--touch-target-min, 48px);
    font-size: var(--font-size-sm, 14px);
}

/* Sign-out: subtle danger tint on hover */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-signout:hover,
.sb-item.sb-item-signout:hover[b-ywpn6ldy5k] {
    background: rgba(239,68,68,0.10);
    color: #FCA5A5;
}


/* ICON */

.sb-item-wrap[b-ywpn6ldy5k]  .sb-icon,
.sb-icon[b-ywpn6ldy5k] {
    font-size: 16px;
    width: 18px;
    text-align: center;
    flex-shrink: 0;
    color: var(--b9-sidebar-text, #B6C6DA);
    transition: color 160ms ease;
    line-height: 1;
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item:hover .sb-icon,
.sb-item:hover .sb-icon[b-ywpn6ldy5k] {
    color: var(--b9-sidebar-active-text, #F3F6FB);
}

/* The sidebar is dark in BOTH themes, so its ink must not follow the theme:
   --b9-primary-text becomes #1E40AF in light, 1.9:1 on this band. */
.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.active .sb-icon {
    color: var(--b9-dark-primary-text);
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-signout:hover .sb-icon,
.sb-item.sb-item-signout:hover .sb-icon[b-ywpn6ldy5k] {
    color: #F87171;
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-setup,
.sb-item.sb-item-setup[b-ywpn6ldy5k] {
    border: 1px solid rgba(59,130,246,0.45);
    background: rgba(29,78,216,0.16);
    color: #dbeafe;
    font-weight: 600;
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-setup:hover,
.sb-item.sb-item-setup:hover[b-ywpn6ldy5k] {
    background: rgba(29,78,216,0.24);
    color: #eff6ff;
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-locked,
.sb-item.sb-item-locked[b-ywpn6ldy5k] {
    height: auto;
    min-height: 40px;
    align-items: flex-start;
    flex-direction: column;
    gap: 4px;
    padding: 8px 10px;
    cursor: default;
    border: 1px solid rgba(148,163,184,0.14);
    background: rgba(255,255,255,0.02);
    color: var(--text-muted, #9FB0C4);
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-locked:hover,
.sb-item.sb-item-locked:hover[b-ywpn6ldy5k] {
    background: rgba(255,255,255,0.03);
    color: var(--text-muted, #9FB0C4);
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-item.sb-item-locked .sb-icon,
.sb-item.sb-item-locked .sb-icon[b-ywpn6ldy5k] {
    color: var(--text-muted, #9FB0C4);
}

.sb-lock[b-ywpn6ldy5k] {
    margin-left: 0.25rem;
    font-size: 0.8rem;
}

.sb-lock-sub[b-ywpn6ldy5k] {
    display: block;
    font-size: var(--font-size-sm, 14px);
    line-height: 1.25;
    color: var(--text-muted, #9FB0C4);
    margin-left: 28px;
}


/* TEXT */

.sb-item-wrap[b-ywpn6ldy5k]  .sb-text,
.sb-text[b-ywpn6ldy5k] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1;
}

.sb-item-wrap[b-ywpn6ldy5k]  .sb-text-account,
.sb-text-account[b-ywpn6ldy5k] {
    font-size: var(--font-size-sm, 14px);
    color: var(--b9-sidebar-text, #B6C6DA);
    max-width: 138px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}


/* BADGE (pending count) */

.sb-badge[b-ywpn6ldy5k] {
    font-size: var(--font-size-sm, 14px);
    padding: 1px 5px;
    border-radius: 999px;
    line-height: 1.4;
    flex-shrink: 0;
}

.sb-badge-warning[b-ywpn6ldy5k] {
    background: var(--color-warn-subtle, rgba(245, 158, 11, 0.16));
    color: var(--color-warn, #f59e0b);
    border: 1px solid color-mix(in srgb, var(--color-warn, #f59e0b) 45%, transparent);
    font-weight: 700;
}


/* DIVIDER */

.sb-divider[b-ywpn6ldy5k] {
    height: 1px;
    margin: 14px 10px 0;
    background: var(--border-subtle, rgba(255,255,255,0.06));
    flex-shrink: 0;
}


/* ORG SWITCHER */

.sb-org-wrap[b-ywpn6ldy5k] {
    padding: 0 0 4px;
}

/* Single org is a label, not a control — render it as plain text, no box. */
.sb-org-single[b-ywpn6ldy5k] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 4px 10px 6px;
}

.sb-org-single-label[b-ywpn6ldy5k] {
    font-size: var(--font-size-sm, 14px);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--b9-sidebar-text-muted, #94A3B8);
}

.sb-org-single-name[b-ywpn6ldy5k] {
    font-size: var(--font-size-sm, 14px);
    font-weight: 600;
    color: var(--b9-sidebar-active-text, #E5E7EB);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Multi-org switcher: text + native chevron, no heavy input box. */
.sb-org-select[b-ywpn6ldy5k] {
    width: 100%;
    font-size: var(--font-size-sm, 14px);
    font-weight: 600;
    color: var(--b9-sidebar-active-text, #E5E7EB);
    background: transparent;
    border: none;
    border-radius: 6px;
    padding: 4px 6px;
    margin-left: -2px;
    cursor: pointer;
    appearance: auto;
    transition: background 160ms ease;
    outline: none;
}

.sb-org-select:hover[b-ywpn6ldy5k] { background: rgba(255,255,255,0.05); }
.sb-org-select:focus[b-ywpn6ldy5k] {
    background: rgba(255,255,255,0.05);
    box-shadow: 0 0 0 2px rgba(29,78,216,0.35);
}


/* SPACER + FOOTER */

.sb-spacer[b-ywpn6ldy5k] { flex: 1; min-height: 16px; }

.sb-footer[b-ywpn6ldy5k] {
    padding: 0 10px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex-shrink: 0;
}

.sb-footer-rule[b-ywpn6ldy5k] {
    height: 1px;
    background: var(--border-subtle, rgba(255,255,255,0.06));
    margin: 0 0 8px;
}

.sb-logout-form[b-ywpn6ldy5k] { display: contents; }


/* MOBILE (640px and below) */

@media (max-width: 640px) {
    .sb-hamburger[b-ywpn6ldy5k] { display: flex; }
    .sb-toggle-check:not(:checked) ~ .sb-body[b-ywpn6ldy5k] { display: none; }
    .sb-toggle-check:checked       ~ .sb-body[b-ywpn6ldy5k] { display: flex; }
}


/* DESKTOP (641px and above) */

@media (min-width: 641px) {
    .sb-hamburger[b-ywpn6ldy5k] { display: none !important; }
    .sb-body[b-ywpn6ldy5k]      { display: flex !important; }
}
/* /Components/Layout/PlayerHubNav.razor.rz.scp.css */
/* ── Player Hub Tab Strip ─────────────────────────────────────────
   Horizontal tab strip shown at the top of the five main player
   hub pages (Home, Events, Leagues, Inbox, Profile). Provides a
   persistent navigation context so the hub feels like one tabbed
   app rather than five separate pages.
   ────────────────────────────────────────────────────────────── */

.phub-nav[b-oaznkxi2nk] {
    display: flex;
    gap: 0;
    border-bottom: 1.5px solid var(--b9-border, rgba(255,255,255,0.08));
    margin-bottom: 1.25rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.phub-nav[b-oaznkxi2nk]::-webkit-scrollbar {
    display: none;
}

.phub-tab[b-oaznkxi2nk] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--b9-text-muted, #94A3B8);
    text-decoration: none;
    white-space: nowrap;
    border-bottom: 2.5px solid transparent;
    margin-bottom: -1.5px;
    flex-shrink: 0;
    transition: color 150ms ease, border-color 150ms ease;
}

.phub-tab i[b-oaznkxi2nk] {
    font-size: 0.9375rem;
    line-height: 1;
}

.phub-tab:hover[b-oaznkxi2nk] {
    color: var(--b9-text, #E5E7EB);
}

.phub-tab--active[b-oaznkxi2nk] {
    color: var(--b9-primary-text, #93C5FD);
    border-bottom-color: var(--b9-primary, #1D4ED8);
    font-weight: 600;
}

/* Focus ring for keyboard navigation */
.phub-tab:focus-visible[b-oaznkxi2nk] {
    outline: 2px solid var(--b9-primary, #1D4ED8);
    outline-offset: -2px;
    border-radius: 2px;
}
/* /Components/Layout/PlayerLayout.razor.rz.scp.css */
/* Player Layout */

.plr-layout[b-t57edn0z4c] {
    --plr-bottom-nav-height: calc(72px + env(safe-area-inset-bottom, 0px));
    min-height: 100vh;
    width: 100%;
    max-width: 100%;
    overflow-x: clip;
    display: flex;
    flex-direction: column;
    background: var(--bg-app, #020617);
    color: var(--text-primary, #f1f5f9);
}

/*
  ── Ink on the always-dark bands ────────────────────────────────────────────────────────
  The top bar, the nav drawer and the bottom tab bar are all painted on --bg-sidebar, which
  is deliberately dark in BOTH themes (tokens.css keeps it #1E293B under light). Their ink
  therefore must NOT follow the theme. It used to: these rules read --text-primary/-secondary
  /-muted, which flip to near-black in light, and the drawer measured 1.33:1 on "Home" and
  1.93:1 on the other items at both 390px and 1366px — the worst contrast on any player
  surface, and invisible to the audit harness because the drawer starts closed.
  --b9-dark-* is the invariant family for exactly this; --b9-dark-primary-text below is the
  same idea, already applied to the active item by an earlier pass.
*/

/* TOP BAR - mobile only (hidden >=768px) */
.plr-topbar[b-t57edn0z4c] {
    background: var(--bg-sidebar, #0B1220);
    border-bottom: 1px solid var(--b9-dark-border-subtle);
    flex-shrink: 0;
    position: sticky;
    top: 0;
    z-index: 200;
}

.plr-topbar-inner[b-t57edn0z4c] {
    min-height: 64px;
    padding: 0 16px;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.plr-brand-wordmark[b-t57edn0z4c] {
    display: inline-flex;
    align-items: center;
}

.plr-brand-wordmark--light[b-t57edn0z4c] {
    display: none;
}

.plr-topbar-actions[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    gap: 6px;
}

/* X03: the wordmark is a link home on every player page and it measured 103×22 — the smallest
   target in the player shell, next to a hamburger and a theme toggle that are both already 48.
   The 64px bar has the room; the logo does not move, its hit area grows around it. */
.plr-topbar-brand[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    min-height: var(--touch-target-min, 48px);
    text-decoration: none;
    opacity: 0.90;
    transition: opacity 180ms ease;
}

.plr-topbar-brand:hover[b-t57edn0z4c] { opacity: 1; }

.plr-hamburger[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 8px;
    cursor: pointer;
    font-size: 1.375rem;
    color: var(--b9-dark-text-muted);
    transition: background 160ms ease, color 160ms ease;
}

.plr-hamburger:hover[b-t57edn0z4c] {
    background: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.9);
}

.plr-topbar-actions[b-t57edn0z4c]  .theme-toggle.plr-theme-toggle {
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 8px;
    color: var(--b9-dark-text-muted);
}

.plr-topbar-actions[b-t57edn0z4c]  .theme-toggle.plr-theme-toggle:hover {
    background: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.9);
}


/* MOBILE NAV DRAWER */
.plr-nav-check[b-t57edn0z4c] { display: none; }

.plr-nav-drawer[b-t57edn0z4c] {
    position: fixed;
    inset: 0;
    z-index: 300;
    pointer-events: none;
    visibility: hidden;
    transition: visibility 0s 0.3s;
}

.plr-nav-check:checked ~ .plr-nav-drawer[b-t57edn0z4c] {
    pointer-events: auto;
    visibility: visible;
    transition: visibility 0s;
}

.plr-nav-check:checked ~ .plr-body[b-t57edn0z4c],
.plr-nav-check:checked ~ .plr-tabs[b-t57edn0z4c] {
    pointer-events: none;
    user-select: none;
    filter: blur(1px) saturate(.75);
}

.plr-nav-check:checked ~ .plr-body[b-t57edn0z4c] {
    opacity: .65;
}

.plr-nav-check:checked ~ .plr-tabs[b-t57edn0z4c] {
    opacity: .25;
}

.plr-nav-backdrop[b-t57edn0z4c] {
    position: absolute;
    inset: 0;
    background: rgba(0,0,0,0.55);
    opacity: 0;
    cursor: pointer;
    transition: opacity 0.3s;
}

.plr-nav-check:checked ~ .plr-nav-drawer .plr-nav-backdrop[b-t57edn0z4c] { opacity: 1; }

.plr-nav-inner[b-t57edn0z4c] {
    position: absolute;
    left: 0;
    top: 0;
    bottom: 0;
    width: 250px;
    background: var(--bg-sidebar, #0B1220);
    border-right: 1px solid var(--b9-dark-border-subtle);
    display: flex;
    flex-direction: column;
    transform: translateX(-100%);
    transition: transform 0.28s ease;
    z-index: 1;
}

.plr-nav-check:checked ~ .plr-nav-drawer .plr-nav-inner[b-t57edn0z4c] { transform: translateX(0); }

/* Drawer brand - mirrors sb-brand */
.plr-drawer-brand[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px 13px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--b9-dark-border-subtle);
}

.plr-drawer-brand-link[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    /* Was 44px, measured 103x44 with the open drawer. Its own sibling in this same header,
       .plr-nav-close below, already reads --touch-target-min, and so does .plr-topbar-brand —
       this Home link is the one that got missed. The drawer is the only navigation a phone
       player has besides the bottom tabs. */
    min-height: var(--touch-target-min, 48px);
    padding: 4px 0;
    text-decoration: none;
    opacity: 0.90;
    transition: opacity 180ms ease;
}

.plr-drawer-brand-link:hover[b-t57edn0z4c] { opacity: 1; }

.plr-nav-close[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 6px;
    cursor: pointer;
    color: var(--b9-dark-text-muted);
    font-size: 1.25rem;
    transition: background 160ms ease, color 160ms ease;
}

.plr-nav-close:hover[b-t57edn0z4c] {
    background: rgba(255,255,255,0.08);
    color: rgba(255,255,255,0.9);
}

/* Scrollable drawer body - uses sb-* classes for nav */
.plr-drawer-body[b-t57edn0z4c] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    display: flex;
    flex-direction: column;
    padding: 6px 0 0;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.07) transparent;
}

/*
  sb-* re-declarations for drawer markup inside PlayerLayout.
  The drawer lives in PlayerLayout (not PlayerSidebar), so the
  PlayerSidebar.razor.css scope does not apply here.
  We re-declare the same sb-* rules so the drawer nav items
  get identical styling to the desktop sidebar.
*/

.sb-section[b-t57edn0z4c] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 0 10px;
}

.sb-section-label[b-t57edn0z4c] {
    display: block;
    font-size: var(--font-size-sm, 14px);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.10em;
    color: var(--b9-dark-text-muted);
    padding: 0 6px;
    margin-top: 20px;
    margin-bottom: 4px;
    user-select: none;
}

.sb-section:first-of-type .sb-section-label[b-t57edn0z4c] { margin-top: 8px; }

.sb-item-wrap[b-t57edn0z4c] { display: contents; }

.sb-item-wrap[b-t57edn0z4c]  .sb-item,
.sb-item[b-t57edn0z4c] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 10px;
    min-height: var(--touch-target-min, 48px);
    border-radius: 10px;
    font-size: var(--font-size-base, 1rem);
    font-weight: 500;
    font-family: var(--b9-font-sans, Inter, system-ui, sans-serif);
    color: var(--b9-dark-text-muted);
    text-decoration: none;
    background: transparent;
    border: none;
    cursor: pointer;
    width: 100%;
    transition: background 180ms ease, color 160ms ease;
    white-space: nowrap;
    overflow: hidden;
    line-height: 1;
}

.sb-item-wrap[b-t57edn0z4c]  .sb-item:hover,
.sb-item:hover[b-t57edn0z4c] {
    background: var(--bg-sidebar-elevated, #0F172A);
    color: var(--b9-dark-text);
}

.sb-item-wrap[b-t57edn0z4c]  .sb-item.active {
    background: var(--bg-sidebar-active, rgba(29,78,216,0.18));
    color: var(--b9-dark-text);
    font-weight: 600;
}

.sb-item-wrap[b-t57edn0z4c]  .sb-item:focus-visible,
.sb-item:focus-visible[b-t57edn0z4c] {
    outline: none;
    box-shadow: 0 0 0 2px rgba(29,78,216,0.55);
}

.sb-item-wrap[b-t57edn0z4c]  .sb-item.sb-item-sm,
.sb-item.sb-item-sm[b-t57edn0z4c] {
    min-height: var(--touch-target-min, 48px);
    font-size: var(--font-size-sm, 14px);
}

.sb-item-wrap[b-t57edn0z4c]  .sb-item.sb-item-signout:hover,
.sb-item.sb-item-signout:hover[b-t57edn0z4c] {
    background: rgba(239,68,68,0.10);
    color: #FCA5A5;
}

.sb-item-wrap[b-t57edn0z4c]  .sb-icon,
.sb-icon[b-t57edn0z4c] {
    font-size: 16px;
    width: 18px;
    text-align: center;
    flex-shrink: 0;
    color: var(--b9-dark-text-muted);
    transition: color 160ms ease;
    line-height: 1;
}

.sb-item-wrap[b-t57edn0z4c]  .sb-item:hover .sb-icon,
.sb-item:hover .sb-icon[b-t57edn0z4c] { color: var(--b9-dark-text); }

/* The sidebar is dark in BOTH themes, so its ink must not follow the theme:
   --b9-primary-text becomes #1E40AF in light, 1.9:1 on this band. */
.sb-item-wrap[b-t57edn0z4c]  .sb-item.active .sb-icon { color: var(--b9-dark-primary-text); }

.sb-item-wrap[b-t57edn0z4c]  .sb-item.sb-item-signout:hover .sb-icon,
.sb-item.sb-item-signout:hover .sb-icon[b-t57edn0z4c] { color: #F87171; }

.sb-item-wrap[b-t57edn0z4c]  .sb-text,
.sb-text[b-t57edn0z4c] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1;
}

.sb-item-wrap[b-t57edn0z4c]  .sb-text-account,
.sb-text-account[b-t57edn0z4c] {
    font-size: var(--font-size-sm, 14px);
    color: var(--b9-dark-text-soft);
    max-width: 160px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sb-spacer[b-t57edn0z4c] { flex: 1; min-height: 16px; }

.sb-footer[b-t57edn0z4c] {
    padding: 0 10px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex-shrink: 0;
}

.sb-footer-rule[b-t57edn0z4c] {
    height: 1px;
    background: var(--b9-dark-border-subtle);
    margin: 0 0 8px;
}

.sb-logout-form[b-t57edn0z4c] { display: contents; }


/* DESKTOP LAYOUT */
.plr-body[b-t57edn0z4c] {
    flex: 1;
    display: flex;
    min-height: 0;
    overflow: hidden;
    width: 100%;
    max-width: 100%;
}

/* Wrapper for the PlayerSidebar component */
.plr-sidebar[b-t57edn0z4c] {
    width: 250px;
    flex-shrink: 0;
    height: 100%;
    position: sticky;
    top: 0;
    align-self: flex-start;
    max-height: 100vh;
    display: flex;
}

.plr-main[b-t57edn0z4c] {
    flex: 1;
    min-width: 0;
    width: 100%;
    max-width: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding-bottom: 0;
    scroll-padding-bottom: 0;
}

@media (max-width: 767.98px) {
    .plr-sidebar[b-t57edn0z4c] {
        display: none !important;
        visibility: hidden !important;
        position: absolute !important;
        left: -9999px !important;
        width: 0 !important;
    }

    .plr-body[b-t57edn0z4c] {
        display: block;
        overflow: visible;
        width: 100%;
        max-width: 100%;
    }

    .plr-main[b-t57edn0z4c] {
        min-width: 0;
        width: 100%;
        max-width: 100%;
        padding-bottom: calc(156px + env(safe-area-inset-bottom, 0px));
        scroll-padding-bottom: calc(156px + env(safe-area-inset-bottom, 0px));
        padding-bottom: calc(var(--plr-bottom-nav-height) + 1.5rem);
        scroll-padding-bottom: calc(var(--plr-bottom-nav-height) + 1.5rem);
    }
}


/* RESPONSIVE */
@media (min-width: 768px) {
    .plr-topbar[b-t57edn0z4c]   { display: none; }
    .plr-layout[b-t57edn0z4c]   { height: 100vh; overflow: hidden; }
    .plr-body[b-t57edn0z4c]     { height: 100vh; overflow: hidden; }
    .plr-sidebar[b-t57edn0z4c]  { max-height: 100vh; }
}


/* MOBILE BOTTOM TAB BAR */
.plr-tabs[b-t57edn0z4c] {
    display: none;
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    min-height: calc(72px + env(safe-area-inset-bottom, 0px));
    min-height: max(var(--plr-bottom-nav-height), var(--touch-target-min, 48px));
    background: var(--bg-sidebar, #0B1220);
    border-top: 1px solid var(--b9-dark-border-subtle);
    align-items: stretch;
    z-index: 100;
    padding-bottom: env(safe-area-inset-bottom, 0);
}

@media (max-width: 767.98px) {
    .plr-tabs[b-t57edn0z4c] {
        display: flex;
    }
}

.plr-tab[b-t57edn0z4c] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 3px;
    text-decoration: none;
    color: var(--b9-dark-text-soft);
    /* 11px -> 13px. These six words are the player's whole navigation on a phone, on EVERY page.
       They are short and sit under an icon, so the furniture floor applies rather than 14 — but
       11 was under the floor the product sets for itself. */
    font-size: var(--font-size-chip);
    font-weight: 500;
    transition: color 160ms ease;
}

.plr-tab i[b-t57edn0z4c] {
    font-size: 1.375rem;
    line-height: 1;
    transition: color 160ms ease;
}

.plr-tab:hover[b-t57edn0z4c] { color: var(--b9-dark-text-muted); }
/* The tab bar sits on --bg-sidebar in BOTH themes; a themed blue (--brand-text flips to
   #1D4ED8 in light) measured 2.18:1 on it. The static dark-band token never flips. */
.plr-tab.active[b-t57edn0z4c] { color: var(--b9-dark-primary-text); }
.plr-tab.active i[b-t57edn0z4c] { color: var(--b9-dark-primary-text); }


/* BLAZOR ERROR UI */
#blazor-error-ui[b-t57edn0z4c] {
    color-scheme: light only;
    background: var(--bg-raised, #1E293B);
    color: var(--text-primary, #E5E7EB);
    bottom: 0;
    box-shadow: 0 -1px 0 var(--border-subtle, rgba(255,255,255,0.06));
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
    font-size: 0.85rem;
}

#blazor-error-ui .dismiss[b-t57edn0z4c] {
    cursor: pointer;
    position: absolute;
    right: 0.75rem;
    top: 0.5rem;
}
/* /Components/Layout/PlayerSidebar.razor.rz.scp.css */
/* ==================================================
   PLAYER SIDEBAR — identical sb-* CSS to admin NavMenu.
   
   Both admin (NavMenu.razor) and player (PlayerSidebar.razor)
   share the same class names and visual rules. The only thing
   that differs is the nav items rendered inside.
   
   Class inventory (identical to admin):
   .sb-shell         full-height column flex container
   .sb-brand         logo area with brand link
   .sb-brand-link    anchor with opacity hover treatment
   .sb-body          scrollable nav area
   .sb-nav           flex column nav tree
   .sb-section       grouped nav items
   .sb-section-label uppercase group header
   .sb-item-wrap     Blazor scope anchor (display:contents)
   .sb-item          nav link/button (::deep target)
   .sb-icon          Bootstrap Icons element inside .sb-item
   .sb-text          label span inside .sb-item
   .sb-text-account  truncated account email
   .sb-spacer        flex:1 pusher
   .sb-footer        account actions region
   .sb-footer-rule   top border for footer
   .sb-logout-form   display:contents form wrapper
================================================== */


/* SHELL */

.sb-shell[b-vveo0iwt5q] {
    display: flex;
    flex-direction: column;
    height: 100%;
    background: var(--bg-sidebar, #0B1220);
    overflow: hidden;
}


/* BRAND AREA */

.sb-brand[b-vveo0iwt5q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 16px 13px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
}

.sb-brand-link[b-vveo0iwt5q] {
    display: flex;
    align-items: center;
    text-decoration: none;
    opacity: 0.90;
    transition: opacity 180ms ease;
}

.sb-brand-link:hover[b-vveo0iwt5q] { opacity: 1; }

.sb-brand-wordmark[b-vveo0iwt5q] {
    display: inline-flex;
    align-items: center;
}

.sb-brand-wordmark--light[b-vveo0iwt5q] {
    display: none;
}


/* SCROLLABLE NAV BODY */

.sb-body[b-vveo0iwt5q] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    display: flex;
    flex-direction: column;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.07) transparent;
}

.sb-body[b-vveo0iwt5q]::-webkit-scrollbar        { width: 3px; }
.sb-body[b-vveo0iwt5q]::-webkit-scrollbar-track  { background: transparent; }
.sb-body[b-vveo0iwt5q]::-webkit-scrollbar-thumb  { background: rgba(255,255,255,0.08); border-radius: 4px; }

.sb-nav[b-vveo0iwt5q] {
    display: flex;
    flex-direction: column;
    flex: 1;
    padding: 6px 0 8px;
}


/* SECTION */

.sb-section[b-vveo0iwt5q] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 0 10px;
}

.sb-section-label[b-vveo0iwt5q] {
    display: block;
    font-size: var(--font-size-sm, 14px);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.10em;
    color: var(--b9-sidebar-text, #B6C6DA);
    padding: 0 6px;
    margin-top: 20px;
    margin-bottom: 4px;
    user-select: none;
}

.sb-section:first-of-type .sb-section-label[b-vveo0iwt5q] { margin-top: 8px; }


/* NAV ITEMS
   .sb-item-wrap receives the Blazor scope attribute.
   ::deep targets the NavLink-rendered <a> and native <button>. */

.sb-item-wrap[b-vveo0iwt5q] {
    display: contents;
}

/* Base item */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item,
.sb-item[b-vveo0iwt5q] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 0 10px;
    min-height: var(--touch-target-min, 48px);
    border-radius: 10px;
    font-size: var(--font-size-base, 1rem);
    font-weight: 500;
    font-family: var(--b9-font-sans, Inter, system-ui, sans-serif);
    color: var(--b9-sidebar-text, #B6C6DA);
    text-decoration: none;
    background: transparent;
    border: none;
    cursor: pointer;
    width: 100%;
    transition: background 180ms ease, color 160ms ease;
    white-space: nowrap;
    overflow: hidden;
    line-height: 1;
}

/* Hover */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item:hover,
.sb-item:hover[b-vveo0iwt5q] {
    background: var(--b9-sidebar-hover-bg, #0F172A);
    color: var(--b9-sidebar-active-text, #E5E7EB);
}

/* Active — Blazor NavLink adds .active */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item.active {
    background: var(--b9-sidebar-active-bg, rgba(29,78,216,0.18));
    color: var(--b9-sidebar-active-text, #E5E7EB);
    font-weight: 600;
}

/* Focus ring */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item:focus-visible,
.sb-item:focus-visible[b-vveo0iwt5q] {
    outline: none;
    box-shadow: 0 0 0 2px rgba(29,78,216,0.55);
}

/* Small variant — footer items */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item.sb-item-sm,
.sb-item.sb-item-sm[b-vveo0iwt5q] {
    min-height: var(--touch-target-min, 48px);
    font-size: var(--font-size-sm, 14px);
}

/* Sign-out: subtle danger tint on hover */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item.sb-item-signout:hover,
.sb-item.sb-item-signout:hover[b-vveo0iwt5q] {
    background: rgba(239,68,68,0.10);
    color: #FCA5A5;
}


/* ICON */

.sb-item-wrap[b-vveo0iwt5q]  .sb-icon,
.sb-icon[b-vveo0iwt5q] {
    font-size: 16px;
    width: 18px;
    text-align: center;
    flex-shrink: 0;
    color: var(--b9-sidebar-text, #B6C6DA);
    transition: color 160ms ease;
    line-height: 1;
}

.sb-item-wrap[b-vveo0iwt5q]  .sb-item:hover .sb-icon,
.sb-item:hover .sb-icon[b-vveo0iwt5q] {
    color: var(--b9-sidebar-active-text, #F3F6FB);
}

/* The sidebar is dark in BOTH themes, so its ink must not follow the theme:
   --b9-primary-text becomes #1E40AF in light, 1.9:1 on this band. */
.sb-item-wrap[b-vveo0iwt5q]  .sb-item.active .sb-icon {
    color: var(--b9-dark-primary-text);
}

.sb-item-wrap[b-vveo0iwt5q]  .sb-item.sb-item-signout:hover .sb-icon,
.sb-item.sb-item-signout:hover .sb-icon[b-vveo0iwt5q] {
    color: #F87171;
}


/* TEXT */

.sb-item-wrap[b-vveo0iwt5q]  .sb-text,
.sb-text[b-vveo0iwt5q] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1;
}

.sb-item-wrap[b-vveo0iwt5q]  .sb-text-account,
.sb-text-account[b-vveo0iwt5q] {
    font-size: var(--font-size-sm, 14px);
    color: var(--b9-sidebar-text, #B6C6DA);
    max-width: 138px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}


/* SPACER + FOOTER */

.sb-spacer[b-vveo0iwt5q] { flex: 1; min-height: 16px; }

.sb-footer[b-vveo0iwt5q] {
    padding: 0 10px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex-shrink: 0;
}

.sb-footer-rule[b-vveo0iwt5q] {
    height: 1px;
    /* The sidebar is dark in both themes; --border-subtle flips to rgba(0,0,0,.06) in light
       and the rule disappears. --b9-dark-border-subtle is the same value that never flips. */
    background: var(--b9-dark-border-subtle);
    margin: 0 0 8px;
}

.sb-logout-form[b-vveo0iwt5q] { display: contents; }

.sb-item-wrap[b-vveo0iwt5q]  .theme-toggle.sb-theme-toggle {
    width: 100%;
    height: 36px;
    justify-content: flex-start;
    padding: 0 10px;
    border-radius: 10px;
    color: var(--b9-sidebar-text, #B6C6DA);
}

.sb-item-wrap[b-vveo0iwt5q]  .theme-toggle.sb-theme-toggle:hover {
    background: var(--b9-sidebar-hover-bg, #0F172A);
    color: var(--b9-sidebar-active-text, #E5E7EB);
}

.sb-item-wrap[b-vveo0iwt5q]  .theme-toggle.sb-theme-toggle .theme-toggle-label {
    margin-left: 8px;
    font-size: 13px;
    font-weight: 500;
}
/* /Components/Layout/PublicLayout.razor.rz.scp.css */
/* ================================================================
   PUBLIC LAYOUT
   Minimal top bar + centered content area + slim footer
   ================================================================ */

/* ── Page shell ── */
.pub-layout[b-8snw8zkolp] {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    background: var(--bg-app, #020617);
    color: var(--text-primary, #f1f5f9);
}

/* ── Top bar ── */
.pub-topbar[b-8snw8zkolp] {
    /* 🔴 --bg-sidebar is DARK IN BOTH THEMES by design, so this bar cannot take its lettering from
       the theme's text tokens — they flip. In light mode --text-primary is #1A1A1A and
       --text-secondary is #475569, which put the club's name at 1.19:1 and the Sign In link at
       1.93:1 on their own bar: invisible. Same defect the club page's hero band had, one layer up.
       These two are the BAR's ink and do not flip. */
    --pub-topbar-ink:      #F3F6FB;
    --pub-topbar-ink-soft: #CBD5E1;
    /* G02: the plate under a club's logo. The bar is dark in both themes, so the plate must stay
       light in both — the static always-dark chrome palette is the right family (its lightest tone). */
    --pub-topbar-plate:    var(--b9-dark-text);

    background: var(--bg-sidebar, #0B1220);
    /* Everything in the bar inherits the BAR's ink. Without this the colour is inherited from
       .pub-layout, which computed it OUTSIDE the always-dark scope: in light mode that is #1A1A1A,
       so any lettering added here that forgets to set a colour of its own lands near-black on a
       near-black band. Nothing does today; the point is that the next thing added cannot. */
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    flex-shrink: 0;
    position: sticky;
    top: 0;
    z-index: 100;
}

.pub-topbar-inner[b-8snw8zkolp] {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 1.25rem;
    /* min-height, not height — the club's name is allowed to wrap at phone width below, and a hard
       height would clip the second line rather than make room for it. */
    min-height: 52px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.pub-topbar-brand[b-8snw8zkolp] {
    display: flex;
    align-items: center;
    /* Measured 131x28 on a phone. This is the home link on EVERY public page — the flyer, the
       club page, the booking page, the leaderboard, the QR guest card — and it is the only way
       back for someone with no account and no sidebar. */
    min-height: var(--touch-target, 48px);
    text-decoration: none;
    flex-shrink: 0;
}

.pub-topbar-actions[b-8snw8zkolp] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    /* P09: "My / Events" and "Sign / Out" wrapped on phones because the club name would not
       shrink. The actions keep their width; the name is the thing that yields (see .pub-topbar-club). */
    flex-shrink: 0;
}

.pub-topbar-link[b-8snw8zkolp] {
    /* Already at the 14px floor; the problem was the BOX. Measured 53x29 on a phone — the
       type was fine and the target was not, which is exactly why X03 is a separate finding
       from X02. Height from the box, the label untouched. */
    display: inline-flex;
    align-items: center;
    min-height: var(--touch-target-min);
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--pub-topbar-ink-soft);
    text-decoration: none;
    padding: 0.375rem 0.5rem;
    white-space: nowrap;      /* P09: one line, always */
    line-height: 1.2;
    border-radius: 6px;
    transition: color 0.15s, background 0.15s;
    background: none;
    border: none;
    cursor: pointer;
}

.pub-topbar-link:hover[b-8snw8zkolp],
.pub-topbar-link-btn:hover[b-8snw8zkolp] {
    color: var(--pub-topbar-ink);
    background: rgba(255, 255, 255, 0.06);
}

.pub-topbar-btn[b-8snw8zkolp] {
    font-size: 0.875rem;
    font-weight: 600;
    color: #fff;
    background: var(--brand, #1D4ED8);
    /* Was 108x34 — the padding alone set the height, 14px under the floor. This is an anchor, so
       the global `button { min-height: 48px }` in app.css never reached it; an <a> styled as a
       button has to ask for the floor itself. It sits in the SHARED public topbar, which is why
       it was measured on 2026-09-15 and left alone until Matt approved the change (2026-09-16):
       CLAUDE.md puts shared layout behind his say-so, and that is a rule about blast radius, not
       about whether the floor applies. inline-flex + centring so the box grows around the label
       rather than the label drifting off its top edge. */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    padding: 0.4rem 1rem;
    border-radius: 6px;
    text-decoration: none;
    transition: opacity 0.15s;
}

.pub-topbar-btn:hover[b-8snw8zkolp] {
    opacity: 0.88;
    color: #fff;
}

/* X18: the public dark/light switch. ::deep because ThemeToggle is its own component and a
   scoped rule stops at the boundary (same shape as PlayerLayout's .plr-theme-toggle). It takes
   the BAR's ink, not the theme's — the bar is dark in both themes, so a token that flips would
   put the icon at 1.x:1 in light, which is the very defect this control now lets people meet. */
.pub-topbar-actions[b-8snw8zkolp]  .theme-toggle.pub-theme-toggle {
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 8px;
    color: var(--pub-topbar-ink-soft);
}

.pub-topbar-actions[b-8snw8zkolp]  .theme-toggle.pub-theme-toggle:hover,
.pub-topbar-actions[b-8snw8zkolp]  .theme-toggle.pub-theme-toggle:focus-visible {
    background: rgba(255, 255, 255, 0.08);
    color: var(--pub-topbar-ink);
}

/* The un-branded bar — wordmark, Sign In, Sign Up Free — was already within 20px of the edge of
   a 390px phone, so a fourth control put it 28px OVER and the page scrolled sideways. Measured
   after adding the toggle, not guessed. The spacing yields rather than the toggle: it keeps its
   48×48 target, and Sign Up Free keeps its words. A club-branded bar has two actions instead of
   three and never came close, but it tightens with everything else so the two stay one bar. */
@media (max-width: 430px) {
    .pub-topbar-inner[b-8snw8zkolp]  { padding: 0 0.75rem; gap: 0.5rem; }
    .pub-topbar-actions[b-8snw8zkolp] { gap: 0.375rem; }
    .pub-topbar-link[b-8snw8zkolp]   { padding: 0.375rem 0.25rem; }
    .pub-topbar-btn[b-8snw8zkolp]    { padding: 0.4rem 0.7rem; }
}

/* ── Main content ── */
.pub-main[b-8snw8zkolp] {
    flex: 1;
}

/* ── Footer ── */
.pub-footer[b-8snw8zkolp] {
    background: var(--bg-sidebar, #0B1220);
    /* Same reason as the bar above: the band's ink, inherited by everything inside it. */
    color: var(--text-primary);
    border-top: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    padding: 1rem 1.25rem;
    text-align: center;
}

.pub-footer-inner[b-8snw8zkolp] {
    max-width: 1200px;
    margin: 0 auto;
}

/* 🔴 The footer is painted on --bg-sidebar, which is dark in BOTH themes, so its lettering has
   the same problem the bar above solved with --pub-topbar-ink: --text-muted flips, and in light
   mode this line measured 2.18:1 on its own band — on every public page there is. The footer
   element carries .b9-always-dark now, so the token below resolves to the DARK #9FB0C4 here
   whichever theme the page is in: 6.60:1 on light's #1E293B band, 8.45:1 on dark's #0B1220. */
.pub-footer-copy[b-8snw8zkolp] {
    /* 13px. A club's own copyright line is something a visitor reads, not furniture. (X02) */
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
}

/* ── A club's own chrome, on a club's own page ───────────────────── */
.pub-topbar-club[b-8snw8zkolp] {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    text-decoration: none;
    min-height: 48px;
    /* P09: this is the flex item that yields when the bar is tight — the brand link's own
       flex-shrink: 0 would otherwise force the links on the right to wrap. */
    flex-shrink: 1;
    min-width: 0;
}

.pub-topbar-club-logo[b-8snw8zkolp] {
    /* G02: a 30×30 box with object-fit: cover showed the Lake City logo as "c City G". The logo's
       own ratio sets the width now, nothing is cropped, and it sits on a light plate so dark
       artwork on a transparent PNG stays visible on the dark bar. */
    height: 32px;
    width: auto;
    max-width: 120px;
    object-fit: contain;
    background: var(--pub-topbar-plate);
    padding: 2px 4px;
    border-radius: 6px;
    flex-shrink: 0;
}

@media (max-width: 480px) {
    .pub-topbar-club-logo[b-8snw8zkolp] { max-width: 96px; }
}

.pub-topbar-club-name[b-8snw8zkolp] {
    font-weight: 700;
    font-size: 1rem;
    letter-spacing: -0.01em;
    color: var(--pub-topbar-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 46vw;
    min-width: 0;             /* P09: may shrink below its text; the ellipsis takes over */
}

/* Measured on 2026-09-16: at 390px this is a 136px box and 7 of the 22 club names in the
   production clone (32%) did not fit. It carries a `title`, but a title is a hover tooltip and
   this is the phone — the club's own name, on the club's own public page, with no way to read it.
   Two lines hold every real club name (the longest is 30 characters). The bar above now has
   min-height so the second line has somewhere to go. */
@media (max-width: 640px) {
    .pub-topbar-club-name[b-8snw8zkolp] {
        white-space: normal;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        max-width: 100%;
    }
}

/* Small, and it is a link rather than a boast — the one place our name belongs here. */
.pub-footer-powered[b-8snw8zkolp] {
    /* 12px, and it is a LINK as well as a sentence. (X02) Measured 201x41 once the type
       reached the floor, so it takes the touch floor too. (X03) */
    display: inline-flex;
    align-items: center;
    min-height: var(--touch-target-min);
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    text-decoration: none;
}

.pub-footer-powered:hover[b-8snw8zkolp] {
    text-decoration: underline;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-i8jcfksmne],
.components-reconnect-repeated-attempt-visible[b-i8jcfksmne],
.components-reconnect-failed-visible[b-i8jcfksmne],
.components-pause-visible[b-i8jcfksmne],
.components-resume-failed-visible[b-i8jcfksmne],
.components-rejoining-animation[b-i8jcfksmne] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-retrying[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-failed[b-i8jcfksmne],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-i8jcfksmne] {
    display: block;
}


#components-reconnect-modal[b-i8jcfksmne] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-i8jcfksmne 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-i8jcfksmne 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-i8jcfksmne 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-i8jcfksmne]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-i8jcfksmne 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-i8jcfksmne {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-i8jcfksmne {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-i8jcfksmne {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-i8jcfksmne] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-i8jcfksmne] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-i8jcfksmne] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-i8jcfksmne] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-i8jcfksmne] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-i8jcfksmne] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-i8jcfksmne] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-i8jcfksmne 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-i8jcfksmne] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-i8jcfksmne {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/Admin/Admins.razor.rz.scp.css */
/* Admins.razor.css — inherits from CourseAccounts.razor.css pattern */
/* All styles live in CourseAccounts.razor.css since both pages share
   the .adm-* class namespace. This file intentionally left minimal. */

/* Page-specific tweak: slightly narrower max-width for admins list */
.adm-page[b-f488mygb9s] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 960px;
}
/* /Components/Pages/Admin/CasualGreens.razor.rz.scp.css */
.cg-admin[b-idz7u1ntff] {
    max-width: 960px;
    margin: 0 auto;
    padding: 20px 16px 80px;
}

.cg-title[b-idz7u1ntff] {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--text-primary, #F1F5F9);
    margin: 0 0 4px;
}

.cg-sub[b-idz7u1ntff] {
    color: var(--text-secondary, #CBD5E1);
    margin: 0 0 20px;
}

.cg-hint[b-idz7u1ntff] {
    color: var(--text-muted, #94A3B8);
    padding: 16px 2px;
}

.cg-layout[b-idz7u1ntff] {
    display: grid;
    grid-template-columns: 260px 1fr;
    gap: 16px;
    align-items: start;
}

@media (max-width: 720px) {
    .cg-layout[b-idz7u1ntff] { grid-template-columns: 1fr; }
}

/* Course list */
.cg-courses[b-idz7u1ntff] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.cg-course[b-idz7u1ntff] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    text-align: left;
    padding: 12px 14px;
    border-radius: 12px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    background: var(--bg-surface, #0F172A);
    color: inherit;
    cursor: pointer;
}

.cg-course:hover[b-idz7u1ntff] { border-color: var(--border-strong, rgba(255,255,255,0.20)); }
.cg-course.on[b-idz7u1ntff] { border-color: var(--brand, #1D4ED8); background: var(--brand-soft, rgba(29,78,216,0.12)); }
.cg-course-name[b-idz7u1ntff] { font-weight: 700; color: var(--text-primary, #F1F5F9); }
.cg-course-count[b-idz7u1ntff] { font-size: 0.8rem; color: var(--text-muted, #94A3B8); }

/* Greens */
.cg-greens[b-idz7u1ntff] { display: flex; flex-direction: column; gap: 8px; }

.cg-green[b-idz7u1ntff] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
    border-radius: 12px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    background: var(--bg-surface, #0F172A);
}

.cg-green-rejected[b-idz7u1ntff] { opacity: 0.7; }

.cg-green-head[b-idz7u1ntff] { display: flex; align-items: center; gap: 8px; }
.cg-green-name[b-idz7u1ntff] { font-weight: 700; color: var(--text-primary, #F1F5F9); }
.cg-green-meta[b-idz7u1ntff] { font-size: 0.82rem; color: var(--text-muted, #94A3B8); margin-top: 2px; }

.cg-badge[b-idz7u1ntff] {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 2px 8px;
    border-radius: 999px;
}

.cg-badge.is-verified[b-idz7u1ntff] { background: rgba(16,185,129,0.15); color: #6EE7B7; }
.cg-badge.is-confirmed[b-idz7u1ntff] { background: var(--brand-soft, rgba(29,78,216,0.15)); color: var(--brand-text, #93C5FD); }
.cg-badge.is-approx[b-idz7u1ntff] { background: rgba(148,163,184,0.15); color: var(--text-muted, #94A3B8); }

.cg-green-actions[b-idz7u1ntff] { display: flex; gap: 8px; flex-shrink: 0; }

.cg-btn[b-idz7u1ntff] {
    min-height: 40px;
    padding: 0 14px;
    border-radius: 10px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: transparent;
    color: var(--text-secondary, #CBD5E1);
    font-weight: 600;
    cursor: pointer;
}

.cg-btn:disabled[b-idz7u1ntff] { opacity: 0.5; cursor: default; }
.cg-confirm:hover[b-idz7u1ntff] { border-color: var(--brand, #1D4ED8); color: var(--brand-text, #93C5FD); }
.cg-reject:hover[b-idz7u1ntff] { border-color: #EF4444; color: #FCA5A5; }
.cg-clear:hover[b-idz7u1ntff] { border-color: var(--border-strong, rgba(255,255,255,0.20)); color: var(--text-primary, #F1F5F9); }

.cg-rejected-head[b-idz7u1ntff] {
    margin-top: 12px;
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted, #94A3B8);
}
/* /Components/Pages/Admin/CasualHandicaps.razor.rz.scp.css */
.ch-admin[b-x4e0z6d8lg] {
    max-width: 960px;
    margin: 0 auto;
    padding: 20px 16px 80px;
}

.ch-title[b-x4e0z6d8lg] {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--b9-text, #F1F5F9);
    margin: 0 0 4px;
}

.ch-sub[b-x4e0z6d8lg] {
    color: var(--b9-text-soft, #CBD5E1);
    margin: 0 0 20px;
    max-width: 68ch;
    line-height: 1.5;
}

.ch-hint[b-x4e0z6d8lg] {
    color: var(--b9-text-muted, #94A3B8);
    padding: 16px 2px;
}

/* Actions */
.ch-actions[b-x4e0z6d8lg] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 18px;
}

.ch-btn[b-x4e0z6d8lg] {
    min-height: 48px;               /* touch target floor */
    padding: 0 18px;
    border-radius: 10px;
    border: 1px solid var(--b9-border, #334155);
    background: var(--b9-surface-muted, #1E293B);
    color: var(--b9-text, #F1F5F9);
    font-weight: 700;
    cursor: pointer;
}

.ch-btn:disabled[b-x4e0z6d8lg] {
    opacity: .55;
    cursor: default;
}

.ch-btn--primary[b-x4e0z6d8lg] {
    background: var(--b9-primary, #2563EB);
    border-color: var(--b9-primary, #2563EB);
    color: #fff;
}

.ch-btn--danger[b-x4e0z6d8lg] {
    background: var(--b9-danger, #DC2626);
    border-color: var(--b9-danger, #DC2626);
    color: #fff;
}

.ch-btn--quiet[b-x4e0z6d8lg] {
    background: transparent;
}

/* Notes */
.ch-note[b-x4e0z6d8lg] {
    padding: 12px 14px;
    border-radius: 10px;
    margin-bottom: 18px;
    line-height: 1.5;
}

.ch-note--good[b-x4e0z6d8lg] {
    background: var(--b9-success-soft, rgba(22, 163, 74, .14));
    color: var(--b9-success-text, #86EFAC);
    border: 1px solid var(--b9-success, #16A34A);
}

.ch-note--bad[b-x4e0z6d8lg] {
    background: var(--b9-danger-soft, rgba(220, 38, 38, .14));
    color: var(--b9-danger-text, #FCA5A5);
    border: 1px solid var(--b9-danger, #DC2626);
}

/* Summary */
.ch-summary[b-x4e0z6d8lg] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: 10px;
    margin-bottom: 22px;
}

.ch-stat[b-x4e0z6d8lg] {
    background: var(--b9-card-bg, #0F172A);
    border: 1px solid var(--b9-card-border, #1E293B);
    border-radius: 12px;
    padding: 14px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ch-stat--hot[b-x4e0z6d8lg] {
    border-color: var(--b9-warning, #D97706);
}

.ch-stat-n[b-x4e0z6d8lg] {
    font-size: 1.7rem;
    font-weight: 800;
    color: var(--b9-text, #F1F5F9);
    font-variant-numeric: tabular-nums;
}

.ch-stat-l[b-x4e0z6d8lg] {
    color: var(--b9-text-muted, #94A3B8);
    font-size: .85rem;
}

/* Player block */
.ch-player[b-x4e0z6d8lg] {
    background: var(--b9-card-bg, #0F172A);
    border: 1px solid var(--b9-card-border, #1E293B);
    border-radius: 12px;
    padding: 14px;
    margin-bottom: 12px;
}

.ch-player-head[b-x4e0z6d8lg] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.ch-user[b-x4e0z6d8lg] {
    color: var(--b9-text-muted, #94A3B8);
    font-size: .8rem;
    word-break: break-all;
}

.ch-index[b-x4e0z6d8lg] {
    font-weight: 800;
    color: var(--b9-text, #F1F5F9);
    font-variant-numeric: tabular-nums;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.ch-index--moves[b-x4e0z6d8lg] {
    color: var(--b9-warning-text, #FCD34D);
}

.ch-badge[b-x4e0z6d8lg] {
    background: var(--b9-warning-soft, rgba(217, 119, 6, .16));
    color: var(--b9-warning-text, #FCD34D);
    border: 1px solid var(--b9-warning, #D97706);
    border-radius: 999px;
    padding: 2px 9px;
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .02em;
}

.ch-player-meta[b-x4e0z6d8lg] {
    color: var(--b9-text-muted, #94A3B8);
    font-size: .85rem;
    margin-top: 4px;
}

/* Rounds */
.ch-rounds[b-x4e0z6d8lg] {
    margin-top: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.ch-round[b-x4e0z6d8lg] {
    border-top: 1px solid var(--b9-border, #334155);
    padding-top: 8px;
}

.ch-round-when[b-x4e0z6d8lg] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: baseline;
}

.ch-round-course[b-x4e0z6d8lg] {
    font-weight: 700;
    color: var(--b9-text, #F1F5F9);
}

.ch-round-date[b-x4e0z6d8lg] {
    color: var(--b9-text-muted, #94A3B8);
    font-size: .85rem;
}

.ch-round-facts[b-x4e0z6d8lg] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin-top: 2px;
    color: var(--b9-text-soft, #CBD5E1);
    font-size: .88rem;
    font-variant-numeric: tabular-nums;
}

.ch-counted--changed[b-x4e0z6d8lg] {
    color: var(--b9-warning-text, #FCD34D);
    font-weight: 700;
}

.ch-reason[b-x4e0z6d8lg] {
    color: var(--b9-text-muted, #94A3B8);
}

.ch-reason--fix[b-x4e0z6d8lg] {
    color: var(--b9-success-text, #86EFAC);
}
/* /Components/Pages/Admin/CourseAccounts.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════
   ADMIN SUB-PAGES — shared styles (CourseAccounts, Admins)
═══════════════════════════════════════════════════════════ */

/* ── Page shell ─────────────────────────────────────────── */
.adm-page[b-3qghmd2607] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 1200px;
}

/* ── Header ─────────────────────────────────────────────── */
.adm-header[b-3qghmd2607] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}

.adm-header-left[b-3qghmd2607] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    flex-wrap: wrap;
}

.adm-back[b-3qghmd2607] {
    display: inline-flex;
    align-items: center;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--b9-text-muted);
    text-decoration: none;
    transition: color 0.1s;
}

.adm-back:hover[b-3qghmd2607] {
    color: var(--b9-text);
    text-decoration: none;
}

.adm-title[b-3qghmd2607] {
    font-size: 1.25rem;
    font-weight: 700;
    margin: 0;
    color: var(--b9-text);
    letter-spacing: -0.02em;
}

.admin-role-badge[b-3qghmd2607] {
    display: inline-flex;
    align-items: center;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--b9-danger-text);
    background: var(--b9-danger-soft);
    border: 1px solid var(--b9-danger);
    border-radius: 20px;
    padding: 0.2rem 0.7rem;
}

/* ── Toolbar (search + filter) ──────────────────────────── */
.adm-toolbar[b-3qghmd2607] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1.125rem;
}

.adm-search-wrap[b-3qghmd2607] {
    position: relative;
    display: flex;
    align-items: center;
}

.adm-search-icon[b-3qghmd2607] {
    position: absolute;
    left: 0.625rem;
    font-size: 0.8rem;
    color: var(--b9-text-soft);
    pointer-events: none;
}

.adm-search-input[b-3qghmd2607] {
    padding: 0.4rem 1.75rem 0.4rem 2rem;
    font-size: 0.8125rem;
    border: 1px solid var(--b9-border);
    border-radius: 7px;
    background: var(--b9-card-bg);
    color: var(--b9-text);
    width: 280px;
    outline: none;
    transition: border-color 0.12s;
}

.adm-search-input:focus[b-3qghmd2607] {
    border-color: var(--b9-primary);
}

.adm-search-input[b-3qghmd2607]::placeholder {
    color: var(--b9-text-soft);
}

.adm-search-clear[b-3qghmd2607] {
    position: absolute;
    right: 0.5rem;
    background: none;
    border: none;
    padding: 0;
    font-size: 0.65rem;
    color: var(--b9-text-soft);
    cursor: pointer;
    display: flex;
    align-items: center;
    transition: color 0.1s;
}

.adm-search-clear:hover[b-3qghmd2607] {
    color: var(--b9-text);
}

.adm-filter-select[b-3qghmd2607] {
    padding: 0.375rem 0.75rem;
    font-size: 0.8125rem;
    border: 1px solid var(--b9-border);
    border-radius: 7px;
    background: var(--b9-card-bg);
    color: var(--b9-text);
    outline: none;
    cursor: pointer;
    transition: border-color 0.12s;
}

.adm-filter-select:focus[b-3qghmd2607] {
    border-color: var(--b9-primary);
}

.adm-count[b-3qghmd2607] {
    margin-left: auto;
    font-size: 0.8rem;
    color: var(--b9-text-muted);
    white-space: nowrap;
}

/* ── Card ───────────────────────────────────────────────── */
.adm-card[b-3qghmd2607] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 10px;
    box-shadow: var(--b9-card-shadow);
    overflow: hidden;
}

.adm-card-header[b-3qghmd2607] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--b9-border);
}

.adm-card-title[b-3qghmd2607] {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--b9-text-muted);
}

/* ── Alerts ─────────────────────────────────────────────── */
.adm-alert[b-3qghmd2607] {
    display: flex;
    align-items: center;
    font-size: 0.8125rem;
    font-weight: 500;
    border-radius: 8px;
    padding: 0.5rem 0.875rem;
    margin-bottom: 0.875rem;
    border: 1px solid;
}

.adm-alert-success[b-3qghmd2607] {
    background: var(--b9-success-soft);
    border-color: var(--b9-success);
    color: var(--b9-success-text);
}

.adm-alert-danger[b-3qghmd2607] {
    background: var(--b9-danger-soft);
    border-color: var(--b9-danger);
    color: var(--b9-danger-text);
}

.adm-alert-warning[b-3qghmd2607] {
    background: var(--b9-warning-soft);
    border-color: var(--b9-warning);
    color: var(--b9-warning-text);
}

/* ── Plan audit list (Manage plan modal) ────────────────── */
.adm-audit-list[b-3qghmd2607] {
    list-style: none;
    margin: 0.25rem 0 0;
    padding: 0;
}

.adm-audit-item[b-3qghmd2607] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.3125rem 0;
    font-size: 0.8125rem;
    border-bottom: 1px solid var(--b9-border-subtle, rgba(255,255,255,0.06));
}

.adm-audit-item:last-child[b-3qghmd2607] { border-bottom: none; }

.adm-audit-when[b-3qghmd2607] {
    flex: 0 0 auto;
    color: var(--b9-text-muted);
    font-variant-numeric: tabular-nums;
    min-width: 6.5rem;
}

.adm-audit-what[b-3qghmd2607] { color: var(--b9-text); }

/* ── Loading ────────────────────────────────────────────── */
.adm-loading[b-3qghmd2607] {
    display: flex;
    align-items: center;
    padding: 1.5rem 1rem;
    font-size: 0.8125rem;
    color: var(--b9-text-muted);
}

/* ── Table ──────────────────────────────────────────────── */
.etable-wrap[b-3qghmd2607] { overflow-x: auto; }

.etable[b-3qghmd2607] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.etable thead th[b-3qghmd2607] {
    padding: 0.55rem 1rem;
    text-align: left;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--b9-text-muted);
    background: var(--b9-surface-muted);
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
}

.etable thead th:last-child[b-3qghmd2607] { text-align: right; }

.etable tbody tr[b-3qghmd2607] {
    border-bottom: 1px solid var(--b9-border);
    transition: background 0.1s;
}

.etable tbody tr:last-child[b-3qghmd2607] { border-bottom: none; }
.etable tbody tr:hover[b-3qghmd2607] { background: var(--b9-surface-muted); }

.etable td[b-3qghmd2607] {
    padding: 0.65rem 1rem;
    color: var(--b9-text);
    vertical-align: middle;
}

.etd-name[b-3qghmd2607] { min-width: 160px; }

.etd-name-link[b-3qghmd2607] {
    display: block;
    font-weight: 600;
    color: var(--b9-text);
    text-decoration: none;
    transition: color 0.1s;
}

.etd-name-link:hover[b-3qghmd2607] { color: var(--b9-primary-text); text-decoration: none; }

.etd-sub[b-3qghmd2607] {
    display: block;
    font-size: 0.75rem;
    color: var(--b9-text-soft);
    margin-top: 0.1rem;
}

.etd-contact[b-3qghmd2607] { min-width: 140px; }

.etd-contact-email[b-3qghmd2607] {
    display: block;
    font-size: 0.8rem;
    color: var(--b9-text-muted);
}

.etd-contact-phone[b-3qghmd2607] {
    display: block;
    font-size: 0.75rem;
    color: var(--b9-text-soft);
    margin-top: 0.05rem;
}

.etd-count[b-3qghmd2607] {
    text-align: center;
    font-variant-numeric: tabular-nums;
    color: var(--b9-text-muted);
    font-size: 0.8rem;
}

.etd-email[b-3qghmd2607] {
    color: var(--b9-text-muted);
    font-size: 0.8rem;
}

.etd-actions[b-3qghmd2607] {
    text-align: right;
    white-space: nowrap;
}

.etd-empty[b-3qghmd2607] {
    text-align: center;
    padding: 2rem;
    color: var(--b9-text-muted);
    font-size: 0.85rem;
}

/* Avatar row for admins table */
.etd-avatar-row[b-3qghmd2607] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.etd-avatar[b-3qghmd2607] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    font-size: 0.75rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.admin-you-badge[b-3qghmd2607] {
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--b9-text-soft);
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    padding: 1px 7px;
}

/* Action icon buttons */
/* Support's front door, promoted out of the ⋮ sheet onto the row.
   This console exists to let support get into a customer's org; that action must not be an
   unlabelled icon one level down while the org name links to a single settings page. Neutral
   tokens only — each has a dark-mode definition, so the button is dark-theme safe. */
.etd-enter-btn[b-3qghmd2607] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    min-height: 36px;
    padding: 0.35rem 0.7rem;
    margin-right: 0.35rem;
    border-radius: 8px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    vertical-align: middle;
    cursor: pointer;
}

.etd-enter-btn:hover[b-3qghmd2607] {
    background: var(--b9-surface);
    border-color: var(--b9-text-muted);
    color: var(--b9-text);
}

.etd-enter-btn i[b-3qghmd2607] {
    font-size: 0.9rem;
    color: var(--b9-text-muted);
}

.etd-action-btn[b-3qghmd2607] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    font-size: 0.825rem;
    color: var(--b9-text-soft);
    text-decoration: none;
    background: transparent;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background 0.1s, color 0.1s, border-color 0.1s;
    margin-left: 2px;
}

.etd-action-btn:hover[b-3qghmd2607] {
    background: var(--b9-surface-muted);
    border-color: var(--b9-border);
    color: var(--b9-text);
    text-decoration: none;
}

.etd-action-activate:hover[b-3qghmd2607] {
    background: var(--b9-success-soft);
    border-color: var(--b9-success);
    color: var(--b9-success-text);
}

.etd-action-suspend:hover[b-3qghmd2607] {
    background: var(--b9-warning-soft);
    border-color: var(--b9-warning);
    color: var(--b9-warning-text);
}

.adm-action-menu-toggle[b-3qghmd2607] {
    width: 32px;
    height: 32px;
}

/* ── Row actions sheet — centered overlay so it is never clipped by the table's
      horizontal scroll (.etable-wrap) or the card's rounded-corner overflow (.adm-card). ── */
.adm-actions-overlay[b-3qghmd2607] {
    position: fixed;
    inset: 0;
    z-index: 1090;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(2, 6, 23, 0.72);
    backdrop-filter: blur(6px);
}

.adm-actions-sheet[b-3qghmd2607] {
    width: min(360px, 100%);
    max-height: min(86vh, 640px);
    overflow-y: auto;
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 16px;
    box-shadow: var(--b9-card-shadow-xl);
    color: var(--b9-text);
}

.adm-actions-sheet-head[b-3qghmd2607] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.1rem;
    border-bottom: 1px solid var(--b9-border);
}

.adm-actions-sheet-kicker[b-3qghmd2607] {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--b9-text-soft);
    margin-bottom: 0.2rem;
}

.adm-actions-sheet-title[b-3qghmd2607] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: var(--b9-text);
    word-break: break-word;
}

.adm-actions-sheet-body[b-3qghmd2607] {
    display: flex;
    flex-direction: column;
    padding: 0.5rem;
}

.adm-action-row[b-3qghmd2607] {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    width: 100%;
    min-height: 48px;
    padding: 0.6rem 0.75rem;
    border: none;
    border-radius: 10px;
    background: transparent;
    color: var(--b9-text);
    font-size: 0.9rem;
    font-weight: 500;
    text-align: left;
    text-decoration: none;
    cursor: pointer;
    transition: background 0.1s, color 0.1s;
}

.adm-action-row i[b-3qghmd2607] {
    font-size: 1rem;
    color: var(--b9-text-muted);
    width: 1.25rem;
    text-align: center;
    flex-shrink: 0;
}

.adm-action-row:hover:not(:disabled)[b-3qghmd2607],
.adm-action-row:focus-visible[b-3qghmd2607] {
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    text-decoration: none;
}

.adm-action-row:disabled[b-3qghmd2607] {
    opacity: 0.5;
    cursor: not-allowed;
}

.adm-action-row--danger[b-3qghmd2607] { color: var(--b9-danger-text); }
.adm-action-row--danger i[b-3qghmd2607] { color: var(--b9-danger-text); }

.adm-action-row--danger:hover:not(:disabled)[b-3qghmd2607],
.adm-action-row--danger:focus-visible[b-3qghmd2607] {
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
}

.adm-action-sep[b-3qghmd2607] {
    height: 1px;
    background: var(--b9-border);
    margin: 0.35rem;
}

.etd-action-revoke:hover[b-3qghmd2607] {
    background: var(--b9-danger-soft);
    border-color: var(--b9-danger);
    color: var(--b9-danger-text);
}


/* ── Status badges ──────────────────────────────────────── */
.estatus[b-3qghmd2607] {
    display: inline-flex;
    align-items: center;
    font-size: 0.69rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 20px;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.estatus-open[b-3qghmd2607]      { background: var(--b9-success-soft);  color: var(--b9-success-text); }
.estatus-draft[b-3qghmd2607]     { background: var(--b9-warning-soft);  color: var(--b9-warning-text); }
.estatus-cancelled[b-3qghmd2607] { background: var(--b9-surface-muted); color: var(--b9-text-soft); }


/* ── Admins page: two-column layout ────────────────────── */
.adm-two-col[b-3qghmd2607] {
    display: grid;
    grid-template-columns: 1fr 320px;
    gap: 1.25rem;
    align-items: start;
}

.adm-aside[b-3qghmd2607] {
    position: sticky;
    top: 1.25rem;
}

/* ── Promote form card body ─────────────────────────────── */
.adm-promote-body[b-3qghmd2607] {
    padding: 1rem;
}

.adm-promote-desc[b-3qghmd2607] {
    font-size: 0.8125rem;
    color: var(--b9-text-muted);
    margin-bottom: 1rem;
    line-height: 1.55;
}

.adm-field[b-3qghmd2607] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-bottom: 0.5rem;
}

.adm-label[b-3qghmd2607] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--b9-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.adm-input[b-3qghmd2607] {
    padding: 0.4rem 0.7rem;
    font-size: 0.8125rem;
    border: 1px solid var(--b9-border);
    border-radius: 7px;
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    width: 100%;
    outline: none;
    transition: border-color 0.12s, background 0.12s;
}

.adm-input:focus[b-3qghmd2607] {
    border-color: var(--b9-primary);
    background: var(--b9-card-bg);
}

.adm-input[b-3qghmd2607]::placeholder { color: var(--b9-text-soft); }

.adm-warning-hint[b-3qghmd2607] {
    margin: 0.75rem 0 0;
    font-size: 0.75rem;
    color: var(--b9-warning-text);
    line-height: 1.4;
}

/* ── Cleanup modal ──────────────────────────────────────── */
.adm-delete-overlay[b-3qghmd2607] {
    position: fixed;
    inset: 0;
    z-index: 1090;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(2, 6, 23, 0.72);
    backdrop-filter: blur(6px);
}

.adm-delete-modal[b-3qghmd2607] {
    position: relative;
    width: min(760px, 100%);
    max-height: min(86vh, 920px);
    overflow: auto;
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 16px;
    box-shadow: var(--b9-card-shadow-xl);
    color: var(--b9-text);
}

.adm-delete-modal-header[b-3qghmd2607],
.adm-delete-modal-footer[b-3qghmd2607],
.adm-delete-modal-body[b-3qghmd2607] {
    padding: 1rem 1.1rem;
}

.adm-delete-modal-header[b-3qghmd2607] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    border-bottom: 1px solid var(--b9-border);
}

.adm-delete-modal-kicker[b-3qghmd2607] {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--b9-text-soft);
    margin-bottom: 0.25rem;
}

.adm-delete-modal-title[b-3qghmd2607] {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: var(--b9-text);
}

.adm-delete-close[b-3qghmd2607] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
}

.adm-delete-close:hover[b-3qghmd2607] {
    color: var(--b9-text);
    background: var(--b9-card-bg);
}

.adm-delete-modal-copy[b-3qghmd2607] {
    margin: 0 0 1rem;
    color: var(--b9-text-muted);
    line-height: 1.55;
}

.adm-delete-summary-grid[b-3qghmd2607] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.7rem;
    margin-bottom: 1rem;
}

.adm-delete-summary-item[b-3qghmd2607] {
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    padding: 0.75rem 0.8rem;
    background: color-mix(in srgb, var(--b9-surface-muted) 76%, var(--b9-card-bg));
}

.adm-delete-summary-label[b-3qghmd2607] {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-text-soft);
    margin-bottom: 0.25rem;
}

.adm-delete-summary-item strong[b-3qghmd2607] {
    font-size: 0.92rem;
    color: var(--b9-text);
    word-break: break-word;
}

.adm-delete-warning[b-3qghmd2607] {
    border-radius: 12px;
    padding: 0.85rem 0.95rem;
    margin-bottom: 1rem;
    line-height: 1.5;
    border: 1px solid;
}

.adm-delete-warning--blocked[b-3qghmd2607] {
    background: var(--b9-danger-soft);
    border-color: color-mix(in srgb, var(--b9-danger) 60%, transparent);
    color: var(--b9-danger-text);
}

.adm-delete-warning--ready[b-3qghmd2607] {
    background: var(--b9-warning-soft);
    border-color: color-mix(in srgb, var(--b9-warning) 56%, transparent);
    color: var(--b9-warning-text);
}

.adm-delete-form[b-3qghmd2607] {
    display: grid;
    gap: 0.75rem;
}

.adm-delete-label[b-3qghmd2607] {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--b9-text);
}

.adm-delete-input[b-3qghmd2607] {
    background: var(--b9-surface-muted);
    border-color: var(--b9-border);
    color: var(--b9-text);
}

.adm-delete-input[b-3qghmd2607]::placeholder {
    color: var(--b9-text-soft);
}

.adm-delete-input:focus[b-3qghmd2607] {
    background: var(--b9-card-bg);
    border-color: var(--b9-primary);
    box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--b9-primary) 18%, transparent);
}

.adm-delete-check[b-3qghmd2607] {
    margin: 0;
    padding: 0.8rem 0.85rem;
    border-radius: 12px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
}

.adm-delete-check .form-check-label[b-3qghmd2607] {
    font-size: 0.86rem;
    color: var(--b9-text);
    line-height: 1.45;
}

.adm-delete-modal-footer[b-3qghmd2607] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    border-top: 1px solid var(--b9-border);
}

@media (max-width: 767px) {
    .adm-delete-summary-grid[b-3qghmd2607] {
        grid-template-columns: 1fr;
    }

    .adm-delete-modal[b-3qghmd2607] {
        max-height: 90vh;
    }

    .adm-delete-modal-footer[b-3qghmd2607] {
        flex-direction: column-reverse;
    }

    .adm-delete-modal-footer .btn[b-3qghmd2607] {
        width: 100%;
    }
}


/* ═══════════════════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════════════════ */
@media (max-width: 900px) {
    .adm-two-col[b-3qghmd2607] {
        grid-template-columns: 1fr;
    }

    .adm-aside[b-3qghmd2607] {
        position: static;
    }
}

@media (max-width: 767px) {
    .adm-page[b-3qghmd2607] { padding: 1rem 1rem 2rem; }
    .adm-search-input[b-3qghmd2607] { width: 200px; }
    .etd-contact[b-3qghmd2607],
    .etd-count[b-3qghmd2607] { display: none; }
}


/* Small explanatory line under an action row — e.g. what a tee sheet override is actually
   carrying for this org, and when a grandfathered beta club renews. */
.adm-hint[b-3qghmd2607] {
    margin-top: 0.15rem;
    font-size: 0.75rem;
    font-weight: 400;
    line-height: 1.35;
    color: var(--b9-text-muted);
    white-space: normal;
}
/* /Components/Pages/Admin/Dashboard.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════
   ADMIN CONSOLE — Dashboard.razor.css
   Inherits all shared classes from Home.razor.css via the
   brand-token layer. Only admin-specific overrides here.
═══════════════════════════════════════════════════════════ */

/* ── Page shell (reuse Home's .dash-page / .dash-header / .dash-body) ── */
.dash-page[b-opfxpeq96f] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 1280px;
    margin: 0 auto;
    width: 100%;
}

.admin-header-copy[b-opfxpeq96f] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.admin-header-subtitle[b-opfxpeq96f] {
    font-size: 0.95rem;
    color: var(--b9-text-soft);
    max-width: 44rem;
}

/* ── Admin role badge next to title ────────────────────── */
.admin-role-badge[b-opfxpeq96f] {
    display: inline-flex;
    align-items: center;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--b9-danger-text);
    background: var(--b9-danger-soft);
    border: 1px solid var(--b9-danger);
    border-radius: 20px;
    padding: 0.2rem 0.7rem;
}


/* ── Metrics row (6 cards for admin) ───────────────────── */
.metrics-row[b-opfxpeq96f] {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 1rem;
    margin-bottom: 1.5rem;
}

/* Extra icon color variants */
.metric-icon-purple[b-opfxpeq96f] { background: rgba(139,92,246,0.18); color: #c4b5fd; }
.metric-icon-teal[b-opfxpeq96f]   { background: rgba(13,148,136,0.18); color: #5eead4; }
.metric-icon-amber[b-opfxpeq96f]  { background: var(--b9-warning-soft); color: var(--b9-warning); }


/* ── Two-column body ────────────────────────────────────── */
.dash-body[b-opfxpeq96f] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(260px, 300px);
    gap: 1.25rem;
    align-items: start;
}

.dash-main[b-opfxpeq96f] {
    min-width: 0;
}

.dash-aside[b-opfxpeq96f] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    position: sticky;
    top: 1.25rem;
    min-width: 0;
}


/* ── Shared card shell ──────────────────────────────────── */
.dash-card[b-opfxpeq96f] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 10px;
    box-shadow: var(--b9-card-shadow);
    overflow: hidden;
}

.dash-card-header[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    flex-wrap: wrap;
}

.dash-card-title[b-opfxpeq96f] {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--b9-text-muted);
    white-space: nowrap;
}

.dash-see-all[b-opfxpeq96f] {
    font-size: 0.775rem;
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    white-space: nowrap;
    transition: color 0.12s;
}

.dash-see-all:hover[b-opfxpeq96f] {
    color: var(--b9-primary-text);
    text-decoration: underline;
}


/* ── Inline search in card header ──────────────────────── */
.admin-search-wrap[b-opfxpeq96f] {
    position: relative;
    display: flex;
    align-items: center;
}

.admin-search-icon[b-opfxpeq96f] {
    position: absolute;
    left: 0.6rem;
    font-size: 0.75rem;
    color: var(--b9-text-soft);
    pointer-events: none;
}

.admin-search-input[b-opfxpeq96f] {
    padding: 0.3rem 1.75rem 0.3rem 1.875rem;
    font-size: 0.8125rem;
    border: 1px solid var(--b9-border);
    border-radius: 6px;
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    width: 200px;
    outline: none;
    transition: border-color 0.12s, background 0.12s;
}

.admin-search-input:focus[b-opfxpeq96f] {
    border-color: var(--b9-primary);
    background: var(--b9-card-bg);
}

.admin-search-input[b-opfxpeq96f]::placeholder {
    color: var(--b9-text-soft);
}

.admin-search-clear[b-opfxpeq96f] {
    position: absolute;
    right: 0.45rem;
    background: none;
    border: none;
    padding: 0;
    font-size: 0.65rem;
    color: var(--b9-text-soft);
    cursor: pointer;
    line-height: 1;
    display: flex;
    align-items: center;
    transition: color 0.1s;
}

.admin-search-clear:hover[b-opfxpeq96f] {
    color: var(--b9-text);
}


/* ── Accounts table ─────────────────────────────────────── */
.etable-wrap[b-opfxpeq96f] {
    overflow-x: auto;
}

.etable[b-opfxpeq96f] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.etable thead th[b-opfxpeq96f] {
    padding: 0.55rem 1rem;
    text-align: left;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--b9-text-muted);
    background: var(--b9-surface-muted);
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
}

.etable thead th:last-child[b-opfxpeq96f] { text-align: right; }

.etable tbody tr[b-opfxpeq96f] {
    border-bottom: 1px solid var(--b9-border);
    transition: background 0.1s;
}

.etable tbody tr:last-child[b-opfxpeq96f] { border-bottom: none; }
.etable tbody tr:hover[b-opfxpeq96f] { background: var(--b9-surface-muted); }

.etable td[b-opfxpeq96f] {
    padding: 0.65rem 1rem;
    color: var(--b9-text);
    vertical-align: middle;
}

.etd-name[b-opfxpeq96f] { min-width: 160px; }

.etd-name-link[b-opfxpeq96f] {
    display: block;
    font-weight: 600;
    color: var(--b9-text);
    text-decoration: none;
    line-height: 1.3;
    transition: color 0.1s;
}

.etd-name-link:hover[b-opfxpeq96f] {
    color: var(--b9-primary-text);
    text-decoration: none;
}

.etd-course[b-opfxpeq96f] {
    display: block;
    font-size: 0.75rem;
    color: var(--b9-text-soft);
    margin-top: 0.1rem;
}

.etd-contact[b-opfxpeq96f] {
    min-width: 140px;
}

.etd-contact-email[b-opfxpeq96f] {
    display: block;
    font-size: 0.8rem;
    color: var(--b9-text-muted);
}

.etd-contact-phone[b-opfxpeq96f] {
    display: block;
    font-size: 0.75rem;
    color: var(--b9-text-soft);
    margin-top: 0.05rem;
}

.etd-count[b-opfxpeq96f] {
    text-align: center;
    font-variant-numeric: tabular-nums;
    color: var(--b9-text-muted);
    font-size: 0.8rem;
}

.etd-actions[b-opfxpeq96f] {
    text-align: right;
    white-space: nowrap;
}

.etd-empty[b-opfxpeq96f] {
    text-align: center;
    padding: 2rem;
    color: var(--b9-text-muted);
    font-size: 0.85rem;
}

.etd-action-btn[b-opfxpeq96f] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    font-size: 0.825rem;
    color: var(--b9-text-soft);
    text-decoration: none;
    background: transparent;
    border: 1px solid transparent;
    cursor: pointer;
    transition: background 0.1s, color 0.1s, border-color 0.1s;
    margin-left: 2px;
}

.etd-action-btn:hover[b-opfxpeq96f] {
    background: var(--b9-surface-muted);
    border-color: var(--b9-border);
    color: var(--b9-text);
    text-decoration: none;
}

.etd-action-activate:hover[b-opfxpeq96f] {
    background: var(--b9-success-soft);
    border-color: var(--b9-success);
    color: var(--b9-success-text);
}

.etd-action-suspend:hover[b-opfxpeq96f] {
    background: var(--b9-warning-soft);
    border-color: var(--b9-warning);
    color: var(--b9-warning-text);
}

.etable-footer[b-opfxpeq96f] {
    padding: 0.625rem 1rem;
    border-top: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    text-align: right;
}


/* ── Status badges ──────────────────────────────────────── */
.estatus[b-opfxpeq96f] {
    display: inline-flex;
    align-items: center;
    font-size: 0.69rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 20px;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.estatus-open[b-opfxpeq96f]      { background: var(--b9-success-soft);  color: var(--b9-success-text); }
.estatus-draft[b-opfxpeq96f]     { background: var(--b9-warning-soft);  color: var(--b9-warning-text); }
.estatus-cancelled[b-opfxpeq96f] { background: var(--b9-surface-muted); color: var(--b9-text-soft); }


/* ── Alert bar ──────────────────────────────────────────── */
.admin-alert[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    font-size: 0.8125rem;
    font-weight: 500;
    border-radius: 8px;
    padding: 0.5rem 0.875rem;
    margin-bottom: 0.875rem;
    border: 1px solid;
}

.admin-alert-success[b-opfxpeq96f] {
    background: var(--b9-success-soft);
    border-color: var(--b9-success);
    color: var(--b9-success-text);
}

.admin-alert-danger[b-opfxpeq96f] {
    background: var(--b9-danger-soft);
    border-color: var(--b9-danger);
    color: var(--b9-danger-text);
}


/* ── Admin users list (sidebar) ─────────────────────────── */
.admin-user-list[b-opfxpeq96f] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    padding: 0.25rem 0;
}

.admin-user-loading[b-opfxpeq96f],
.admin-user-empty[b-opfxpeq96f] {
    padding: 0.875rem 1rem;
    font-size: 0.8125rem;
    color: var(--b9-text-muted);
}

.admin-user-row[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.5rem 1rem;
    transition: background 0.1s;
}

.admin-user-row:hover[b-opfxpeq96f] {
    background: var(--b9-surface-muted);
}

.admin-user-avatar[b-opfxpeq96f] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    font-size: 0.75rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.admin-user-info[b-opfxpeq96f] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.admin-user-name[b-opfxpeq96f] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--b9-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.admin-user-email[b-opfxpeq96f] {
    font-size: 0.72rem;
    color: var(--b9-text-soft);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.admin-you-badge[b-opfxpeq96f] {
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--b9-text-soft);
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    padding: 1px 7px;
    flex-shrink: 0;
}


/* ── Promote form ───────────────────────────────────────── */
.admin-promote-form[b-opfxpeq96f] {
    padding: 0.75rem 1rem;
    border-top: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
}

.admin-inline-error[b-opfxpeq96f] {
    font-size: 0.775rem;
    color: var(--b9-danger-text);
    background: var(--b9-danger-soft);
    border: 1px solid var(--b9-danger);
    border-radius: 5px;
    padding: 0.3rem 0.6rem;
    margin-bottom: 0.5rem;
}

.admin-inline-success[b-opfxpeq96f] {
    font-size: 0.775rem;
    color: var(--b9-success-text);
    background: var(--b9-success-soft);
    border: 1px solid var(--b9-success);
    border-radius: 5px;
    padding: 0.3rem 0.6rem;
    margin-bottom: 0.5rem;
}

.admin-promote-row[b-opfxpeq96f] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.admin-promote-input[b-opfxpeq96f] {
    flex: 1;
    min-width: 0;
    padding: 0.35rem 0.625rem;
    font-size: 0.8125rem;
    border: 1px solid var(--b9-border);
    border-radius: 6px;
    background: var(--b9-card-bg);
    color: var(--b9-text);
    outline: none;
    transition: border-color 0.12s;
}

.admin-promote-input:focus[b-opfxpeq96f] {
    border-color: var(--b9-primary);
}

.admin-promote-input[b-opfxpeq96f]::placeholder {
    color: var(--b9-text-soft);
}

.admin-promote-hint[b-opfxpeq96f] {
    margin: 0.4rem 0 0;
    font-size: 0.72rem;
    color: var(--b9-text-soft);
    line-height: 1.4;
}


/* ── Status breakdown (sidebar) ─────────────────────────── */
.breakdown-list[b-opfxpeq96f] {
    display: flex;
    flex-direction: column;
    padding: 0.25rem 0;
}

.breakdown-row[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.45rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    font-size: 0.8rem;
}

.breakdown-row:last-child[b-opfxpeq96f] { border-bottom: none; }

.breakdown-label[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--b9-text-muted);
}

.breakdown-value[b-opfxpeq96f] {
    font-weight: 700;
    font-size: 0.875rem;
    color: var(--b9-text);
    font-variant-numeric: tabular-nums;
}

.status-dot[b-opfxpeq96f] {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}

.status-dot-open[b-opfxpeq96f]      { background: var(--b9-success); }
.status-dot-active[b-opfxpeq96f]    { background: var(--b9-warning); }
.status-dot-cancelled[b-opfxpeq96f] { background: var(--b9-text-soft); }


/* ── Header shared ──────────────────────────────────────── */
.dash-header[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.dash-header-left[b-opfxpeq96f] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.dash-title[b-opfxpeq96f] {
    font-size: 1.25rem;
    font-weight: 700;
    margin: 0;
    color: var(--b9-text);
    letter-spacing: -0.02em;
}

.dash-header-actions[b-opfxpeq96f] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.dash-loading[b-opfxpeq96f] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 4rem 1.5rem;
    color: var(--b9-text-muted);
    font-size: 0.875rem;
}

/* ── Metric card ────────────────────────────────────────── */
.metric-card[b-opfxpeq96f] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 10px;
    box-shadow: var(--b9-card-shadow);
    padding: 1rem 1.125rem;
    display: flex;
    align-items: center;
    gap: 0.875rem;
    transition: box-shadow 0.12s;
}

.metric-card:hover[b-opfxpeq96f] { box-shadow: var(--b9-card-shadow-md); }

.metric-icon[b-opfxpeq96f] {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.95rem;
    flex-shrink: 0;
}

.metric-icon-red[b-opfxpeq96f]   { background: var(--b9-danger-soft);  color: var(--b9-danger); }
.metric-icon-green[b-opfxpeq96f] { background: var(--b9-success-soft); color: var(--b9-success); }
.metric-icon-blue[b-opfxpeq96f]  { background: var(--b9-primary-soft); color: var(--b9-primary-text); }
.metric-icon-slate[b-opfxpeq96f] { background: var(--b9-surface-muted); color: var(--b9-text-soft); }

.metric-body[b-opfxpeq96f] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}

.metric-value[b-opfxpeq96f] {
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1;
    color: var(--b9-text);
    letter-spacing: -0.02em;
}

.metric-label[b-opfxpeq96f] {
    font-size: 0.68rem;
    font-weight: 600;
    color: var(--b9-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.065em;
    white-space: nowrap;
}


/* ═══════════════════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════════════════ */
@media (max-width: 1200px) {
    .metrics-row[b-opfxpeq96f] { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 1140px) {
    .dash-body[b-opfxpeq96f] {
        grid-template-columns: 1fr;
    }

    .dash-aside[b-opfxpeq96f] {
        position: static;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
        gap: 1rem;
    }
}

@media (max-width: 767px) {
    .dash-page[b-opfxpeq96f] { padding: 1rem 1rem 2rem; }
    .dash-header-left[b-opfxpeq96f] {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.5rem;
    }
    /* Header action buttons wrap onto extra rows instead of widening the page. */
    .dash-header-actions[b-opfxpeq96f] {
        flex-wrap: wrap;
        row-gap: 0.5rem;
    }
    /* minmax(0,…) + min-width:0 let cards shrink; labels wrap on phones. */
    .metrics-row[b-opfxpeq96f] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .metric-card[b-opfxpeq96f] { min-width: 0; }
    .metric-label[b-opfxpeq96f] {
        white-space: normal;
        line-height: 1.25;
    }
    .admin-search-input[b-opfxpeq96f] { width: 140px; }
    .etd-contact[b-opfxpeq96f],
    .etd-count[b-opfxpeq96f] { display: none; }
}

/* Very narrow phones (320-class): stack the metric cards. */
@media (max-width: 420px) {
    .metrics-row[b-opfxpeq96f] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Admin/Errors.razor.rz.scp.css */
/*
    Errors.razor.css — complete on purpose.

    ⚠️ Admins.razor.css says its .adm-* rules "live in CourseAccounts.razor.css". Blazor scoped CSS
    is per-component: each file is rewritten with that component's own [b-xxxxx] attribute, so one
    page's scoped stylesheet can never style another's markup. Whatever makes that page look right,
    it is not the inheritance the comment describes. This file therefore carries every rule it
    needs and borrows nothing.

    Tokens only — all of these are defined in wwwroot/css/brand-tokens.css and flip with the theme.
    No raw colours, so the page is dark-theme safe without a second set of rules.
*/

.err-page[b-kumoc7blyb] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 1100px;
    margin: 0 auto;
    color: var(--b9-text);
}

/* ── Header ─────────────────────────────────────────────────────────────── */

.err-header[b-kumoc7blyb] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.err-back[b-kumoc7blyb] {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    color: var(--b9-text-muted);
    text-decoration: none;
    font-size: 0.95rem;
}

.err-back:hover[b-kumoc7blyb] { color: var(--b9-primary-text); }

.err-title[b-kumoc7blyb] {
    margin: 0;
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--b9-text);
}

.err-sub[b-kumoc7blyb] {
    margin: 0.25rem 0 0;
    color: var(--b9-text-muted);
    font-size: 0.95rem;
}

.err-role-badge[b-kumoc7blyb] {
    display: inline-flex;
    align-items: center;
    padding: 0.4rem 0.75rem;
    border-radius: 999px;
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    font-size: 0.85rem;
    font-weight: 600;
    white-space: nowrap;
}

/* ── Toolbar ────────────────────────────────────────────────────────────── */

.err-toolbar[b-kumoc7blyb] {
    display: flex;
    gap: 0.75rem;
    align-items: stretch;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.err-search[b-kumoc7blyb] {
    position: relative;
    flex: 1 1 320px;
    min-width: 0;
}

.err-search-icon[b-kumoc7blyb] {
    position: absolute;
    left: 0.9rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--b9-text-soft);
    pointer-events: none;
}

.err-search-input[b-kumoc7blyb] {
    width: 100%;
    min-height: 48px;
    padding: 0.6rem 2.75rem 0.6rem 2.5rem;
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    background: var(--b9-card-bg);
    color: var(--b9-text);
    font-size: 1rem;
}

.err-search-input[b-kumoc7blyb]::placeholder { color: var(--b9-text-soft); }

.err-search-input:focus[b-kumoc7blyb] {
    outline: none;
    border-color: var(--b9-primary);
    box-shadow: 0 0 0 3px var(--b9-primary-soft);
}

.err-search-clear[b-kumoc7blyb] {
    position: absolute;
    right: 0.35rem;
    top: 50%;
    transform: translateY(-50%);
    min-width: 48px;
    min-height: 48px;
    border: 0;
    background: transparent;
    color: var(--b9-text-muted);
    cursor: pointer;
    border-radius: 8px;
}

.err-search-clear:hover[b-kumoc7blyb] { color: var(--b9-text); background: var(--b9-surface-muted); }

.err-refresh[b-kumoc7blyb] {
    min-height: 48px;
    padding: 0 1.1rem;
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    background: var(--b9-card-bg);
    color: var(--b9-text);
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
}

.err-refresh:hover:not(:disabled)[b-kumoc7blyb] { border-color: var(--b9-primary); color: var(--b9-primary-text); }
.err-refresh:disabled[b-kumoc7blyb] { opacity: 0.6; cursor: default; }

/* ── Dropped-count banner ───────────────────────────────────────────────── */

.err-alert[b-kumoc7blyb] {
    display: flex;
    align-items: flex-start;
    gap: 0.25rem;
    padding: 0.9rem 1rem;
    border-radius: 10px;
    margin-bottom: 1rem;
    font-size: 0.95rem;
    line-height: 1.5;
}

.err-alert-warning[b-kumoc7blyb] {
    background: var(--b9-warning-soft);
    color: var(--b9-warning-text);
    border: 1px solid var(--b9-warning);
}

/* ── Empty states ───────────────────────────────────────────────────────── */

.err-empty[b-kumoc7blyb] {
    text-align: center;
    padding: 3rem 1.5rem;
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 14px;
    box-shadow: var(--b9-card-shadow);
}

.err-empty-icon[b-kumoc7blyb] {
    font-size: 2.5rem;
    color: var(--b9-text-soft);
    display: block;
    margin-bottom: 0.75rem;
}

.err-empty-icon-good[b-kumoc7blyb] { color: var(--b9-success); }

.err-empty-title[b-kumoc7blyb] {
    margin: 0 0 0.35rem;
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--b9-text);
}

.err-empty-body[b-kumoc7blyb] {
    margin: 0 auto;
    max-width: 44ch;
    color: var(--b9-text-muted);
    font-size: 0.95rem;
    line-height: 1.55;
}

.err-count[b-kumoc7blyb] {
    margin: 0 0 0.6rem;
    color: var(--b9-text-muted);
    font-size: 0.9rem;
}

/* ── The list ───────────────────────────────────────────────────────────── */

.err-list[b-kumoc7blyb] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.err-item[b-kumoc7blyb] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 12px;
    box-shadow: var(--b9-card-shadow);
    overflow: hidden;
}

.err-item-head[b-kumoc7blyb] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    min-height: 48px;
    padding: 0.85rem 1rem;
    border: 0;
    background: transparent;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.err-item-head:hover[b-kumoc7blyb] { background: var(--b9-surface-muted); }

.err-item-main[b-kumoc7blyb] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.err-item-type[b-kumoc7blyb] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--b9-danger-text);
}

.err-item-message[b-kumoc7blyb] {
    font-size: 0.95rem;
    color: var(--b9-text);
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.err-item-meta[b-kumoc7blyb] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.err-chip[b-kumoc7blyb] {
    display: inline-flex;
    align-items: center;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    font-size: 0.8rem;
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
    overflow-wrap: anywhere;
}

.err-chip-count[b-kumoc7blyb] { background: var(--b9-danger-soft); color: var(--b9-danger-text); font-weight: 600; }

.err-item-chevron[b-kumoc7blyb] {
    flex: 0 0 auto;
    color: var(--b9-text-soft);
}

/* ── Expanded detail ────────────────────────────────────────────────────── */

.err-item-body[b-kumoc7blyb] {
    padding: 0 1rem 1rem;
    border-top: 1px solid var(--b9-border);
}

.err-facts[b-kumoc7blyb] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 0.75rem 1.25rem;
    margin: 1rem 0;
}

.err-fact dt[b-kumoc7blyb] {
    font-size: 0.8rem;
    color: var(--b9-text-soft);
    font-weight: 600;
    margin-bottom: 0.15rem;
}

.err-fact dd[b-kumoc7blyb] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--b9-text);
    overflow-wrap: anywhere;
}

.err-ids[b-kumoc7blyb] { margin-bottom: 1rem; }

.err-ids-label[b-kumoc7blyb] {
    display: block;
    font-size: 0.8rem;
    color: var(--b9-text-soft);
    font-weight: 600;
    margin-bottom: 0.35rem;
}

.err-ids-list[b-kumoc7blyb] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.err-id[b-kumoc7blyb] {
    padding: 0.2rem 0.55rem;
    border-radius: 6px;
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 0.8rem;
    overflow-wrap: anywhere;
}

.err-stack[b-kumoc7blyb] {
    margin: 0;
    padding: 0.85rem 1rem;
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    color: var(--b9-text-muted);
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: 0.8rem;
    line-height: 1.55;
    /* Wraps rather than scrolls sideways: a horizontal scrollbar inside a card is the one thing
       nobody finds on a phone, and this is the content an admin most needs to read in full. */
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    max-height: 22rem;
    overflow-y: auto;
}

.err-no-stack[b-kumoc7blyb] {
    margin: 0;
    color: var(--b9-text-soft);
    font-size: 0.9rem;
}

/* ── Phone ──────────────────────────────────────────────────────────────── */

@media (max-width: 640px) {
    .err-page[b-kumoc7blyb] { padding: 1rem 1rem 2.5rem; }
    .err-title[b-kumoc7blyb] { font-size: 1.4rem; }
    .err-refresh[b-kumoc7blyb] { flex: 1 1 100%; }
}
/* /Components/Pages/Admin/MatchPlayPreview.razor.rz.scp.css */
.mpx-page[b-60ppi7qhzo] {
    --mpx-shell-bg: linear-gradient(180deg, rgba(15, 23, 42, 0.94) 0%, rgba(11, 18, 32, 0.98) 100%);
    --mpx-panel-bg: linear-gradient(180deg, rgba(18, 27, 48, 0.94) 0%, rgba(13, 20, 37, 0.98) 100%);
    --mpx-panel-border: rgba(148, 163, 184, 0.18);
    --mpx-soft-border: rgba(148, 163, 184, 0.12);
    --mpx-text: #e2e8f0;
    --mpx-text-soft: #93a4bc;
    --mpx-text-muted: #7c8aa5;
    --mpx-accent: #38bdf8;
    --mpx-accent-soft: rgba(56, 189, 248, 0.12);
    --mpx-success: #22c55e;
    --mpx-success-soft: rgba(34, 197, 94, 0.16);
    --mpx-warning: #f59e0b;
    --mpx-warning-soft: rgba(245, 158, 11, 0.18);
    --mpx-danger: #fb7185;
    --mpx-danger-soft: rgba(251, 113, 133, 0.16);
    --mpx-shadow: 0 24px 48px rgba(2, 6, 23, 0.28);
    padding: 1.5rem;
    color: var(--mpx-text);
    display: grid;
    gap: 1rem;
}

.mpx-page[b-60ppi7qhzo]  .ui-card {
    background: var(--mpx-panel-bg);
    border-color: var(--mpx-panel-border);
    box-shadow: var(--mpx-shadow);
}

.mpx-page[b-60ppi7qhzo]  .ui-input,
.mpx-page[b-60ppi7qhzo]  .ui-select {
    background: rgba(15, 23, 42, 0.88);
    border-color: rgba(148, 163, 184, 0.22);
    color: var(--mpx-text);
}

.mpx-page[b-60ppi7qhzo]  .ui-input::placeholder {
    color: var(--mpx-text-muted);
}

.mpx-page[b-60ppi7qhzo]  .ui-label {
    color: var(--mpx-text-soft);
}

.mpx-page[b-60ppi7qhzo]  .ui-btn--primary {
    background: linear-gradient(135deg, #0ea5e9 0%, #2563eb 100%);
}

.mpx-page[b-60ppi7qhzo]  .ui-btn--primary:hover:not(:disabled) {
    box-shadow: 0 12px 24px rgba(37, 99, 235, 0.28);
}

.mpx-hero[b-60ppi7qhzo] {
    background: var(--mpx-shell-bg);
    overflow: hidden;
}

.mpx-hero-topline[b-60ppi7qhzo],
.mpx-hero-main[b-60ppi7qhzo],
.mpx-warning[b-60ppi7qhzo],
.mpx-panel-header[b-60ppi7qhzo],
.mpx-toolbar[b-60ppi7qhzo],
.mpx-context-band[b-60ppi7qhzo],
.mpx-group-header[b-60ppi7qhzo],
.mpx-match-topline[b-60ppi7qhzo],
.mpx-state-row[b-60ppi7qhzo],
.mpx-match-meta[b-60ppi7qhzo],
.mpx-player-hero-topline[b-60ppi7qhzo],
.mpx-player-identity[b-60ppi7qhzo],
.mpx-player-summary-grid[b-60ppi7qhzo],
.mpx-player-meta-row[b-60ppi7qhzo],
.mpx-timeline-topline[b-60ppi7qhzo],
.mpx-timeline-item[b-60ppi7qhzo] {
    display: flex;
    gap: 0.75rem;
}

.mpx-hero-topline[b-60ppi7qhzo],
.mpx-panel-kicker[b-60ppi7qhzo],
.mpx-match-number[b-60ppi7qhzo],
.mpx-meta-label[b-60ppi7qhzo],
.mpx-timeline-time[b-60ppi7qhzo],
.mpx-hero-meta[b-60ppi7qhzo] {
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.mpx-hero-topline[b-60ppi7qhzo] {
    align-items: center;
    margin-bottom: 0.9rem;
}

.mpx-hero-badge[b-60ppi7qhzo],
.mpx-readonly-badge[b-60ppi7qhzo],
.mpx-warning-icon[b-60ppi7qhzo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    padding: 0.3rem 0.7rem;
    font-size: 0.72rem;
    font-weight: 800;
}

.mpx-hero-badge[b-60ppi7qhzo] {
    color: #03111c;
    background: linear-gradient(135deg, #67e8f9 0%, #38bdf8 100%);
}

.mpx-hero-meta[b-60ppi7qhzo] {
    font-size: 0.72rem;
    color: var(--mpx-text-soft);
    font-weight: 700;
}

.mpx-hero-main[b-60ppi7qhzo] {
    justify-content: space-between;
    align-items: end;
    flex-wrap: wrap;
}

.mpx-hero-copy[b-60ppi7qhzo] {
    max-width: 48rem;
}

.mpx-hero-copy h1[b-60ppi7qhzo] {
    margin: 0;
    font-size: clamp(1.85rem, 3vw, 2.5rem);
    line-height: 1.05;
    color: #f8fafc;
}

.mpx-hero-copy p[b-60ppi7qhzo] {
    margin: 0.75rem 0 0;
    color: var(--mpx-text-soft);
    max-width: 44rem;
    line-height: 1.6;
}

.mpx-hero-chips[b-60ppi7qhzo] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.mpx-chip[b-60ppi7qhzo],
.mpx-context-chip[b-60ppi7qhzo],
.mpx-final-pill[b-60ppi7qhzo],
.mpx-status-pill[b-60ppi7qhzo],
.mpx-state-badge[b-60ppi7qhzo],
.mpx-result-pill[b-60ppi7qhzo],
.mpx-group-count[b-60ppi7qhzo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    font-size: 0.74rem;
    font-weight: 700;
}

.mpx-chip--ghost[b-60ppi7qhzo] {
    padding: 0.45rem 0.8rem;
    background: rgba(15, 23, 42, 0.56);
    border: 1px solid rgba(148, 163, 184, 0.18);
    color: var(--mpx-text-soft);
}

.mpx-warning[b-60ppi7qhzo] {
    align-items: flex-start;
    border: 1px solid rgba(245, 158, 11, 0.24);
    background: linear-gradient(180deg, rgba(49, 27, 0, 0.72) 0%, rgba(28, 20, 10, 0.94) 100%);
}

.mpx-warning-icon[b-60ppi7qhzo] {
    background: var(--mpx-warning-soft);
    color: #fcd34d;
    border: 1px solid rgba(245, 158, 11, 0.4);
    white-space: nowrap;
}

.mpx-warning-copy[b-60ppi7qhzo] {
    display: grid;
    gap: 0.35rem;
    line-height: 1.55;
}

.mpx-warning-copy strong[b-60ppi7qhzo] {
    color: #fef3c7;
}

.mpx-warning-copy span[b-60ppi7qhzo] {
    color: #f6d58f;
}

.mpx-panels[b-60ppi7qhzo] {
    display: grid;
    gap: 1rem;
}

.mpx-panel[b-60ppi7qhzo] {
    display: grid;
    gap: 1rem;
}

.mpx-panel-header[b-60ppi7qhzo] {
    justify-content: space-between;
    align-items: start;
}

.mpx-panel-kicker[b-60ppi7qhzo] {
    display: inline-block;
    margin-bottom: 0.35rem;
    font-size: 0.72rem;
    font-weight: 800;
    color: var(--mpx-accent);
}

.mpx-panel-header h2[b-60ppi7qhzo],
.mpx-group-header h3[b-60ppi7qhzo] {
    margin: 0;
    color: #f8fafc;
}

.mpx-panel-header p[b-60ppi7qhzo] {
    margin: 0.45rem 0 0;
    color: var(--mpx-text-soft);
    max-width: 48rem;
    line-height: 1.55;
}

.mpx-toolbar[b-60ppi7qhzo] {
    align-items: end;
    flex-wrap: wrap;
    padding: 1rem;
    border: 1px solid var(--mpx-soft-border);
    border-radius: 1rem;
    background: rgba(15, 23, 42, 0.56);
}

.mpx-field[b-60ppi7qhzo] {
    margin-bottom: 0;
}

.mpx-field--compact[b-60ppi7qhzo] {
    width: min(11rem, 100%);
}

.mpx-field--wide[b-60ppi7qhzo] {
    flex: 1 1 24rem;
    min-width: min(100%, 20rem);
}

.mpx-toolbar-action[b-60ppi7qhzo] {
    display: flex;
    align-items: end;
    min-height: 100%;
}

.mpx-messages[b-60ppi7qhzo] {
    display: grid;
    gap: 0.55rem;
}

.mpx-message-item[b-60ppi7qhzo] {
    padding: 0.8rem 0.9rem;
    border-radius: 0.9rem;
    background: rgba(15, 23, 42, 0.68);
    border: 1px solid rgba(148, 163, 184, 0.14);
    color: var(--mpx-text-soft);
    line-height: 1.5;
}

.mpx-context-band[b-60ppi7qhzo] {
    flex-wrap: wrap;
}

.mpx-context-chip[b-60ppi7qhzo] {
    padding: 0.45rem 0.75rem;
    background: var(--mpx-accent-soft);
    border: 1px solid rgba(56, 189, 248, 0.2);
    color: #bae6fd;
}

.mpx-board-grid[b-60ppi7qhzo] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
}

.mpx-board-grid--public[b-60ppi7qhzo] {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.mpx-group[b-60ppi7qhzo],
.mpx-player-hero-card[b-60ppi7qhzo],
.mpx-timeline-panel[b-60ppi7qhzo] {
    display: grid;
    gap: 0.9rem;
    padding: 1rem;
    border-radius: 1rem;
    border: 1px solid var(--mpx-soft-border);
    background: rgba(15, 23, 42, 0.52);
}

.mpx-group-header[b-60ppi7qhzo] {
    justify-content: space-between;
    align-items: center;
}

.mpx-group-count[b-60ppi7qhzo] {
    min-width: 2rem;
    padding: 0.35rem 0.65rem;
    background: rgba(148, 163, 184, 0.14);
    color: var(--mpx-text-soft);
}

.mpx-empty-card[b-60ppi7qhzo] {
    display: grid;
    gap: 0.35rem;
    padding: 1rem;
    border-radius: 0.95rem;
    border: 1px dashed rgba(148, 163, 184, 0.24);
    background: rgba(15, 23, 42, 0.4);
}

.mpx-empty-card strong[b-60ppi7qhzo] {
    color: #f8fafc;
}

.mpx-empty-card span[b-60ppi7qhzo] {
    color: var(--mpx-text-soft);
    line-height: 1.5;
}

.mpx-match-list[b-60ppi7qhzo],
.mpx-timeline-list[b-60ppi7qhzo] {
    display: grid;
    gap: 0.8rem;
}

.mpx-match-card[b-60ppi7qhzo] {
    display: grid;
    gap: 0.75rem;
    padding: 0.95rem;
    border-radius: 0.95rem;
    border: 1px solid rgba(148, 163, 184, 0.14);
    background: linear-gradient(180deg, rgba(22, 32, 57, 0.96) 0%, rgba(12, 19, 34, 0.96) 100%);
}

.mpx-match-card--public[b-60ppi7qhzo] {
    gap: 0.65rem;
}

.mpx-match-topline[b-60ppi7qhzo],
.mpx-state-row[b-60ppi7qhzo],
.mpx-match-meta[b-60ppi7qhzo],
.mpx-player-hero-topline[b-60ppi7qhzo],
.mpx-player-identity[b-60ppi7qhzo],
.mpx-player-meta-row[b-60ppi7qhzo],
.mpx-timeline-topline[b-60ppi7qhzo],
.mpx-timeline-item[b-60ppi7qhzo] {
    justify-content: space-between;
    align-items: center;
}

.mpx-match-number[b-60ppi7qhzo],
.mpx-meta-label[b-60ppi7qhzo],
.mpx-timeline-time[b-60ppi7qhzo] {
    font-size: 0.68rem;
    font-weight: 800;
    color: var(--mpx-text-muted);
}

.mpx-status-pill[b-60ppi7qhzo],
.mpx-state-badge[b-60ppi7qhzo],
.mpx-final-pill[b-60ppi7qhzo],
.mpx-result-pill[b-60ppi7qhzo] {
    padding: 0.34rem 0.65rem;
    border: 1px solid transparent;
}

.mpx-status-pill--scheduled[b-60ppi7qhzo],
.mpx-state-badge--scheduled[b-60ppi7qhzo],
.mpx-result-pill--halved[b-60ppi7qhzo] {
    background: rgba(148, 163, 184, 0.14);
    border-color: rgba(148, 163, 184, 0.2);
    color: #cbd5e1;
}

.mpx-status-pill--active[b-60ppi7qhzo],
.mpx-state-badge--active[b-60ppi7qhzo],
.mpx-result-pill--won[b-60ppi7qhzo] {
    background: var(--mpx-success-soft);
    border-color: rgba(34, 197, 94, 0.24);
    color: #bbf7d0;
}

.mpx-status-pill--closed[b-60ppi7qhzo],
.mpx-state-badge--closed[b-60ppi7qhzo] {
    background: var(--mpx-warning-soft);
    border-color: rgba(245, 158, 11, 0.28);
    color: #fde68a;
}

.mpx-status-pill--muted[b-60ppi7qhzo],
.mpx-state-badge--muted[b-60ppi7qhzo],
.mpx-result-pill--muted[b-60ppi7qhzo] {
    background: rgba(71, 85, 105, 0.24);
    border-color: rgba(100, 116, 139, 0.24);
    color: #cbd5e1;
}

.mpx-state-badge--square[b-60ppi7qhzo] {
    background: rgba(56, 189, 248, 0.15);
    border-color: rgba(56, 189, 248, 0.22);
    color: #bae6fd;
}

.mpx-result-pill--lost[b-60ppi7qhzo] {
    background: var(--mpx-danger-soft);
    border-color: rgba(251, 113, 133, 0.24);
    color: #fecdd3;
}

.mpx-final-pill[b-60ppi7qhzo] {
    background: rgba(99, 102, 241, 0.18);
    border-color: rgba(129, 140, 248, 0.25);
    color: #c7d2fe;
}

.mpx-match-sides[b-60ppi7qhzo],
.mpx-player-name[b-60ppi7qhzo] {
    font-size: 1.05rem;
    font-weight: 700;
    color: #f8fafc;
}

.mpx-match-id[b-60ppi7qhzo] {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
    font-size: 0.74rem;
    color: var(--mpx-text-muted);
    overflow-wrap: anywhere;
}

.mpx-match-sides span[b-60ppi7qhzo],
.mpx-player-opponent[b-60ppi7qhzo] {
    color: var(--mpx-text-soft);
    font-weight: 500;
}

.mpx-match-meta[b-60ppi7qhzo],
.mpx-player-meta-row[b-60ppi7qhzo] {
    flex-wrap: wrap;
}

.mpx-meta-item[b-60ppi7qhzo],
.mpx-summary-card[b-60ppi7qhzo] {
    display: grid;
    gap: 0.25rem;
    min-width: 0;
}

.mpx-meta-item[b-60ppi7qhzo] {
    flex: 1 1 10rem;
    padding: 0.7rem 0.85rem;
    border-radius: 0.85rem;
    background: rgba(15, 23, 42, 0.48);
    border: 1px solid rgba(148, 163, 184, 0.1);
}

.mpx-meta-item--wide[b-60ppi7qhzo] {
    flex: 2 1 22rem;
}

.mpx-meta-value[b-60ppi7qhzo] {
    color: #f8fafc;
    font-size: 0.94rem;
    line-height: 1.45;
}

.mpx-meta-value--mono[b-60ppi7qhzo] {
    font-family: ui-monospace, SFMono-Regular, SFMono-Regular, Menlo, Monaco, Consolas, Liberation Mono, Courier New, monospace;
    font-size: 0.82rem;
    word-break: break-all;
}

.mpx-player-blueprint[b-60ppi7qhzo] {
    display: grid;
    gap: 1rem;
}

.mpx-player-hero-card[b-60ppi7qhzo] {
    background: linear-gradient(160deg, rgba(14, 165, 233, 0.16) 0%, rgba(15, 23, 42, 0.9) 42%, rgba(17, 24, 39, 0.98) 100%);
}

.mpx-readonly-badge[b-60ppi7qhzo] {
    background: rgba(15, 23, 42, 0.66);
    border: 1px solid rgba(148, 163, 184, 0.18);
    color: var(--mpx-text-soft);
}

.mpx-player-identity[b-60ppi7qhzo] {
    align-items: start;
}

.mpx-player-opponent[b-60ppi7qhzo] {
    margin-top: 0.3rem;
    font-size: 0.92rem;
}

.mpx-player-summary-grid[b-60ppi7qhzo] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.mpx-summary-card[b-60ppi7qhzo] {
    padding: 0.9rem;
    border-radius: 0.95rem;
    border: 1px solid rgba(148, 163, 184, 0.12);
    background: rgba(15, 23, 42, 0.54);
}

.mpx-timeline-panel[b-60ppi7qhzo] {
    background: rgba(12, 19, 34, 0.88);
}

.mpx-timeline-item[b-60ppi7qhzo] {
    align-items: stretch;
    gap: 0.9rem;
    padding: 0.9rem;
    border-radius: 0.95rem;
    border: 1px solid rgba(148, 163, 184, 0.12);
    background: rgba(15, 23, 42, 0.45);
}

.mpx-timeline-hole[b-60ppi7qhzo] {
    min-width: 3rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 0.95rem;
    font-size: 1.05rem;
    font-weight: 800;
    color: #0f172a;
    background: linear-gradient(180deg, #bae6fd 0%, #38bdf8 100%);
}

.mpx-timeline-body[b-60ppi7qhzo] {
    flex: 1 1 auto;
    display: grid;
    gap: 0.35rem;
    min-width: 0;
}

.mpx-timeline-label[b-60ppi7qhzo] {
    color: var(--mpx-text-soft);
    line-height: 1.45;
}

.mpx-timeline-flag[b-60ppi7qhzo] {
    align-self: center;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--mpx-text-soft);
}

@media (max-width: 1100px) {
    .mpx-board-grid[b-60ppi7qhzo],
    .mpx-board-grid--public[b-60ppi7qhzo],
    .mpx-player-summary-grid[b-60ppi7qhzo] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 900px) {
    .mpx-page[b-60ppi7qhzo] {
        padding: 1rem;
    }

    .mpx-board-grid[b-60ppi7qhzo],
    .mpx-board-grid--public[b-60ppi7qhzo],
    .mpx-player-summary-grid[b-60ppi7qhzo] {
        grid-template-columns: 1fr;
    }

    .mpx-toolbar[b-60ppi7qhzo],
    .mpx-player-meta-row[b-60ppi7qhzo],
    .mpx-match-meta[b-60ppi7qhzo],
    .mpx-hero-main[b-60ppi7qhzo],
    .mpx-warning[b-60ppi7qhzo],
    .mpx-player-identity[b-60ppi7qhzo],
    .mpx-timeline-item[b-60ppi7qhzo] {
        flex-direction: column;
        align-items: stretch;
    }

    .mpx-toolbar-action[b-60ppi7qhzo] {
        width: 100%;
    }

    .mpx-toolbar-action[b-60ppi7qhzo]  .ui-btn {
        width: 100%;
    }

    .mpx-field--compact[b-60ppi7qhzo],
    .mpx-field--wide[b-60ppi7qhzo] {
        width: 100%;
        flex: 1 1 100%;
    }
}

@media (max-width: 480px) {
    .mpx-page[b-60ppi7qhzo] {
        padding: 0.75rem;
    }

    .mpx-panel[b-60ppi7qhzo],
    .mpx-hero[b-60ppi7qhzo],
    .mpx-warning[b-60ppi7qhzo] {
        border-radius: 1rem;
    }

    .mpx-player-name[b-60ppi7qhzo],
    .mpx-match-sides[b-60ppi7qhzo] {
        font-size: 0.98rem;
    }

    .mpx-meta-item[b-60ppi7qhzo],
    .mpx-summary-card[b-60ppi7qhzo],
    .mpx-match-card[b-60ppi7qhzo],
    .mpx-timeline-item[b-60ppi7qhzo],
    .mpx-group[b-60ppi7qhzo],
    .mpx-player-hero-card[b-60ppi7qhzo],
    .mpx-timeline-panel[b-60ppi7qhzo],
    .mpx-toolbar[b-60ppi7qhzo] {
        padding: 0.85rem;
    }
}

.mpx-entry-grid[b-60ppi7qhzo] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.9rem;
}

.mpx-entry-card[b-60ppi7qhzo] {
    display: grid;
    gap: 0.75rem;
    padding: 1rem;
    border-radius: 0.95rem;
    border: 1px solid rgba(148, 163, 184, 0.14);
    background: rgba(12, 19, 34, 0.8);
}

.mpx-entry-card--guarded[b-60ppi7qhzo] {
    border-color: rgba(251, 191, 36, 0.22);
    background: linear-gradient(180deg, rgba(41, 27, 7, 0.44) 0%, rgba(12, 19, 34, 0.92) 100%);
}

.mpx-entry-state-value[b-60ppi7qhzo] {
    font-size: clamp(1.25rem, 2vw, 1.7rem);
    font-weight: 800;
    color: #f8fafc;
    padding: 0.65rem 0.85rem;
    border-radius: 0.9rem;
    background: rgba(30, 41, 59, 0.52);
    border: 1px solid rgba(148, 163, 184, 0.2);
}

.mpx-entry-state-kicker[b-60ppi7qhzo] {
    font-size: 0.76rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--mpx-text-soft);
    font-weight: 700;
}

.mpx-entry-action-now[b-60ppi7qhzo] {
    color: var(--mpx-text-soft);
    font-weight: 600;
}

.mpx-entry-readiness[b-60ppi7qhzo] {
    padding: 0.65rem 0.8rem;
    border-radius: 0.8rem;
    font-weight: 700;
    border: 1px solid transparent;
}

.mpx-entry-readiness--ready[b-60ppi7qhzo] {
    background: var(--mpx-success-soft);
    color: #bbf7d0;
    border-color: rgba(34, 197, 94, 0.24);
}

.mpx-entry-readiness--waiting[b-60ppi7qhzo] {
    background: var(--mpx-warning-soft);
    color: #fcd34d;
    border-color: rgba(245, 158, 11, 0.28);
}

.mpx-entry-meta[b-60ppi7qhzo] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.65rem;
}

.mpx-meta-value--ready[b-60ppi7qhzo] {
    color: #bbf7d0;
}

.mpx-entry-action-row[b-60ppi7qhzo] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.mpx-entry-help[b-60ppi7qhzo] {
    color: var(--mpx-text-soft);
    font-size: 0.86rem;
    line-height: 1.45;
}

.mpx-entry-validation[b-60ppi7qhzo] {
    padding: 0.7rem 0.85rem;
    border-radius: 0.8rem;
    background: rgba(251, 113, 133, 0.14);
    border: 1px solid rgba(251, 113, 133, 0.24);
    color: #fecdd3;
    font-weight: 600;
}

.mpx-guard-copy[b-60ppi7qhzo] {
    margin: 0;
    color: var(--mpx-text-soft);
    line-height: 1.5;
}

.mpx-player-blueprint--invalid[b-60ppi7qhzo] {
    border: 1px solid rgba(251, 113, 133, 0.24);
    border-radius: 1rem;
    padding: 1rem;
    background: linear-gradient(180deg, rgba(61, 23, 37, 0.26) 0%, rgba(12, 19, 34, 0.92) 100%);
}

@media (max-width: 1200px) {
    .mpx-entry-meta[b-60ppi7qhzo] {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 900px) {
    .mpx-entry-grid[b-60ppi7qhzo] {
        grid-template-columns: 1fr;
    }

    .mpx-entry-action-row[b-60ppi7qhzo]  .ui-btn {
        width: 100%;
    }

    .mpx-entry-action-row[b-60ppi7qhzo] {
        flex-direction: column;
    }
}
/* /Components/Pages/Admin/PlayerSubscriptions.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════
   ADMIN — Player Subscriptions (Player+)
   Mirrors the shared admin sub-page styles (see CourseAccounts).
═══════════════════════════════════════════════════════════ */

/* ── Page shell ─────────────────────────────────────────── */
.adm-page[b-v8k9ru9ayu] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 1100px;
}

/* ── Header ─────────────────────────────────────────────── */
.adm-header[b-v8k9ru9ayu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
}

.adm-header-left[b-v8k9ru9ayu] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    flex-wrap: wrap;
}

.adm-back[b-v8k9ru9ayu] {
    display: inline-flex;
    align-items: center;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--b9-text-muted);
    text-decoration: none;
    transition: color 0.1s;
}

.adm-back:hover[b-v8k9ru9ayu] { color: var(--b9-text); text-decoration: none; }

.adm-title[b-v8k9ru9ayu] {
    font-size: 1.25rem;
    font-weight: 700;
    margin: 0;
    color: var(--b9-text);
    letter-spacing: -0.02em;
}

.admin-role-badge[b-v8k9ru9ayu] {
    display: inline-flex;
    align-items: center;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--b9-danger-text);
    background: var(--b9-danger-soft);
    border: 1px solid var(--b9-danger);
    border-radius: 20px;
    padding: 0.2rem 0.7rem;
}

/* ── Intro copy ─────────────────────────────────────────── */
.adm-intro[b-v8k9ru9ayu] {
    font-size: 0.85rem;
    color: var(--b9-text-muted);
    line-height: 1.55;
    margin-bottom: 1rem;
    max-width: 70ch;
}

/* ── Filter tabs (Player+ / All players) ────────────────── */
.pp-seg[b-v8k9ru9ayu] {
    display: inline-flex;
    gap: 0.25rem;
    padding: 0.25rem;
    margin-bottom: 0.875rem;
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    max-width: 100%;
    flex-wrap: wrap;
}

.pp-seg-btn[b-v8k9ru9ayu] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.85rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--b9-text-muted);
    background: transparent;
    border: none;
    border-radius: 7px;
    cursor: pointer;
    transition: background 0.12s, color 0.12s;
}

.pp-seg-btn:hover:not(.is-active):not(:disabled)[b-v8k9ru9ayu] { color: var(--b9-text); }

.pp-seg-btn.is-active[b-v8k9ru9ayu] {
    color: var(--b9-text);
    background: var(--b9-card-bg);
    box-shadow: var(--b9-card-shadow);
}

.pp-seg-btn:disabled[b-v8k9ru9ayu] { opacity: 0.6; cursor: default; }

.pp-seg-count[b-v8k9ru9ayu] {
    font-size: 0.72rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    padding: 0.05rem 0.4rem;
    border-radius: 999px;
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
}

.pp-seg-btn.is-active .pp-seg-count[b-v8k9ru9ayu] {
    background: var(--b9-primary-soft, var(--b9-surface-muted));
    color: var(--b9-primary-text, var(--b9-text));
}

/* ── Card ───────────────────────────────────────────────── */
.adm-card[b-v8k9ru9ayu] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 10px;
    box-shadow: var(--b9-card-shadow);
    overflow: hidden;
}

.adm-card-header[b-v8k9ru9ayu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--b9-border);
}

.adm-card-title[b-v8k9ru9ayu] {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--b9-text-muted);
}

.adm-count[b-v8k9ru9ayu] {
    font-size: 0.8rem;
    color: var(--b9-text-muted);
    white-space: nowrap;
}

/* ── Search row ─────────────────────────────────────────── */
.adm-search-row[b-v8k9ru9ayu] {
    display: flex;
    flex-wrap: wrap; /* buttons drop to a second row on narrow phones */
    gap: 0.5rem;
    padding: 0.75rem 1rem 1rem;
}

.adm-search-row .adm-input[b-v8k9ru9ayu] { flex: 1 1 10rem; min-width: 0; }

.adm-input[b-v8k9ru9ayu] {
    padding: 0.4rem 0.7rem;
    font-size: 0.8125rem;
    border: 1px solid var(--b9-border);
    border-radius: 7px;
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    width: 100%;
    outline: none;
    transition: border-color 0.12s, background 0.12s;
}

.adm-input:focus[b-v8k9ru9ayu] { border-color: var(--b9-primary); background: var(--b9-card-bg); }
.adm-input[b-v8k9ru9ayu]::placeholder { color: var(--b9-text-soft); }

/* ── Alerts ─────────────────────────────────────────────── */
.adm-alert[b-v8k9ru9ayu] {
    display: flex;
    align-items: center;
    font-size: 0.8125rem;
    font-weight: 500;
    border-radius: 8px;
    padding: 0.5rem 0.875rem;
    margin-bottom: 0.875rem;
    border: 1px solid;
}

.adm-alert-success[b-v8k9ru9ayu] { background: var(--b9-success-soft); border-color: var(--b9-success); color: var(--b9-success-text); }
.adm-alert-danger[b-v8k9ru9ayu]  { background: var(--b9-danger-soft);  border-color: var(--b9-danger);  color: var(--b9-danger-text); }
.adm-alert-warning[b-v8k9ru9ayu] { background: var(--b9-warning-soft); border-color: var(--b9-warning); color: var(--b9-warning-text); }
.adm-alert-info[b-v8k9ru9ayu]    { background: var(--b9-surface-muted); border-color: var(--b9-border); color: var(--b9-text-muted); }

/* ── Empty state ────────────────────────────────────────── */
.adm-empty[b-v8k9ru9ayu] {
    padding: 2.5rem 1rem;
    text-align: center;
    color: var(--b9-text-muted);
    font-size: 0.85rem;
}

/* ── Table ──────────────────────────────────────────────── */
.etable-wrap[b-v8k9ru9ayu] { overflow-x: auto; }

.etable[b-v8k9ru9ayu] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8125rem;
}

.etable thead th[b-v8k9ru9ayu] {
    padding: 0.55rem 1rem;
    text-align: left;
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--b9-text-muted);
    background: var(--b9-surface-muted);
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
}

.etable thead th:last-child[b-v8k9ru9ayu] { text-align: right; }

.etable tbody tr[b-v8k9ru9ayu] {
    border-bottom: 1px solid var(--b9-border);
    transition: background 0.1s;
}

.etable tbody tr:last-child[b-v8k9ru9ayu] { border-bottom: none; }
.etable tbody tr:hover[b-v8k9ru9ayu] { background: var(--b9-surface-muted); }

.etable td[b-v8k9ru9ayu] {
    padding: 0.65rem 1rem;
    color: var(--b9-text);
    vertical-align: middle;
}

.etd-name[b-v8k9ru9ayu] { min-width: 160px; font-weight: 600; }

.etd-sub[b-v8k9ru9ayu] {
    display: block;
    font-size: 0.75rem;
    color: var(--b9-text-soft);
    margin-top: 0.1rem;
}

.etd-email[b-v8k9ru9ayu] { color: var(--b9-text-muted); font-size: 0.8rem; }

.etd-actions[b-v8k9ru9ayu] { text-align: right; white-space: nowrap; }

.etd-empty[b-v8k9ru9ayu] {
    text-align: center;
    padding: 2rem;
    color: var(--b9-text-muted);
    font-size: 0.85rem;
}

/* ── Status badges ──────────────────────────────────────── */
.estatus[b-v8k9ru9ayu] {
    display: inline-flex;
    align-items: center;
    font-size: 0.69rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 20px;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.estatus-open[b-v8k9ru9ayu]      { background: var(--b9-success-soft);  color: var(--b9-success-text); }
.estatus-draft[b-v8k9ru9ayu]     { background: var(--b9-surface-muted); color: var(--b9-text-soft); }
.estatus-pastdue[b-v8k9ru9ayu]   { background: var(--b9-warning-soft);  color: var(--b9-warning-text); }

/* ── Plan audit list ────────────────────────────────────── */
.adm-audit-list[b-v8k9ru9ayu] { list-style: none; margin: 0.25rem 0 0; padding: 0; }

.adm-audit-item[b-v8k9ru9ayu] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    padding: 0.3125rem 0;
    font-size: 0.8125rem;
    border-bottom: 1px solid var(--b9-border-subtle, rgba(255,255,255,0.06));
}

.adm-audit-item:last-child[b-v8k9ru9ayu] { border-bottom: none; }

.adm-audit-when[b-v8k9ru9ayu] {
    flex: 0 0 auto;
    color: var(--b9-text-muted);
    font-variant-numeric: tabular-nums;
    min-width: 6.5rem;
}

.adm-audit-what[b-v8k9ru9ayu] { color: var(--b9-text); }

/* ── Manage-plan modal (mirror of CourseAccounts) ───────── */
.adm-delete-overlay[b-v8k9ru9ayu] {
    position: fixed;
    inset: 0;
    z-index: 1090;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(2, 6, 23, 0.72);
    backdrop-filter: blur(6px);
}

.adm-delete-modal[b-v8k9ru9ayu] {
    position: relative;
    width: min(620px, 100%);
    max-height: min(86vh, 920px);
    overflow: auto;
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 16px;
    box-shadow: var(--b9-card-shadow-xl);
    color: var(--b9-text);
}

.adm-delete-modal-header[b-v8k9ru9ayu],
.adm-delete-modal-footer[b-v8k9ru9ayu],
.adm-delete-modal-body[b-v8k9ru9ayu] { padding: 1rem 1.1rem; }

.adm-delete-modal-header[b-v8k9ru9ayu] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    border-bottom: 1px solid var(--b9-border);
}

.adm-delete-modal-kicker[b-v8k9ru9ayu] {
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--b9-text-soft);
    margin-bottom: 0.25rem;
}

.adm-delete-modal-title[b-v8k9ru9ayu] {
    margin: 0;
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: var(--b9-text);
}

.adm-delete-close[b-v8k9ru9ayu] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
}

.adm-delete-close:hover[b-v8k9ru9ayu] { color: var(--b9-text); background: var(--b9-card-bg); }

.adm-delete-modal-copy[b-v8k9ru9ayu] {
    margin: 0 0 1rem;
    color: var(--b9-text-muted);
    line-height: 1.55;
}

.adm-delete-summary-item[b-v8k9ru9ayu] {
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    padding: 0.75rem 0.8rem;
    background: color-mix(in srgb, var(--b9-surface-muted) 76%, var(--b9-card-bg));
}

.adm-delete-summary-label[b-v8k9ru9ayu] {
    display: block;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-text-soft);
    margin-bottom: 0.25rem;
}

.adm-delete-summary-item strong[b-v8k9ru9ayu] {
    font-size: 0.92rem;
    color: var(--b9-text);
    word-break: break-word;
}

.adm-delete-form[b-v8k9ru9ayu] { display: grid; gap: 0.75rem; }

.adm-delete-label[b-v8k9ru9ayu] { font-size: 0.8rem; font-weight: 700; color: var(--b9-text); }

.adm-delete-input[b-v8k9ru9ayu] {
    background: var(--b9-surface-muted);
    border-color: var(--b9-border);
    color: var(--b9-text);
}

.adm-delete-input[b-v8k9ru9ayu]::placeholder { color: var(--b9-text-soft); }

.adm-delete-input:focus[b-v8k9ru9ayu] {
    background: var(--b9-card-bg);
    border-color: var(--b9-primary);
    box-shadow: 0 0 0 0.2rem color-mix(in srgb, var(--b9-primary) 18%, transparent);
}

.adm-delete-modal-footer[b-v8k9ru9ayu] {
    display: flex;
    justify-content: flex-end;
    gap: 0.75rem;
    border-top: 1px solid var(--b9-border);
}

@media (max-width: 767px) {
    .adm-page[b-v8k9ru9ayu] { padding: 1rem 1rem 2rem; }
    .adm-delete-modal[b-v8k9ru9ayu] { max-height: 90vh; }
    .adm-delete-modal-footer[b-v8k9ru9ayu] { flex-direction: column-reverse; }
    .adm-delete-modal-footer .btn[b-v8k9ru9ayu] { width: 100%; }
}
/* /Components/Pages/Admin/Setup.razor.rz.scp.css */
/* Extracted inline styles (Blazor audit Batch G). */
.as-card-sm[b-568x6rn7zb] { max-width: 420px; }
.as-card-md[b-568x6rn7zb] { max-width: 440px; }
.as-shell[b-568x6rn7zb] { background: var(--bg-surface); }
.as-card-lg[b-568x6rn7zb] {
    max-width: 460px;
    width: 100%;
    background: var(--bg-elevated);
    border-color: var(--border-subtle);
}
/* /Components/Pages/Admin/Users.razor.rz.scp.css */
.adm-page[b-2ak3nulvul] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 1100px;
}

/* ── Search row ─────────────────────────────────────────────────────────── */

.adm-search-row[b-2ak3nulvul] {
    display: flex;
    flex-wrap: wrap; /* buttons drop to a second row on narrow phones */
    gap: 0.5rem;
    padding: 0.75rem 1rem 1rem;
}

.adm-search-row .adm-input[b-2ak3nulvul] {
    flex: 1 1 10rem;
    min-width: 0;
}

/* ── Empty state ────────────────────────────────────────────────────────── */

.adm-empty[b-2ak3nulvul] {
    padding: 2.5rem 1rem;
    text-align: center;
    color: var(--text-muted);
}

/* ── User status badges ─────────────────────────────────────────────────── */

.usr-badge[b-2ak3nulvul] {
    display: inline-flex;
    align-items: center;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 999px;
}

.usr-badge-ok[b-2ak3nulvul] {
    background: var(--success-soft);
    color: var(--success-text);
}

.usr-badge-warn[b-2ak3nulvul] {
    background: var(--warning-soft);
    color: var(--warning-text);
}

.usr-badge-danger[b-2ak3nulvul] {
    background: var(--danger-soft);
    color: var(--danger-text);
}

.usr-badge-admin[b-2ak3nulvul] {
    background: var(--brand-soft);
    color: var(--brand-text);
}

/* ── Delete confirmation modal ──────────────────────────────────────────── */

.adm-modal-backdrop[b-2ak3nulvul] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.55);
    z-index: 2000;
    display: flex;
    align-items: center;
    justify-content: center;
}

.adm-modal[b-2ak3nulvul] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: 12px;
    width: 100%;
    max-width: 420px;
    box-shadow: 0 20px 40px rgba(0,0,0,0.35);
}

.adm-modal-header[b-2ak3nulvul] {
    padding: 1rem 1.25rem 0.75rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-default);
}

.adm-modal-body[b-2ak3nulvul] {
    padding: 1rem 1.25rem;
    color: var(--text-secondary);
}

.adm-modal-footer[b-2ak3nulvul] {
    padding: 0.75rem 1.25rem 1rem;
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}
/* /Components/Pages/Billing/BillingPortal.razor.rz.scp.css */
/* ================================================================
   BILLING PORTAL PAGE  (/billing/manage)
   ================================================================ */

/* ── Main card ───────────────────────────────────────────────── */

.bbp-card[b-1chk5hk3n7] {
    background: var(--b9-card-bg, #0f172a);
    border: 1px solid var(--b9-card-border, rgba(255, 255, 255, 0.08));
    border-radius: 12px;
    overflow: hidden;
}

.bbp-card-header[b-1chk5hk3n7] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--b9-border, rgba(255, 255, 255, 0.06));
}

.bbp-section-label[b-1chk5hk3n7] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #64748b);
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.bbp-plan-name[b-1chk5hk3n7] {
    font-size: 1.375rem;
    font-weight: 800;
    color: var(--text-primary, #f1f5f9);
}

/* ── Status badges ───────────────────────────────────────────── */

.bbp-status-badge[b-1chk5hk3n7] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.25rem 0.625rem;
    border-radius: 999px;
    white-space: nowrap;
    flex-shrink: 0;
}

.bbp-badge-active[b-1chk5hk3n7] {
    background: rgba(22, 163, 74, 0.12);
    border: 1px solid rgba(22, 163, 74, 0.3);
    color: var(--b9-primary-text);
}

.bbp-badge-trial[b-1chk5hk3n7] {
    background: var(--b9-info-soft);
    border: 1px solid var(--b9-info-text);
    color: var(--b9-info-text);
}

.bbp-badge-pastdue[b-1chk5hk3n7] {
    background: var(--b9-warning-soft);
    border: 1px solid var(--b9-warning-text);
    color: var(--b9-warning-text);
}

.bbp-badge-canceled[b-1chk5hk3n7] {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(255, 255, 255, 0.1);
    color: var(--text-muted, #64748b);
}

/* ── Detail rows ─────────────────────────────────────────────── */

.bbp-details[b-1chk5hk3n7] {
    padding: 1rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.bbp-detail-row[b-1chk5hk3n7] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.875rem;
}

.bbp-detail-label[b-1chk5hk3n7] {
    color: var(--text-secondary);
    min-width: 110px;
    flex-shrink: 0;
}

.bbp-detail-value[b-1chk5hk3n7] {
    color: var(--text-secondary, #94a3b8);
}

.bbp-urgent[b-1chk5hk3n7] {
    color: var(--b9-danger-text);
    font-weight: 600;
}

.bbp-mono[b-1chk5hk3n7] {
    font-family: ui-monospace, monospace;
    font-size: var(--font-size-sm);
}

.bbp-detail-warning[b-1chk5hk3n7] {
    color: var(--b9-warning-text);
    font-size: 0.875rem;
    align-items: flex-start;
}

/* ── Action buttons ──────────────────────────────────────────── */

.bbp-actions[b-1chk5hk3n7] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.bbp-btn-primary[b-1chk5hk3n7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    padding: 0.625rem 1.125rem;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-weight: 600;
    font-size: 0.9375rem;
    border-radius: 8px;
    text-decoration: none;
    transition: background 0.15s;
    width: fit-content;
}

.bbp-btn-primary:hover[b-1chk5hk3n7] {
    background: var(--b9-primary-hover);
    color: #fff;
}

.bbp-btn-secondary[b-1chk5hk3n7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.375rem;
    min-height: var(--touch-target-min, 48px);
    padding: 0.5625rem 1.125rem;
    background: transparent;
    border: 1px solid var(--b9-border-strong);
    color: var(--text-primary);
    font-size: 0.9375rem;
    font-weight: 600;
    border-radius: 8px;
    cursor: pointer;
    width: fit-content;
}

.bbp-btn-secondary:hover:not(:disabled)[b-1chk5hk3n7] {
    border-color: var(--b9-primary-text);
    color: var(--b9-primary-text);
}

.bbp-btn-secondary:disabled[b-1chk5hk3n7] {
    cursor: default;
    opacity: 0.6;
}

.bbp-soon-tag[b-1chk5hk3n7] {
    font-size: var(--font-size-chip);
    background: rgba(255, 255, 255, 0.08);
    border-radius: 4px;
    padding: 0.1rem 0.35rem;
    margin-left: 0.25rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* ── Help row ────────────────────────────────────────────────── */

.bbp-help-row[b-1chk5hk3n7] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
}

.bbp-help-icon[b-1chk5hk3n7] {
    color: var(--text-muted, #64748b);
    flex-shrink: 0;
}

.bbp-help-text[b-1chk5hk3n7] {
    color: var(--text-muted, #64748b);
}

.bbp-help-link[b-1chk5hk3n7] {
    color: var(--b9-primary-text);
    text-decoration: none;
    font-weight: 500;
}

.bbp-help-link:hover[b-1chk5hk3n7] {
    text-decoration: underline;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.bpt-container[b-1chk5hk3n7] { max-width: 680px; }
/* /Components/Pages/Billing/PlanComparison.razor.rz.scp.css */
/* ================================================================
   PLAN COMPARISON PAGE  (/billing/plans)
   ================================================================ */

/* ── Reason / trial banners ─────────────────────────────────── */

.bpc-reason-banner[b-rfzrm1wurx] {
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem;
    background: rgba(59, 130, 246, 0.08);
    border: 1px solid rgba(59, 130, 246, 0.25);
    border-radius: 8px;
    font-size: 0.9rem;
    color: var(--text-secondary, #94a3b8);
}

.bpc-trial-notice[b-rfzrm1wurx] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    background: rgba(22, 163, 74, 0.08);
    border: 1px solid rgba(22, 163, 74, 0.25);
    border-radius: 8px;
    font-size: 0.9rem;
    color: var(--text-secondary, #94a3b8);
}

/* ── Card grid ───────────────────────────────────────────────── */

.bpc-grid[b-rfzrm1wurx] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 1.25rem;
    align-items: start;
}

.bpc-card[b-rfzrm1wurx] {
    position: relative;
    background: var(--b9-card-bg, #0f172a);
    border: 1px solid var(--b9-card-border, rgba(255, 255, 255, 0.08));
    border-radius: 14px;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0;
}

.bpc-card-current[b-rfzrm1wurx] {
    border-color: var(--b9-primary, #16a34a);
}

.bpc-card-featured[b-rfzrm1wurx] {
    border-color: rgba(22, 163, 74, 0.4);
}

/* ── Badges ─────────────────────────────────────────────────── */

.bpc-popular-badge[b-rfzrm1wurx] {
    position: absolute;
    top: -0.75rem;
    left: 50%;
    transform: translateX(-50%);
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.2rem 0.75rem;
    border-radius: 999px;
    white-space: nowrap;
}

.bpc-current-badge[b-rfzrm1wurx] {
    position: absolute;
    top: -0.75rem;
    right: 1rem;
    background: rgba(22, 163, 74, 0.15);
    border: 1px solid rgba(22, 163, 74, 0.4);
    color: var(--b9-primary-text);
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    padding: 0.2rem 0.625rem;
    border-radius: 999px;
    white-space: nowrap;
}

/* ── Card header ─────────────────────────────────────────────── */

.bpc-card-header[b-rfzrm1wurx] {
    margin-bottom: 1.25rem;
}

.bpc-plan-name[b-rfzrm1wurx] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #64748b);
    margin-bottom: 0.375rem;
}

.bpc-price[b-rfzrm1wurx] {
    font-size: 2rem;
    font-weight: 800;
    color: var(--text-primary, #f1f5f9);
    line-height: 1.1;
    margin-bottom: 0.375rem;
}

.bpc-price-period[b-rfzrm1wurx] {
    font-size: 0.9375rem;
    font-weight: 400;
    color: var(--text-muted, #64748b);
}

.bpc-plan-tagline[b-rfzrm1wurx] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    margin: 0;
}

/* ── Feature list ────────────────────────────────────────────── */

.bpc-features[b-rfzrm1wurx] {
    list-style: none;
    padding: 0;
    margin: 0 0 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 1;
}

.bpc-features li[b-rfzrm1wurx] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: var(--text-secondary, #94a3b8);
    line-height: 1.4;
}

.bpc-feature-off[b-rfzrm1wurx] {
    opacity: 0.45;
}

.bpc-check[b-rfzrm1wurx] {
    color: var(--b9-primary-text);
    flex-shrink: 0;
    margin-top: 1px;
}

.bpc-x[b-rfzrm1wurx] {
    color: var(--text-muted, #64748b);
    flex-shrink: 0;
    margin-top: 1px;
}

/* ── Footer / CTA ────────────────────────────────────────────── */

.bpc-card-footer[b-rfzrm1wurx] {
    margin-top: auto;
}

.bpc-btn-upgrade[b-rfzrm1wurx] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    text-align: center;
    padding: 0.625rem 1rem;
    border: 1px solid var(--b9-primary, #16a34a);
    color: var(--b9-primary-text);
    font-weight: 600;
    font-size: 0.9rem;
    border-radius: 8px;
    text-decoration: none;
    transition: background 0.15s, color 0.15s;
}

.bpc-btn-upgrade:hover[b-rfzrm1wurx] {
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
}

.bpc-btn-upgrade-primary[b-rfzrm1wurx] {
    background: var(--b9-primary, #16a34a);
    color: #fff;
    border-color: var(--b9-primary, #16a34a);
}

.bpc-btn-upgrade-primary:hover[b-rfzrm1wurx] {
    background: var(--b9-primary-hover);
    color: #fff;
}

.bpc-btn-current[b-rfzrm1wurx] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    text-align: center;
    padding: 0.625rem 1rem;
    background: rgba(22, 163, 74, 0.08);
    border: 1px solid rgba(22, 163, 74, 0.25);
    color: var(--b9-primary-text);
    font-weight: 600;
    font-size: 0.9rem;
    border-radius: 8px;
}

.bpc-btn-disabled[b-rfzrm1wurx] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    text-align: center;
    padding: 0.625rem 1rem;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--b9-border, rgba(255, 255, 255, 0.08));
    color: var(--text-muted, #64748b);
    font-size: 0.9rem;
    border-radius: 8px;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.bp-container[b-rfzrm1wurx] { max-width: 900px; }
/* /Components/Pages/Billing/UpgradePage.razor.rz.scp.css */
/* ================================================================
   UPGRADE PAGE  (/billing/upgrade)
   ================================================================ */

/* ── Plan summary card ──────────────────────────────────────── */

.bup-plan-card[b-fg2eumzrvn] {
    background: var(--b9-card-bg, #0f172a);
    border: 1px solid var(--b9-card-border, rgba(255, 255, 255, 0.08));
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
}

.bup-plan-header[b-fg2eumzrvn] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.bup-plan-label[b-fg2eumzrvn] {
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #64748b);
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.bup-plan-name[b-fg2eumzrvn] {
    font-size: 1.375rem;
    font-weight: 800;
    color: var(--text-primary, #f1f5f9);
}

.bup-plan-price[b-fg2eumzrvn] {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--b9-primary-text);
    white-space: nowrap;
}

.bup-price-period[b-fg2eumzrvn] {
    font-size: 0.9375rem;
    font-weight: 400;
    color: var(--text-muted, #64748b);
}

.bup-plan-bullets[b-fg2eumzrvn] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.bup-plan-bullets li[b-fg2eumzrvn] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: var(--text-secondary, #94a3b8);
}

.bup-check[b-fg2eumzrvn] {
    color: var(--b9-primary-text);
    flex-shrink: 0;
}

/* ── Coming soon block ──────────────────────────────────────── */

.bup-coming-soon[b-fg2eumzrvn] {
    background: rgba(255, 255, 255, 0.025);
    border: 1px dashed var(--b9-border, rgba(255, 255, 255, 0.12));
    border-radius: 12px;
    padding: 2rem 1.5rem;
    text-align: center;
}

.bup-coming-icon[b-fg2eumzrvn] {
    font-size: 2.25rem;
    color: var(--text-muted, #64748b);
    display: block;
    margin-bottom: 0.875rem;
}

.bup-coming-title[b-fg2eumzrvn] {
    font-size: 1.125rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: 0.5rem;
}

.bup-coming-body[b-fg2eumzrvn] {
    font-size: 0.9rem;
    color: var(--text-secondary, #94a3b8);
    line-height: 1.6;
    margin-bottom: 1.25rem;
    max-width: 420px;
    margin-left: auto;
    margin-right: auto;
}

/* ── Stripe checkout block ───────────────────────────────────── */

.bup-checkout-block[b-fg2eumzrvn] {
    background: rgba(255, 255, 255, 0.025);
    border: 1px solid var(--b9-border, rgba(255, 255, 255, 0.1));
    border-radius: 12px;
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.bup-checkout-info[b-fg2eumzrvn] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
}

.bup-shield-icon[b-fg2eumzrvn] {
    font-size: 1.5rem;
    color: var(--b9-primary-text);
    flex-shrink: 0;
    margin-top: 2px;
}

.bup-checkout-label[b-fg2eumzrvn] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: 0.25rem;
}

.bup-checkout-sub[b-fg2eumzrvn] {
    font-size: 0.8125rem;
    color: var(--text-muted, #64748b);
    line-height: 1.5;
}

.bup-checkout-btn[b-fg2eumzrvn] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 0.75rem 1.25rem;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    border: none;
    border-radius: 10px;
    cursor: pointer;
    transition: background 0.15s;
}

.bup-checkout-btn:hover:not(:disabled)[b-fg2eumzrvn] {
    background: #15803d;
}

.bup-checkout-btn:disabled[b-fg2eumzrvn] {
    opacity: 0.7;
    cursor: not-allowed;
}

.bup-coming-note[b-fg2eumzrvn] {
    font-size: 0.8rem;
    color: var(--text-muted, #64748b);
    margin: 0;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.up-container[b-fg2eumzrvn] { max-width: 600px; }
/* /Components/Pages/Casual/Play.razor.rz.scp.css */
.play-hub[b-o1eub75upi] {
    max-width: 640px;
    margin: 0 auto;
    padding: 16px 16px 96px;
    display: flex;
    flex-direction: column;
    gap: 18px;
}

/* The page's one heading. Sized to match the other player hubs (.mlg-title on My Leagues),
   so "Play" reads the same weight as "My Leagues" and "My Schedule". */
.ph-title[b-o1eub75upi] {
    margin: 0;
    font-size: 1.3rem;
    font-weight: 800;
    line-height: 1.2;
    color: var(--text-primary, #F1F5F9);
}

/* Handicap card */
.ph-hcap[b-o1eub75upi] {
    background: var(--bg-elevated, #111827);
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    border-radius: 16px;
    padding: 22px 20px;
    text-align: center;
}

.ph-hcap-label[b-o1eub75upi] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted, #94A3B8);
}

.ph-hcap-value[b-o1eub75upi] {
    font-size: 3.2rem;
    font-weight: 800;
    line-height: 1.05;
    margin: 4px 0 2px;
    color: var(--text-primary, #F1F5F9);
}

.ph-hcap-sub[b-o1eub75upi] {
    font-size: 0.9rem;
    color: var(--text-secondary, #CBD5E1);
}

/* The standing disclosure. Quiet, but always present — see HandicapCopy.Disclosure. */
.ph-hcap-note[b-o1eub75upi] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94A3B8);
    margin-top: 6px;
}

/* Stats link — quiet secondary action under the handicap card */
.ph-stats-link[b-o1eub75upi] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 48px;
    margin-top: -6px;
    border-radius: 12px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    background: var(--bg-surface, #0F172A);
    color: var(--text-secondary, #CBD5E1);
    font-weight: 600;
    text-decoration: none;
}

.ph-stats-link:hover[b-o1eub75upi] {
    border-color: var(--border-strong, rgba(255,255,255,0.20));
    color: var(--text-primary, #F1F5F9);
}

/* Resume card — surfaces an in-progress round so it's never lost */
.ph-resume[b-o1eub75upi] {
    background: var(--brand-soft, rgba(29,78,216,0.12));
    border: 1px solid var(--brand, #1D4ED8);
    border-radius: 14px;
    padding: 16px 18px;
}

.ph-resume-label[b-o1eub75upi] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--brand-text, #93C5FD);
    display: flex;
    align-items: center;
    gap: 6px;
}

.ph-resume-course[b-o1eub75upi] {
    font-size: 1.15rem;
    font-weight: 800;
    color: var(--text-primary, #F1F5F9);
    margin-top: 4px;
}

.ph-resume-sub[b-o1eub75upi] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #CBD5E1);
    margin-bottom: 12px;
}

.ph-resume-actions[b-o1eub75upi] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ph-resume-continue[b-o1eub75upi] {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    border-radius: 12px;
    background: var(--brand, #1D4ED8);
    color: #ffffff;
    font-weight: 700;
    text-decoration: none;
}

.ph-resume-continue:hover[b-o1eub75upi] { background: var(--brand-hover, #2563EB); }

.ph-resume-discard[b-o1eub75upi] {
    min-height: 48px;
    padding: 0 18px;
    border-radius: 12px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: transparent;
    color: var(--text-secondary, #CBD5E1);
    font-weight: 600;
    cursor: pointer;
}

.ph-resume-discard:hover[b-o1eub75upi] { border-color: var(--border-strong, rgba(255,255,255,0.20)); }
.ph-resume-discard:disabled[b-o1eub75upi] { opacity: 0.5; cursor: default; }

/* Start button — the hero action */
.ph-start[b-o1eub75upi] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    min-height: 60px;
    border: none;
    border-radius: 14px;
    background: var(--brand, #1D4ED8);
    color: #ffffff;
    font-size: 1.2rem;
    font-weight: 700;
    cursor: pointer;
    box-shadow: 0 6px 20px var(--brand-ring, rgba(29,78,216,0.30));
}

.ph-start:hover[b-o1eub75upi] { background: var(--brand-hover, #2563EB); }
.ph-start:active[b-o1eub75upi] { transform: translateY(1px); }
.ph-start i[b-o1eub75upi] { font-size: 1.3rem; }

/* Recent rounds */
.ph-recent-title[b-o1eub75upi] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted, #94A3B8);
    margin: 6px 2px;
}

.ph-empty[b-o1eub75upi] {
    background: var(--bg-surface, #0F172A);
    border: 1px dashed var(--border-default, rgba(255,255,255,0.12));
    border-radius: 12px;
    padding: 22px 16px;
    text-align: center;
    color: var(--text-secondary, #CBD5E1);
}

.ph-round[b-o1eub75upi] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 8px;
    text-decoration: none;
    color: inherit;
    min-height: 60px;
}

.ph-round:hover[b-o1eub75upi] { border-color: var(--border-strong, rgba(255,255,255,0.20)); }

/* A round that does not feed the handicap reads as present but set aside — dimmed, never hidden.
   The player still played it and the card is still theirs to open. */
.ph-round-off .ph-round-gross[b-o1eub75upi],
.ph-round-off .ph-round-course[b-o1eub75upi] { color: var(--text-secondary, #CBD5E1); }

.ph-round-note[b-o1eub75upi] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94A3B8);
    margin-top: 4px;
}

.ph-round-course[b-o1eub75upi] {
    font-weight: 600;
    color: var(--text-primary, #F1F5F9);
}

.ph-round-date[b-o1eub75upi] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94A3B8);
}

.ph-round-score[b-o1eub75upi] {
    display: flex;
    align-items: baseline;
    gap: 8px;
}

.ph-round-gross[b-o1eub75upi] {
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--text-primary, #F1F5F9);
}

.ph-round-vspar[b-o1eub75upi] {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--text-secondary, #CBD5E1);
}

.ph-clubs[b-o1eub75upi] { margin-top: 6px; }
.ph-club[b-o1eub75upi] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 12px 16px;
    margin-bottom: 8px;
}
.ph-club-name[b-o1eub75upi] { font-weight: 600; color: var(--text-primary, #F1F5F9); }
.ph-club-dist[b-o1eub75upi] { font-size: 1.2rem; font-weight: 800; color: var(--text-primary, #F1F5F9); }
.ph-club-unit[b-o1eub75upi] { font-size: var(--font-size-sm); font-weight: 500; color: var(--text-muted, #94A3B8); }

/* ── Player+ hosted games entry ───────────────────────────────────────────── */

.ph-games[b-o1eub75upi] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    padding: 14px 16px;
    text-decoration: none;
    min-height: 64px;
    margin-bottom: 4px;
}
.ph-games:hover[b-o1eub75upi] { border-color: var(--brand-soft); }

.ph-games-title[b-o1eub75upi] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 700;
    color: var(--text-primary);
    font-size: 1.02rem;
}

.ph-games-sub[b-o1eub75upi] { color: var(--text-muted); font-size: 0.9rem; margin-top: 2px; }

.ph-games-live[b-o1eub75upi] {
    flex: 0 0 auto;
    font-size: var(--font-size-sm);
    font-weight: 800;
    letter-spacing: 0.06em;
    background: var(--success-soft);
    color: var(--text-primary);
    border: 1px solid var(--border-subtle);
    padding: 3px 10px;
    border-radius: 999px;
}

.ph-games-chev[b-o1eub75upi] { color: var(--text-muted); }
/* /Components/Pages/Casual/PlayScorecard.razor.rz.scp.css */
.sc-msg[b-bspfjoadd5] {
    max-width: 480px;
    margin: 40px auto;
    text-align: center;
    color: var(--text-secondary, #CBD5E1);
}
.sc-link[b-bspfjoadd5], .sc-msg a[b-bspfjoadd5] { color: var(--brand-text, #93C5FD); }

.scorecard[b-bspfjoadd5] {
    max-width: 560px;
    margin: 0 auto;
    padding: 8px 16px 96px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.sc-top[b-bspfjoadd5] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 0;
}
.sc-exit[b-bspfjoadd5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    color: var(--text-secondary, #CBD5E1);
    text-decoration: none;
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}
.sc-course[b-bspfjoadd5] { font-weight: 600; color: var(--text-primary, #F1F5F9); }

/* Hole header with prev/next */
.sc-hole[b-bspfjoadd5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}
.sc-hole-head[b-bspfjoadd5] { text-align: center; flex: 1; }
.sc-hole-no[b-bspfjoadd5] { font-size: 1.6rem; font-weight: 800; color: var(--text-primary, #F1F5F9); }
.sc-hole-meta[b-bspfjoadd5] { font-size: 0.9rem; color: var(--text-muted, #94A3B8); }

.sc-nav[b-bspfjoadd5] {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-surface, #0F172A);
    color: var(--text-primary, #F1F5F9);
    font-size: 1.3rem;
    cursor: pointer;
}
.sc-nav:disabled[b-bspfjoadd5] { opacity: 0.35; }

/* The score — one tap, not a stepper.
   The whole panel is the target rather than a small pill: on this card the number IS the control,
   and a player entering a score one-handed on a green should not have to aim. */
.sc-score-open[b-bspfjoadd5] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    width: 100%;
    background: var(--bg-elevated, #111827);
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    border-radius: 20px;
    padding: 18px;
    cursor: pointer;
    color: inherit;
    min-height: 96px;          /* comfortably past the 48px floor, one-handed */
}
.sc-score-open:active[b-bspfjoadd5] { transform: translateY(1px); }
.sc-score-open:focus-visible[b-bspfjoadd5] {
    outline: 2px solid var(--brand, #1D4ED8);
    outline-offset: 2px;
}
.sc-score-hint[b-bspfjoadd5] {
    font-size: 0.85rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--text-muted, #94A3B8);
}

.sc-score[b-bspfjoadd5] { text-align: center; flex: 1; }
.sc-score-num[b-bspfjoadd5] { font-size: 4rem; font-weight: 800; line-height: 1; color: var(--text-primary, #F1F5F9); }
.sc-score-rel[b-bspfjoadd5] { font-size: 1rem; color: var(--text-muted, #94A3B8); margin-top: 2px; }

/* Details toggle + stats */
.sc-details-toggle[b-bspfjoadd5] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 48px;
    border: 1px dashed var(--border-default, rgba(255,255,255,0.12));
    border-radius: 12px;
    background: transparent;
    color: var(--text-secondary, #CBD5E1);
    font-size: 0.95rem;
    cursor: pointer;
}

.sc-stats[b-bspfjoadd5] {
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 8px 14px;
}
.sc-stat-row[b-bspfjoadd5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
}
.sc-stat-row:last-child[b-bspfjoadd5] { border-bottom: none; }
.sc-stat-label[b-bspfjoadd5] { color: var(--text-secondary, #CBD5E1); font-size: 0.96rem; }

.sc-mini-stepper[b-bspfjoadd5] { display: flex; align-items: center; gap: 12px; }
.sc-mini[b-bspfjoadd5] {
    width: 44px; height: 44px;
    border-radius: 10px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-raised, #1E293B);
    color: var(--text-primary, #F1F5F9);
    font-size: 1.2rem; cursor: pointer;
}
.sc-mini-val[b-bspfjoadd5] { min-width: 24px; text-align: center; font-weight: 700; color: var(--text-primary, #F1F5F9); }

.sc-fairway[b-bspfjoadd5] { display: flex; gap: 8px; }
.sc-fw[b-bspfjoadd5] {
    width: 48px; height: 44px;
    border-radius: 10px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-raised, #1E293B);
    color: var(--text-secondary, #CBD5E1);
    cursor: pointer;
}
.sc-fw.on[b-bspfjoadd5] { background: var(--brand-soft, rgba(29,78,216,0.15)); border-color: var(--brand, #1D4ED8); color: var(--brand-text, #93C5FD); }

.sc-gir[b-bspfjoadd5] {
    width: 48px; height: 44px;
    border-radius: 10px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-raised, #1E293B);
    color: var(--text-secondary, #CBD5E1);
    font-size: 1.2rem; cursor: pointer;
}
.sc-gir.on[b-bspfjoadd5] { background: var(--brand-soft, rgba(29,78,216,0.15)); border-color: var(--brand, #1D4ED8); color: var(--brand-text, #93C5FD); }

.sc-shot-row[b-bspfjoadd5] { gap: 10px; }
.sc-club[b-bspfjoadd5] {
    flex: 1;
    min-height: 44px;
    border-radius: 10px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-raised, #1E293B);
    color: var(--text-primary, #F1F5F9);
    padding: 0 10px;
}
.sc-measure[b-bspfjoadd5] {
    min-height: 44px;
    padding: 0 16px;
    border: none;
    border-radius: 10px;
    background: var(--brand, #1D4ED8);
    color: #fff;
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.sc-measure:disabled[b-bspfjoadd5] { opacity: 0.6; }
.sc-shot-result[b-bspfjoadd5] { padding: 8px 2px; color: var(--brand-text, #93C5FD); font-weight: 600; }

/* Distance to green — a primary on-course readout */
.sc-green[b-bspfjoadd5] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    margin: 6px 0 2px;
}
.sc-green-btn[b-bspfjoadd5] {
    min-height: 48px;
    padding: 0 18px;
    border: 1px solid var(--brand, #1D4ED8);
    border-radius: 12px;
    background: var(--brand-soft, rgba(29,78,216,0.15));
    color: var(--brand-text, #93C5FD);
    font-weight: 700;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.sc-green-btn:disabled[b-bspfjoadd5] { opacity: 0.6; cursor: default; }
.sc-green-readout[b-bspfjoadd5] {
    font-size: 1.05rem;
    font-weight: 800;
    color: var(--text-primary, #F1F5F9);
    text-align: center;
}
.sc-green-map[b-bspfjoadd5] {
    min-height: 44px;
    padding: 0 16px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    border-radius: 10px;
    background: transparent;
    color: var(--text-secondary, #CBD5E1);
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
}
.sc-green-map:hover[b-bspfjoadd5] { border-color: var(--brand, #1D4ED8); color: var(--brand-text, #93C5FD); }
.sc-green-map:disabled[b-bspfjoadd5] { opacity: 0.6; cursor: default; }

/* Footer */
.sc-foot[b-bspfjoadd5] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-top: 4px;
}
.sc-running[b-bspfjoadd5] { color: var(--text-secondary, #CBD5E1); font-size: 1rem; }
.sc-running strong[b-bspfjoadd5] { color: var(--text-primary, #F1F5F9); font-size: 1.2rem; }

.sc-next[b-bspfjoadd5], .sc-finish[b-bspfjoadd5] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 52px;
    padding: 0 22px;
    border: none;
    border-radius: 12px;
    background: var(--brand, #1D4ED8);
    color: #fff;
    font-size: 1.05rem;
    font-weight: 700;
    cursor: pointer;
}
.sc-finish[b-bspfjoadd5] { background: var(--success, #16A34A); }
.sc-next:disabled[b-bspfjoadd5], .sc-finish:disabled[b-bspfjoadd5] { opacity: 0.6; }

/* Rule 3.3 "I picked up". A single tap, never a stepper — score entry on this app is tap-once.
   Sized to the 48px touch target the UX rules require. */
.sc-pickup[b-bspfjoadd5] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 48px;
    margin-top: 10px;
    padding: 0 16px;
    border-radius: 999px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.12));
    background: transparent;
    color: var(--text-secondary, #CBD5E1);
    font-size: 0.95rem;
    font-weight: 600;
    cursor: pointer;
}

.sc-pickup:hover[b-bspfjoadd5] { border-color: var(--border-strong, rgba(255,255,255,0.24)); }

.sc-pickup-on[b-bspfjoadd5] {
    background: var(--brand-soft, rgba(37, 99, 235, 0.16));
    border-color: var(--brand, #2563EB);
    color: var(--text-primary, #F1F5F9);
}
/* /Components/Pages/Casual/PlayStart.razor.rz.scp.css */
.play-start[b-0vlubmcop7] {
    max-width: 640px;
    margin: 0 auto;
    padding: 12px 16px 96px;
}

.ps-back[b-0vlubmcop7] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--text-secondary, #CBD5E1);
    text-decoration: none;
    font-size: 0.92rem;
    /* padding alone left this 38px. It is the only way back out of "Where are you playing?",
       so it is exactly the control that must not need aiming. X03, UX audit 2026-09-06. */
    min-height: var(--touch-target-min);
    padding: 8px 0;
}

.ps-title[b-0vlubmcop7] {
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--text-primary, #F1F5F9);
    margin: 6px 0 16px;
}

.ps-search[b-0vlubmcop7] {
    display: flex;
    gap: 8px;
    margin-bottom: 14px;
}

.ps-search-input[b-0vlubmcop7] {
    flex: 1;
    min-width: 0; /* shrink beside the Search button instead of widening the page */
    min-height: 50px;
    padding: 10px 14px;
    border-radius: 12px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-surface, #0F172A);
    color: var(--text-primary, #F1F5F9);
    font-size: 1.05rem;
}

.ps-search-btn[b-0vlubmcop7] {
    min-height: 50px;
    padding: 0 18px;
    border: none;
    border-radius: 12px;
    background: var(--brand, #1D4ED8);
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    cursor: pointer;
}
.ps-search-btn:disabled[b-0vlubmcop7] { opacity: 0.6; }

.ps-empty[b-0vlubmcop7], .ps-note[b-0vlubmcop7] {
    color: var(--text-secondary, #CBD5E1);
    font-size: 0.92rem;
    padding: 10px 2px;
}

.ps-course[b-0vlubmcop7] {
    display: block;
    width: 100%;
    text-align: left;
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 14px 16px;
    margin-bottom: 8px;
    cursor: pointer;
    min-height: 56px;
}
.ps-course-on[b-0vlubmcop7] { border-color: var(--brand, #1D4ED8); }

.ps-course-name[b-0vlubmcop7] { font-weight: 600; color: var(--text-primary, #F1F5F9); }
.ps-course-loc[b-0vlubmcop7] { font-size: var(--font-size-sm); color: var(--text-muted, #94A3B8); }

.ps-config[b-0vlubmcop7] {
    background: var(--bg-elevated, #111827);
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    border-radius: 12px;
    padding: 14px 16px 16px;
    margin: 0 0 10px;
}

.ps-config-label[b-0vlubmcop7] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted, #94A3B8);
    margin: 10px 0 6px;
}

.ps-chips[b-0vlubmcop7] { display: flex; flex-wrap: wrap; gap: 8px; }

.ps-chip[b-0vlubmcop7] {
    min-height: 44px;
    padding: 8px 16px;
    border-radius: 999px;
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    background: var(--bg-surface, #0F172A);
    color: var(--text-primary, #F1F5F9);
    font-size: 0.95rem;
    cursor: pointer;
}
.ps-chip-on[b-0vlubmcop7] {
    background: var(--brand-soft, rgba(29,78,216,0.15));
    border-color: var(--brand, #1D4ED8);
    color: var(--brand-text, #93C5FD);
    font-weight: 700;
}

.ps-go[b-0vlubmcop7] {
    display: block;
    width: 100%;
    min-height: 54px;
    margin-top: 16px;
    border: none;
    border-radius: 12px;
    background: var(--brand, #1D4ED8);
    color: #fff;
    font-size: 1.1rem;
    font-weight: 700;
    cursor: pointer;
}
.ps-go:disabled[b-0vlubmcop7] { opacity: 0.5; }

.ps-quick-toggle[b-0vlubmcop7] {
    display: block;
    width: 100%;
    margin-top: 14px;
    padding: 12px;
    border: none;
    background: transparent;
    color: var(--text-secondary, #CBD5E1);
    font-size: 0.92rem;
    cursor: pointer;
}
.ps-quick-toggle span[b-0vlubmcop7] { color: var(--brand-text, #93C5FD); font-weight: 600; }

.ps-link[b-0vlubmcop7] {
    border: none;
    background: transparent;
    color: var(--brand-text, #93C5FD);
    font: inherit;
    cursor: pointer;
    padding: 0;
}

/* A refusal the player can act on. The Start button used to do nothing at all when the chosen tee
   had no usable scorecard — no message, no state change, nothing to try next. */
.ps-error[b-0vlubmcop7] {
    background: var(--danger-soft, rgba(239, 68, 68, 0.12));
    border: 1px solid var(--danger-border, rgba(239, 68, 68, 0.35));
    color: var(--text-primary, #F1F5F9);
    border-radius: 10px;
    padding: 12px 14px;
    font-size: 0.9rem;
    line-height: 1.45;
    margin: 12px 0 0;
}
/* /Components/Pages/Casual/PlayStats.razor.rz.scp.css */
.stats-page[b-spaq02yeh1] {
    max-width: 640px;
    margin: 0 auto;
    padding: 12px 16px 96px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.stats-back[b-spaq02yeh1] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    align-self: flex-start;
    /* Was 44px — four short. X03 (UX audit 2026-09-06): this is the only way back off the
       stats page on a phone, so it is exactly the control that must not need aiming. */
    min-height: var(--touch-target-min);
    color: var(--text-secondary, #CBD5E1);
    text-decoration: none;
    font-weight: 600;
}

.stats-back:hover[b-spaq02yeh1] { color: var(--text-primary, #F1F5F9); }

.stats-title[b-spaq02yeh1] {
    font-size: 1.5rem;
    font-weight: 800;
    margin: 0 2px;
    color: var(--text-primary, #F1F5F9);
}

.stats-empty[b-spaq02yeh1] {
    background: var(--bg-surface, #0F172A);
    border: 1px dashed var(--border-default, rgba(255,255,255,0.12));
    border-radius: 12px;
    padding: 28px 18px;
    text-align: center;
    color: var(--text-secondary, #CBD5E1);
}

/* Handicap + trend hero */
.stats-hero[b-spaq02yeh1] {
    background: var(--bg-elevated, #111827);
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    border-radius: 16px;
    padding: 20px;
    text-align: center;
}

.stats-hero-label[b-spaq02yeh1] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted, #94A3B8);
}

.stats-hero-value[b-spaq02yeh1] {
    font-size: 3rem;
    font-weight: 800;
    line-height: 1.05;
    margin: 2px 0 6px;
    color: var(--text-primary, #F1F5F9);
}

.stats-spark[b-spaq02yeh1] {
    width: 100%;
    height: 80px;
    display: block;
    margin: 6px 0 4px;
    overflow: visible;
}

.stats-spark polyline[b-spaq02yeh1] {
    fill: none;
    stroke: var(--brand-text, #93C5FD);
    stroke-width: 2.5;
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}

.stats-spark circle[b-spaq02yeh1] {
    fill: var(--brand-text, #93C5FD);
}

.stats-hero-sub[b-spaq02yeh1] {
    font-size: 0.9rem;
    color: var(--text-secondary, #CBD5E1);
}

/* Stat cards */
.stats-grid[b-spaq02yeh1] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

.stat-card[b-spaq02yeh1] {
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 16px 14px;
    text-align: center;
}

.stat-value[b-spaq02yeh1] {
    font-size: 1.7rem;
    font-weight: 800;
    color: var(--text-primary, #F1F5F9);
    line-height: 1.1;
}

.stat-label[b-spaq02yeh1] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94A3B8);
    margin-top: 4px;
}

.stats-foot[b-spaq02yeh1] {
    text-align: center;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94A3B8);
}

/* The standing disclosure — see HandicapCopy.Disclosure. Present on every surface showing the number. */
.stats-hero-note[b-spaq02yeh1] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94A3B8);
    margin-top: 6px;
}
/* /Components/Pages/Casual/PlaySummary.razor.rz.scp.css */
.su-msg[b-s561r70x26] {
    max-width: 480px;
    margin: 48px auto;
    text-align: center;
    color: var(--text-secondary, #CBD5E1);
}
.su-msg a[b-s561r70x26] { color: var(--brand-text, #93C5FD); }

.summary[b-s561r70x26] {
    max-width: 560px;
    margin: 0 auto;
    padding: 16px 16px 96px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.su-hero[b-s561r70x26] {
    background: var(--bg-elevated, #111827);
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    border-radius: 18px;
    padding: 24px 20px;
    text-align: center;
}
.su-nice[b-s561r70x26] { font-size: var(--font-size-sm); letter-spacing: 0.05em; text-transform: uppercase; color: var(--text-muted, #94A3B8); }
.su-course[b-s561r70x26] { font-size: 1.25rem; font-weight: 700; color: var(--text-primary, #F1F5F9); margin-top: 2px; }
.su-date[b-s561r70x26] { font-size: 0.88rem; color: var(--text-muted, #94A3B8); }
.su-gross[b-s561r70x26] { font-size: 4rem; font-weight: 800; line-height: 1.05; margin: 10px 0 0; color: var(--text-primary, #F1F5F9); }
.su-line[b-s561r70x26] { display: flex; align-items: center; justify-content: center; gap: 14px; }
.su-vspar[b-s561r70x26] { color: var(--text-secondary, #CBD5E1); font-weight: 600; }
.su-net[b-s561r70x26] { color: var(--brand-text, #93C5FD); font-weight: 600; }

.su-stats[b-s561r70x26] {
    display: flex;
    gap: 10px;
}
.su-stat[b-s561r70x26] {
    flex: 1;
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 14px 8px;
    text-align: center;
}
.su-stat-v[b-s561r70x26] { font-size: 1.5rem; font-weight: 800; color: var(--text-primary, #F1F5F9); }
.su-stat-l[b-s561r70x26] { font-size: var(--font-size-sm); color: var(--text-muted, #94A3B8); margin-top: 2px; }

.su-hcap[b-s561r70x26] {
    background: var(--brand-soft, rgba(29,78,216,0.15));
    border: 1px solid var(--brand, #1D4ED8);
    border-radius: 16px;
    padding: 20px;
    text-align: center;
}
.su-hcap-label[b-s561r70x26] { font-size: var(--font-size-sm); letter-spacing: 0.04em; text-transform: uppercase; color: var(--brand-text, #93C5FD); }
.su-hcap-value[b-s561r70x26] { font-size: 3rem; font-weight: 800; line-height: 1.05; color: var(--text-primary, #F1F5F9); }
.su-hcap-delta[b-s561r70x26] { font-size: 1.15rem; font-weight: 700; margin-left: 8px; vertical-align: middle; color: var(--brand-text, #93C5FD); }
.su-hcap-sub[b-s561r70x26] { font-size: 0.9rem; color: var(--text-secondary, #CBD5E1); }

.su-hcap-note[b-s561r70x26] {
    background: var(--bg-surface, #0F172A);
    border: 1px dashed var(--border-default, rgba(255,255,255,0.12));
    border-radius: 12px;
    padding: 16px;
    text-align: center;
    color: var(--text-secondary, #CBD5E1);
    font-size: 0.92rem;
}

/* F1 — send this round to friends. Secondary to Done: outlined, same width, a full touch target. */
.su-send[b-s561r70x26] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    min-height: 54px;
    margin-bottom: 10px;
    border-radius: 12px;
    border: 1.5px solid var(--brand, #1D4ED8);
    background: transparent;
    color: var(--brand-text, #93C5FD);
    font-size: 1.05rem;
    font-weight: 700;
    cursor: pointer;
}
.su-send:disabled[b-s561r70x26] { opacity: 0.6; cursor: default; }
.su-send-note[b-s561r70x26] {
    margin: 0 0 10px;
    text-align: center;
    color: var(--text-secondary, #CBD5E1);
    font-size: 0.95rem;
}

.su-done[b-s561r70x26] {
    display: block;
    width: 100%;
    min-height: 54px;
    line-height: 54px;
    text-align: center;
    border-radius: 12px;
    background: var(--brand, #1D4ED8);
    color: #fff;
    font-size: 1.1rem;
    font-weight: 700;
    text-decoration: none;
}

/* Quiet destructive action — remove a mistaken/incomplete round. */
.su-delete[b-s561r70x26] {
    display: block;
    width: 100%;
    min-height: 48px;
    margin-top: 10px;
    text-align: center;
    border: none;
    background: transparent;
    color: var(--b9-danger-text, #FCA5A5);
    font-size: 0.98rem;
    font-weight: 600;
    cursor: pointer;
}
.su-delete:disabled[b-s561r70x26] { opacity: 0.6; cursor: default; }

/* ── Scorecard grid (the familiar full card) ─────────────────────────────── */
.su-card[b-s561r70x26] {
    background: var(--bg-surface, #0F172A);
    border-radius: 14px;
    padding: 14px 14px 12px;
    margin: 4px 0 6px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.su-nine[b-s561r70x26] { display: flex; flex-direction: column; gap: 6px; }
.su-nine-label[b-s561r70x26] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--text-muted, #8A96A8);
    padding-left: 2px;
}
.su-grid[b-s561r70x26] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
    font-variant-numeric: tabular-nums;
}
.su-grid td[b-s561r70x26] {
    text-align: center;
    height: 32px;
    font-size: var(--font-size-sm);
    padding: 0;
}
.su-grid .rh[b-s561r70x26] {
    text-align: left;
    width: 34px;
    font-size: var(--font-size-sm);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    font-weight: 600;
    color: var(--text-muted, #8A96A8);
}
.su-grid-head td[b-s561r70x26] { color: var(--text-primary, #F3F6FB); font-weight: 700; }
.su-grid-par td[b-s561r70x26] { color: var(--text-muted, #8A96A8); font-size: var(--font-size-sm); }
.su-grid .sub[b-s561r70x26] {
    background: var(--brand-soft, rgba(29,78,216,.15));
    color: var(--brand-text, #93C5FD);
    font-weight: 800;
    border-radius: 7px;
    width: 36px;
}
.su-grid-head .sub[b-s561r70x26] { color: var(--text-primary, #F3F6FB); }

.cell[b-s561r70x26] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 25px;
    height: 25px;
    font-weight: 700;
    color: var(--text-primary, #F3F6FB);
}
.cell.blank[b-s561r70x26] { color: var(--text-muted, #8A96A8); font-weight: 500; }
.cell.par[b-s561r70x26]   { color: #E5E7EB; }
.cell.birdie[b-s561r70x26] { color: #86EFAC; }
.cell.birdie[b-s561r70x26]::before { content: ""; position: absolute; inset: 1px; border: 1.5px solid #86EFAC; border-radius: 50%; }
.cell.bogey[b-s561r70x26] { color: #FCA5A5; }
.cell.bogey[b-s561r70x26]::before { content: ""; position: absolute; inset: 2px; border: 1.5px solid #FCA5A5; border-radius: 5px; }
.cell.dbl[b-s561r70x26] { color: #FCA5A5; }
.cell.dbl[b-s561r70x26]::before { content: ""; position: absolute; inset: 2px; border: 1.5px solid #FCA5A5; border-radius: 5px; }
.cell.dbl[b-s561r70x26]::after  { content: ""; position: absolute; inset: -1px; border: 1.5px solid #FCA5A5; border-radius: 5px; }
.cell.eagle[b-s561r70x26] { color: #FCD34D; }
.cell.eagle[b-s561r70x26]::before { content: ""; position: absolute; inset: 0; border: 1.5px solid #FCD34D; border-radius: 50%; }
.cell.eagle[b-s561r70x26]::after  { content: ""; position: absolute; inset: -3px; border: 1.5px solid #FCD34D; border-radius: 50%; }

.su-card-hint[b-s561r70x26] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #8A96A8);
    text-align: center;
}
/* /Components/Pages/Communications/Index.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════════════
   COMMUNICATIONS CENTER
   /communications
══════════════════════════════════════════════════════════════════════════════ */

.comm-page[b-yxyzfu5o2u] {
    max-width: 1100px;
    margin: 0 auto;
    padding: 2rem 1.5rem 4rem;
}

/* ── Header ── */
.comm-header[b-yxyzfu5o2u] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.75rem;
}

.comm-header-left[b-yxyzfu5o2u] {
    display: flex;
    flex-direction: column;
    gap: .2rem;
}

.comm-title[b-yxyzfu5o2u] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0;
    letter-spacing: -.02em;
}

.comm-subtitle[b-yxyzfu5o2u] {
    font-size: .875rem;
    color: var(--text-secondary);
    margin: 0;
    line-height: 1.5;
}

.comm-header-actions[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-shrink: 0;
}

.comm-failure-badge[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    background: var(--danger-soft);
    color: var(--danger-text);
    border: 1px solid rgba(239,68,68,0.28);
    border-radius: 8px;
    padding: .4rem .85rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    cursor: pointer;
    transition: background .12s;
}
.comm-failure-badge:hover[b-yxyzfu5o2u] { background: rgba(239,68,68,.18); }

/* The five summary tiles that used to open this page were removed by the UX audit (O04 / X09).
   Their counts now render through Components/Shared/OpsStatLine.razor under the message log. */

/* ── Tab bar ─────────────────────────────────────────────────────────────── */
.comm-tabs[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    gap: 0;
    border-bottom: 1px solid var(--b9-border);
    margin-bottom: 1.25rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.comm-tabs[b-yxyzfu5o2u]::-webkit-scrollbar { display: none; }

.comm-tab[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .65rem .95rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    cursor: pointer;
    white-space: nowrap;
    transition: color .12s, background .12s, border-color .12s;
    margin-bottom: -1px;
    border-radius: 6px 6px 0 0;
    line-height: 1.3;
}

.comm-tab:hover[b-yxyzfu5o2u] {
    color: var(--text-primary);
    background: var(--b9-surface-muted);
}

.comm-tab--active[b-yxyzfu5o2u] {
    color: var(--b9-primary-text);
    border-bottom-color: var(--b9-primary);
    background: none;
}

.comm-tab--active:hover[b-yxyzfu5o2u] {
    background: var(--b9-primary-soft);
}

/* Count badge inside tab */
.comm-tab-count[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    font-size: var(--font-size-chip);
    font-weight: 700;
    line-height: 1;
}

.comm-tab--active .comm-tab-count[b-yxyzfu5o2u] {
    background: var(--b9-primary);
    color: #fff;
}

/* ── Filters ── */
.comm-filters[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.comm-filter-search-wrap[b-yxyzfu5o2u] {
    position: relative;
    flex: 1;
    min-width: 220px;
}

.comm-filter-search-icon[b-yxyzfu5o2u] {
    position: absolute;
    left: .65rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--b9-text-soft, #adb5bd);
    font-size: .875rem;
    pointer-events: none;
}

.comm-filter-search[b-yxyzfu5o2u] {
    display: block;
    width: 100%;
    padding: .45rem .65rem .45rem 2rem;
    font-size: .875rem;
    border: 1.5px solid var(--b9-border);
    border-radius: 7px;
    background: var(--b9-card-bg);
    color: var(--text-primary);
    transition: border-color .15s, box-shadow .15s;
}

.comm-filter-search:focus[b-yxyzfu5o2u] {
    outline: none;
    border-color: var(--b9-primary, #0d6efd);
    box-shadow: 0 0 0 3px rgba(13,110,253,.1);
}

.comm-filter-clear[b-yxyzfu5o2u] {
    position: absolute;
    right: .5rem;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--b9-text-soft, #adb5bd);
    cursor: pointer;
    padding: .1rem .2rem;
    line-height: 1;
    font-size: var(--font-size-sm);
}

.comm-filter-select[b-yxyzfu5o2u] {
    padding: .45rem .75rem;
    font-size: .875rem;
    border: 1.5px solid var(--b9-border);
    border-radius: 7px;
    background: var(--b9-card-bg);
    color: var(--text-primary);
    cursor: pointer;
    min-width: 160px;
}

/* ── Table ── */
.comm-table-wrap[b-yxyzfu5o2u] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 12px;
    /* A real, bounded scroll container: the tables inside are virtualized, and
       Blazor's <Virtualize> anchors its viewport math to the nearest ancestor
       with non-visible overflow — the old `overflow: hidden` (auto height) made
       that root degenerate and no rows rendered. Bounding it also keeps the
       filters/tabs on screen while long logs scroll. */
    overflow-y: auto;
    overflow-x: auto;
    max-height: 65vh;
    box-shadow: var(--b9-card-shadow);
}

.comm-table thead th[b-yxyzfu5o2u] {
    /* Header stays visible while the virtualized log scrolls. */
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--b9-table-header-bg);
}

.comm-table[b-yxyzfu5o2u] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}

.comm-table thead th[b-yxyzfu5o2u] {
    background: var(--b9-surface-muted);
    padding: .6rem 1rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--text-muted);
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
}

.comm-table tbody tr[b-yxyzfu5o2u] {
    border-bottom: 1px solid var(--b9-border);
    transition: background .1s;
    color: var(--text-primary);
}

.comm-table tbody tr:hover[b-yxyzfu5o2u] { background: var(--b9-surface-muted); }

.ct-row-failed[b-yxyzfu5o2u] { background: rgba(239,68,68,0.06) !important; }
.ct-row-failed:hover[b-yxyzfu5o2u] { background: rgba(239,68,68,0.10) !important; }
.ct-row-expanded[b-yxyzfu5o2u] { background: var(--b9-surface, #f8fafc) !important; }

.comm-table td[b-yxyzfu5o2u] {
    padding: .65rem 1rem;
    vertical-align: middle;
    color: var(--text-primary);
}

/* Column widths */
.ct-col-status[b-yxyzfu5o2u]  { width: 36px; text-align: center; }
.ct-col-event[b-yxyzfu5o2u]   { min-width: 160px; }
.ct-col-recipient[b-yxyzfu5o2u] { min-width: 180px; }
.ct-col-subject[b-yxyzfu5o2u] { min-width: 180px; }
.ct-col-time[b-yxyzfu5o2u]    { width: 100px; white-space: nowrap; }
.ct-col-actions[b-yxyzfu5o2u] { width: 72px; text-align: right; }

/* Status icons */
.ct-status-ok[b-yxyzfu5o2u]   { color: var(--b9-success, #198754); font-size: 1rem; }
.ct-status-fail[b-yxyzfu5o2u] { color: #dc2626; font-size: 1rem; }

/* Cell content */
.ct-event-link[b-yxyzfu5o2u] {
    display: block;
    font-weight: 600;
    color: var(--text-primary);
    text-decoration: none;
    line-height: 1.3;
}
.ct-event-link:hover[b-yxyzfu5o2u] { color: var(--b9-primary-text); text-decoration: underline; }

/* --b9-muted is not a token, so every one of these read #495057 — Bootstrap's grey-700, a
   colour for writing on white — and on the dark communications table that is 2.18:1. This is
   a DARK defect, on the shipped default theme: the line under each message saying what sent
   it ("Registered", "Draft→Cancelled") was unreadable on the page an admin uses to check what
   went out. --b9-text-muted is the name that was meant, and it moves with the theme. */
.ct-trigger[b-yxyzfu5o2u] {
    display: block;
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted, #495057);
    margin-top: .15rem;
}

.ct-name[b-yxyzfu5o2u] {
    display: block;
    font-weight: 500;
    color: var(--text-primary);
    line-height: 1.3;
}

.ct-email[b-yxyzfu5o2u] {
    display: block;
    font-size: var(--font-size-sm);
    color: var(--text-muted);
}

.ct-subject[b-yxyzfu5o2u] {
    color: var(--text-primary);
    line-height: 1.35;
}

.ct-row-failed .ct-subject[b-yxyzfu5o2u] { color: var(--danger-text); }

.ct-time[b-yxyzfu5o2u] {
    color: var(--text-muted);
    font-size: var(--font-size-sm);
}

/* Action buttons */
.ct-btn[b-yxyzfu5o2u] {
    background: none;
    border: 1.5px solid var(--b9-border, #dee2e6);
    border-radius: 6px;
    padding: .25rem .45rem;
    font-size: var(--font-size-sm);
    cursor: pointer;
    transition: background .12s, border-color .12s;
    color: var(--b9-text-muted, #495057);
    margin-left: .25rem;
}
.ct-btn:hover:not(:disabled)[b-yxyzfu5o2u] { background: var(--b9-surface, #f8fafc); }
.ct-btn:disabled[b-yxyzfu5o2u] { opacity: .5; cursor: not-allowed; }

.ct-btn-resend[b-yxyzfu5o2u] { color: var(--b9-primary-text); border-color: var(--b9-primary, #0d6efd); }
.ct-btn-resend:hover:not(:disabled)[b-yxyzfu5o2u] { background: var(--brand-soft); }

.ct-btn-detail[b-yxyzfu5o2u] { color: var(--danger-text); border-color: rgba(239,68,68,0.38); }
.ct-btn-detail:hover[b-yxyzfu5o2u] { background: var(--danger-soft); }

/* Spin animation */
@keyframes spin-b-yxyzfu5o2u { to { transform: rotate(360deg); } }
.ct-spin[b-yxyzfu5o2u] { display: inline-block; animation: spin-b-yxyzfu5o2u .8s linear infinite; }

/* Error detail row */
.ct-error-row td[b-yxyzfu5o2u] { padding: 0; }
.ct-error-detail[b-yxyzfu5o2u] {
    background: var(--danger-soft);
    border-top: 1px solid rgba(239,68,68,0.22);
    border-bottom: 1px solid rgba(239,68,68,0.22);
    padding: .6rem 1rem;
    font-size: var(--font-size-sm);
    color: var(--danger-text);
    display: flex;
    align-items: flex-start;
}
.ct-error-detail code[b-yxyzfu5o2u] {
    background: none;
    color: inherit;
    font-size: var(--font-size-sm);
    word-break: break-word;
    white-space: pre-wrap;
}

/* ── Compose button ── */
.comm-compose-btn[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    background: var(--b9-primary, #1d4ed8);
    color: #fff;
    border: none;
    border-radius: 9px;
    padding: .55rem 1.15rem;
    font-size: .875rem;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
    white-space: nowrap;
}
.comm-compose-btn:hover[b-yxyzfu5o2u] { background: var(--b9-primary-hover, #1e40af); }

/* ── Compose panel ── */
.comm-compose-panel[b-yxyzfu5o2u] {
    background: var(--bg-elevated);
    border: 1px solid var(--brand-ring);
    border-radius: 12px;
    margin-bottom: 1.75rem;
    box-shadow: 0 2px 8px rgba(0,0,0,.22);
}
.comm-compose-header[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .875rem 1.25rem;
    border-bottom: 1px solid var(--border-default);
    background: var(--brand-soft);
    border-radius: 12px 12px 0 0;
}
.comm-compose-title[b-yxyzfu5o2u] {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--brand-text);
}
.comm-compose-close[b-yxyzfu5o2u] {
    background: none;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    padding: .25rem;
    line-height: 1;
    border-radius: 6px;
    font-size: 1rem;
}
.comm-compose-close:hover[b-yxyzfu5o2u] { background: var(--bg-raised); }
.comm-compose-body[b-yxyzfu5o2u] {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .875rem;
}
.comm-compose-field[b-yxyzfu5o2u] {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.comm-compose-label[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: .04em;
}
.comm-compose-select[b-yxyzfu5o2u],
.comm-compose-input[b-yxyzfu5o2u] {
    border: 1px solid var(--border-default);
    border-radius: 8px;
    padding: .5rem .75rem;
    font-size: .9375rem;
    color: var(--text-primary);
    background: var(--bg-raised);
    width: 100%;
}
.comm-compose-select:focus[b-yxyzfu5o2u],
.comm-compose-input:focus[b-yxyzfu5o2u] { outline: 2px solid var(--brand); border-color: transparent; }
.comm-compose-textarea[b-yxyzfu5o2u] {
    border: 1px solid var(--border-default);
    border-radius: 8px;
    padding: .6rem .75rem;
    font-size: .9375rem;
    color: var(--text-primary);
    background: var(--bg-raised);
    width: 100%;
    resize: vertical;
    font-family: inherit;
    line-height: 1.6;
}
.comm-compose-textarea:focus[b-yxyzfu5o2u] { outline: 2px solid var(--brand); border-color: transparent; }
.comm-compose-actions[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding-top: .25rem;
}
.comm-compose-send[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    background: var(--b9-primary, #1d4ed8);
    color: #fff;
    border: none;
    border-radius: 8px;
    padding: .55rem 1.25rem;
    font-size: .9375rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s;
}
.comm-compose-send:hover:not(:disabled)[b-yxyzfu5o2u] { background: var(--b9-primary-hover, #1e40af); }
.comm-compose-send:disabled[b-yxyzfu5o2u] { opacity: .55; cursor: not-allowed; }
.comm-compose-error[b-yxyzfu5o2u] {
    color: #dc2626;
    font-size: var(--font-size-sm);
    margin: 0;
}
.comm-compose-success[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    background: var(--success-soft);
    border: 1px solid rgba(34,197,94,0.28);
    border-radius: 8px;
    padding: .75rem 1rem;
    color: var(--success-text);
    font-weight: 600;
    font-size: .9375rem;
}
.comm-compose-warn[b-yxyzfu5o2u] {
    background: var(--warning-soft);
    border: 1px solid rgba(251,191,36,0.28);
    border-radius: 8px;
    padding: .75rem 1rem;
    color: var(--warning-text);
    font-size: .9375rem;
}

/* ── Empty state ── */
.comm-empty[b-yxyzfu5o2u] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 3.5rem 1.5rem;
}

.comm-empty-icon[b-yxyzfu5o2u] {
    font-size: 2.5rem;
    color: var(--text-muted);
    margin-bottom: 1rem;
    opacity: .5;
}

.comm-empty-title[b-yxyzfu5o2u] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 .4rem;
}

.comm-empty-sub[b-yxyzfu5o2u] {
    font-size: .875rem;
    color: var(--text-secondary);
    max-width: 440px;
    line-height: 1.6;
    margin: 0 0 1.25rem;
}

/* Action button in empty state */
.comm-empty-cta[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    background: var(--b9-primary, #1d4ed8);
    color: #fff;
    border: none;
    border-radius: 9px;
    padding: .6rem 1.25rem;
    font-size: .9rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s;
    text-decoration: none;
}
.comm-empty-cta:hover[b-yxyzfu5o2u] { background: var(--b9-primary-hover, #1e40af); color: #fff; }

.comm-limit-note[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    text-align: center;
    margin-top: 1rem;
}

/* ── Responsive ── */
@media (max-width: 680px) {
    .comm-page[b-yxyzfu5o2u] { padding: 1.25rem 1rem 3rem; }

    .comm-header[b-yxyzfu5o2u] {
        flex-direction: column;
        align-items: stretch;
    }

    .comm-header-actions[b-yxyzfu5o2u] {
        flex-wrap: wrap;
    }

    .comm-compose-btn[b-yxyzfu5o2u] {
        flex: 1;
        justify-content: center;
        min-height: 44px;
    }

    .ct-col-subject[b-yxyzfu5o2u],
    .ct-col-time[b-yxyzfu5o2u] { display: none; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   COMPOSE WIZARD
══════════════════════════════════════════════════════════════════════════════ */

/* Step indicator */
.wiz-steps[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    gap: .35rem;
    margin-top: .5rem;
    flex-wrap: wrap;
}
.wiz-step[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted);
    background: var(--bg-raised);
    border-radius: 20px;
    padding: .2rem .65rem;
}
.wiz-step--active[b-yxyzfu5o2u] {
    background: var(--brand);
    color: #fff;
}
.wiz-step--done[b-yxyzfu5o2u] {
    background: var(--success-soft);
    color: var(--success-text);
}
.wiz-divider[b-yxyzfu5o2u] {
    display: inline-block;
    width: 12px;
    height: 1px;
    background: var(--border-default);
    flex-shrink: 0;
}

/* Section label */
.wiz-section-label[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-muted);
    margin-bottom: .875rem;
}

/* Audience cards */
.wiz-audience-grid[b-yxyzfu5o2u] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: .625rem;
}
.wiz-audience-card[b-yxyzfu5o2u] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .2rem;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-default);
    border-radius: 10px;
    padding: .75rem 1rem;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.wiz-audience-card:hover[b-yxyzfu5o2u] { border-color: var(--brand-text); }
.wiz-audience-card.selected[b-yxyzfu5o2u] {
    border-color: var(--brand);
    background: var(--brand-soft);
    box-shadow: 0 0 0 3px var(--brand-ring);
}
.wiz-aud-icon[b-yxyzfu5o2u] { font-size: 1.25rem; color: var(--brand-text); margin-bottom: .15rem; }
.wiz-aud-label[b-yxyzfu5o2u] { font-size: .875rem; font-weight: 700; color: var(--text-primary); }
.wiz-aud-desc[b-yxyzfu5o2u] { font-size: var(--font-size-sm); color: var(--text-muted); line-height: 1.3; }

/* Channel cards */
.wiz-channel-grid[b-yxyzfu5o2u] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(155px, 1fr));
    gap: .625rem;
}
.wiz-channel-card[b-yxyzfu5o2u] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .2rem;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-default);
    border-radius: 10px;
    padding: .75rem 1rem;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.wiz-channel-card:hover[b-yxyzfu5o2u] { border-color: var(--brand-text); }
.wiz-channel-card.selected[b-yxyzfu5o2u] {
    border-color: var(--brand);
    background: var(--brand-soft);
    box-shadow: 0 0 0 3px var(--brand-ring);
}
.wiz-ch-icons[b-yxyzfu5o2u] { display: flex; gap: .35rem; margin-bottom: .2rem; }
.wiz-ch-icon[b-yxyzfu5o2u] { font-size: 1.1rem; color: var(--brand-text); }
.wiz-ch-label[b-yxyzfu5o2u] { font-size: .875rem; font-weight: 700; color: var(--text-primary); }
.wiz-ch-desc[b-yxyzfu5o2u] { font-size: var(--font-size-sm); color: var(--text-muted); }

/* Plan-locked channel options — visible but honest about why they can't be picked */
.wiz-channel-card--locked[b-yxyzfu5o2u] {
    opacity: .55;
    cursor: not-allowed;
}
.wiz-channel-card--locked:hover[b-yxyzfu5o2u] { border-color: var(--border-default); }
.wiz-ch-lock[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    margin-top: .3rem;
    padding: .1rem .5rem;
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-warning-text);
    background: var(--b9-warning-soft);
}
.wiz-plan-note[b-yxyzfu5o2u] {
    margin: .75rem 0 0;
    font-size: var(--font-size-sm);
    color: var(--text-muted);
}
.wiz-plan-note a[b-yxyzfu5o2u] { color: var(--brand-text); }

/* Per-channel send breakdown under the step-5 result panel */
.wiz-send-breakdown[b-yxyzfu5o2u] {
    list-style: none;
    margin: .75rem 0 0;
    padding: .625rem .875rem;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: 10px;
    display: flex;
    flex-direction: column;
    gap: .35rem;
}
.wiz-send-breakdown li[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}
.wiz-send-breakdown li strong[b-yxyzfu5o2u] { color: var(--text-primary); }
.wiz-send-breakdown-warn[b-yxyzfu5o2u] { color: var(--b9-warning-text) !important; }

/* Field helpers */
.wiz-field-label[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
}
.wiz-merge-hint[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-top: .35rem;
}
.wiz-segment-checks[b-yxyzfu5o2u] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem .875rem;
}
.wiz-check-label[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    font-size: .875rem;
    color: var(--text-secondary);
    cursor: pointer;
}

/* Preview card */
.wiz-preview-card[b-yxyzfu5o2u] {
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: 10px;
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin-bottom: .5rem;
}
.wiz-preview-row[b-yxyzfu5o2u] {
    display: grid;
    grid-template-columns: 80px 1fr;
    gap: .5rem;
    align-items: baseline;
    font-size: .875rem;
}
.wiz-preview-key[b-yxyzfu5o2u] { font-weight: 700; color: var(--text-muted); text-transform: uppercase; font-size: var(--font-size-sm); letter-spacing: .05em; }
.wiz-preview-val[b-yxyzfu5o2u] { color: var(--text-primary); }
.wiz-ch-badge[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    background: var(--brand-soft);
    color: var(--brand-text);
    border-radius: 5px;
    padding: .15rem .5rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    margin-right: .35rem;
}
.wiz-preview-body[b-yxyzfu5o2u] {
    margin-top: .5rem;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: 8px;
    padding: .875rem 1rem;
    color: var(--text-secondary);
    font-size: .875rem;
    line-height: 1.6;
    max-height: 180px;
    overflow-y: auto;
}

/* Send options */
.wiz-send-options[b-yxyzfu5o2u] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .625rem;
}
.wiz-send-option[b-yxyzfu5o2u] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .25rem;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-default);
    border-radius: 10px;
    padding: .875rem 1rem;
    text-align: left;
    cursor: pointer;
    transition: border-color .15s, box-shadow .15s;
}
.wiz-send-option:hover[b-yxyzfu5o2u] { border-color: var(--brand-text); }
.wiz-send-option.selected[b-yxyzfu5o2u] {
    border-color: var(--brand);
    background: var(--brand-soft);
    box-shadow: 0 0 0 3px var(--brand-ring);
}
.wiz-send-icon[b-yxyzfu5o2u] { font-size: 1.25rem; color: var(--brand-text); margin-bottom: .15rem; }

/* Footer nav */
.wiz-footer[b-yxyzfu5o2u] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: .75rem;
    border-top: 1px solid var(--border-default);
    margin-top: .25rem;
}

/* ── Diagnostics tab warning badge ──────────────────────────────────────────── */
.comm-tab-warn[b-yxyzfu5o2u] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.1rem;
    height: 1.1rem;
    border-radius: 50%;
    background: #ef4444;
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 700;
    line-height: 1;
}

/* ── Diagnostics panel ───────────────────────────────────────────────────────── */
.comm-diag-panel[b-yxyzfu5o2u] {
    padding: 1.25rem 0;
}

.comm-diag-title[b-yxyzfu5o2u] {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: .5rem;
}

.comm-diag-card[b-yxyzfu5o2u] {
    border: 1px solid var(--border-default);
    border-radius: .5rem;
    padding: 1rem 1.25rem;
    background: var(--bg-elevated);
}

.comm-diag-card.comm-diag-ok[b-yxyzfu5o2u]    { border-left: 4px solid #22c55e; }
.comm-diag-card.comm-diag-warn[b-yxyzfu5o2u]  { border-left: 4px solid #f59e0b; }
.comm-diag-card.comm-diag-info[b-yxyzfu5o2u]  { border-left: 4px solid #3b82f6; }

.comm-diag-row[b-yxyzfu5o2u] {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
}

.comm-diag-icon[b-yxyzfu5o2u] {
    font-size: 1.25rem;
    flex-shrink: 0;
    margin-top: .1rem;
}

.comm-diag-body[b-yxyzfu5o2u] {
    flex: 1;
}

.comm-diag-label[b-yxyzfu5o2u] {
    font-weight: 600;
    font-size: .9rem;
    color: var(--text-primary);
    margin-bottom: .2rem;
}

.comm-diag-status[b-yxyzfu5o2u] {
    font-size: var(--font-size-sm);
}

/* ── Delivery drilldown modal ────────────────────────────────────────────────── */
.comm-modal-overlay[b-yxyzfu5o2u] {
    position: fixed;
    inset: 0;
    background: rgba(15,23,42,.45);
    backdrop-filter: blur(2px);
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.comm-modal[b-yxyzfu5o2u] {
    background: var(--bg-elevated);
    border-radius: .75rem;
    box-shadow: 0 20px 60px rgba(0,0,0,.55);
    width: 100%;
    max-width: 820px;
    max-height: 80vh;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--border-default);
}

.comm-modal-header[b-yxyzfu5o2u] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 1rem 1.25rem;
    border-bottom: 1px solid var(--border-default);
    flex-shrink: 0;
}

.comm-modal-title[b-yxyzfu5o2u] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-primary);
}

.comm-modal-close[b-yxyzfu5o2u] {
    background: none;
    border: none;
    font-size: 1.1rem;
    color: var(--text-muted);
    cursor: pointer;
    padding: .2rem .4rem;
    border-radius: .25rem;
    line-height: 1;
}
.comm-modal-close:hover[b-yxyzfu5o2u] { background: var(--bg-raised); color: var(--text-primary); }

.comm-modal-body[b-yxyzfu5o2u] {
    overflow-y: auto;
    padding: 1rem 1.25rem;
    flex: 1;
}

/* ── Drilldown table ─────────────────────────────────────────────────────────── */
.comm-drilldown-table[b-yxyzfu5o2u] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}

.comm-drilldown-table th[b-yxyzfu5o2u],
.comm-drilldown-table td[b-yxyzfu5o2u] {
    padding: .5rem .6rem;
    text-align: left;
    border-bottom: 1px solid var(--b9-border);
    color: var(--text-primary);
}

.comm-drilldown-table thead th[b-yxyzfu5o2u] {
    font-weight: 600;
    color: var(--text-muted);
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: .04em;
    background: var(--b9-surface-muted);
}

.comm-drilldown-table tbody tr:hover[b-yxyzfu5o2u] { background: var(--b9-surface-muted); }

.comm-drilldown-time[b-yxyzfu5o2u] { color: var(--text-muted); white-space: nowrap; }
.comm-drilldown-error[b-yxyzfu5o2u] { max-width: 220px; }

/* Info callout — dark-safe replacement for alert-light */
.comm-info-callout[b-yxyzfu5o2u] {
    border: 1px solid var(--border-subtle, #334155);
    border-radius: 0.375rem;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
    padding: 0.5rem 0.75rem;
}

html[data-theme="light"] .comm-info-callout[b-yxyzfu5o2u] {
    background: #f8fafc;
    border-color: #e2e8f0;
    color: #1f2937;
}

/* /Components/Pages/CourseAccounts/Create.razor.rz.scp.css */
/* ── Step progress track ──────────────────────────────────────────────────── */

.step-track[b-yt7d7a5t57] {
    flex-wrap: nowrap;
}

.step-item[b-yt7d7a5t57] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.step-circle[b-yt7d7a5t57] {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: 0.9rem;
    transition: background 0.2s, color 0.2s;
}

.step-item.active .step-circle[b-yt7d7a5t57] {
    background: var(--b9-primary, #1E40AF);
    color: #fff;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--b9-primary, #1E40AF) 20%, transparent);
}

.step-item.upcoming .step-circle[b-yt7d7a5t57] {
    background: var(--b9-surface-muted, #F1F5F9);
    color: var(--b9-text-muted, #475569);
    border: 2px dashed var(--b9-border, #E5E7EB);
}

.step-label[b-yt7d7a5t57] {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.step-item.active .step-label[b-yt7d7a5t57] {
    color: var(--b9-primary-text);
}

.step-item.upcoming .step-label[b-yt7d7a5t57] {
    color: var(--b9-text-muted, #475569);
}

.step-connector[b-yt7d7a5t57] {
    flex: 1;
    height: 2px;
    background: var(--b9-border, #E5E7EB);
    margin-bottom: 22px; /* align with circle centre */
    min-width: 24px;
}

/* ── "What's next" hint box ───────────────────────────────────────────────── */

.next-step-hint[b-yt7d7a5t57] {
    background: var(--brand-soft, rgba(29,78,216,0.15));
    border: 1px solid color-mix(in srgb, var(--b9-primary, #1E40AF) 18%, transparent);
}

.hint-icon[b-yt7d7a5t57] {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: var(--b9-primary, #1E40AF);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
}

/* ── Responsive ───────────────────────────────────────────────────────────── */

@media (max-width: 420px) {
    .step-label[b-yt7d7a5t57] { display: none; }
    .step-connector[b-yt7d7a5t57] { min-width: 16px; }
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.cac-container[b-yt7d7a5t57] { max-width: 760px; }
/* /Components/Pages/CourseAccounts/Index.razor.rz.scp.css */
/* "Course operator access" chip. Was Bootstrap .badge.text-primary (brand blue as ink on a
   dark tinted fill, 2.38:1) on the list and .badge.bg-info (white on cyan, 2.1:1) on the
   detail page. Brand-soft fill with the readable blue: 9:1 dark, 7.6:1 light. */
.ca-admin-chip[b-mecx9sipcp] {
    display: inline-block;
    padding: .25rem .6rem;
    border-radius: var(--b9-badge-radius, 20px);
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 600;
    line-height: 1.3;
}
/* /Components/Pages/CourseAccounts/Manage.razor.rz.scp.css */
/* ── Public URL bar — dark-theme safe ─────────────────────────────────── */
.mg-public-url-bar[b-qb9kpm9hoo] {
  background: var(--b9-surface-muted, rgba(255,255,255,.04));
  border-color: var(--b9-border, rgba(255,255,255,.1)) !important;
}

/* ── Upload button — styled like a secondary action, not an <input> ───── */
.mg-upload-label[b-qb9kpm9hoo] {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.375rem 0.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  line-height: 1.5;
  cursor: pointer;
  border: 1px solid var(--b9-border, rgba(255,255,255,.15));
  border-radius: 6px;
  background: var(--b9-surface-muted, rgba(255,255,255,.05));
  color: var(--b9-text, #e2e8f0);
  transition: background 0.15s, border-color 0.15s;
  white-space: nowrap;
}

.mg-upload-label:hover[b-qb9kpm9hoo] {
  background: var(--b9-card-bg-hover, rgba(255,255,255,.08));
  border-color: var(--b9-brand, #22c55e);
}

/* ── Course avatar / player avatar upload ─────────────────────────────── */
.mg-avatar-upload-label[b-qb9kpm9hoo] {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.3rem 0.65rem;
  font-size: var(--font-size-sm);
  font-weight: 500;
  cursor: pointer;
  border: 1px solid var(--b9-border, rgba(255,255,255,.15));
  border-radius: 6px;
  background: var(--b9-surface-muted, rgba(255,255,255,.05));
  color: var(--b9-text, #e2e8f0);
  transition: background 0.15s, border-color 0.15s;
}

.mg-avatar-upload-label:hover[b-qb9kpm9hoo] {
  background: var(--b9-card-bg-hover, rgba(255,255,255,.08));
  border-color: var(--b9-brand, #22c55e);
}

.cleanup-overlay[b-qb9kpm9hoo] {
  position: fixed;
  inset: 0;
  z-index: 1090;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
  background: rgba(2, 6, 23, 0.72);
  backdrop-filter: blur(6px);
}

.cleanup-modal[b-qb9kpm9hoo] {
  position: relative;
  width: min(860px, 100%);
  max-height: min(86vh, 920px);
  overflow: auto;
  background: var(--b9-card-bg);
  border: 1px solid var(--b9-card-border);
  border-radius: 16px;
  box-shadow: var(--b9-card-shadow-xl);
  color: var(--b9-text);
}

.cleanup-modal-header[b-qb9kpm9hoo],
.cleanup-modal-footer[b-qb9kpm9hoo] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 1rem 1.125rem;
}

.cleanup-modal-header[b-qb9kpm9hoo] {
  border-bottom: 1px solid var(--b9-border);
}

.cleanup-modal-footer[b-qb9kpm9hoo] {
  border-top: 1px solid var(--b9-border);
  background: rgba(255, 255, 255, 0.02);
}

.cleanup-kicker[b-qb9kpm9hoo] {
  font-size: var(--font-size-chip);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--b9-text-soft);
}

.cleanup-title[b-qb9kpm9hoo] {
  margin: 0.15rem 0 0;
  font-size: 1.15rem;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.cleanup-close[b-qb9kpm9hoo] {
  width: 34px;
  height: 34px;
  border: 1px solid transparent;
  border-radius: 8px;
  background: transparent;
  color: var(--b9-text-soft);
}

.cleanup-modal-body[b-qb9kpm9hoo] {
  padding: 1rem 1.125rem 0.875rem;
}

.cleanup-copy[b-qb9kpm9hoo] {
  margin: 0 0 1rem;
  color: var(--b9-text-muted);
  line-height: 1.55;
}

.cleanup-summary-grid[b-qb9kpm9hoo] {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}

.cleanup-summary-item[b-qb9kpm9hoo] {
  border: 1px solid var(--b9-border);
  border-radius: 12px;
  background: var(--b9-surface-muted);
  padding: 0.75rem 0.875rem;
}

.cleanup-summary-label[b-qb9kpm9hoo] {
  display: block;
  font-size: var(--font-size-chip);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--b9-text-soft);
  margin-bottom: 0.2rem;
}

.cleanup-summary-item strong[b-qb9kpm9hoo] {
  font-size: 0.92rem;
  font-weight: 700;
  color: var(--b9-text);
}

.cleanup-warning[b-qb9kpm9hoo] {
  border-radius: 12px;
  padding: 0.85rem 0.95rem;
  margin-top: 1rem;
  font-size: 0.9rem;
  line-height: 1.45;
  border: 1px solid;
}

.cleanup-warning--blocked[b-qb9kpm9hoo] {
  background: var(--b9-danger-soft);
  border-color: var(--b9-danger);
  color: var(--b9-danger-text);
}

.cleanup-warning--ready[b-qb9kpm9hoo] {
  background: var(--b9-warning-soft);
  border-color: var(--b9-warning);
  color: var(--b9-warning-text);
}

.cleanup-form[b-qb9kpm9hoo] {
  margin-top: 1rem;
}

.cleanup-label[b-qb9kpm9hoo] {
  display: block;
  font-size: var(--font-size-sm);
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--b9-text-muted);
  margin-bottom: 0.35rem;
}

.cleanup-input[b-qb9kpm9hoo] {
  background: var(--b9-surface-muted);
  border-color: var(--b9-border);
  color: var(--b9-text);
}

.cleanup-check[b-qb9kpm9hoo] {
  margin-top: 0.8rem;
}

@media (max-width: 720px) {
  .cleanup-summary-grid[b-qb9kpm9hoo] {
    grid-template-columns: 1fr;
  }

  .cleanup-modal-header[b-qb9kpm9hoo],
  .cleanup-modal-footer[b-qb9kpm9hoo] {
    flex-direction: column;
    align-items: stretch;
  }
}

/* ── Logo preview box ─────────────────────────────────────── */
.mg-logo-preview[b-qb9kpm9hoo] {
    max-height: 72px;
    max-width: 220px;
    border-radius: 8px;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    object-fit: contain;
    background: var(--b9-surface-muted, rgba(255,255,255,0.04));
}

.mg-logo-empty[b-qb9kpm9hoo] {
    width: 72px;
    height: 72px;
    border-radius: 8px;
    border: 2px dashed var(--b9-border, rgba(255,255,255,0.15));
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--b9-surface-muted, rgba(255,255,255,0.03));
    flex-shrink: 0;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.mg-clickaway[b-qb9kpm9hoo] { position: fixed; inset: 0; z-index: 999; }
.mg-slug-input[b-qb9kpm9hoo] { max-width: 220px; }
.mg-badge-xxs[b-qb9kpm9hoo] { font-size: var(--font-size-chip); }
.mg-logo-icon[b-qb9kpm9hoo] { font-size: 1.5rem; }

/* ── Cleanup tables: phone-only scroll containment ─────────────────────
   These two tables hold Blazor-controlled floating cleanup menus, so they
   cannot use .table-responsive unconditionally — its forced overflow would
   clip the open menu (the overflow-clipped-menu bug class). On desktop the
   tables fit and menus float exactly as before; on phones the table pans
   and an OPEN menu escapes the scroller as a centered fixed sheet. */
@media (max-width: 767.98px) {
    .mng-table-scroll[b-qb9kpm9hoo] {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .mng-table-scroll .dropdown-menu.show[b-qb9kpm9hoo] {
        position: fixed;
        left: 50%;
        top: 50%;
        transform: translate(-50%, -50%);
        width: min(92vw, 300px);
        z-index: 1090;
    }
}

/* Front desk crew — the one-time code reveal reads across the counter. */
.fd-code[b-qb9kpm9hoo] {
    font-size: 1.5rem;
    letter-spacing: 0.35em;
    font-variant-numeric: tabular-nums;
}

/* Billing link on the Plan card. Bootstrap's .btn is ~38px tall, under the 48px
   floor this project holds important controls to, so it is raised here. */
.mg-plan-link[b-qb9kpm9hoo] {
    min-height: var(--touch-target-min, 48px);
    display: inline-flex;
    align-items: center;
}

/* "Course operator access" chip. Was Bootstrap .badge.text-primary (brand blue as ink on a
   dark tinted fill, 2.38:1) on the list and .badge.bg-info (white on cyan, 2.1:1) on the
   detail page. Brand-soft fill with the readable blue: 9:1 dark, 7.6:1 light. */
.ca-admin-chip[b-qb9kpm9hoo] {
    display: inline-block;
    padding: .25rem .6rem;
    border-radius: var(--b9-badge-radius, 20px);
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 600;
    line-height: 1.3;
}
/* /Components/Pages/Courses/Create.razor.rz.scp.css */
/* ── Search hero ──────────────────────────────────────────────────────────── */

.search-hero[b-cs9fnk7p8x] { border-radius: var(--b9-card-radius, 12px); }

.search-icon-wrap[b-cs9fnk7p8x] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--b9-primary, #1E40AF);
    display: flex;
    align-items: center;
    justify-content: center;
    color: #fff;
}

/* ── Search input group ───────────────────────────────────────────────────── */

.cc-search-wrap[b-cs9fnk7p8x] {
    max-width: 580px;
    margin: 0 auto;
}

.cc-search-prefix[b-cs9fnk7p8x] {
    background: var(--bg-elevated);
    border-color: var(--border-default);
    border-right: 0;
    border-radius: 10px 0 0 10px !important;
}

.cc-search-input[b-cs9fnk7p8x] {
    border-color: var(--b9-border, #E5E7EB);
    border-left: 0;
    border-right: 0;
    font-size: 1rem;
}

.cc-search-input:focus[b-cs9fnk7p8x] {
    box-shadow: none;
    border-color: var(--b9-primary, #1E40AF);
}

.cc-search-clear[b-cs9fnk7p8x] {
    background: var(--bg-elevated);
    border-color: var(--border-default);
    border-left: 0;
    border-radius: 0 10px 10px 0 !important;
    color: var(--text-muted);
    transition: color 0.15s;
}

.cc-search-clear:hover[b-cs9fnk7p8x] { color: var(--b9-danger, #DC2626); background: var(--bg-raised); }

/* ── Results dropdown ─────────────────────────────────────────────────────── */

.cc-dropdown[b-cs9fnk7p8x] {
    position: absolute;
    left: 0; right: 0;
    top: calc(100% + 6px);
    background: var(--bg-elevated);
    color: var(--text-primary);
    border: 1px solid var(--border-default);
    border-radius: 10px;
    overflow: hidden;
    z-index: 1000;
    max-height: 380px;
    overflow-y: auto;
}

.cc-result[b-cs9fnk7p8x] {
    display: block;
    width: 100%;
    text-align: left;
    color: var(--text-primary);
    background: none;
    border: none;
    border-bottom: 1px solid var(--border-default);
    padding: 10px 14px;
    cursor: pointer;
    transition: background 0.1s;
}

.cc-result:last-child[b-cs9fnk7p8x] { border-bottom: none; }

.cc-result:hover[b-cs9fnk7p8x],
.cc-result-active[b-cs9fnk7p8x] { background: var(--bg-raised); }

.cc-result-active[b-cs9fnk7p8x],
.cc-result-active .cc-result-name[b-cs9fnk7p8x],
.cc-result-active .cc-result-meta[b-cs9fnk7p8x],
.cc-result-active .cc-result-meta i[b-cs9fnk7p8x],
.cc-result:hover[b-cs9fnk7p8x],
.cc-result:hover .cc-result-name[b-cs9fnk7p8x],
.cc-result:hover .cc-result-meta[b-cs9fnk7p8x],
.cc-result:hover .cc-result-meta i[b-cs9fnk7p8x] {
    color: var(--text-primary) !important;
}

.cc-result-name[b-cs9fnk7p8x] {
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--text-primary);
    margin-bottom: 2px;
}

.cc-result-meta[b-cs9fnk7p8x] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
}

.cc-result-meta i[b-cs9fnk7p8x] { color: var(--text-muted); }

/* Lock dropdown readability regardless of app theme token values. */
.cc-dropdown.text-muted[b-cs9fnk7p8x],
.cc-dropdown .text-muted[b-cs9fnk7p8x] { color: var(--text-muted) !important; }

.cc-dropdown strong[b-cs9fnk7p8x] { color: var(--text-primary); }

.cc-pill[b-cs9fnk7p8x] {
    background: var(--b9-primary, #1E40AF);
    color: #fff;
    font-size: var(--font-size-chip);
    padding: 1px 7px;
    border-radius: 999px;
    font-weight: 600;
    letter-spacing: 0.02em;
}

/* ── Preview: scorecard import note ──────────────────────────────────────── */

.cc-import-note[b-cs9fnk7p8x] { border-radius: 8px; }

/* ── Preview: tee group headers ──────────────────────────────────────────── */

.cc-tee-group-header[b-cs9fnk7p8x] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-text-muted, #475569);
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 16px;
    margin-bottom: 6px;
}

.cc-gender-dot[b-cs9fnk7p8x] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.cc-gender-men[b-cs9fnk7p8x]   { background: var(--b9-primary, #1E40AF); }
.cc-gender-women[b-cs9fnk7p8x] { background: var(--b9-danger,  #DC2626); }

/* ── Preview: tee table ───────────────────────────────────────────────────── */

.cc-tee-table thead th[b-cs9fnk7p8x] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #cbd5e1;
    border-bottom: 1px solid #334155;
    background: #16263f;
    padding: 6px 8px;
}

.cc-tee-table tbody td[b-cs9fnk7p8x] {
    font-size: var(--font-size-sm);
    vertical-align: middle;
    color: #e2e8f0;
    border-color: #23324a;
    background: #0f1b31;
    padding: 6px 8px;
}

.cc-tee-table tbody tr:hover td[b-cs9fnk7p8x] {
    background: #172743;
}

.cc-tee-table strong[b-cs9fnk7p8x] {
    color: #f8fafc;
}

.cc-tee-table .text-muted[b-cs9fnk7p8x] {
    color: #93a4bd !important;
}

.cc-tee-dot[b-cs9fnk7p8x] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    vertical-align: middle;
    flex-shrink: 0;
}

/* ── Form: tee chip badges ────────────────────────────────────────────────── */

.cc-tee-chip[b-cs9fnk7p8x] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1.5px solid var(--chip-color, #6366F1);
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--text-primary);
    background: color-mix(in srgb, var(--chip-color, #6366F1) 18%, transparent);
}

.cc-chip-dot[b-cs9fnk7p8x] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--chip-color, #6366F1);
    flex-shrink: 0;
}

.cc-chip-rating[b-cs9fnk7p8x] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--text-secondary);
    border-left: 1px solid var(--border-default);
    padding-left: 5px;
    margin-left: 2px;
}

.cc-tee-chip .text-muted[b-cs9fnk7p8x] {
    color: var(--text-muted) !important;
    font-weight: 600;
}

/* ── Import banner ────────────────────────────────────────────────────────── */

.cc-import-banner[b-cs9fnk7p8x] {
    border-radius: var(--b9-card-radius, 12px);
    background: var(--brand-soft);
}

/* ── Responsive ───────────────────────────────────────────────────────────── */

@media (max-width: 576px) {
    .search-icon-wrap[b-cs9fnk7p8x] { width: 44px; height: 44px; font-size: 1.1rem; }
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.cc-page-container[b-cs9fnk7p8x] { max-width: 760px; }
.cc-preview-panel[b-cs9fnk7p8x] { background: var(--bg-elevated); }
.cc-chip-gender[b-cs9fnk7p8x] { font-size: var(--font-size-chip); }
/* /Components/Pages/Courses/Detail.razor.rz.scp.css */
/* ── Course details card ──────────────────────────────────────────────── */
.course-detail-tee-card[b-9tbddoi1oy] {
  background: var(--b9-card-bg, rgba(11,26,51,.9));
  border: 1px solid var(--b9-card-border, rgba(59,130,246,.18)) !important;
}

/* ── Tee table — dark-first, all tokens ───────────────────────────────── */
.course-detail-tee-table[b-9tbddoi1oy] {
  --bs-table-bg: transparent;
  --bs-table-color: var(--b9-text, #e2e8f0);
  --bs-table-hover-color: var(--b9-text-bright, #fff);
  --bs-table-hover-bg: rgba(59,130,246,.14);
  --bs-table-border-color: var(--b9-border, rgba(255,255,255,.1));
  color: var(--b9-text, #e2e8f0) !important;
}

.course-detail-tee-head th[b-9tbddoi1oy] {
  background: var(--b9-table-head-bg, rgba(255,255,255,.07)) !important;
  color: var(--b9-text, #e2e8f0) !important;
  border-bottom: 1px solid var(--b9-border, rgba(255,255,255,.1)) !important;
}

.course-detail-tee-table tbody td[b-9tbddoi1oy] {
  color: var(--b9-text, #e2e8f0) !important;
  border-color: var(--b9-border, rgba(255,255,255,.1)) !important;
}

.course-detail-tee-table tbody .btn[b-9tbddoi1oy] {
  position: relative;
  z-index: 1;
}

.course-detail-tee-gender[b-9tbddoi1oy] {
  color: var(--b9-text-muted, #94a3b8) !important;
}

/* ── Course logo upload button ────────────────────────────────────────── */
.cd-upload-label[b-9tbddoi1oy] {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  padding: 0.375rem 0.75rem;
  font-size: 0.875rem;
  font-weight: 500;
  cursor: pointer;
  border: 1px solid var(--b9-border, rgba(255,255,255,.15));
  border-radius: 6px;
  background: var(--b9-surface-muted, rgba(255,255,255,.05));
  color: var(--b9-text, #e2e8f0);
  transition: background 0.15s, border-color 0.15s;
}

.cd-upload-label:hover[b-9tbddoi1oy] {
  background: var(--b9-card-bg-hover, rgba(255,255,255,.08));
  border-color: var(--b9-brand, #22c55e);
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.cd-logo-preview[b-9tbddoi1oy] {
    max-height: 56px;
    max-width: 160px;
    border-radius: 6px;
    border: 1px solid var(--b9-border);
}
.cd-drawer[b-9tbddoi1oy] { width: 420px; }

/* ── More (O08) ───────────────────────────────────────────────────────────
   Delete moved off the Course Library card and onto this page, behind one press.
   Same shape and same measurements as the event header's More menu
   (Events/EventHeaderActions.razor.css) so the two read as one product; every
   value below is a token that is actually defined in tokens.css / brand-tokens.css.
   All of these elements live in Detail.razor's own markup, so plain scoped
   selectors reach them — no ::deep, which is where this repo has lost rules before. */
.cdm-more[b-9tbddoi1oy] { position: relative; }

/* Transparent overlay that closes the menu on an outside tap. Just under the menu. */
.cdm-backdrop[b-9tbddoi1oy] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}

.cdm-more-menu[b-9tbddoi1oy] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.35rem);
    z-index: 1000;
    min-width: 14rem;
    max-width: min(92vw, 20rem);
    margin: 0;
    padding: 0.35rem;
    list-style: none;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-lg);
    box-shadow: var(--b9-card-shadow-md);
}

.cdm-more-item[b-9tbddoi1oy] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    width: 100%;
    min-height: 48px;
    padding: 0.5rem 0.85rem;
    border: 0;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--b9-danger-text);
    font-size: 1rem;
    text-align: left;
    white-space: nowrap;
}

.cdm-more-item:hover[b-9tbddoi1oy],
.cdm-more-item:focus-visible[b-9tbddoi1oy] {
    background: var(--bg-raised);
}

/* Red is for destructive, and only here — behind a step, never a top-level button. */
.cdm-more-item-danger[b-9tbddoi1oy] { color: var(--b9-danger-text); }

/* ── The header row, which had to learn to wrap (O08) ─────────────────────
   At 390px the two existing buttons already squeezed "Lake City Golf" into four
   lines; adding More pushed the menu clean off the right edge of the screen.
   Screenshot-driven, not reasoned: this was found by looking at the phone shot.  */
.cd-headrow[b-9tbddoi1oy] {
    flex-wrap: wrap;
    gap: 0.75rem;
}

.cd-headline[b-9tbddoi1oy] {
    flex: 1 1 16rem;
    min-width: 0;
}

.cd-headactions[b-9tbddoi1oy] {
    flex: 0 0 auto;
    flex-wrap: wrap;
}

@media (max-width: 767.98px) {
    /* Actions take their own row, so the course's name keeps the one above it. */
    .cd-headactions[b-9tbddoi1oy] { width: 100%; }
    .cd-headactions > a[b-9tbddoi1oy] { flex: 1 1 9rem; }

    /* More spans the row, and so does its menu — anchored to BOTH edges, which is the only
       placement that cannot leave the screen wherever the button lands after a wrap. */
    .cdm-more[b-9tbddoi1oy] { width: 100%; }
    .cdm-more > .btn[b-9tbddoi1oy] { width: 100%; }
    .cdm-more-menu[b-9tbddoi1oy] {
        left: 0;
        right: 0;
        min-width: 0;
        max-width: none;
    }
}
/* /Components/Pages/Courses/Gps.razor.rz.scp.css */
/* Extracted inline styles (Blazor audit Batch G). */
.gps-search[b-pblvzw5wsb] { max-width: 520px; }
/* /Components/Pages/Courses/Scorecard.razor.rz.scp.css */
/* Moved from a page-embedded <style> block (audit Batch D). The old block hardcoded an
   entire parallel light/dark palette (#E6EEF9 text, #EFF4FA bands, …) with !important —
   in the light theme the hole rows rendered near-white-on-white (unreadable), and the
   focused cell went light-cream under dark text rules. Brand tokens flip with
   [data-theme] so both themes are readable. The !importants stay: they out-rank
   Bootstrap's .table cell colors, which is why the block had them. */

.scorecard-table td[b-gcj8cyryx5], .scorecard-table th[b-gcj8cyryx5] { vertical-align: middle; }
.scorecard-table input[type=number][b-gcj8cyryx5]::-webkit-inner-spin-button,
.scorecard-table input[type=number][b-gcj8cyryx5]::-webkit-outer-spin-button { -webkit-appearance: none; }
.scorecard-table input:focus[b-gcj8cyryx5] { background: var(--b9-warning-soft) !important; border: 1px solid var(--b9-warning) !important; box-shadow: none; border-radius: 4px; }
.scorecard-table input[b-gcj8cyryx5] { width: 60px; }
.scorecard-table td input[type=text][b-gcj8cyryx5] { width: 100%; min-width: 100px; }

.scorecard-table tbody tr:not(.scorecard-break-row):not(.scorecard-subtotal-row) > td[b-gcj8cyryx5] {
    color: var(--b9-text) !important;
    border-color: var(--b9-border) !important;
}

.scorecard-table tbody tr:not(.scorecard-break-row):not(.scorecard-subtotal-row) input[b-gcj8cyryx5] {
    color: var(--b9-text) !important;
}

.scorecard-table tbody tr:not(.scorecard-break-row):not(.scorecard-subtotal-row) input[b-gcj8cyryx5]::placeholder {
    color: var(--b9-input-placeholder) !important;
    opacity: 1;
}

.scorecard-table tbody tr:not(.scorecard-break-row):not(.scorecard-subtotal-row) td.text-muted[b-gcj8cyryx5] {
    color: var(--b9-text-muted) !important;
}

.scorecard-table .scorecard-break-row > td[b-gcj8cyryx5] {
    background: var(--b9-surface-muted) !important;
    color: var(--b9-text) !important;
    border-color: var(--b9-border-strong) !important;
}

.scorecard-table .scorecard-subtotal-row > td[b-gcj8cyryx5] {
    background: var(--bg-raised) !important;
    color: var(--b9-text) !important;
    border-color: var(--b9-border-strong) !important;
}

.scorecard-table .scorecard-break-row input[b-gcj8cyryx5],
.scorecard-table .scorecard-subtotal-row input[b-gcj8cyryx5] {
    color: var(--b9-text) !important;
}

.scorecard-table .scorecard-break-row input[b-gcj8cyryx5]::placeholder,
.scorecard-table .scorecard-subtotal-row input[b-gcj8cyryx5]::placeholder {
    color: var(--b9-text-soft) !important;
    opacity: 1;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.csc-th-narrow[b-gcj8cyryx5] { min-width: 55px; }
.csc-th-name[b-gcj8cyryx5] { min-width: 120px; }
.csc-th-tee[b-gcj8cyryx5] { min-width: 100px; }
/* Must out-specify `.scorecard-table input` above (the old inline styles won) */
.scorecard-table input.csc-input-num[b-gcj8cyryx5] { width: 55px; }
.scorecard-table input.csc-input-yd[b-gcj8cyryx5] { width: 80px; }
/* /Components/Pages/Dev/DevThrow.razor.rz.scp.css */
.dt-page[b-szjj1dnkux] {
    padding: 2rem 1.5rem 3rem;
    max-width: 640px;
    margin: 0 auto;
    color: var(--b9-text);
}

.dt-title[b-szjj1dnkux] {
    margin: 0 0 0.75rem;
    font-size: 1.5rem;
    font-weight: 700;
}

.dt-body[b-szjj1dnkux] {
    margin: 0 0 1.25rem;
    color: var(--b9-text-muted);
    line-height: 1.6;
}

.dt-button[b-szjj1dnkux] {
    min-height: 48px;
    min-width: 48px;
    padding: 0 1.25rem;
    border: 1px solid var(--b9-danger);
    border-radius: 10px;
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
}

.dt-button:hover[b-szjj1dnkux] { background: var(--b9-danger); color: var(--b9-surface); }

.dt-note[b-szjj1dnkux] {
    margin: 1rem 0 0;
    color: var(--b9-text-soft);
    font-size: 0.9rem;
}
/* /Components/Pages/Events/CommandCenter.razor.rz.scp.css */
.cc-command-bar[b-0m3i1xepsh] {
    top: 0;
    z-index: 100;
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-subtle);
    min-height: auto;
}

.container-fluid[b-0m3i1xepsh],
.container-fluid > .cc-command-bar[b-0m3i1xepsh],
.container-fluid > .px-4[b-0m3i1xepsh] {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.cc-command-bar > div[b-0m3i1xepsh] {
    min-width: 0;
}

.cc-command-bar .fw-bold.fs-5[b-0m3i1xepsh] {
    display: inline-block;
    max-width: 100%;
    line-height: 1.25;
    overflow-wrap: anywhere;
    word-break: break-word;
}

[b-0m3i1xepsh] .row > [class*="col-"] {
    min-width: 0;
}

@media (max-width: 767.98px) {
    .cc-command-bar[b-0m3i1xepsh] {
        flex-direction: column;
        align-items: flex-start !important;
    }

    .container-fluid > .cc-command-bar[b-0m3i1xepsh],
    .container-fluid > .px-4[b-0m3i1xepsh] {
        padding-left: 0.85rem !important;
        padding-right: 0.85rem !important;
    }

    .cc-command-bar > div[b-0m3i1xepsh] {
        width: 100%;
    }

    .cc-command-bar > div:first-child[b-0m3i1xepsh] {
        margin-bottom: 0.5rem;
    }

    .cc-command-bar > .cc-command-actions[b-0m3i1xepsh] {
        display: flex;
        flex-wrap: wrap;
        gap: 0.5rem;
    }

    .cc-command-bar .btn[b-0m3i1xepsh] {
        font-size: 0.875rem;
        white-space: normal;
    }
}

/* X14 — "This event was set for <date> and has not started — start it, move the date, or close it."
   One plain sentence on its own row under the title and the actions, in the warning tint, at
   body size. It is a status line, not a control. */
.cc-command-bar > .cc-date-nudge[b-0m3i1xepsh] {
    flex-basis: 100%;
    padding: 0.55rem 0.85rem;
    border-radius: var(--radius-md);
    background: var(--warning-soft);
    color: var(--b9-warning-text);
    font-size: 1rem;
    line-height: 1.4;
}

.cc-transition-success[b-0m3i1xepsh] {
    background: linear-gradient(135deg, rgba(22, 163, 74, 0.08), rgba(16, 185, 129, 0.05));
    border: 1px solid rgba(22, 163, 74, 0.25) !important;
}

.cc-required-badge[b-0m3i1xepsh] {
    font-size: var(--font-size-chip);
}

.cc-table-head th[b-0m3i1xepsh] {
    background: var(--bg-elevated) !important;
    color: var(--text-secondary);
    border-bottom-color: var(--border-subtle);
}

/* Keep event cards and field tables readable on dark surfaces */
[b-0m3i1xepsh] .card {
    background: var(--bg-surface);
    color: var(--bs-body-color);
    border-color: var(--border-subtle);
}

[b-0m3i1xepsh] .card-header,
[b-0m3i1xepsh] .card-footer {
    background: var(--bg-elevated) !important;
    color: var(--bs-body-color);
    border-color: var(--border-subtle);
}

[b-0m3i1xepsh] .card-body,
[b-0m3i1xepsh] .card-body .small,
[b-0m3i1xepsh] .card-body .form-label,
[b-0m3i1xepsh] .card-body .form-check-label,
[b-0m3i1xepsh] .card-body .fw-semibold:not(.btn),
[b-0m3i1xepsh] .card-body dt,
[b-0m3i1xepsh] .card-body dd {
    color: var(--bs-body-color);
}

[b-0m3i1xepsh] .card-body .text-muted {
    color: var(--text-secondary) !important;
}

[b-0m3i1xepsh] .table {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--border-subtle);
}

[b-0m3i1xepsh] .table > :not(caption) > * > * {
    color: var(--bs-body-color);
    border-bottom-color: var(--border-subtle);
}

[b-0m3i1xepsh] .table thead th {
    color: var(--bs-body-color);
    background: var(--bg-elevated);
    border-bottom-color: var(--border-subtle);
}

/* Event field table readability lock: player names/emails/actions must remain legible */
[b-0m3i1xepsh] .cc-field-table {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--border-subtle);
}

[b-0m3i1xepsh] .cc-field-table > :not(caption) > * > * {
    color: var(--bs-body-color) !important;
    border-bottom-color: var(--border-subtle);
}

[b-0m3i1xepsh] .cc-field-table .cc-field-player-name,
[b-0m3i1xepsh] .cc-field-table .cc-field-player-name a {
    color: var(--bs-body-color) !important;
}

[b-0m3i1xepsh] .cc-field-table .cc-field-player-email,
[b-0m3i1xepsh] .cc-field-table .cc-field-player-notes,
[b-0m3i1xepsh] .cc-field-table .text-muted {
    color: var(--text-secondary) !important;
}

/* Only icon glyphs inherit — buttons keep their own semantic colors */
[b-0m3i1xepsh] .cc-field-table .b9-badge {
    color: inherit;
}

/* Disabled/closed surfaces should remain readable (not washed out white) */
[b-0m3i1xepsh] .card .disabled,
[b-0m3i1xepsh] .card [aria-disabled="true"],
[b-0m3i1xepsh] .card .btn:disabled,
[b-0m3i1xepsh] .card .form-control:disabled,
[b-0m3i1xepsh] .card .form-select:disabled {
    color: var(--text-secondary) !important;
    opacity: 0.9;
}

.cc-inline-editor-row td[b-0m3i1xepsh] {
    background: var(--bg-elevated) !important;
    border-top-color: var(--border-subtle);
    border-bottom-color: var(--border-subtle);
}

.cc-inline-editor-panel[b-0m3i1xepsh] {
    background: var(--bg-elevated) !important;
    border-top-color: var(--border-subtle) !important;
}

[b-0m3i1xepsh] .skins-setup-panel {
    background: var(--bg-elevated) !important;
    border-color: var(--border-subtle) !important;
    color: var(--bs-body-color);
}

[b-0m3i1xepsh] .skins-setup-panel .text-muted {
    color: var(--text-secondary) !important;
}

[b-0m3i1xepsh] .wolf-setup-panel {
    background: var(--bg-elevated) !important;
    border-color: var(--border-subtle) !important;
    color: var(--bs-body-color);
    border-radius: 12px;
    box-shadow: 0 4px 12px rgba(2, 6, 23, 0.12);
}

[b-0m3i1xepsh] .wolf-setup-panel .text-muted {
    color: var(--bs-secondary-color) !important;
    line-height: 1.45;
}

[b-0m3i1xepsh] .wolf-hole-decisions-panel {
    background: var(--bg-elevated) !important;
    border-color: var(--border-subtle) !important;
    color: var(--bs-body-color);
    border-radius: 12px;
    box-shadow: 0 4px 12px rgba(2, 6, 23, 0.12);
}

[b-0m3i1xepsh] .wolf-hole-decisions-panel .text-muted {
    color: var(--bs-secondary-color) !important;
    line-height: 1.45;
}

[b-0m3i1xepsh] .wolf-hole-decisions-panel .table-responsive {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

[b-0m3i1xepsh] .wolf-hole-decisions-panel table {
    min-width: 760px;
}

[b-0m3i1xepsh] .wolf-hole-decisions-panel th,
[b-0m3i1xepsh] .wolf-hole-decisions-panel td {
    vertical-align: middle;
    white-space: normal;
}

[b-0m3i1xepsh] .wolf-hole-decisions-panel .form-select.form-select-sm {
    min-height: 36px;
}

[b-0m3i1xepsh] [data-testid="event-skins-individual-summary-card"] .skins-summary-table thead th {
    color: var(--bs-body-color) !important;
    background: var(--bg-elevated) !important;
    border-bottom-color: var(--border-subtle) !important;
}

[b-0m3i1xepsh] [data-testid="event-skins-individual-summary-card"] .skins-summary-table,
[b-0m3i1xepsh] [data-testid="event-skins-two-player-team-card"] .skins-summary-table,
[b-0m3i1xepsh] [data-testid="event-skins-four-player-team-card"] .skins-summary-table {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--border-subtle);
    color: var(--bs-body-color) !important;
}

[b-0m3i1xepsh] [data-testid="event-skins-two-player-team-card"] .skins-summary-table thead th {
    color: var(--bs-body-color) !important;
    background: var(--bg-elevated) !important;
    border-bottom-color: var(--border-subtle) !important;
}

[b-0m3i1xepsh] [data-testid="event-skins-four-player-team-card"] .skins-summary-table thead th {
    color: var(--bs-body-color) !important;
    background: var(--bg-elevated) !important;
    border-bottom-color: var(--border-subtle) !important;
}

[b-0m3i1xepsh] [data-testid="event-skins-individual-summary-card"] .skins-summary-table tbody td {
    color: var(--bs-body-color) !important;
    border-color: var(--border-subtle);
}

[b-0m3i1xepsh] [data-testid="event-skins-two-player-team-card"] .skins-summary-table tbody td {
    color: var(--bs-body-color) !important;
    border-color: var(--border-subtle);
}

[b-0m3i1xepsh] [data-testid="event-skins-four-player-team-card"] .skins-summary-table tbody td {
    color: var(--bs-body-color) !important;
    border-color: var(--border-subtle);
}

[b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table {
    --bs-table-color: var(--bs-body-color);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--border-default);
    color: var(--bs-body-color) !important;
    border-collapse: separate;
    border-spacing: 0;
}

[b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table thead th {
    color: var(--bs-body-color) !important;
    background: var(--bg-elevated) !important;
    border: 1px solid var(--border-default) !important;
    border-bottom: 2px solid var(--border-default) !important;
    font-weight: 700;
    padding: 0.75rem !important;
    text-align: left;
    white-space: nowrap;
}

[b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table tbody tr {
    border-bottom: 1px solid var(--border-default);
}

[b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table tbody tr:nth-child(odd) {
    background-color: rgba(0, 0, 0, 0.02);
}

@media (prefers-color-scheme: dark) {
    [b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table tbody tr:nth-child(odd) {
        background-color: rgba(255, 255, 255, 0.04);
    }
}

[b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table tbody td {
    color: var(--bs-body-color) !important;
    border: 1px solid var(--border-default);
    border-right: none;
    padding: 0.75rem !important;
    line-height: 1.4;
    white-space: normal;
    word-break: break-word;
}

[b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table tbody td:last-child {
    border-right: 1px solid var(--border-default);
}

[b-0m3i1xepsh] .skins-summary-table th,
[b-0m3i1xepsh] .skins-summary-table td {
    white-space: normal;
    word-break: break-word;
}

[b-0m3i1xepsh] .skins-summary-table th:first-child,
[b-0m3i1xepsh] .skins-summary-table td:first-child {
    min-width: 8.25rem;
}

/* Phase 5A: readability and hierarchy stabilization (Event surfaces) */
[b-0m3i1xepsh] .card-header .fw-semibold,
[b-0m3i1xepsh] .card-header span.fw-semibold {
    color: var(--bs-body-color);
    letter-spacing: 0.01em;
}

[b-0m3i1xepsh] .card-body .form-label,
[b-0m3i1xepsh] .card-body .small.fw-semibold,
[b-0m3i1xepsh] .card-body dt {
    color: var(--text-secondary) !important;
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: 0.01em;
    line-height: 1.35;
    margin-bottom: 0.3rem;
}

/* 🔴 :not(.btn) is load-bearing. `.fw-semibold` is a Bootstrap weight utility, so it lands on
   plain labels AND on buttons — the flyer control is `btn … btn-sm fw-semibold`. With an
   unqualified `!important` this rule repainted the ink of every button inside a card body to
   body colour, which is how "Open & Print Flyer" once read at 2.1:1 (it was a green fill then;
   it is a quiet outline now, and the rule still has to keep its hands off the ink either way).
   A button carries its own ink by design; this rule is about running text.
   Caught by the Playwright legibility sweep, not by eye — on green it looked deliberate. */
[b-0m3i1xepsh] .card-body dd,
[b-0m3i1xepsh] .card-body .fw-semibold:not(.btn),
[b-0m3i1xepsh] .card-body .form-check-label,
[b-0m3i1xepsh] .cc-field-table .cc-field-player-name {
    color: var(--bs-body-color) !important;
    line-height: 1.45;
}

[b-0m3i1xepsh] .card-body .text-muted,
[b-0m3i1xepsh] .card-body .small.text-muted,
[b-0m3i1xepsh] .cc-field-table .cc-field-player-email,
[b-0m3i1xepsh] .cc-field-table .cc-field-player-notes {
    color: var(--text-secondary) !important;
    line-height: 1.4;
}

[b-0m3i1xepsh] .card-body dt {
    white-space: nowrap;
}

[b-0m3i1xepsh] .card-body dd {
    overflow-wrap: anywhere;
    word-break: break-word;
}

[b-0m3i1xepsh] .cc-field-table thead th {
    color: var(--text-secondary) !important;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

[b-0m3i1xepsh] .cc-field-table tbody td {
    vertical-align: top;
    padding-top: 0.6rem;
    padding-bottom: 0.6rem;
}

/* Row hover — helps admin scan 40-player lists */
[b-0m3i1xepsh] .cc-field-table tbody tr:hover td {
    background: rgba(255, 255, 255, 0.04);
}

/* Check-in button: pending state — visible border, muted icon, clearly clickable.
   🔴 The values were raised on 2026-09-02, the day this rule first rendered. Written as
   :deep(...) it had never applied, so nobody had seen that 0.38 white measures 3.56:1 on
   this surface — under AA for text, and a long way from "clearly clickable" for the control
   an organizer presses at the registration desk. The INTENT (muted, secondary, obviously
   not-yet-done) is unchanged; only the numbers now meet it. */
[b-0m3i1xepsh] .cc-field-table .cc-btn-checkin-pending {
    border-color: rgba(255, 255, 255, 0.42) !important;
    color: rgba(255, 255, 255, 0.78) !important;
}

/* Notes/pencil button: raise visibility above btn-link default (nearly invisible in dark) */
[b-0m3i1xepsh] .cc-field-table .cc-btn-notes {
    color: var(--text-secondary) !important;
    opacity: 1 !important;
}
[b-0m3i1xepsh] .cc-field-table .cc-btn-notes:hover {
    color: var(--text-primary) !important;
}

@media (max-width: 767.98px) {
    [b-0m3i1xepsh] .wolf-setup-panel,
    [b-0m3i1xepsh] .wolf-hole-decisions-panel {
        padding: 0.75rem !important;
    }

    [b-0m3i1xepsh] .wolf-setup-panel .form-label,
    [b-0m3i1xepsh] .wolf-hole-decisions-panel .form-label {
        font-size: var(--font-size-sm);
        line-height: 1.35;
    }

    [b-0m3i1xepsh] .skins-team-assignment-row {
        padding-bottom: 0.5rem;
        margin-bottom: 0.75rem;
        border-bottom: 1px solid var(--border-subtle);
    }

    [b-0m3i1xepsh] .skins-team-actions .btn {
        flex: 1 1 auto;
        min-width: 8.5rem;
    }

    /* Wolf tables mobile responsiveness */
    [b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .table-responsive {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    [b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table {
        font-size: 0.875rem;
        min-width: 560px;
    }

    [b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table thead th {
        padding: 0.5rem !important;
        white-space: nowrap;
    }

    [b-0m3i1xepsh] [data-testid="event-wolf-standings-card"] .wolf-summary-table tbody td {
        padding: 0.5rem !important;
    }

    [b-0m3i1xepsh] .card-body .form-label,
    [b-0m3i1xepsh] .card-body dt {
        white-space: normal;
    }

    [b-0m3i1xepsh] .card-body dd {
        margin-bottom: 0.55rem;
    }
}

/* ── Left column: "Before you start" always first ───────── */
.cc-left-column[b-0m3i1xepsh] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

/* Remove individual mb-3 from direct card children since gap handles spacing */
.cc-left-column > .card[b-0m3i1xepsh],
.cc-left-column > div > .card[b-0m3i1xepsh] {
    margin-bottom: 0 !important;
}

/* Card order: readiness (0) → Rounds (1) → Details (2) → Registration (3) → specialty cards (10+)
   Without explicit values, all flex children default to order:0 which places them
   BEFORE order:1, so we must pin specialty cards to order:10.

   "Before you start" leads the column: it is the one card that answers "what still needs
   attention", and while it carried no cc-card-* class it fell into the order:10 catch-all
   below and sank under Details and Registration — roughly a screen down on a real event
   (UX-013 regressed exactly this way). The :not() below is load-bearing: that selector is
   more specific than .cc-card-readiness, so leaving it out puts the card straight back at
   the bottom. Pinned by EventSetupSpineAndReadinessAgreementTests. */
.cc-card-readiness[b-0m3i1xepsh]    { order: 0; }
/* Legacy: the Rounds card moved out to the full-width .cc-rr row, so nothing carries this
   class today. Kept as the reserved slot — do not read it as a description of the page. */
.cc-card-rounds[b-0m3i1xepsh]       { order: 1; }
.cc-card-details[b-0m3i1xepsh]      { order: 2; }
.cc-card-registration[b-0m3i1xepsh] { order: 3; }
/* All other direct .card children (Share, Wolf, Skins, Reports, etc.) come after */
.cc-left-column > .card:not(.cc-card-readiness):not(.cc-card-rounds):not(.cc-card-details):not(.cc-card-registration)[b-0m3i1xepsh] { order: 10; }

/* Clickable card header */
.cc-left-column .card-header[style*="cursor:pointer"]:hover[b-0m3i1xepsh] {
    background: var(--bg-raised, var(--bg-elevated)) !important;
}

/* ── Rounds list — side-by-side for multi-round events ─── */
.cc-rounds-list[b-0m3i1xepsh] {
    display: grid;
    grid-template-columns: 1fr;
}

/* 2+ rounds: side by side on screens ≥ 480px */
@media (min-width: 480px) {
    .cc-rounds-list--multi[b-0m3i1xepsh] {
        grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    }
}

/* ── Round Cards — Tile Grid Design ─────────────────────── */
.cc-round-card[b-0m3i1xepsh] {
    border-bottom: 1px solid var(--border-subtle);
    padding: 1rem 1rem 0.875rem;
}

/* In multi-round grid: right-border divides columns, no bottom-border */
@media (min-width: 480px) {
    .cc-rounds-list--multi .cc-round-card[b-0m3i1xepsh] {
        border-bottom: none;
        border-right: 1px solid var(--border-subtle);
    }

    .cc-rounds-list--multi .cc-round-card:last-child[b-0m3i1xepsh] {
        border-right: none;
    }
}

.cc-round-card:last-child[b-0m3i1xepsh] {
    border-bottom: none;
}

/* Round identity: name + date */
.cc-round-identity[b-0m3i1xepsh] {
    margin-bottom: 0.75rem;
}

.cc-round-title[b-0m3i1xepsh] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.2;
}

.cc-round-meta[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    margin-top: 0.125rem;
}

/* ── Scoring status toggle (full-width, clickable) ─── */
.cc-scoring-toggle[b-0m3i1xepsh] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
    padding: 0.625rem 0.875rem;
    border-radius: 0.625rem;
    border: 1.5px solid;
    background: transparent;
    cursor: pointer;
    text-align: left;
    transition: opacity 0.15s;
    margin-bottom: 0.75rem;
}

.cc-scoring-toggle--open[b-0m3i1xepsh] {
    border-color: var(--success, #22c55e);
    color: var(--success, #22c55e);
}

.cc-scoring-toggle--closed[b-0m3i1xepsh] {
    border-color: var(--border-subtle);
    color: var(--text-secondary);
}

.cc-scoring-toggle:hover[b-0m3i1xepsh] {
    opacity: 0.75;
}

.cc-scoring-toggle-icon[b-0m3i1xepsh] {
    font-size: 1.25rem;
    flex-shrink: 0;
}

.cc-scoring-toggle-body[b-0m3i1xepsh] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    line-height: 1.2;
}

.cc-scoring-toggle-label[b-0m3i1xepsh] {
    font-size: 0.875rem;
    font-weight: 600;
}

.cc-scoring-toggle-hint[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    opacity: 0.65;
}

/* Read-only scoring badge */
.cc-scoring-badge[b-0m3i1xepsh] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.375rem 0.75rem;
    border-radius: 2rem;
    font-size: 0.8125rem;
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.cc-scoring-badge--open[b-0m3i1xepsh] {
    background: var(--success-soft, rgba(34, 197, 94, 0.12));
    color: var(--success, #22c55e);
}

.cc-scoring-badge--closed[b-0m3i1xepsh] {
    background: var(--bg-elevated);
    color: var(--text-secondary);
}

/* ── Primary tile grid (2-col, large tap targets) ─── */
.cc-round-tiles[b-0m3i1xepsh] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

/* Single tile: full-width when only one child */
.cc-round-tiles > :only-child[b-0m3i1xepsh] {
    grid-column: 1 / -1;
}

.cc-tile[b-0m3i1xepsh] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 1rem 0.5rem;
    border-radius: 0.625rem;
    border: 1.5px solid var(--border-subtle);
    background: var(--bg-elevated);
    color: var(--text-primary);
    text-decoration: none;
    min-height: 88px;
    gap: 0.25rem;
    cursor: pointer;
    transition: transform 0.1s, background 0.15s;
}

.cc-tile:hover[b-0m3i1xepsh] {
    transform: translateY(-2px);
    text-decoration: none;
    color: var(--text-primary);
    background: var(--bg-raised, var(--bg-elevated));
}

.cc-tile-icon[b-0m3i1xepsh] {
    font-size: 1.5rem;
    line-height: 1;
    display: block;
}

.cc-tile-label[b-0m3i1xepsh] {
    font-size: 0.875rem;
    font-weight: 700;
    line-height: 1.2;
}

.cc-tile-sub[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    opacity: 0.65;
    line-height: 1.2;
}

/* Pairings tile — blue */
.cc-tile--pairings[b-0m3i1xepsh] {
    background: var(--brand-soft, rgba(59, 130, 246, 0.1));
    border-color: var(--brand, #3b82f6);
    color: var(--b9-primary-text);
}

.cc-tile--pairings:hover[b-0m3i1xepsh] {
    background: var(--brand-soft, rgba(59, 130, 246, 0.2));
    color: var(--b9-primary-text);
}

.cc-tile--pairings .cc-tile-sub[b-0m3i1xepsh] {
    color: var(--b9-primary-text);
    opacity: 0.7;
}

/* Enter Scores tile — green */
.cc-tile--scores[b-0m3i1xepsh] {
    background: var(--success-soft, rgba(34, 197, 94, 0.1));
    border-color: var(--success, #22c55e);
    color: var(--success, #22c55e);
}

.cc-tile--scores:hover[b-0m3i1xepsh] {
    background: var(--success-soft, rgba(34, 197, 94, 0.2));
    color: var(--success, #22c55e);
}

.cc-tile--scores .cc-tile-sub[b-0m3i1xepsh] {
    color: var(--success, #22c55e);
    opacity: 0.7;
}

/* Results tile (closed events) — amber */
.cc-tile--results[b-0m3i1xepsh] {
    background: var(--warning-soft, rgba(245, 158, 11, 0.1));
    border-color: var(--warning, #f59e0b);
    color: var(--warning, #f59e0b);
}

.cc-tile--results:hover[b-0m3i1xepsh] {
    background: var(--warning-soft, rgba(245, 158, 11, 0.2));
    color: var(--warning, #f59e0b);
}

.cc-tile--results .cc-tile-sub[b-0m3i1xepsh] {
    opacity: 0.7;
}

/* ── Secondary: Scorecards (full-width) ─── */
.cc-round-secondary-btn[b-0m3i1xepsh] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    width: 100%;
    padding: 0.625rem 0.875rem;
    border-radius: 0.5rem;
    border: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
    color: var(--text-primary);
    text-decoration: none;
    font-size: 0.875rem;
    font-weight: 500;
    margin-bottom: 0.5rem;
    transition: background 0.15s;
}

.cc-round-secondary-btn:hover[b-0m3i1xepsh] {
    background: var(--bg-raised, var(--bg-elevated));
    text-decoration: none;
    color: var(--text-primary);
}

.cc-round-secondary-btn > i[b-0m3i1xepsh] {
    font-size: 1rem;
    flex-shrink: 0;
}

.cc-round-secondary-btn > span:first-of-type[b-0m3i1xepsh] {
    flex: 1;
}

.cc-round-secondary-hint[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    white-space: nowrap;
}

/* ── Tertiary: small text links ─── */
.cc-round-tertiary[b-0m3i1xepsh] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding: 0.25rem 0 0.125rem;
}

.cc-tertiary-link[b-0m3i1xepsh] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    text-decoration: none;
    transition: color 0.15s;
}

.cc-tertiary-link:hover[b-0m3i1xepsh] {
    color: var(--text-primary);
    text-decoration: none;
}

/* ── Full-width Rounds Row (.cc-rr) ─────────────────────────────── */
.cc-rr[b-0m3i1xepsh] {
    display: grid;
    grid-template-columns: 160px 1fr auto;
    /* 4 rows: identity/toggle/buttons · scheduled-open status · links · editor */
    grid-template-rows: auto auto auto auto;
    align-items: center;
    column-gap: 1.25rem;
    padding: 0.875rem 1.25rem;
}

.cc-rr--sep[b-0m3i1xepsh] {
    border-bottom: 1px solid var(--border-subtle);
}

.cc-rr-identity[b-0m3i1xepsh] {
    grid-column: 1;
    grid-row: 1;
}

.cc-rr-num[b-0m3i1xepsh] {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--text-primary);
}

.cc-rr-date[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-top: 2px;
}

/* Scoring toggle button + read-only badge */
.cc-rr-toggle[b-0m3i1xepsh],
.cc-rr-badge[b-0m3i1xepsh] {
    grid-column: 2;
    grid-row: 1;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.28rem 0.7rem;
    border-radius: 20px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    justify-self: start;
}

.cc-rr-toggle[b-0m3i1xepsh] {
    border: 1.5px solid;
    background: transparent;
    cursor: pointer;
    transition: opacity 0.15s;
    /* Phase E: opening and closing scoring is THE event-day tap, made on a phone, often
       in sunlight. It was ~29px tall. */
    min-height: 48px;
}

.cc-rr-toggle:hover[b-0m3i1xepsh] {
    opacity: 0.72;
}

.cc-rr-badge[b-0m3i1xepsh] {
    border: none;
}

.cc-rr-open[b-0m3i1xepsh] {
    color: var(--success, #22c55e);
    border-color: var(--success, #22c55e);
    background: var(--success-soft, rgba(34,197,94,0.08));
}

.cc-rr-closed[b-0m3i1xepsh] {
    color: var(--text-secondary);
    border-color: var(--border-default);
    background: var(--bg-raised);
}

.cc-rr-dot[b-0m3i1xepsh] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: currentColor;
    flex-shrink: 0;
}

.cc-rr-hint[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    opacity: 0.6;
    font-weight: 400;
}

/* Primary action buttons */
.cc-rr-btns[b-0m3i1xepsh] {
    grid-column: 3;
    grid-row: 1;
    display: flex;
    gap: 0.5rem;
    flex-wrap: nowrap;
}

/* Secondary text links row */
/* Scheduled scoring-open status — sits directly under the scoring toggle it describes. */
.cc-rr-autoopen[b-0m3i1xepsh] {
    grid-column: 1 / -1;
    grid-row: 2;
    font-size: var(--font-size-sm);
    margin-top: 0.375rem;
    display: flex;
    align-items: center;
}

.cc-rr-links[b-0m3i1xepsh] {
    grid-column: 1 / -1;
    grid-row: 3;
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
    padding-top: 0.4rem;
    margin-top: 0.4rem;
    border-top: 1px solid var(--border-subtle);
}

.cc-rr-link[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
    transition: color 0.12s;
}

.cc-rr-link:hover[b-0m3i1xepsh] {
    color: var(--text-primary);
    text-decoration: underline;
}

/* Event settings page (UX-014/015) — the full-width home for the details form, and the
   secondary nav that finally makes Sponsors / Import / Tee sheet reachable without digging
   through the form itself. */
.cc-settings-page[b-0m3i1xepsh] {
    max-width: 980px;
}

.cc-settings-nav[b-0m3i1xepsh] {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    padding: 0 0 0.9rem;
    margin-bottom: 1rem;
    border-bottom: 1px solid var(--border-subtle);
}

.cc-settings-nav a[b-0m3i1xepsh] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 48px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
    text-decoration: none;
}

.cc-settings-nav a:hover[b-0m3i1xepsh] {
    color: var(--b9-primary-text);
    text-decoration: underline;
}

/* Add / remove a round (UX-008) — a quiet footer under the round list, not a
   headline action: changing the round count is rare and deliberate. */
.cc-rr-manage[b-0m3i1xepsh] {
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
    padding: 0.7rem 1.25rem 0.85rem;
    border-top: 1px solid var(--border-subtle);
}

.cc-rr-manage .cc-rr-link[b-0m3i1xepsh] {
    /* ≥48px touch target on a card people use on a phone at the course. */
    min-height: 48px;
}

.cc-rr-manage-note[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
}

/* Inline round editor (date + tee override) */
.cc-rr-editor[b-0m3i1xepsh] {
    grid-column: 1 / -1;
    grid-row: 4;
    padding: 0.75rem;
    background: var(--brand-soft, rgba(59,130,246,0.06));
    border-radius: 8px;
    margin-top: 0.625rem;
    border: 1px solid var(--border-subtle);
}

/* Mobile: single-column stack */
@media (max-width: 767.98px) {
    .cc-rr[b-0m3i1xepsh] {
        grid-template-columns: 1fr;
        grid-template-rows: auto auto auto auto auto auto;
        gap: 0.5rem;
        padding: 0.875rem 1rem;
    }

    .cc-rr-identity[b-0m3i1xepsh] { grid-column: 1; grid-row: 1; }

    .cc-rr-toggle[b-0m3i1xepsh],
    .cc-rr-badge[b-0m3i1xepsh] { grid-column: 1; grid-row: 2; }

    /* Directly under the toggle on mobile too — it explains that toggle. */
    .cc-rr-autoopen[b-0m3i1xepsh] {
        grid-column: 1;
        grid-row: 3;
        margin-top: 0;
    }

    .cc-rr-btns[b-0m3i1xepsh] {
        grid-column: 1;
        grid-row: 4;
        flex-wrap: wrap;
    }

    .cc-rr-btns .btn[b-0m3i1xepsh] {
        flex: 1;
        min-width: 120px;
    }

    .cc-rr-links[b-0m3i1xepsh] {
        grid-column: 1;
        grid-row: 5;
        gap: 0.875rem;
        border-top: 1px solid var(--border-subtle);
    }

    .cc-rr-editor[b-0m3i1xepsh] {
        grid-column: 1;
        grid-row: 6;
    }
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.cc-clickable[b-0m3i1xepsh] { cursor: pointer; }

.cc-th-hole[b-0m3i1xepsh] { width: 72px; }
.cc-th-wolf[b-0m3i1xepsh] { width: 150px; }
.cc-th-mode[b-0m3i1xepsh] { width: 180px; }

.cc-tee-select[b-0m3i1xepsh] { min-width: 90px; font-size: var(--font-size-sm); }
/* Payment and check-in chips in the field table. These were font-size .7rem / padding 1px 7px,
   which rendered about 20px tall — and their companion class "btn btn-xs" is defined nowhere
   (Bootstrap has no btn-xs), so nothing else was adding height. Check-in is the one action performed
   on a phone at a registration desk on event morning, so it has to meet the project's 48px rule.
   The visual weight is kept small; the TARGET is what grows. */
.cc-chip-btn[b-0m3i1xepsh] {
    font-size: var(--font-size-chip);
    padding: .35rem .7rem;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .25rem;
}

/* On a real touch viewport give them the full 48. Desks are phones.
   The field-table card layout re-states this at (max-width: 767.98px) because its selectors are more
   specific than this one; the two must agree, and a guard test enforces it. */
@media (max-width: 992px) {
    .cc-chip-btn[b-0m3i1xepsh] { min-height: 48px; min-width: 48px; }
}
.cc-icon-sm[b-0m3i1xepsh] { font-size: var(--font-size-chip); }

/* ── Skins pot (optional buy-in) ─────────────────────────────────────────────
   The in/out tick is the control an organizer taps most while standing at the
   first tee, so it gets a real 48px target rather than the default 1rem box. */
[b-0m3i1xepsh] .cc-skins-pot-check {
    width: 1.5rem;
    height: 1.5rem;
    margin: 0;
    cursor: pointer;
}

[b-0m3i1xepsh] [data-testid="cc-skins-pot-table"] tbody td:first-child {
    padding: 0.75rem 0.5rem;
    min-width: 48px;
}

[b-0m3i1xepsh] [data-testid="cc-skins-pot-table"] tbody tr {
    min-height: 48px;
}

.cc-skins-buyin-group[b-0m3i1xepsh] { max-width: 10rem; }

/* ── Readiness fix-it links (UX-013) ─────────────────────────
   Each failing readiness row now carries the way to the fix, not just its name. */
.cc-readiness-fix[b-0m3i1xepsh] {
    display: inline-block;
    margin-top: .15rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    /* --brand-hover is a FILL colour (#2563EB); as the writing on the readiness card it measured
       3.45:1 at 375px, under the 4.5 bar. --b9-primary-text is the palette's ink variant and already
       flips per theme (#93C5FD dark, #1E40AF light), so this needs no theme selector. */
    color: var(--b9-primary-text, var(--brand-hover));
    text-decoration: none;
    border: 0;
    background: none;
}

.cc-readiness-fix:hover[b-0m3i1xepsh] { text-decoration: underline; color: var(--b9-primary-text, var(--brand-hover)); }

/* NOTE — both rules that used to live here are gone, deliberately.
   They existed only for the in-page details editor: one capped the widened column so form rows
   stayed readable, the other pushed the readiness card below the open form. That editor is gone;
   this column is always a sidebar and editing happens on /events/{id}/settings, which renders
   its own branch. Do not reintroduce a widened variant of this column — it is what put the form
   under an 89-player field, and then what sorted the readiness card on top of it. */

/* Cards outstanding — the live count during play. Muted while waiting rather than alarming: a card
   still out at hole 6 is normal, and a red badge on every ordinary round teaches people to ignore it. */
.cc-cards-in[b-0m3i1xepsh] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: 0.15rem 0.55rem;
    border-radius: 999px;
    border: 1px solid var(--border-default);
    white-space: nowrap;
}
.cc-cards-in--waiting[b-0m3i1xepsh] { color: var(--text-muted); }
.cc-cards-in--ok[b-0m3i1xepsh]      { color: var(--success-fg, var(--text-muted)); }

/* A withdrawn player stays in the field list marked WD — the golf convention, and somewhere to put
   the undo. The row has carried this class since that change but no stylesheet ever defined it, so
   a withdrawal read exactly like a competitor. Muted rather than struck through or red: they are a
   real entrant with a real outcome, not an error and not deleted. */
.cc-field-withdrawn[b-0m3i1xepsh] {
    opacity: 0.65;
}
.cc-field-withdrawn .cc-field-player-name[b-0m3i1xepsh] {
    color: var(--text-muted);
    font-weight: 500;
}

/* The cards-in chip as a real button — the outstanding names used to live only in a native title
   tooltip, which does not exist on the phone an organiser actually holds on the first tee. */
.cc-cards-in--button[b-0m3i1xepsh] {
    border: 1px solid var(--border-subtle);
    background: transparent;
    cursor: pointer;
    font: inherit;
    min-height: 44px;
}

.cc-cards-in--button:hover[b-0m3i1xepsh] { border-color: var(--brand-soft); }
.cc-cards-in--button:focus-visible[b-0m3i1xepsh] { outline: 2px solid var(--brand-soft); outline-offset: 2px; }

.cc-outstanding-panel[b-0m3i1xepsh] {
    padding: .75rem 1rem 1rem;
    border-bottom: 1px solid var(--border-subtle);
    background: var(--bg-raised);
}

.cc-outstanding-note[b-0m3i1xepsh] {
    font-size: .9rem;
    color: var(--text-muted);
}

.cc-outstanding-list[b-0m3i1xepsh] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .3rem;
    max-height: 15rem;
    overflow-y: auto;
}

.cc-outstanding-list li[b-0m3i1xepsh] {
    display: flex;
    flex-wrap: wrap;
    gap: .25rem .6rem;
    align-items: baseline;
    justify-content: space-between;
    font-size: .9rem;
    padding: .3rem .1rem;
    border-bottom: 1px solid var(--border-subtle);
}

.cc-outstanding-list li:last-child[b-0m3i1xepsh] { border-bottom: 0; }
.cc-outstanding-name[b-0m3i1xepsh] { color: var(--text-primary); font-weight: 600; }
.cc-outstanding-state[b-0m3i1xepsh] { color: var(--text-muted); font-size: var(--font-size-sm); }

/* "Updated 2:14 PM" beside the live cards figure. A number that refreshes itself is only
   trustworthy if it admits its own age — and if a tick fails, this is what shows it went quiet. */
.cc-live-stamp[b-0m3i1xepsh] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-left: .5rem;
    white-space: nowrap;
}

/* At phone width the Rounds header is already tight (chip + Leaderboard + TV View). Measured at
   375px the stamp pushed the row to 401px, so it drops to its own line rather than widening the
   page — a horizontal scrollbar on the event page is exactly what the UX rules forbid. */
@media (max-width: 767.98px) {
    .cc-live-stamp[b-0m3i1xepsh] {
        margin-left: 0;
        flex-basis: 100%;
        order: 99;
    }

    .cc-cards-in--button[b-0m3i1xepsh] { min-height: 48px; }
}

/* The Rounds header carries the cards chip, the live stamp, View Leaderboard and TV View. Bootstrap's
   d-flex does not wrap, so at 375px the row measured 459px wide and scrolled the whole event page
   sideways — which the UX rules forbid outright. Wrap it instead of shrinking the controls. */
@media (max-width: 767.98px) {
    .cc-rounds-header[b-0m3i1xepsh] {
        flex-wrap: wrap;
        gap: .5rem;
    }

    .cc-rounds-header > *[b-0m3i1xepsh] { flex: 0 1 auto; }
}

/* ─────────────────────────────────────────────────────────────────────────────
   A3 — the field, on the phone the organizer actually carries.

   The table measured 712px inside a 291px .table-responsive at 390px. It could
   scroll, but nothing said so: no visible scrollbar, no fade, no hint. So "Mark
   checked in" sat at x=666 and "Withdraw" at x=761 — off-screen right, on the one
   screen used at the registration desk on event morning. They did not look
   disabled or missing; they simply were not there.

   🔴 Written first with ::deep ... — which is NOT Blazor syntax (it is ::deep) and compiles to
   a malformed selector the browser drops silently. The rules were in the bundle, the page looked
   untouched, and the measurement said 712px still. The rest of this file has the same mistake in
   113 places; see the report before switching any of them on.

   Reflowed rather than rebuilt: each row becomes a stacked card at phone widths
   and every cell names itself from data-label. ONE row template still serves both
   layouts — a second mobile-only markup block would have duplicated the payment
   cycle, the notes editor, check-in and withdraw, and those two copies would have
   drifted on a live admin surface.
   ───────────────────────────────────────────────────────────────────────────── */
@media (max-width: 767.98px) {
    /* The wrapper no longer has anything to scroll. */
    [b-0m3i1xepsh] .cc-field-table-wrap { overflow-x: visible; }

    [b-0m3i1xepsh] .cc-field-table thead {
        position: absolute;
        width: 1px; height: 1px;
        overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap;   /* kept for screen readers */
    }

    [b-0m3i1xepsh] .cc-field-table,
    [b-0m3i1xepsh] .cc-field-table tbody,
    [b-0m3i1xepsh] .cc-field-table tr { display: block; width: 100%; }

    [b-0m3i1xepsh] .cc-field-table tbody tr {
        border: 1px solid var(--border-subtle);
        border-radius: 10px;
        padding: 0.5rem 0.75rem;
        margin-bottom: 0.6rem;
        background: var(--bg-elevated);
    }

    [b-0m3i1xepsh] .cc-field-table tbody td {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 0.75rem;
        width: 100%;
        border: 0 !important;
        padding: 0.3rem 0;
        text-align: left !important;
    }

    /* The label the hidden header used to carry.
       🔴 Was written `:not([data-label=""]::before)` — a pseudo-element INSIDE :not() is invalid, so
       every browser dropped the whole rule and the cards showed a bare "Unpaid" chip and a bare
       tick with no caption. Found by reading the cards, not the stylesheet (O02). */
    [b-0m3i1xepsh] .cc-field-table tbody td[data-label]:not([data-label=""])::before {
        content: attr(data-label);
        font-size: var(--font-size-sm);
        font-weight: 600;
        letter-spacing: 0.02em;
        color: var(--text-secondary);
        flex: 0 0 auto;
    }

    /* The row number is noise once the rows are cards. */
    [b-0m3i1xepsh] .cc-field-table tbody td.cc-fc-num { display: none; }

    /* The name leads, on its own line, at full size. */
    [b-0m3i1xepsh] .cc-field-table tbody td.cc-fc-player {
        display: block;
        padding-bottom: 0.35rem;
    }
    [b-0m3i1xepsh] .cc-field-table tbody td.cc-fc-player::before { content: none; }

    /* Withdraw / Put back in is a real full-width control, not a 40px cell edge. */
    [b-0m3i1xepsh] .cc-field-table tbody td.cc-fc-action { padding-top: 0.45rem; }
    [b-0m3i1xepsh] .cc-field-table tbody td.cc-fc-action .btn { width: 100%; }

    /* Tap targets, not table chrome — and they must not undercut the floor set above.
       This rule used to say 40px. Both media queries match at 375px, and this one is later AND more
       specific (three classes plus an element against one class), so it silently won: the chips the
       `cc-6` fix had just raised to 48 went back to 40, in the card layout that only exists on a
       phone — the one place they were ever the problem. Measured on a real 30-player event at 375px:
       payment chip 66x40, check-in chip 48x40, per-player tee select 250x40, ninety controls under
       the floor. The token-level touch-target guard could not see it, because it reads tokens and
       this is a component overriding one.
       CommandCenterTouchTargetGuardTests now fails if any rule in this file takes them under 48. */
    [b-0m3i1xepsh] .cc-field-table tbody .cc-chip-btn,
    [b-0m3i1xepsh] .cc-field-table tbody .cc-tee-select { min-height: 48px; }

    /* The inline notes editor spans the card rather than a colspan. */
    [b-0m3i1xepsh] .cc-field-table tbody tr.cc-inline-editor-row { padding: 0.75rem; }
    [b-0m3i1xepsh] .cc-field-table tbody tr.cc-inline-editor-row td { display: block; }
}

/* ─────────────────────────────────────────────────────────────────────────────
   O02 — the field on a desktop: scrolls inside its card with a visible edge cue, never clips.

   Measured at 1366px before the fix: a 689px table in a 656px wrapper. The wrapper could scroll,
   but macOS draws no scrollbar and the card edge simply cut "Withdraw" to "Withdr". Two things:
   the table is allowed to FIT (tighter cell padding below 1500px, and an email address may wrap
   rather than hold the column open), and when it still cannot fit, a fade + edge shadow says so.
   The cover gradients ride the content (background-attachment: local), so the cue appears only
   on the side that has more to show and vanishes when everything fits.
   ───────────────────────────────────────────────────────────────────────────── */
@media (min-width: 768px) {
    [b-0m3i1xepsh] .cc-field-table-wrap {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        background:
            linear-gradient(to right, var(--b9-card-bg) 30%, rgba(0, 0, 0, 0)),
            linear-gradient(to right, rgba(0, 0, 0, 0), var(--b9-card-bg) 70%) 100% 0,
            radial-gradient(farthest-side at 0 50%, var(--border-strong), rgba(0, 0, 0, 0)),
            radial-gradient(farthest-side at 100% 50%, var(--border-strong), rgba(0, 0, 0, 0)) 100% 0;
        background-repeat: no-repeat;
        background-size: 40px 100%, 40px 100%, 16px 100%, 16px 100%;
        background-attachment: local, local, scroll, scroll;
    }

    [b-0m3i1xepsh] .cc-field-table .cc-field-player-email {
        overflow-wrap: anywhere;
    }
}

@media (min-width: 768px) and (max-width: 1499.98px) {
    [b-0m3i1xepsh] .cc-field-table > :not(caption) > * > * {
        padding-left: 0.35rem;
        padding-right: 0.35rem;
    }

    [b-0m3i1xepsh] .cc-field-table .cc-tee-select {
        min-width: 84px;
    }
}

/* The refusal bar on /events/{id}/settings.
   Bootstrap's .alert-danger sets its text to --bs-danger-text-emphasis, a very dark red intended
   for a light ground. Composited over the dark theme's translucent band that measures 1.33:1 —
   below AA's 4.5:1 by a distance that makes the sentence effectively invisible, which for a message
   whose entire job is to explain a refused save is the bug it was added to prevent.
   --b9-danger-text is the token that already answers this, and it answers it in both themes. */
.cc-settings-alert[b-0m3i1xepsh] {
    color: var(--b9-danger-text);
}
/* /Components/Pages/Events/ContestAdmin.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════
   CONTEST ADMIN PAGE — ContestAdmin.razor
══════════════════════════════════════════════════════════════ */

/* ── Top bar ──
   O14 — measured at 390px before the fix: the title shrank to nothing and the "Round 1" chip was
   painted under "+ New Contest" ("Roun|"). Nothing in this bar may be clipped or overlapped, so
   every level of it WRAPS instead of shrinking. */
.cad-bar[b-mubisuld6q] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1.25rem;
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-default);
    gap: 0.75rem 1rem;
}

.cad-bar-left[b-mubisuld6q] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1rem;
    min-width: 0;
    flex: 1 1 auto;
}

.cad-back[b-mubisuld6q] {
    color: var(--text-muted);
    text-decoration: none;
    font-size: 0.875rem;
    white-space: nowrap;
}

.cad-back:hover[b-mubisuld6q] { color: var(--text-primary); }

.cad-bar-title[b-mubisuld6q] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.cad-bar-event[b-mubisuld6q] {
    font-weight: 600;
    font-size: 1rem;
}

.cad-round-chip[b-mubisuld6q] {
    font-size: 0.875rem;
    padding: 0.35rem 0.6rem;
}

.cad-bar-right[b-mubisuld6q] {
    flex-shrink: 0;
}

.cad-bar-right .btn[b-mubisuld6q] {
    min-height: 48px;
}

@media (max-width: 767.98px) {
    .cad-bar-right[b-mubisuld6q],
    .cad-bar-right .btn[b-mubisuld6q] {
        width: 100%;
    }
}

/* ── Loading / error state ── */
.cad-state-wrap[b-mubisuld6q] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 3rem 1.5rem;
    color: var(--text-muted);
}

.cad-state-icon[b-mubisuld6q] { font-size: 2rem; }
.cad-state-text[b-mubisuld6q] { margin: 0; font-size: 0.9rem; }

/* ── Create form ── */
.cad-create-card[b-mubisuld6q] {
    margin: 1rem 1.25rem;
    border: 1px solid var(--brand-ring);
    border-radius: 8px;
    background: var(--brand-soft);
    overflow: hidden;
}

.cad-create-header[b-mubisuld6q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    background: rgba(37,99,235,0.24);
    border-bottom: 1px solid var(--brand-ring);
}

.cad-create-body[b-mubisuld6q] { padding: 1rem; }

/* ── Hole picker ── */
.cad-hole-picker[b-mubisuld6q] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.25rem;
}

.cad-hole-btn[b-mubisuld6q] {
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 50%;
    border: 1px solid var(--border-default);
    background: var(--bg-raised);
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted);
    cursor: pointer;
    transition: all 0.15s;
    line-height: 1;
    padding: 0;
}

.cad-hole-btn:hover[b-mubisuld6q] { border-color: var(--brand-text); color: var(--brand-text); }

.cad-hole-btn-on[b-mubisuld6q] {
    /* --b9-primary, not a raw Tailwind blue. #fff on #3b82f6 is 3.68:1; on the brand blue 6.30:1,
       and it puts the selected hole on the design system instead of beside it. */
    background: #1D4ED8;
    border-color: #1E40AF;
    color: #fff;
}

/* A hole is required. The picker is a row of circles rather than a form control, so it cannot
   inherit Bootstrap's .is-invalid treatment — this is that treatment, drawn around the row. */
.cad-hole-picker-invalid[b-mubisuld6q] {
    border: 1px solid var(--danger);
    border-radius: 0.5rem;
    padding: 0.4rem;
    background: var(--danger-soft);
}

.cad-hole-required[b-mubisuld6q] {
    margin-top: 0.35rem;
    font-size: var(--font-size-sm);
    color: var(--danger-text);
}

/* A contest saved before the rule existed. Stated, not hidden: it still shows in the list and can
   still be deleted, and the organizer is told why it cannot be played. */
.cad-contest-nohole[b-mubisuld6q] {
    color: var(--warning-text);
    font-weight: 500;
}

/* ── Empty state ── */
.cad-empty[b-mubisuld6q] {
    text-align: center;
    padding: 3rem 1.5rem;
    color: var(--text-muted);
}

.cad-empty-icon[b-mubisuld6q] { font-size: 2.5rem; display: block; margin-bottom: 0.75rem; color: var(--text-muted); }
.cad-empty-title[b-mubisuld6q] { font-weight: 600; font-size: 1rem; margin: 0 0 0.35rem; color: var(--text-primary); }
.cad-empty-sub[b-mubisuld6q] { font-size: 0.875rem; margin-bottom: 1.25rem; }

/* ── Contest cards ── */
.cad-list[b-mubisuld6q] {
    padding: 1rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.cad-contest-card[b-mubisuld6q] {
    border: 1px solid var(--border-default);
    border-radius: 8px;
    background: var(--bg-elevated);
    overflow: hidden;
    transition: box-shadow 0.15s;
}

.cad-contest-card.cad-expanded[b-mubisuld6q] { box-shadow: 0 2px 12px rgba(0,0,0,.28); }

.cad-contest-header[b-mubisuld6q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    cursor: pointer;
    user-select: none;
    gap: 1rem;
}

.cad-contest-header:hover[b-mubisuld6q] { background: var(--bg-raised); }

.cad-contest-info[b-mubisuld6q] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-width: 0;
}

.cad-contest-name[b-mubisuld6q] {
    font-weight: 600;
    font-size: 0.95rem;
}

.cad-contest-actions[b-mubisuld6q] {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

.cad-contest-body[b-mubisuld6q] {
    padding: 0.75rem 1rem 1rem;
    border-top: 1px solid var(--border-default);
    background: var(--bg-raised);
}

.cad-status-row[b-mubisuld6q] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-bottom: 0.25rem;
}

/* ── Status badges ── */
.cad-status-badge[b-mubisuld6q] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    padding: 2px 7px;
    border-radius: 4px;
    white-space: nowrap;
}

.cad-status-draft[b-mubisuld6q]  { background: var(--bg-raised); color: var(--text-muted); }
.cad-status-open[b-mubisuld6q]   { background: var(--success-soft); color: var(--success-text); }
.cad-status-locked[b-mubisuld6q] { background: var(--warning-soft); color: var(--warning-text); }
.cad-status-final[b-mubisuld6q]  { background: var(--success-soft); color: var(--success-text); border: 1px solid rgba(34,197,94,0.28); }
/* /Components/Pages/Events/Create.razor.rz.scp.css */
/* ============================================================
   Events/Create — scoped styles
   Wizard layout (wiz-*) matches Leagues/Create for UI parity.
   Format card styles (evt-format-*) are event-specific.
============================================================ */

/* ── Shell ── */
.wiz-shell[b-kv18doxnwr] {
    max-width: 1080px;
    margin: 2.5rem auto;
    padding: 0 1rem;
}

/* ── Page header ── */
.wiz-page-header[b-kv18doxnwr] { margin-bottom: 2rem; }
.wiz-back-link[b-kv18doxnwr] { font-size: var(--font-size-sm); color: var(--text-muted); text-decoration: none; }
.wiz-back-link:hover[b-kv18doxnwr] { color: var(--b9-primary-text); }
.wiz-page-title[b-kv18doxnwr] { font-size: 1.5rem; font-weight: 700; margin: 0; }
.wiz-page-sub[b-kv18doxnwr] { font-size: .875rem; color: var(--text-muted); margin: .25rem 0 0; }

/* ── Type context callout ── */
.wiz-type-context[b-kv18doxnwr] {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    background: var(--brand-soft, rgba(59,130,246,0.12));
    border: 1px solid rgba(59,130,246,0.3);
    border-radius: 8px;
    padding: .625rem .875rem;
    font-size: var(--font-size-sm);
    color: var(--text-primary);
    margin-bottom: 1.25rem;
    line-height: 1.5;
}

/* ── Compact progress indicator (mobile) ── */
.wiz-compact-progress[b-kv18doxnwr] {
    margin-bottom: 1rem;
    padding: .8rem .95rem;
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(15,23,42,0.9), rgba(15,23,42,0.72));
    border: 1px solid rgba(148,163,184,0.25);
}

.wiz-compact-current[b-kv18doxnwr] {
    color: #f8fafc;
    font-size: .95rem;
    font-weight: 700;
}

.wiz-compact-next[b-kv18doxnwr] {
    margin-top: .35rem;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
}

/* ── Sidebar step list ── */
.wiz-grid[b-kv18doxnwr] {
    display: block;
}

.wiz-progress-wrap[b-kv18doxnwr] {
    display: none;
}

.wiz-progress-current[b-kv18doxnwr] {
    padding: .95rem 1rem;
    border-radius: 12px;
    background: rgba(15,23,42,0.72);
    border: 1px solid rgba(148,163,184,0.30);
    margin-bottom: .9rem;
}

.wiz-progress-kicker[b-kv18doxnwr] {
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: #93c5fd;
    font-weight: 700;
}

.wiz-progress-title[b-kv18doxnwr] {
    margin-top: .35rem;
    font-size: 1.08rem;
    color: #ffffff;
    font-weight: 700;
    line-height: 1.35;
}

.wiz-progress-next[b-kv18doxnwr] {
    margin-top: .4rem;
    font-size: var(--font-size-sm);
    color: #cbd5e1;
}

.wiz-progress-list[b-kv18doxnwr] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: grid;
    gap: .5rem;
}

.wiz-progress-item[b-kv18doxnwr] {
    display: flex;
    align-items: center;
    gap: .65rem;
    border-radius: 10px;
    padding: .55rem .7rem;
    border: 1px solid transparent;
}

.wiz-progress-index[b-kv18doxnwr] {
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-chip);
    font-weight: 700;
    flex: 0 0 auto;
}

.wiz-progress-label[b-kv18doxnwr] {
    font-size: .9rem;
    line-height: 1.35;
    white-space: normal;
}

.wiz-progress-item-active[b-kv18doxnwr] {
    border-color: rgba(59,130,246,.55);
    background: rgba(37,99,235,.17);
}

.wiz-progress-item-active .wiz-progress-index[b-kv18doxnwr] {
    background: var(--brand);
    color: #ffffff;
    box-shadow: 0 0 0 3px var(--brand-ring);
}

.wiz-progress-item-active .wiz-progress-label[b-kv18doxnwr] {
    color: #f8fafc;
    font-weight: 700;
}

.wiz-progress-item-done[b-kv18doxnwr] {
    border-color: rgba(16,185,129,.34);
    background: rgba(16,185,129,.11);
}

.wiz-progress-item-done .wiz-progress-index[b-kv18doxnwr] {
    background: var(--b9-accent-green);
    color: #052e16;   /* 2.28:1 -> 6.54:1. The sibling rule below already uses this palette. */
}

.wiz-progress-item-done .wiz-progress-label[b-kv18doxnwr] {
    color: #bbf7d0;
    font-weight: 600;
}

.wiz-progress-item-future[b-kv18doxnwr] {
    background: rgba(148,163,184,.08);
    border-color: rgba(148,163,184,.18);
}

.wiz-progress-item-future .wiz-progress-index[b-kv18doxnwr] {
    background: #1e293b;
    color: #e2e8f0;
    border: 1px solid #475569;
}

.wiz-progress-item-future .wiz-progress-label[b-kv18doxnwr] {
    color: #94a3b8;
    font-weight: 500;
}

/* ── Card ── */
.wiz-card[b-kv18doxnwr] {
    --wiz-footer-clearance: clamp(4rem, 10svh, 6rem);
    background:     var(--bg-surface);
    border:         1px solid var(--border-subtle);
    border-radius:  14px;
    overflow:       visible;
    box-shadow:     0 4px 24px rgba(0,0,0,.35), 0 1px 3px rgba(0,0,0,.25);
    display:        flex;
    flex-direction: column;
}

.wiz-card-head[b-kv18doxnwr] {
    display:       flex;
    align-items:   flex-start;
    gap:           1rem;
    padding:       1.5rem 1.75rem 1.25rem;
    border-bottom: 1px solid var(--border-subtle);
}

.wiz-card-icon[b-kv18doxnwr] {
    width: 42px; height: 42px; border-radius: 10px;
    background: var(--brand-soft);
    color:      var(--b9-primary-text);
    display:    flex; align-items: center; justify-content: center;
    font-size:  1.25rem; flex-shrink: 0;
}

.wiz-card-icon-success[b-kv18doxnwr] {
    background: var(--b9-accent-green-soft);
    color:      var(--b9-accent-green);
}

/* An <h2> now (Phase E): it names the step for screen readers and takes focus on a step
   change. Margin reset so promoting the tag changed nothing visually. */
.wiz-card-title[b-kv18doxnwr] { font-size: 1.05rem; font-weight: 700; color: var(--text-primary); line-height: 1.3; margin: 0; }
.wiz-card-title:focus[b-kv18doxnwr] { outline: none; }
.wiz-card-title:focus-visible[b-kv18doxnwr] { outline: 2px solid var(--brand); outline-offset: 3px; border-radius: 4px; }
.wiz-card-sub[b-kv18doxnwr]   { font-size: var(--font-size-sm); color: var(--text-muted); margin-top: .2rem; line-height: 1.5; }
.wiz-card-body[b-kv18doxnwr]  { padding: 1.75rem 1.75rem calc(2rem + var(--wiz-footer-clearance)); }

/* ── Form fields ── */
.wiz-field[b-kv18doxnwr] { margin-bottom: 1.25rem; }
.wiz-field:last-child[b-kv18doxnwr] { margin-bottom: 0; }

.wiz-label[b-kv18doxnwr] {
    display:        block;
    font-size:      var(--font-size-sm);
    font-weight:    600;
    letter-spacing: .05em;
    text-transform: uppercase;
    margin-bottom:  .4rem;
    color:          var(--text-secondary);
}

.wiz-required[b-kv18doxnwr] { color: var(--b9-danger); }
.wiz-optional[b-kv18doxnwr] { font-weight: 400; color: var(--text-muted); text-transform: none; letter-spacing: 0; }

.wiz-input[b-kv18doxnwr] {
    background:   var(--bg-app);
    border-color: var(--border-subtle);
    color:        var(--text-primary);
    transition:   border-color 160ms ease, box-shadow 160ms ease;
}

.wiz-input:hover:not(:disabled)[b-kv18doxnwr] { border-color: var(--border-default); }

.wiz-input:focus[b-kv18doxnwr] {
    border-color: var(--brand);
    box-shadow:   0 0 0 3px var(--brand-ring);
    outline:      none;
}

.wiz-input-lg[b-kv18doxnwr] { font-size: 1.05rem; padding: .6rem .9rem; }
.wiz-hint[b-kv18doxnwr]     { font-size: var(--font-size-sm); color: var(--text-muted); margin-top: .35rem; line-height: 1.45; }
.wiz-row-2[b-kv18doxnwr]    { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }

@media (max-width: 520px) { .wiz-row-2[b-kv18doxnwr] { grid-template-columns: 1fr; } }

/* ── Waitlist toggle block ── */
.evt-check-block[b-kv18doxnwr] {
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    background: rgba(255,255,255,0.03);
    padding: .95rem 1rem;
}

/* ── Review table ── */
.wiz-review[b-kv18doxnwr] {
    border:        1px solid var(--border-subtle);
    border-radius: 10px;
    overflow:      hidden;
    margin-bottom: 1.25rem;
}

.wiz-review-row[b-kv18doxnwr] {
    display:     flex;
    align-items: baseline;
    gap:         .75rem;
    padding:     .8rem 1rem;
    border-bottom: 1px solid var(--border-subtle);
}

.wiz-review-row:last-child[b-kv18doxnwr] { border-bottom: none; }

.wiz-review-label[b-kv18doxnwr] {
    font-size:      var(--font-size-sm);
    font-weight:    600;
    letter-spacing: .05em;
    text-transform: uppercase;
    color:          var(--text-muted);
    min-width:      110px;
    flex-shrink:    0;
}

.wiz-review-val[b-kv18doxnwr]  { flex: 1; font-size: .9rem; color: var(--text-primary); }

.wiz-review-edit[b-kv18doxnwr] {
    background:    none;
    border:        none;
    /* Phase E: the pencil was a ~20px tap target on a review row people fix things from.
       The hit area is now 48x48 while the icon itself stays the same size. */
    min-width:     48px;
    min-height:    48px;
    display:       inline-flex;
    align-items:   center;
    justify-content: center;
    padding:       .1rem .35rem;
    color:         var(--text-muted);
    font-size:     var(--font-size-sm);
    border-radius: 4px;
    cursor:        pointer;
    opacity:       .5;
    transition:    opacity 160ms ease, color 160ms ease;
}

.wiz-review-edit:hover[b-kv18doxnwr] { opacity: 1; color: var(--b9-primary-text); }

/* ── Info note ── */
.wiz-info-note[b-kv18doxnwr] {
    border-radius: 8px;
    padding:       .75rem 1rem;
    font-size:     var(--font-size-sm);
    background:    var(--brand-soft);
    border:        1px solid rgba(29,78,216,0.25);
    color:         var(--b9-primary-text);
    line-height:   1.5;
}

/* ── Review warnings ── */
.wiz-review-warnings[b-kv18doxnwr] {
    border-radius: 8px;
    padding:       .75rem .9rem;
    background:    rgba(245,158,11,0.10);
    border:        1px solid rgba(245,158,11,0.35);
    color:         var(--text-secondary);
    font-size:     var(--font-size-sm);
    line-height:   1.45;
}

.wiz-review-warnings-title[b-kv18doxnwr] {
    font-size:      var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: .04em;
    font-weight:    700;
    color:          var(--text-primary);
    margin-bottom:  .35rem;
}

/* ── Footer ── */
.wiz-footer[b-kv18doxnwr] {
    display:          flex;
    justify-content:  space-between;
    align-items:      center;
    padding:          1.25rem 1.75rem;
    border-top:       1px solid var(--border-subtle);
    background:       var(--bg-surface);
}

.wiz-btn-back[b-kv18doxnwr]   { min-width: 90px; }
.wiz-btn-next[b-kv18doxnwr]   { min-width: 130px; }
.wiz-btn-create[b-kv18doxnwr] { min-width: 160px; font-weight: 600; }

/* ── Responsive: show sidebar on wider viewports ── */
@media (min-width: 860px) {
    .wiz-compact-progress[b-kv18doxnwr] { display: none; }
    .wiz-progress-wrap[b-kv18doxnwr] { display: block; margin-bottom: 1.15rem; }
}

@media (min-width: 1100px) {
    .wiz-grid[b-kv18doxnwr] {
        display: grid;
        grid-template-columns: 280px minmax(0, 1fr);
        gap: 1.15rem;
        align-items: start;
    }

    .wiz-progress-wrap[b-kv18doxnwr] {
        margin-bottom: 0;
        position: sticky;
        top: 1rem;
    }
}

@media (max-width: 520px) {
    .wiz-card-head[b-kv18doxnwr],
    .wiz-card-body[b-kv18doxnwr],
    .wiz-footer[b-kv18doxnwr] {
        padding-left: 1rem;
        padding-right: 1rem;
    }

    .wiz-compact-current[b-kv18doxnwr] { font-size: .9rem; }
    .wiz-compact-next[b-kv18doxnwr]    { font-size: var(--font-size-sm); }
}

/* ── Scoring format cards ── */
.evt-format-grid[b-kv18doxnwr] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 0.75rem;
}

.evt-format-grid-item[b-kv18doxnwr] { min-width: 0; }

.evt-format-card[b-kv18doxnwr] {
    min-height: 90px;
    height: 100%;
    padding: 0.875rem 1rem;
    transition: background-color 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}

.evt-format-card-copy[b-kv18doxnwr] { min-width: 0; flex: 1 1 auto; }

.evt-format-card-title[b-kv18doxnwr] {
    color: var(--text-primary);
    font-size: 1rem;
    line-height: 1.35;
}

.evt-format-card-desc[b-kv18doxnwr] {
    color: var(--text-secondary) !important;
    font-size: 0.875rem;
    line-height: 1.4;
    margin-top: 0.25rem;
    overflow-wrap: anywhere;
}

.evt-format-card:hover[b-kv18doxnwr] { border-color: var(--b9-primary) !important; }

.evt-format-card-unselected[b-kv18doxnwr] {
    background: var(--bg-surface, #0f172a) !important;
    border-color: var(--border-subtle, #334155) !important;
}

.evt-format-card-unselected .evt-format-card-title[b-kv18doxnwr] { color: var(--text-primary, #f8fafc) !important; }
.evt-format-card-unselected .evt-format-card-desc[b-kv18doxnwr],
.evt-format-card-unselected .evt-format-card-icon[b-kv18doxnwr]  { color: var(--text-secondary, #cbd5e1) !important; }

.evt-format-card-selected[b-kv18doxnwr] {
    background: var(--brand-soft, rgba(59,130,246,0.22)) !important;
    border-color: var(--b9-primary-light, #60a5fa) !important;
}

.evt-format-card-selected .evt-format-card-title[b-kv18doxnwr],
.evt-format-card-selected .evt-format-card-desc[b-kv18doxnwr],
.evt-format-card-selected .evt-format-card-icon[b-kv18doxnwr],
.evt-format-card-selected .evt-format-card-check[b-kv18doxnwr] { color: var(--text-primary, #f8fafc) !important; }

html[data-theme="light"] .evt-format-card-unselected[b-kv18doxnwr] {
    background: #f8fafc !important;
    border-color: #e2e8f0 !important;
}

html[data-theme="light"] .evt-format-card-unselected .evt-format-card-title[b-kv18doxnwr]  { color: #1f2937 !important; }
html[data-theme="light"] .evt-format-card-unselected .evt-format-card-desc[b-kv18doxnwr],
html[data-theme="light"] .evt-format-card-unselected .evt-format-card-icon[b-kv18doxnwr]   { color: #475569 !important; }

html[data-theme="light"] .evt-format-card-selected[b-kv18doxnwr]  { background: #dbeafe !important; border-color: #3b82f6 !important; }
html[data-theme="light"] .evt-format-card-selected .evt-format-card-title[b-kv18doxnwr],
html[data-theme="light"] .evt-format-card-selected .evt-format-card-desc[b-kv18doxnwr],
html[data-theme="light"] .evt-format-card-selected .evt-format-card-icon[b-kv18doxnwr],
html[data-theme="light"] .evt-format-card-selected .evt-format-card-check[b-kv18doxnwr]   { color: #0f172a !important; }

/* ── Side-game panels ── */
.skins-setup-panel[b-kv18doxnwr],
.wolf-setup-panel[b-kv18doxnwr] {
    background: var(--bg-elevated) !important;
    border-color: var(--border-subtle) !important;
    color: var(--bs-body-color);
}

.skins-setup-panel .text-muted[b-kv18doxnwr],
.skins-setup-panel .form-text[b-kv18doxnwr],
.wolf-setup-panel .text-muted[b-kv18doxnwr],
.wolf-setup-panel .form-text[b-kv18doxnwr] { color: var(--text-secondary) !important; }

/* ── Info callout box ── */
.evt-info-callout[b-kv18doxnwr] {
    border: 1px solid var(--border-subtle, #334155);
    border-radius: 0.375rem;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
}

html[data-theme="light"] .evt-info-callout[b-kv18doxnwr] {
    background: #f8fafc;
    border-color: #e2e8f0;
    color: #1f2937;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.evt-format-card[b-kv18doxnwr] { cursor: pointer; }
.evt-team-size-select[b-kv18doxnwr] { max-width: 220px; }

/* ── Tee-set nudge (UX-007) — same amber family as the review warnings ── */
.wiz-warn-note[b-kv18doxnwr] {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    border-radius: 8px;
    padding: .6rem .8rem;
    background: var(--b9-warning-soft);
    border: 1px solid var(--b9-warning);
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
    line-height: 1.45;
}
.wiz-warn-note i[b-kv18doxnwr] { color: var(--b9-warning); margin-top: .1rem; }
.wiz-warn-note a[b-kv18doxnwr] { color: var(--b9-primary-text); font-weight: 600; }

.wiz-review-val-warn[b-kv18doxnwr] {
    color: var(--b9-warning-text);
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

/* ── Footer validation marker (UX-001) ─────────────────────────
   The summary renders at the top of a step that can run three screens tall; this
   sits beside the button the organizer actually pressed. */
.wiz-footer-error[b-kv18doxnwr] {
    display: flex;
    align-items: center;
    gap: .4rem;
    color: var(--b9-danger);
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-align: center;
}

/* ── Advanced disclosures (UX-002) ───────────────────────────
   Same look as the league wizard's — one product, one disclosure grammar. */
.wiz-advanced[b-kv18doxnwr] {
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    background: var(--bg-elevated);
    margin-top: .35rem;
    overflow: hidden;
}

.wiz-advanced-summary[b-kv18doxnwr] {
    cursor: pointer;
    padding: .75rem .9rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
    list-style: none;
}

.wiz-advanced-summary[b-kv18doxnwr]::-webkit-details-marker { display: none; }

.wiz-advanced-summary[b-kv18doxnwr]::before {
    content: "+";
    margin-right: .45rem;
    color: var(--b9-primary-text);
    font-weight: 700;
}

.wiz-advanced[open] .wiz-advanced-summary[b-kv18doxnwr]::before { content: "-"; }

.wiz-advanced-summary-state[b-kv18doxnwr] {
    font-weight: 400;
    color: var(--text-muted);
}

.wiz-advanced-body[b-kv18doxnwr] {
    padding: .35rem .9rem .95rem;
    border-top: 1px solid var(--border-subtle);
}
/* /Components/Pages/Events/EventHeaderActions.razor.rz.scp.css */
/* The event page header's controls (O01): one primary, at most two secondaries, then More.
   Scoped: the parent's `.cc-command-bar .btn` rules do not reach in here, so the sizes below are
   the whole story. Every control is a 48px target; nothing here is under 14px. */

.cc-actions[b-8a6ki47ps7] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem;
    min-width: 0;
}

.cc-action[b-8a6ki47ps7] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: 48px;
    padding: 0.5rem 1rem;
    font-size: 0.9375rem;
    font-weight: 600;
    white-space: nowrap;
}

/* Status, not an action: the quiet green chip that says teams are in place. */
.cc-teams-chip[b-8a6ki47ps7] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 48px;
    padding: 0.5rem 0.9rem;
    font-size: 0.875rem;
    font-weight: 600;
}

/* ── More ───────────────────────────────────────────────────────────────── */

.cc-more[b-8a6ki47ps7] {
    position: relative;
}

/* Transparent overlay that closes the menu on an outside tap. Just under the menu. */
.cc-more-backdrop[b-8a6ki47ps7] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}

.cc-more-menu[b-8a6ki47ps7] {
    position: absolute;
    right: 0;
    top: calc(100% + 0.35rem);
    z-index: 1000;
    min-width: 14rem;
    max-width: min(92vw, 20rem);
    margin: 0;
    padding: 0.35rem;
    list-style: none;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-lg);
    box-shadow: var(--b9-card-shadow-md);
}

.cc-more-item[b-8a6ki47ps7] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    width: 100%;
    min-height: 48px;
    padding: 0.5rem 0.85rem;
    border: 0;
    border-radius: var(--radius-md);
    background: transparent;
    color: var(--text-primary);
    font-size: 1rem;
    text-align: left;
    text-decoration: none;
    white-space: nowrap;
}

.cc-more-item:hover[b-8a6ki47ps7],
.cc-more-item:focus-visible[b-8a6ki47ps7] {
    background: var(--bg-raised);
    color: var(--text-primary);
}

/* Red is for destructive, and only here — behind a step, never a top-level button. */
.cc-more-item-danger[b-8a6ki47ps7] {
    color: var(--b9-danger-text);
}

.cc-more-item-danger:hover[b-8a6ki47ps7],
.cc-more-item-danger:focus-visible[b-8a6ki47ps7] {
    color: var(--b9-danger-text);
}

.cc-more-divider[b-8a6ki47ps7] {
    height: 1px;
    margin: 0.35rem 0;
    background: var(--border-subtle);
}

@media (max-width: 767.98px) {
    .cc-actions[b-8a6ki47ps7] {
        width: 100%;
    }

    /* On a phone the one thing to do is the widest thing on the row. */
    .cc-action-primary[b-8a6ki47ps7] {
        flex: 1 1 auto;
    }

    /* The menu opens under a full-width row; anchor it to the row's left edge rather than off-screen. */
    .cc-more-menu[b-8a6ki47ps7] {
        right: auto;
        left: 0;
    }
}
/* /Components/Pages/Events/EventRegistration.razor.rz.scp.css */
/* ---------------------------------------------------------------------------------------
   ::deep on thirty rules, 2026-09-13, because without it none of them applied.

   PlayerRegistrationEligibilityCard.razor renders the whole registration DECISION — the
   card, the status heading and message, the confirmation block, and both buttons — and it
   has no stylesheet of its own. These rules lived here, in the PARENT's scoped sheet, so
   Blazor rewrote them to `.ereg-primary-btn[b-thisparent]` and the child's markup, which
   carries a different scope attribute, never matched. Fifteen classes, styled and dead.

   What that looked like on screen: the Sign Up button on a public /events/{id}/register —
   the control that signs a golfer up for a tournament, on the page they reach from a
   texted link with no account — rendered as a raw browser default. Computed
   background rgb(239,239,239), border-style outset, 73px wide against the `width: 100%`
   written below. It passed the 48px touch floor exactly, which is why no measurement
   caught it; only looking at the page did.

   🔴 Two traps, both hit while fixing this:
   `::deep .foo` is the only form that works — `:deep(.foo)` and `::deep(.foo)` compile
   without complaint and do nothing. And a rewrite that anchors on the base class alone
   skips every `--modifier`: the first pass here did exactly that, the button came back
   full-width and still browser-grey, and the colours live on --open and --enabled. The
   BEM modifier is part of the selector, not a suffix to be bounded away.
   --------------------------------------------------------------------------------------- */

.ereg-page[b-tkjtozmzwf] {
    min-height: 100vh;
    background: linear-gradient(160deg, #0b1120 0%, #111827 45%, #0f172a 100%);
    color: #e2e8f0;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.ereg-loading[b-tkjtozmzwf],
.ereg-state-page[b-tkjtozmzwf] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 40vh;
    text-align: center;
    padding: 2rem;
    color: #94a3b8;
}

.ereg-state-title[b-tkjtozmzwf] {
    font-size: 1.5rem;
    font-weight: 700;
    color: #f8fafc;
    margin-bottom: 0.5rem;
}

.ereg-state-sub[b-tkjtozmzwf] {
    font-size: 0.95rem;
    color: #94a3b8;
}

.ereg-main[b-tkjtozmzwf] {
    padding: 2rem 1rem 2.5rem;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.ereg-container[b-tkjtozmzwf] {
    max-width: 620px;
    margin: 0 auto;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.ereg-event-context[b-tkjtozmzwf] {
    margin-bottom: 1rem;
}

.ereg-event-org[b-tkjtozmzwf] {
    margin: 0;
    font-size: var(--font-size-sm);
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: #93c5fd;
    font-weight: 700;
}

.ereg-event-name[b-tkjtozmzwf] {
    margin: 0.35rem 0 0;
    color: #f8fafc;
    font-size: 1.75rem;
    line-height: 1.2;
    font-weight: 800;
    letter-spacing: -0.02em;
}

.ereg-breadcrumb[b-tkjtozmzwf] {
    margin-bottom: 1.25rem;
}

.ereg-back-link[b-tkjtozmzwf] {
    font-size: var(--font-size-sm);
    color: #93c5fd;
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    /* 21px tall. This is the only way off a sign-up page for someone who arrived from a
       texted link and has no account — no sidebar, no tabs, one link. X03, audit 2026-09-06. */
    min-height: var(--touch-target-min);
}

.ereg-back-link:hover[b-tkjtozmzwf] {
    color: #bfdbfe;
}

.ereg-submit-error[b-tkjtozmzwf] {
    margin-bottom: 1rem;
    border: 1px solid rgba(248, 113, 113, 0.45);
    background: rgba(127, 29, 29, 0.45);
    color: #fee2e2;
    border-radius: 12px;
    padding: 0.75rem 0.9rem;
    font-size: 0.9rem;
}

[b-tkjtozmzwf] /* ── Eligibility card ── */

.ereg-card {
    background: rgba(15, 23, 42, 0.92);
    border: 1px solid rgba(148, 163, 184, 0.25);
    border-radius: 14px;
    padding: 1.5rem;
    box-shadow: 0 14px 28px rgba(2, 6, 23, 0.45);
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

[b-tkjtozmzwf] .ereg-card--open {
    border-left: 4px solid #22c55e;
}

[b-tkjtozmzwf] .ereg-card--blocked {
    border-left: 4px solid #ef4444;
}

[b-tkjtozmzwf] .ereg-card--info {
    border-left: 4px solid #3b82f6;
}

[b-tkjtozmzwf] .ereg-card--positive {
    border-left: 4px solid #22c55e;
}

[b-tkjtozmzwf] .ereg-card--muted {
    border-left: 4px solid #64748b;
}

[b-tkjtozmzwf] .ereg-status-heading {
    font-size: 1.25rem;
    font-weight: 700;
    color: #f8fafc;
    margin: 0 0 0.5rem;
    line-height: 1.25;
}

[b-tkjtozmzwf] .ereg-status-message {
    font-size: 0.95rem;
    color: #cbd5e1;
    margin: 0 0 1.25rem;
    line-height: 1.6;
}

[b-tkjtozmzwf] .ereg-confirm-heading {
    margin: 0 0 0.45rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: #f8fafc;
    line-height: 1.3;
}

[b-tkjtozmzwf] .ereg-confirm-message {
    margin: 0 0 0.9rem;
    color: #cbd5e1;
    font-size: 0.9rem;
    line-height: 1.45;
}

[b-tkjtozmzwf] .ereg-confirm-actions {
    display: grid;
    gap: 0.55rem;
}

[b-tkjtozmzwf] .ereg-secondary-btn {
    width: 100%;
    min-height: 42px;
    border-radius: 10px;
    border: 1px solid rgba(148, 163, 184, 0.45);
    background: rgba(15, 23, 42, 0.45);
    color: #e2e8f0;
    font-size: 0.875rem;
    font-weight: 700;
    white-space: normal;
    overflow-wrap: anywhere;
}

[b-tkjtozmzwf] .ereg-secondary-btn:hover {
    background: rgba(148, 163, 184, 0.12);
}

[b-tkjtozmzwf] /* ── Action area ── */

.ereg-action-area {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

[b-tkjtozmzwf] .ereg-primary-btn {
    display: inline-block;
    padding: 0.675rem 1.25rem;
    border-radius: 10px;
    font-size: 0.9375rem;
    font-weight: 700;
    border: none;
    cursor: not-allowed;
    /* 0.55 was dimming the refusal message itself. 0.75 still reads as disabled — the cursor and
       the fill already say so — without compositing the explanation out of legibility. */
    opacity: 0.75;
    transition: opacity 0.15s;
    width: 100%;
    text-align: center;
    line-height: 1.35;
    white-space: normal;
    overflow-wrap: anywhere;
}

[b-tkjtozmzwf] .ereg-primary-btn--open,
[b-tkjtozmzwf] .ereg-primary-btn--positive {
    background: #22c55e;
    color: #052e16;
}

[b-tkjtozmzwf] .ereg-primary-btn--blocked {
    /* A button that can never be pressed still has to be READ — it is the one telling a golfer
       why they cannot sign up. #fff on #ef4444 is 3.76:1 before the .55 opacity above composites
       it down further. */
    background: #B91C1C;
    color: #fff;
}

[b-tkjtozmzwf] .ereg-primary-btn--info {
    background: #3b82f6;
    color: #fff;
}

[b-tkjtozmzwf] .ereg-primary-btn--muted {
    background: #475569;
    color: #e2e8f0;
}

[b-tkjtozmzwf] .ereg-action-help {
    font-size: var(--font-size-sm);
    color: #94a3b8;
    margin: 0;
    text-align: center;
    line-height: 1.4;
}

[b-tkjtozmzwf] /* ── Enabled button state ── */

.ereg-primary-btn--enabled {
    cursor: pointer;
    opacity: 1;
}

[b-tkjtozmzwf] /* ── Sign-in link (renders as styled anchor,
::deep not button) ── */

.ereg-primary-btn--link {
    text-decoration: none;
    display: block;
    cursor: pointer;
    opacity: 1;
    line-height: 1.5;
}

[b-tkjtozmzwf] .ereg-primary-btn--link:hover {
    text-decoration: none;
    opacity: 0.88;
}

[b-tkjtozmzwf] /* ── Next step section ── */

.ereg-next-step {
    margin-top: 1.1rem;
    padding-top: 1rem;
    border-top: 1px solid rgba(148, 163, 184, 0.25);
}

[b-tkjtozmzwf] .ereg-next-step-text {
    font-size: 0.875rem;
    color: #cbd5e1;
    margin: 0 0 0.5rem;
    line-height: 1.5;
}

[b-tkjtozmzwf] .ereg-secondary-link-area {
    margin-top: 0.8rem;
    padding-top: 0.75rem;
    border-top: 1px solid rgba(148, 163, 184, 0.22);
}

[b-tkjtozmzwf] .ereg-next-step-link {
    font-size: 0.875rem;
    font-weight: 600;
    color: #93c5fd;
    text-decoration: none;
}

[b-tkjtozmzwf] .ereg-next-step-link:hover {
    text-decoration: underline;
}

@media (max-width: 640px) {
    .ereg-main[b-tkjtozmzwf] {
        padding: 1.25rem 0.75rem 2rem;
    }

    .ereg-event-name[b-tkjtozmzwf] {
        font-size: 1.45rem;
    }

    [b-tkjtozmzwf] .ereg-card {
        padding: 1.2rem;
    }

    .ereg-event-org[b-tkjtozmzwf] {
        letter-spacing: 0.08em;
        line-height: 1.35;
    }

    [b-tkjtozmzwf] .ereg-status-heading,
[b-tkjtozmzwf] .ereg-confirm-heading {
        font-size: 1rem;
    }
}

/* ── Sponsor wall — "Thank you to our sponsors" under the registration card ── */
/* Logos sit on light chips so dark logos stay visible on the dark page; wraps on phones. */
.ereg-sponsor-wall[b-tkjtozmzwf] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.6rem;
    margin-top: 1.75rem;
    padding: 1rem;
    border-top: 1px solid rgba(148, 163, 184, 0.18);
}

.ereg-sponsor-wall-label[b-tkjtozmzwf] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.ereg-sponsor-wall-logos[b-tkjtozmzwf] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.7rem;
    max-width: 100%;
}

.ereg-sponsor-wall-logo[b-tkjtozmzwf] {
    height: 40px;
    width: auto;
    max-width: 120px;
    object-fit: contain;
    border-radius: 6px;
}

/* ::deep is REQUIRED, not stylistic. The mark is rendered by the shared <SponsorMark />
   child component, so its element never receives THIS component's b-* scope attribute and a
   plain `.ereg-sponsor-wall-logo { }` rule silently does nothing — the logo falls back to its natural
   size (a 1px image renders as 1px). `.ereg-sponsor-wall-logos ::deep` compiles to
   `.ereg-sponsor-wall-logos[b-xxxx] .ereg-sponsor-wall-logo`, which matches because the wrapper IS in this
   component's own markup. Applies to BOTH treatments, so a nameplate occupies the same box
   as the logo beside it. */
.ereg-sponsor-wall-logos[b-tkjtozmzwf]  .ereg-sponsor-wall-logo {
    height: 40px;
    width: auto;
    max-width: 120px;
    object-fit: contain;
    border-radius: 6px;
}

/* A PLATE is not an image, and boxing it like one is what made the type tiny. A logo needs a
   fixed 40x120 so the wall looks even; a plate is a sponsor's NAME set in type, and
   "Bank Heating & Air Conditioning" cannot live in 120px at a readable size — it was 9.92px on
   three clamped lines, and raising the type alone just clipped the name instead.
   So the plate keeps the logo's height as a FLOOR, sits on the same baseline as a real logo
   beside it, and is allowed to take the width and the lines its name actually needs. */
.ereg-sponsor-wall-logos[b-tkjtozmzwf]  .sponsor-mark-plate {
    height: auto;
    min-height: 40px;
    max-width: min(100%, 15rem);
    padding: 0.4rem 0.75rem;
}

/* Sized HERE and not on the shared .sponsor-mark-plate, deliberately. That base rule feeds nine
   hosts with nine different boxes — the leaderboard strip, two TV boards, and a 22x22px tee-box
   mark that sits above score entry. Raising it centrally put 14px type into all of them; the
   team wall started clipping three names and the tee-box square would have been far worse.
   The type goes up only where the box was opened up to hold it. */
.ereg-sponsor-wall-logos[b-tkjtozmzwf]  .sponsor-mark-plate .sponsor-plate-text {
    font-size: var(--font-size-sm);
    -webkit-line-clamp: 3;
}

/* The route back to your own registration, for a player who lost the confirmation email. */
.ereg-manage-link[b-tkjtozmzwf] {
    margin: .85rem 0 0;
    text-align: center;
    font-size: .9rem;
}

.ereg-manage-link a[b-tkjtozmzwf] {
    color: var(--b9-primary-text, var(--b9-text));
    text-decoration: underline;
    display: inline-block;
    min-height: 44px;
    line-height: 44px;
}

/* ── Guest sign-up form ───────────────────────────────────────────────────────
   Shown when the visitor has no account, or holds one the club has never put on
   its roster. Both used to be dead ends. Tokens only, 48px controls, and the
   labels are real <label for> pairs — this is a player surface and the weakest
   player surface is the one that decides. */
.ereg-guest-form[b-tkjtozmzwf] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1rem;
    padding: 1rem;
    background: var(--b9-card-bg, var(--bg-elevated));
    border: 1px solid var(--border-default);
    border-radius: 12px;
}

.ereg-guest-row[b-tkjtozmzwf] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.ereg-guest-label[b-tkjtozmzwf] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-secondary);
}

.ereg-guest-hint[b-tkjtozmzwf] {
    font-weight: 400;
    color: var(--text-muted);
}

.ereg-guest-form .form-control[b-tkjtozmzwf] {
    min-height: 48px;
    background: var(--b9-input-bg, var(--bg-primary));
    border: 1px solid var(--b9-input-border, var(--border-default));
    color: var(--text-primary);
}

.ereg-guest-form .form-control:focus[b-tkjtozmzwf] {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-soft);
}

/* Signing in stays available and stays secondary — the faster path for a returning
   player, not a toll gate on a first-time one. */
.ereg-signin-alt[b-tkjtozmzwf] {
    margin-top: 0.75rem;
    text-align: center;
    font-size: 0.9rem;
    color: var(--text-secondary);
}

.ereg-signin-alt a[b-tkjtozmzwf] {
    color: var(--b9-primary-text);
    font-weight: 600;
}

/* ── The price, on the step where the golfer commits ──────────────────────────
   Deliberately the same shape as RegisterTeam's .rt-fee-pill: the captain and the individual are
   answering the same question ("what does this cost?") on the same kind of screen, and two
   different-looking answers to it would be the drift this pill exists to remove. Tokens are the
   real ones — --success-soft / --success-text are defined in tokens.css for both themes. */
.ereg-fee-pill[b-tkjtozmzwf] {
    display: inline-flex;
    align-items: baseline;
    /* A member rate roughly doubles the line ("Members $75 · Everyone else $100 per player"), and a
       four-figure price or a large accessibility font size stretches it further. Wrapping keeps the
       pill from ever becoming a horizontal-scroll source on a phone. */
    flex-wrap: wrap;
    max-width: 100%;
    gap: 0.4rem;
    margin-top: 0.6rem;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    background: var(--success-soft, rgba(34, 197, 94, 0.14));
    color: var(--success-text, #86EFAC);
    font-weight: 700;
    font-size: 1rem;
}

.ereg-fee-sub[b-tkjtozmzwf] {
    font-weight: 500;
    font-size: var(--font-size-sm);
    opacity: 0.85;
}
/* /Components/Pages/Events/EventScorecards.razor.rz.scp.css */
.spc-topbar[b-lwyckcvlc7] {
    max-width: 1180px;
    margin: 0.9rem auto 0.25rem;
    padding: 0 1rem;
}

.spc-wrap[b-lwyckcvlc7] {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0.65rem 1rem 2rem;
}

.spc-header-card[b-lwyckcvlc7] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 1rem;
    box-shadow: var(--b9-card-shadow);
}

.spc-header-row[b-lwyckcvlc7] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.8rem;
}

.spc-header-row h1[b-lwyckcvlc7] {
    margin: 0;
    font-size: 1.35rem;
    color: var(--text-primary);
}

.spc-header-row p[b-lwyckcvlc7] {
    margin: 0.2rem 0 0;
    font-size: 0.9rem;
    color: var(--text-secondary);
}

.spc-ready-badge[b-lwyckcvlc7] {
    font-size: var(--font-size-chip);
    padding: 0.45rem 0.6rem;
}

.spc-kpis[b-lwyckcvlc7] {
    margin-top: 0.85rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.6rem;
}

.spc-kpi[b-lwyckcvlc7] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 0.65rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.12rem;
}

.spc-kpi-label[b-lwyckcvlc7] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-muted);
}

.spc-kpi-value[b-lwyckcvlc7] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text-primary);
}

.spc-metadata[b-lwyckcvlc7] {
    margin-top: 0.45rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.spc-metadata--qr-on[b-lwyckcvlc7] {
    color: var(--success, #22c55e);
}

.spc-metadata--qr-upgrade[b-lwyckcvlc7] {
    margin-top: 0.75rem;
    background: var(--brand-soft, rgba(34,197,94,.08));
    border: 1px solid var(--brand-soft, rgba(34,197,94,.2));
    border-radius: 8px;
    padding: 0.6rem 0.9rem;
    color: var(--text-secondary, #cbd5e1);
    font-size: var(--font-size-sm);
    line-height: 1.5;
}

.spc-upgrade-link[b-lwyckcvlc7] {
    display: inline-block;
    margin-top: 0.3rem;
    color: var(--b9-primary-text);
    font-weight: 600;
    text-decoration: none;
}

.spc-actions[b-lwyckcvlc7] {
    margin-top: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.spc-hero-panel[b-lwyckcvlc7] {
    margin-top: 0.9rem;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    padding: 0.85rem;
    box-shadow: var(--b9-card-shadow);
}

.spc-panel-head h3[b-lwyckcvlc7] {
    margin: 0;
    color: var(--text-primary);
    font-size: 1rem;
}

.spc-panel-head p[b-lwyckcvlc7] {
    margin: 0.15rem 0 0.6rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.spc-preview-frame[b-lwyckcvlc7] {
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    overflow: hidden;
    background: var(--bg-surface);
    height: 620px;
}

.spc-preview-frame iframe[b-lwyckcvlc7] {
    width: 100%;
    height: 100%;
    border: 0;
}

.spc-empty[b-lwyckcvlc7] {
    min-height: 260px;
    border: 1px dashed var(--border-default);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    font-size: 0.9rem;
}

.spc-admin-accordion[b-lwyckcvlc7] {
    margin-top: 0.9rem;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    box-shadow: var(--b9-card-shadow);
}

.spc-admin-accordion summary[b-lwyckcvlc7] {
    cursor: pointer;
    padding: 0.8rem 0.95rem;
    user-select: none;
    font-weight: 600;
    color: var(--text-primary);
}

.spc-admin-body[b-lwyckcvlc7] {
    border-top: 1px solid var(--border-subtle);
    padding: 0.85rem 0.95rem 0.95rem;
}

.spc-admin-list[b-lwyckcvlc7] {
    margin: 0;
    display: grid;
    gap: 0.55rem;
}

.spc-admin-list div[b-lwyckcvlc7] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    padding: 0.5rem 0.65rem;
}

.spc-admin-list dt[b-lwyckcvlc7] {
    margin: 0;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    color: var(--text-muted);
}

.spc-admin-list dd[b-lwyckcvlc7] {
    margin: 0.15rem 0 0;
    font-size: 0.88rem;
    color: var(--text-primary);
    font-weight: 600;
}

.spc-empty-sm[b-lwyckcvlc7] {
    border: 1px dashed var(--border-default);
    border-radius: 10px;
    padding: 0.75rem;
    text-align: center;
    color: var(--text-secondary);
    font-size: 0.88rem;
}

.spc-state[b-lwyckcvlc7] {
    min-height: 42vh;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    color: var(--text-secondary);
}

.spc-overlay[b-lwyckcvlc7] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    z-index: 1080;
}

.spc-confirm-card[b-lwyckcvlc7] {
    width: min(32rem, 100%);
}

@media (max-width: 980px) {
    .spc-header-row[b-lwyckcvlc7] {
        flex-direction: column;
        align-items: flex-start;
    }

    .spc-kpis[b-lwyckcvlc7] {
        grid-template-columns: 1fr;
    }

    .spc-preview-frame[b-lwyckcvlc7] {
        height: 440px;
    }
}

/* Transparent overlay that closes the "More" menu on an outside click.
   Sits just below Bootstrap's .dropdown-menu (z-index 1000) so the menu stays clickable. */
.spc-dropdown-backdrop[b-lwyckcvlc7] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}

@media print {
    .no-print[b-lwyckcvlc7] {
        display: none !important;
    }
}

/* ── "More" menu alignment without Bootstrap JS ────────────────────────
   The app ships Bootstrap CSS only; .dropdown-menu-end needs Popper's
   [data-bs-popper] attribute to apply right-alignment, so without it the
   menu opens LEFT-edge-aligned and runs past the right of narrow screens.
   Right-align it to its .dropdown parent and cap the width to the phone
   viewport. */
.dropdown .dropdown-menu.show[b-lwyckcvlc7] {
    right: 0;
    left: auto;
    max-width: min(92vw, 320px);
}

/* The printed packet no longer matches the tee sheet. Loud on purpose — an organiser who trusts a
   printout never takes the "regenerate" step that used to be the only place this drift was noticed. */
.spc-stale-banner[b-lwyckcvlc7] {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: .9rem 1.1rem;
    margin: 0 0 1rem;
    background: var(--warning-soft);
    border: 1px solid var(--warning-border, var(--border-subtle));
    border-radius: 10px;
    color: var(--text-primary);
}

.spc-stale-banner i[b-lwyckcvlc7] {
    font-size: 1.1rem;
    line-height: 1.4;
    color: var(--warning-fg, var(--text-primary));
    flex: 0 0 auto;
}

.spc-stale-banner strong[b-lwyckcvlc7] { display: block; font-size: .96rem; font-weight: 700; }

.spc-stale-banner span[b-lwyckcvlc7] {
    display: block;
    font-size: .88rem;
    color: var(--text-muted);
    margin-top: .15rem;
    line-height: 1.45;
    max-width: 62ch;
}

@media (max-width: 640px) {
    .spc-stale-banner[b-lwyckcvlc7] { flex-wrap: wrap; }
    .spc-stale-banner .btn[b-lwyckcvlc7] { margin-left: 0 !important; width: 100%; }
}
/* /Components/Pages/Events/EventTeamAdmin.razor.rz.scp.css */
/* Team builder — select-then-place.
   Deliberately mirrors the Pairings page's chip/target treatment so learning one screen teaches the
   other (WCAG 3.2.4 Consistent Identification). Tokens only, no raw colours. */

/* ── Build-method tiles ──────────────────────────────────────────────────── */
.etb-tiles[b-goscrmn58y] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(15rem, 1fr));
    gap: 0.6rem;
}

.etb-tile[b-goscrmn58y] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    text-align: left;
    padding: 0.75rem 0.9rem;
    min-height: var(--touch-target-min, 48px);
    border-radius: 10px;
    border: 1.5px solid var(--border-default);
    background: var(--bg-raised);
    color: var(--text-primary);
    cursor: pointer;
    transition: border-color 0.12s, background 0.12s;
}

.etb-tile:hover[b-goscrmn58y] { border-color: var(--brand); background: var(--brand-soft); }
.etb-tile:focus-visible[b-goscrmn58y] { outline: none; box-shadow: var(--b9-focus-ring); }

.etb-tile--on[b-goscrmn58y] {
    border-color: var(--brand);
    background: var(--brand-soft);
    box-shadow: 0 0 0 2px var(--brand-ring);
}

.etb-tile-icon[b-goscrmn58y] { font-size: 1.1rem; color: var(--brand-text, var(--brand)); }
.etb-tile-title[b-goscrmn58y] { font-weight: 600; font-size: 0.9rem; }
.etb-tile-desc[b-goscrmn58y] { font-size: 0.78rem; color: var(--text-muted); }

/* ── Team-size selector ──────────────────────────────────────────────────── */
.etb-size[b-goscrmn58y] {
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border-radius: 8px;
    border: 1.5px solid var(--border-default);
    background: var(--bg-raised);
    color: var(--text-primary);
    font-weight: 700;
    cursor: pointer;
    transition: border-color 0.12s, background 0.12s;
}

.etb-size:hover[b-goscrmn58y] { border-color: var(--brand); }
.etb-size:focus-visible[b-goscrmn58y] { outline: none; box-shadow: var(--b9-focus-ring); }
.etb-size--on[b-goscrmn58y] { border-color: var(--brand); background: var(--brand); color: #fff; }

/* ── Pool ────────────────────────────────────────────────────────────────── */
.etb-pool[b-goscrmn58y] {
    max-height: 30rem;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

/* The shared .player-chip renders ~36px tall. Seniors are measurably slower and more error-prone
   with small targets, so raise it to the 48px token on this screen. */
.etb-chip[b-goscrmn58y] {
    min-height: var(--touch-target-min, 48px);
}

.etb-chip:focus-visible[b-goscrmn58y] { outline: none; box-shadow: var(--b9-focus-ring); }

/* ── Sticky selection bar ────────────────────────────────────────────────── */
.etb-selbar[b-goscrmn58y] {
    position: sticky;
    top: 0.5rem;
    z-index: 20;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    padding: 0.6rem 0.9rem;
    margin-bottom: 1rem;
    border-radius: 10px;
    background: var(--brand);
    color: #fff;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.28);
}

.etb-selbar-count[b-goscrmn58y] { font-weight: 700; font-variant-numeric: tabular-nums; }
.etb-selbar-hint[b-goscrmn58y] { opacity: 0.85; font-size: 0.85rem; }

.etb-selbar-go[b-goscrmn58y] {
    margin-left: auto;
    min-height: var(--touch-target-min, 48px);
    padding: 0 1rem;
    border-radius: 8px;
    border: none;
    background: #fff;
    color: var(--brand-active, #1E40AF);
    font-weight: 700;
    cursor: pointer;
}

.etb-selbar-go:disabled[b-goscrmn58y] { opacity: 0.6; cursor: not-allowed; }
.etb-selbar-go:focus-visible[b-goscrmn58y],
.etb-selbar-clear:focus-visible[b-goscrmn58y] { outline: 2px solid #fff; outline-offset: 2px; }

.etb-selbar-clear[b-goscrmn58y] {
    min-height: var(--touch-target-min, 48px);
    padding: 0 0.85rem;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.6);
    background: transparent;
    color: #fff;
    font-weight: 600;
    cursor: pointer;
}

/* ── Preview ─────────────────────────────────────────────────────────────── */
.etb-preview-grid[b-goscrmn58y] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(13rem, 1fr));
    gap: 0.6rem;
}

.etb-preview-card[b-goscrmn58y] {
    border: 1px solid var(--border-default);
    border-radius: 10px;
    padding: 0.6rem 0.7rem;
    background: var(--bg-raised);
}

.etb-preview-name[b-goscrmn58y] { font-weight: 700; font-size: 0.9rem; margin-bottom: 0.3rem; }

.etb-preview-member[b-goscrmn58y] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.83rem;
    color: var(--text-secondary);
    padding: 0.1rem 0;
}

.etb-preview-total[b-goscrmn58y] {
    margin-top: 0.35rem;
    padding-top: 0.35rem;
    border-top: 1px solid var(--border-subtle);
    font-size: 0.74rem;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

/* ── Team cards ──────────────────────────────────────────────────────────── */
.etb-name-btn[b-goscrmn58y] {
    background: none;
    border: none;
    padding: 0;
    color: inherit;
    cursor: pointer;
    text-align: left;
}

.etb-name-btn:focus-visible[b-goscrmn58y] { outline: none; box-shadow: var(--b9-focus-ring); border-radius: 4px; }

.etb-rename[b-goscrmn58y] { max-width: 16rem; }

.etb-icon-btn[b-goscrmn58y] {
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

@media (prefers-reduced-motion: reduce) {
    .etb-tile[b-goscrmn58y], .etb-size[b-goscrmn58y] { transition: none; }
}

/* A withdrawn team stays on this page — it is the organiser's roster, not the competitor list —
   but it must not read as a live one. Muted rather than danger-red: withdrawing is a normal,
   reversible day-of act, not a mistake, and red would make the organiser hesitate over it. */
.etb-team-withdrawn[b-goscrmn58y] {
    border-color: var(--border-default) !important;
    opacity: 0.72;
}
/* /Components/Pages/Events/EventTeamNames.razor.rz.scp.css */
/* Bulk team naming. Two columns on a desktop (who they are | what they're called), stacking on a
   phone so the roster always sits directly above the box it belongs to.

   Tokens only, and specifically the ones the sibling EventTeamAdmin page uses — a plausible-looking
   name that is not actually defined (--card-bg, --border-color) resolves to nothing and renders an
   invisible card on the dark theme. */

.etn-list[b-02ao8zazmb] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.etn-row[b-02ao8zazmb] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 0.75rem;
    align-items: center;
    padding: 0.75rem;
    border: 1px solid var(--border-subtle);
    border-radius: 0.5rem;
    background: var(--bg-raised);
}

.etn-current[b-02ao8zazmb] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--text-muted);
    font-variant-numeric: tabular-nums;
}

.etn-members[b-02ao8zazmb] {
    font-size: 0.85rem;
    /* The roster is the identifying information on this screen — it must not be dimmed to the point
       of being hard to read, which is what --text-muted would do to a four-name list. */
    color: var(--text-primary);
    overflow-wrap: anywhere;
}

.etn-input[b-02ao8zazmb]  .form-control,
.etn-input input[b-02ao8zazmb] {
    /* An organiser types 36 of these in a row, often on a tablet in a clubhouse. */
    min-height: var(--touch-target-min);
}

/* Deliberately NOT sticky — see the note in EventTeamNames.razor. Two bars in normal flow, one
   above the list and one below, so a Save is always within a short scroll. */
.etn-savebar[b-02ao8zazmb] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    justify-content: space-between;
    margin-block: 0.75rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--border-default);
    border-radius: 0.5rem;
    background: var(--bg-raised);
}

.etn-savebar-count[b-02ao8zazmb] {
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--text-muted);
}

@media (max-width: 640px) {
    .etn-row[b-02ao8zazmb] {
        grid-template-columns: minmax(0, 1fr);
        gap: 0.5rem;
    }
}
/* /Components/Pages/Events/Field.razor.rz.scp.css */
/* ── Registered Players table ────────────────────────────────── */
/* Global .table rule in components.css covers base text/border.  */
/* These rules add page-specific structure on top.                */

.fld-players-table tbody tr:last-child td[b-yegxqi6zbq] {
    border-bottom: none;
}

/* ── O02 · never clip ──────────────────────────────────────────
   Measured at 390px before the fix: a 525px table inside a 294px wrapper, Withdraw at
   x=486 — off-screen right, with no scrollbar, no fade and no hint. On desktop the table
   scrolls INSIDE its card and paints an edge cue on whichever side has more to show
   (the cover gradients ride the content via background-attachment: local, so the cue
   disappears when everything fits). On a phone the same rows become one card per player. */
.fld-table-wrap[b-yegxqi6zbq] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    background:
        linear-gradient(to right, var(--b9-card-bg) 30%, rgba(0, 0, 0, 0)),
        linear-gradient(to right, rgba(0, 0, 0, 0), var(--b9-card-bg) 70%) 100% 0,
        radial-gradient(farthest-side at 0 50%, var(--border-strong), rgba(0, 0, 0, 0)),
        radial-gradient(farthest-side at 100% 50%, var(--border-strong), rgba(0, 0, 0, 0)) 100% 0;
    background-repeat: no-repeat;
    background-size: 40px 100%, 40px 100%, 16px 100%, 16px 100%;
    background-attachment: local, local, scroll, scroll;
}

/* A long address must never be the thing that widens the table past its card. */
.fld-player-email[b-yegxqi6zbq] {
    overflow-wrap: anywhere;
}

@media (max-width: 767.98px) {
    /* The wrapper no longer has anything to scroll. */
    .fld-table-wrap[b-yegxqi6zbq] {
        overflow-x: visible;
        background: none;
    }

    .fld-players-table thead[b-yegxqi6zbq] {
        position: absolute;
        width: 1px;
        height: 1px;
        overflow: hidden;
        clip: rect(0 0 0 0);
        white-space: nowrap; /* kept for screen readers */
    }

    .fld-players-table[b-yegxqi6zbq],
    .fld-players-table tbody[b-yegxqi6zbq],
    .fld-players-table tr[b-yegxqi6zbq] {
        display: block;
        width: 100%;
    }

    .fld-players-table tbody tr[b-yegxqi6zbq] {
        border: 1px solid var(--border-subtle);
        border-radius: 10px;
        padding: 0.5rem 0.75rem;
        margin-bottom: 0.6rem;
        background: var(--bg-elevated);
    }

    .fld-players-table tbody td[b-yegxqi6zbq] {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 0.75rem;
        width: 100%;
        border: 0 !important;
        padding: 0.3rem 0;
        text-align: left !important;
    }

    /* The label the hidden header used to carry. */
    .fld-players-table tbody td[data-label]:not([data-label=""])[b-yegxqi6zbq]::before {
        content: attr(data-label);
        font-size: 0.875rem;
        font-weight: 600;
        color: var(--text-secondary);
        flex: 0 0 auto;
    }

    /* The row number is noise once the rows are cards. */
    .fld-players-table tbody td.fld-c-num[b-yegxqi6zbq] {
        display: none;
    }

    /* The name leads, on its own line, at full size. */
    .fld-players-table tbody td.fld-c-player[b-yegxqi6zbq] {
        display: block;
        padding-bottom: 0.35rem;
    }

    .fld-players-table tbody td.fld-c-player[b-yegxqi6zbq]::before {
        content: none;
    }

    /* Invite / Withdraw become real full-width controls, not a cell edge. */
    .fld-players-table tbody td.fld-c-action > div[b-yegxqi6zbq] {
        width: 100%;
    }

    .fld-players-table tbody td.fld-c-action .btn[b-yegxqi6zbq] {
        flex: 1 1 auto;
        min-height: 48px;
    }
}

/* ── Roster rows (Add from Roster panel) ─────────────────────── */

.fld-roster-row:last-child[b-yegxqi6zbq] {
    border-bottom: none !important;
}

/* Translucent tint on hover — player name stays readable in all themes */
.fld-roster-row:hover[b-yegxqi6zbq] {
    background: rgba(255, 255, 255, 0.05);
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.fld-tee-select[b-yegxqi6zbq] { max-width: 200px; }

.fld-badge-soft[b-yegxqi6zbq] { background: var(--bg-elevated); color: var(--text-secondary); }
.fld-badge-strong[b-yegxqi6zbq] { background: var(--bg-elevated); color: var(--text-primary); }
.fld-badge-xs[b-yegxqi6zbq] { font-size: var(--font-size-chip); }

.fld-roster-scroll[b-yegxqi6zbq] { max-height: 420px; overflow-y: auto; }
.fld-hint[b-yegxqi6zbq] { font-size: var(--font-size-sm); }
/* /Components/Pages/Events/Flyer.razor.rz.scp.css */
/*
   Events/Flyer.razor.css
   All shared .flyer-* styles are in wwwroot/flyer.css (global),
   loaded via <HeadContent> in FlyerLayout.razor.
   Add event-specific style overrides here only if needed.
*/
/* /Components/Pages/Events/ImportPlayers.razor.rz.scp.css */
/* Add Players from a List — event roster import.
   Tokens only; no raw colors, no hardcoded light backgrounds (dark-theme safe). */

.ip-page[b-5g551tq9dt] {
    max-width: 1100px;
}

.ip-subtitle[b-5g551tq9dt] {
    color: var(--b9-text-muted);
    font-size: 0.9rem;
}

.ip-card[b-5g551tq9dt] {
    background: var(--b9-surface-alt);
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-lg, 12px);
    box-shadow: none;
}

.ip-help[b-5g551tq9dt] {
    color: var(--b9-text-muted);
    font-size: 0.9rem;
    margin-bottom: 0;
}

.ip-muted[b-5g551tq9dt] {
    color: var(--b9-text-soft);
}

/* ── Example shapes ─────────────────────────────────────────────────────── */

.ip-shapes[b-5g551tq9dt] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
    gap: 0.75rem;
}

.ip-shape[b-5g551tq9dt] {
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-md, 8px);
    overflow: hidden;
}

.ip-shape-label[b-5g551tq9dt] {
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: 0.04em;
    padding: 0.4rem 0.75rem;
    text-transform: uppercase;
}

.ip-shape-body[b-5g551tq9dt] {
    background: var(--b9-surface);
    color: var(--b9-text);
    font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
    font-size: var(--font-size-sm);
    padding: 0.75rem;
    overflow-x: auto;
    white-space: nowrap;
}

.ip-shape-body > div + div[b-5g551tq9dt] {
    margin-top: 0.2rem;
    color: var(--b9-text-muted);
}

.ip-file[b-5g551tq9dt] {
    max-width: 420px;
    min-height: 48px;
}

/* ── Detected summary ───────────────────────────────────────────────────── */

.ip-detected[b-5g551tq9dt] {
    color: var(--b9-text);
    font-size: 1rem;
    font-weight: 600;
}

.ip-details summary[b-5g551tq9dt] {
    color: var(--b9-text-muted);
    cursor: pointer;
    font-size: 0.875rem;
    min-height: 44px;
    display: flex;
    align-items: center;
}

.ip-ignored[b-5g551tq9dt] {
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    margin: 0.25rem 0 0;
    padding-left: 1.25rem;
}

/* ── Counts ─────────────────────────────────────────────────────────────── */

.ip-counts[b-5g551tq9dt] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.ip-count[b-5g551tq9dt] {
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: 0.35rem 0.85rem;
}

.ip-count-new[b-5g551tq9dt]    { background: var(--b9-primary-soft);      color: var(--b9-primary-text); }
.ip-count-linked[b-5g551tq9dt] { background: var(--b9-success-soft);      color: var(--b9-success-text); }
.ip-count-warn[b-5g551tq9dt]   { background: var(--b9-warning-soft);      color: var(--b9-warning-text); }
.ip-count-skip[b-5g551tq9dt]   { background: var(--b9-surface-muted);     color: var(--b9-text-muted); }

/* ── Table ──────────────────────────────────────────────────────────────── */

.ip-table[b-5g551tq9dt] {
    color: var(--b9-text);
}

.ip-table thead th[b-5g551tq9dt] {
    background: var(--b9-surface-muted);
    border-bottom: 1px solid var(--b9-border);
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    white-space: nowrap;
}

.ip-table td[b-5g551tq9dt] {
    border-bottom: 1px solid var(--b9-border);
    vertical-align: middle;
}

.ip-row-attention[b-5g551tq9dt] {
    background: var(--b9-warning-soft);
}

.ip-name[b-5g551tq9dt] {
    font-weight: 600;
}

.ip-hint[b-5g551tq9dt] {
    color: var(--b9-warning-text);
    font-size: var(--font-size-sm);
}

.ip-team-cell[b-5g551tq9dt] {
    white-space: nowrap;
}

.ip-team[b-5g551tq9dt] {
    background: var(--b9-surface-muted);
    border-radius: var(--radius-sm, 6px);
    display: inline-block;
    font-weight: 700;
    min-width: 2rem;
    padding: 0.15rem 0.5rem;
    text-align: center;
}

.ip-cart[b-5g551tq9dt] {
    color: var(--b9-text-soft);
    display: block;
    font-size: var(--font-size-sm);
    margin-top: 0.15rem;
}

.ip-select[b-5g551tq9dt] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border-strong);
    color: var(--b9-text);
    min-height: 48px;
    min-width: 220px;
}

.ip-select-narrow[b-5g551tq9dt] {
    min-width: 130px;
}

/* ── Summary + actions ──────────────────────────────────────────────────── */

.ip-summary[b-5g551tq9dt] {
    color: var(--b9-text);
    line-height: 1.9;
    margin: 0;
    padding-left: 1.25rem;
}

.ip-icon-success[b-5g551tq9dt] {
    color: var(--b9-success);
}

.ip-actions[b-5g551tq9dt] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.ip-btn[b-5g551tq9dt] {
    min-height: 48px;
}

@media (max-width: 576px) {
    .ip-select[b-5g551tq9dt] { min-width: 100%; }
    .ip-actions .ip-btn[b-5g551tq9dt] { flex: 1 1 100%; }
}
/* /Components/Pages/Events/Index.razor.rz.scp.css */
/* ── Events Index page ────────────────────────────────────────────────── */

.ev-page[b-1npqm713ob] {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    max-width: var(--admin-list-page-max-width, 1120px);
    margin: 0 auto;
    padding: 1.1rem 0 2.75rem;
    overflow-x: hidden;
}

.ev-header[b-1npqm713ob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
    gap: 1rem;
    flex-wrap: wrap;
}

.ev-header-left[b-1npqm713ob] {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    flex: 1 1 420px;
    min-width: 0;
}

.ev-header-copy[b-1npqm713ob] {
    display: flex;
    flex-direction: column;
    gap: 0.18rem;
    min-width: 0;
}

.ev-title[b-1npqm713ob] {
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--b9-text);
    margin: 0;
}

.ev-subtitle[b-1npqm713ob] {
    font-size: 0.91rem;
    color: var(--b9-text-soft);
    max-width: min(42rem, 100%);
    line-height: 1.3;
}

.ev-header-actions[b-1npqm713ob] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    flex: 0 0 auto;
    margin-left: auto;
}

.ev-header-action-btn[b-1npqm713ob] {
    white-space: nowrap;
    min-width: 146px;
    min-height: 2.5rem;
}

.ev-loading[b-1npqm713ob] {
    padding: 3rem 0;
    text-align: center;
    color: var(--b9-text-soft);
    font-size: .9375rem;
}

.ev-empty[b-1npqm713ob] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 2.75rem 1rem;
    text-align: center;
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    background: var(--b9-surface);
}

.ev-empty-icon[b-1npqm713ob] {
    font-size: 2.5rem;
    color: var(--b9-text-soft);
}

.ev-empty-title[b-1npqm713ob] {
    font-weight: 700;
    color: var(--b9-text);
}

.ev-empty-text[b-1npqm713ob] {
    color: var(--b9-text-soft);
    font-size: .95rem;
    max-width: 440px;
    margin: 0;
}

.ev-count[b-1npqm713ob] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
}

/* The four ev-ops cards that used to stand between an admin and their events were removed by
   the UX audit (O04 / X09). Their counts now render through Components/Shared/OpsStatLine.razor
   at the foot of the page, and the "needs attention" control's 48px target and focus ring live
   with it in wwwroot/css/brand-components.css — one implementation for all six ops pages. */

.dash-card[b-1npqm713ob] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    overflow: hidden;
}

.dash-card-header[b-1npqm713ob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .72rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    gap: .62rem;
}

.dash-card-heading[b-1npqm713ob] {
    display: flex;
    flex-direction: column;
    gap: .14rem;
    min-width: 0;
}

.dash-card-title[b-1npqm713ob] {
    font-weight: 700;
    font-size: .95rem;
    color: var(--b9-text);
}

.dash-card-subtitle[b-1npqm713ob] {
    font-size: var(--font-size-sm);
    line-height: 1.2;
    color: var(--b9-text-soft);
}

.ev-filter-bar[b-1npqm713ob] {
    display: flex;
    align-items: center;
    gap: .45rem;
    flex-wrap: wrap;
    padding: .62rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    background: color-mix(in srgb, var(--b9-surface-muted) 55%, transparent);
}

.ev-filter-pill[b-1npqm713ob] {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    border: 1px solid var(--b9-border);
    border-radius: 999px;
    background: transparent;
    color: var(--b9-text-soft);
    padding: .34rem .72rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.ev-filter-pill.is-active[b-1npqm713ob] {
    color: var(--b9-text);
    border-color: color-mix(in srgb, var(--b9-primary) 34%, var(--b9-border));
    background: color-mix(in srgb, var(--b9-primary) 10%, transparent);
}

.ev-filter-pill-count[b-1npqm713ob] {
    display: inline-flex;
    min-width: 1.35rem;
    min-height: 1.35rem;
    align-items: center;
    justify-content: center;
    padding: 0 .32rem;
    border-radius: 999px;
    background: color-mix(in srgb, var(--b9-surface-muted) 85%, transparent);
    color: inherit;
    font-size: var(--font-size-chip);
}

.ev-filter-empty[b-1npqm713ob] {
    padding: 1.25rem;
    color: var(--b9-text-soft);
    font-size: .9rem;
}

.etable-wrap[b-1npqm713ob] {
    overflow-x: auto;
    container-type: inline-size;
}

.etable[b-1npqm713ob] {
    width: 100%;
    border-collapse: collapse;
    table-layout: auto;
    font-size: .875rem;
}

.etable thead th[b-1npqm713ob] {
    padding: .56rem .8rem;
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: .03em;
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
    background: var(--b9-surface-muted);
}

.etable tbody tr[b-1npqm713ob] {
    border-bottom: 1px solid var(--b9-border-light, var(--b9-border));
    transition: background .12s, box-shadow .12s;
}

.etable tbody tr:last-child[b-1npqm713ob] {
    border-bottom: none;
}

.etable tbody tr:hover[b-1npqm713ob] {
    background: color-mix(in srgb, var(--b9-surface-muted) 82%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--b9-primary) 20%, transparent);
}

.evtr-live[b-1npqm713ob] {
    background: color-mix(in srgb, var(--b9-success) 4%, transparent);
}

.etable tbody td[b-1npqm713ob] {
    padding: .68rem .8rem;
    vertical-align: middle;
    color: var(--b9-text);
}

.etable thead th:last-child[b-1npqm713ob],
.etable tbody td:last-child[b-1npqm713ob] {
    padding-right: 1rem;
}

.etd-name[b-1npqm713ob] {
    min-width: 220px;
}

.etd-name-stack[b-1npqm713ob] {
    display: flex;
    flex-direction: column;
    gap: .28rem;
}

.etd-name-link[b-1npqm713ob] {
    display: block;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
    word-break: normal;
    overflow-wrap: anywhere;
    hyphens: auto;
    font-size: .93rem;
    font-weight: 700;
    color: var(--b9-text);
    line-height: 1.25;
    text-decoration: none;
}

.etd-name-link:hover[b-1npqm713ob] {
    text-decoration: underline;
    color: var(--b9-primary-text);
}

.evtd-course[b-1npqm713ob] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    line-height: 1.2;
}

.evtd-inline-meta[b-1npqm713ob] {
    display: none;
    flex-wrap: wrap;
    gap: .35rem .65rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    line-height: 1.3;
}

.evtd-inline-meta span[b-1npqm713ob] {
    position: relative;
}

.evtd-inline-meta span + span[b-1npqm713ob]::before {
    content: "·";
    margin-right: .45rem;
    color: color-mix(in srgb, var(--b9-text-soft) 70%, transparent);
}

.evtd-format[b-1npqm713ob],
.evtd-date[b-1npqm713ob],
.evtd-players[b-1npqm713ob] {
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
    line-height: 1.2;
}

.evtd-date[b-1npqm713ob] {
    white-space: nowrap;
}

.evtd-status[b-1npqm713ob] {
    white-space: nowrap;
}

.evtd-actions-cell[b-1npqm713ob] {
    white-space: nowrap;
    min-width: 0;
}

.evtd-action-stack[b-1npqm713ob] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .32rem;
}

.etd-row-action[b-1npqm713ob] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.1rem;
    padding: .38rem .82rem;
    border-radius: 999px;
    border: 1px solid var(--b9-border);
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: .02em;
    white-space: nowrap;
    color: var(--b9-text-soft);
    background: transparent;
    text-decoration: none;
}

.etd-row-action:hover[b-1npqm713ob] {
    background: var(--b9-surface-muted);
    color: var(--b9-text);
}

.etd-row-action-primary[b-1npqm713ob] {
    color: var(--b9-text);
    border-color: var(--b9-border-strong, var(--b9-border));
    background: color-mix(in srgb, var(--b9-primary) 10%, transparent);
    min-height: 2.5rem;
    padding: .5rem 1rem;
}

.evtd-secondary-actions[b-1npqm713ob] {
    display: flex;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: .2rem .55rem;
    max-width: 18rem;
}

.evtd-secondary-action[b-1npqm713ob] {
    border: none;
    background: transparent;
    padding: .22rem .08rem;
    min-height: 1.5rem;
    font-size: var(--font-size-sm);
    line-height: 1.1;
    color: var(--b9-text-soft);
    opacity: .82;
    text-decoration: none;
}

.evtd-secondary-action:hover[b-1npqm713ob] {
    color: var(--b9-text);
    opacity: 1;
    text-decoration: underline;
}

.evtd-secondary-button[b-1npqm713ob] {
    cursor: pointer;
}

.evtd-delete-action[b-1npqm713ob] {
    color: var(--danger, #ef4444) !important;
    opacity: .7;
}

.evtd-delete-action:hover[b-1npqm713ob] {
    color: var(--danger, #ef4444) !important;
    opacity: 1;
    text-decoration: underline;
}

.estatus[b-1npqm713ob] {
    display: inline-flex;
    align-items: center;
    padding: .2rem .56rem;
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    white-space: nowrap;
    letter-spacing: .02em;
    border: 1px solid transparent;
}

.estatus-active[b-1npqm713ob] {
    background: color-mix(in srgb, var(--b9-success) 8%, transparent);
    color: color-mix(in srgb, var(--b9-success) 70%, var(--b9-text));
    border-color: color-mix(in srgb, var(--b9-success) 36%, var(--b9-border));
}

.estatus-open[b-1npqm713ob] {
    background: color-mix(in srgb, var(--b9-primary) 10%, transparent);
    color: var(--b9-primary-text);
    border-color: color-mix(in srgb, var(--b9-primary) 34%, var(--b9-border));
}

.estatus-draft[b-1npqm713ob] {
    background: var(--b9-surface-muted, rgba(148, 163, 184, 0.18));
    color: var(--b9-text-soft, #cbd5e1);
    border-color: var(--b9-border, rgba(148, 163, 184, 0.35));
}

/* The indigo pill was the one status in this set written in raw hex rather than through the
   palette, and #c7d2fe is the indigo that reads on charcoal: on the light page, composited
   over its own 16% indigo tint, it measured 1.16:1 — "Closed" on every finished event in the
   list. --b9-indigo-text is the theme-aware twin (it resolves to #A5B4FC in dark, which is
   the same pale indigo this was reaching for). */
.estatus-closed[b-1npqm713ob] {
    background: rgba(99, 102, 241, 0.16);
    color: var(--b9-indigo-text);
    border-color: rgba(99, 102, 241, 0.42);
}

/* X14 — the day has been and gone and nobody has started, moved or closed it. Amber, not red:
   nothing has broken, somebody just has to decide. --b9-warning-soft/-text are defined in both
   themes (brand-tokens.css), so this reads on the dark page and the daylight one. */
.estatus-passed[b-1npqm713ob] {
    background: var(--b9-warning-soft);
    color: var(--b9-warning-text);
    border-color: color-mix(in srgb, var(--b9-warning-text) 40%, var(--b9-border));
}

.estatus-cancelled[b-1npqm713ob] {
    background: var(--b9-danger-soft, rgba(239, 68, 68, 0.16));
    color: var(--b9-danger-text, #fca5a5);
    border-color: var(--b9-danger, rgba(239, 68, 68, 0.45));
}

.col-format[b-1npqm713ob] { width: 92px; }
.col-date[b-1npqm713ob] { width: 118px; }
.col-players[b-1npqm713ob] { width: 84px; }
.col-status[b-1npqm713ob] { width: 98px; }
.col-actions[b-1npqm713ob] { width: 208px; }

@container (max-width: 760px) {
    .col-players[b-1npqm713ob] {
        display: none;
    }

    .evtd-inline-meta[b-1npqm713ob] {
        display: flex;
    }
}

@container (max-width: 680px) {
    .col-format[b-1npqm713ob] {
        display: none;
    }
}

@container (max-width: 600px) {
    .col-date[b-1npqm713ob] {
        display: none;
    }

    .etd-name[b-1npqm713ob] {
        min-width: 0;
    }
}

@container (max-width: 860px) {
    .etable thead[b-1npqm713ob] {
        display: none;
    }

    .etable-wrap[b-1npqm713ob] {
        overflow-x: hidden;
    }

    .etable[b-1npqm713ob],
    .etable tbody[b-1npqm713ob],
    .etable tr[b-1npqm713ob],
    .etable td[b-1npqm713ob] {
        display: block;
        width: 100%;
    }

    .etable tbody tr[b-1npqm713ob] {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto fit-content(47%);
        column-gap: .42rem;
        row-gap: .22rem;
        align-items: start;
        padding: .56rem .74rem;
        margin: .38rem 0;
        border: 1px solid color-mix(in srgb, var(--b9-border) 84%, var(--b9-primary) 16%);
        border-radius: 10px;
        background: linear-gradient(
            180deg,
            color-mix(in srgb, var(--b9-surface) 95%, black 5%) 0%,
            color-mix(in srgb, var(--b9-surface) 89%, black 11%) 100%
        );
        box-shadow: 0 1px 0 rgba(15, 23, 42, .18), inset 0 0 0 1px color-mix(in srgb, var(--b9-surface-muted) 28%, transparent);
    }

    .etable tbody td[b-1npqm713ob] {
        padding: 0;
        border: 0;
    }

    .etable tbody td.col-format[b-1npqm713ob],
    .etable tbody td.col-date[b-1npqm713ob],
    .etable tbody td.col-players[b-1npqm713ob] {
        display: none !important;
    }

    .evtd-inline-meta[b-1npqm713ob] {
        display: flex;
        gap: .24rem .5rem;
    }

    .etable tbody td.col-status[b-1npqm713ob],
    .etable tbody td.col-actions[b-1npqm713ob] {
        display: block !important;
    }

    .etable tbody td.etd-name[b-1npqm713ob] {
        display: contents !important;
        min-width: 0;
    }

    .etable tbody td.col-status[b-1npqm713ob] {
        display: contents !important;
    }

    .etable tbody td.col-actions[b-1npqm713ob] {
        display: contents !important;
        min-width: 0;
    }

    .etd-name-stack[b-1npqm713ob],
    .evtd-action-stack[b-1npqm713ob] {
        display: contents;
    }

    .etd-name-link[b-1npqm713ob] {
        grid-column: 1;
        grid-row: 1;
        align-self: center;
        min-width: 0;
        font-size: .91rem;
        line-height: 1.18;
    }

    .estatus[b-1npqm713ob] {
        grid-column: 2;
        grid-row: 1;
        justify-self: start;
        align-self: center;
    }

    /* X14 — every other pill on this page is one short word, and the name column is
       minmax(0, 1fr): a two-word pill takes its extra width straight out of the event's name,
       which at 390px broke "Senior 3-Player Scramble" mid-word. This one is allowed to stack
       onto two lines instead, so it occupies about the width of the widest word and the name
       keeps the room it had. Full size — a pill nobody can read is not a fix. */
    .estatus-passed[b-1npqm713ob] {
        white-space: normal;
        max-width: 4.6rem;
        text-align: center;
        line-height: 1.12;
    }

    .evtd-status[b-1npqm713ob] {
        margin-top: 0;
        white-space: nowrap;
    }

    .evtd-actions-cell[b-1npqm713ob] {
        margin-top: 0;
        white-space: normal;
    }

    .evtd-action-stack[b-1npqm713ob],
    .evtd-secondary-actions[b-1npqm713ob] {
        align-items: flex-end;
        justify-content: flex-end;
        max-width: none;
    }

    .evtd-action-stack[b-1npqm713ob] {
        gap: .12rem;
    }

    .etd-row-action[b-1npqm713ob] {
        min-width: 0;
        width: auto;
        max-width: 100%;
    }

    .etd-row-action-primary[b-1npqm713ob] {
        grid-column: 3;
        grid-row: 1;
        justify-self: end;
        align-self: center;
        min-height: 2.18rem;
        min-width: 8.75rem;
        max-width: 100%;
        padding: .34rem .76rem;
        margin-right: .08rem;
        border-radius: 10px;
        border-color: color-mix(in srgb, var(--b9-border) 82%, var(--b9-primary) 18%);
        background: color-mix(in srgb, var(--b9-primary) 5%, transparent);
        box-shadow: inset 0 1px 0 color-mix(in srgb, white 24%, transparent);
    }

    .evtd-course[b-1npqm713ob] {
        grid-column: 1;
        grid-row: 2;
        align-self: start;
        font-size: var(--font-size-sm);
        line-height: 1.15;
    }

    .evtd-secondary-actions[b-1npqm713ob] {
        grid-column: 3;
        grid-row: 2;
        justify-self: end;
        align-self: start;
        max-width: 100%;
        padding-right: .08rem;
        margin-top: 0;
        gap: .08rem .34rem;
    }

    .evtd-secondary-action[b-1npqm713ob] {
        display: inline-flex;
        align-items: center;
        min-height: 1.52rem;
        padding: .08rem .12rem;
        border-radius: 5px;
        font-size: var(--font-size-sm);
        line-height: 1;
        opacity: .74;
    }

    /* Meta (format · date · players) spans the flexible name column on its own
       row. It must NOT sit alone in the middle `auto` track — doing so makes
       that track grow to fit the whole string, starving the minmax(0,1fr) name
       column so the event name wraps one letter per line. Spanning into the 1fr
       track keeps the middle track at the status-badge width (matches Leagues). */
    .evtd-inline-meta[b-1npqm713ob] {
        grid-column: 1 / -1;
        grid-row: 3;
        display: inline-flex;
        align-self: start;
        justify-self: start;
        gap: .2rem .46rem;
        line-height: 1.15;
        white-space: normal;
    }
}

@media (max-width: 1280px) {
    .ev-header[b-1npqm713ob] {
        justify-content: flex-start;
        align-items: flex-start;
    }

    .ev-header-left[b-1npqm713ob] {
        flex-basis: 100%;
    }

    .ev-header-actions[b-1npqm713ob] {
        margin-left: 0;
        width: 100%;
        justify-content: flex-start;
    }

    .ev-header-action-btn[b-1npqm713ob] {
        width: auto;
    }
}

/* The clone dialog moved to Components/UI/CloneEventDialog.razor(.css) when the event page
   grew its own "Run it again" door — one dialog, one stylesheet, two hosts. */
/* /Components/Pages/Events/Leaderboard.razor.rz.scp.css */
/* Palette on the component's ROOT WRAPPER CLASS, not :host — Blazor CSS isolation
   compiles :host to a selector that never matches (no shadow DOM), so vars declared
   there silently resolve to nothing (see blazor-scoped-root-vars bug class: text
   inherits, backgrounds collapse to transparent). Custom properties declared here
   cascade to every descendant of .lb-page. */
.lb-page[b-4ktgyoi1k6] {
    --lb-bg: #071326;
    --lb-bg-alt: #0b1a32;
    --lb-card: #10213d;
    --lb-card-2: #132746;
    --lb-border: #28446f;
    --lb-text: #f8fbff;
    --lb-text-soft: #c5d6ef;
    --lb-text-muted: #9db3d2;
    --lb-accent: #56c7ff;
    --lb-accent-2: #9ee7ff;
    --lb-accent-soft: rgba(86, 199, 255, 0.12);
    --lb-success: #8df3c6;
    --lb-success-soft: rgba(141, 243, 198, 0.14);
    --lb-danger: #ff9ca8;
}

.lb-page[b-4ktgyoi1k6] {
    min-height: 100vh;
    background: radial-gradient(circle at 14% 0%, #133159 0%, #071326 56%, #040c1b 100%);
    color: var(--lb-text);
}

.lb-hero[b-4ktgyoi1k6] {
    position: sticky;
    top: 0;
    z-index: 100;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.9rem;
    padding: 0.85rem 1rem;
    border-bottom: 1px solid var(--lb-border);
    background: linear-gradient(180deg, rgba(7, 19, 38, 0.96) 0%, rgba(7, 19, 38, 0.9) 100%);
    backdrop-filter: blur(8px);
}

.lb-hero-main[b-4ktgyoi1k6] {
    display: flex;
    align-items: flex-start;
    gap: 0.85rem;
    min-width: 0;
}

.lb-back-btn[b-4ktgyoi1k6],
.lb-scorecard-btn[b-4ktgyoi1k6],
.lb-signin-btn[b-4ktgyoi1k6] {
    /* Measured 89x39 and 160x39 on a 375px phone. This is the board friends and family open on
       their phones, and Back / My Scorecard are its two real actions. */
    min-height: var(--touch-target, 48px);
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    border-radius: 999px;
    text-decoration: none;
    font-weight: 700;
    letter-spacing: 0.01em;
}

.lb-back-btn[b-4ktgyoi1k6] {
    padding: 0.42rem 0.78rem;
    border: 1px solid var(--lb-border);
    color: var(--lb-text-soft);
    background: rgba(14, 34, 62, 0.65);
}

.lb-back-btn:hover[b-4ktgyoi1k6],
.lb-back-btn:focus-visible[b-4ktgyoi1k6] {
    color: var(--lb-text);
    border-color: #3f659b;
}

.lb-title-block[b-4ktgyoi1k6] {
    min-width: 0;
}

/* ── Org branding logo (branding.leaderboard feature) ── */
.lb-org-logo[b-4ktgyoi1k6] {
    width: 48px;
    height: 48px;
    object-fit: contain;
    border-radius: 10px;
    flex-shrink: 0;
    background: rgba(255,255,255,0.05);
}

.lb-event-name[b-4ktgyoi1k6] {
    margin: 0;
    font-size: clamp(1rem, 2.4vw, 1.35rem);
    line-height: 1.2;
    color: var(--lb-text);
    font-weight: 800;
    text-shadow: 0 1px 0 rgba(0, 0, 0, 0.35);
}

.lb-meta-row[b-4ktgyoi1k6] {
    margin-top: 0.42rem;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.lb-chip[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--font-size-sm);
    color: var(--lb-text-soft);
    border: 1px solid var(--lb-border);
    background: rgba(14, 34, 62, 0.6);
    border-radius: 999px;
    padding: 0.17rem 0.55rem;
}

.lb-tee-dot[b-4ktgyoi1k6] {
    display: inline-block;
    width: 9px;
    height: 9px;
    border-radius: 50%;
}

.lb-hero-actions[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.lb-status-pill[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 999px;
    padding: 0.24rem 0.62rem;
    border: 1px solid transparent;
    font-size: var(--font-size-chip);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.lb-status-live[b-4ktgyoi1k6] {
    color: #fff3f4;
    background: rgba(182, 31, 52, 0.35);
    border-color: rgba(255, 146, 160, 0.45);
}

.lb-status-final[b-4ktgyoi1k6] {
    color: #f3f6fd;
    background: rgba(31, 67, 117, 0.4);
    border-color: rgba(138, 184, 251, 0.4);
}

.lb-status-dot[b-4ktgyoi1k6] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: currentColor;
    animation: lb-pulse-b-4ktgyoi1k6 1.2s infinite;
}

.lb-scorecard-btn[b-4ktgyoi1k6] {
    color: #041425;
    background: linear-gradient(180deg, #9af6ca, #75ddb0);
    border: 1px solid #8be7be;
    padding: 0.42rem 0.8rem;
}

.lb-signin-btn[b-4ktgyoi1k6] {
    color: var(--lb-text-soft);
    background: rgba(14, 34, 62, 0.7);
    border: 1px solid #3c5f92;
    padding: 0.42rem 0.8rem;
}

.lb-refreshing[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    color: var(--lb-text-soft);
    font-size: var(--font-size-sm);
}

.lb-shell[b-4ktgyoi1k6] {
    padding: 1rem;
    max-width: 1200px;
    margin: 0 auto;
}

.lb-empty-state[b-4ktgyoi1k6],
.lb-empty-card[b-4ktgyoi1k6],
.lb-matchplay-note[b-4ktgyoi1k6] {
    border-radius: 14px;
    border: 1px solid var(--lb-border);
    background: linear-gradient(180deg, var(--lb-card) 0%, var(--lb-card-2) 100%);
    color: var(--lb-text-soft);
    text-align: center;
    padding: 2.2rem 1.1rem;
}

.lb-empty-card i[b-4ktgyoi1k6] {
    font-size: 2rem;
    color: var(--lb-accent-2);
}

.lb-empty-card h2[b-4ktgyoi1k6],
.lb-matchplay-note h3[b-4ktgyoi1k6] {
    color: var(--lb-text);
    margin-top: 0.8rem;
}

.lb-matchplay-action[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.7rem;
    border-radius: 999px;
    text-decoration: none;
    font-weight: 800;
    letter-spacing: 0.01em;
    color: #041425;
    background: linear-gradient(180deg, var(--lb-accent-2), #7fd9ff);
    border: 1px solid #a5e6ff;
    padding: 0.48rem 0.9rem;
}

.lb-matchplay-action:hover[b-4ktgyoi1k6],
.lb-matchplay-action:focus-visible[b-4ktgyoi1k6] {
    color: #041425;
    filter: brightness(1.03);
    transform: translateY(-1px);
}

.lb-round-tabs[b-4ktgyoi1k6] {
    list-style: none;
    display: flex;
    gap: 0.35rem;
    margin: 0 0 0.95rem;
    padding: 0;
    flex-wrap: wrap;
}

.lb-round-tab[b-4ktgyoi1k6] {
    border: 1px solid #3a5f93;
    background: rgba(14, 34, 62, 0.6);
    color: var(--lb-text-soft);
    border-radius: 999px;
    padding: 0.28rem 0.66rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.lb-round-tab.active[b-4ktgyoi1k6],
.lb-round-tab:hover[b-4ktgyoi1k6],
.lb-round-tab:focus-visible[b-4ktgyoi1k6] {
    color: #051422;
    border-color: transparent;
    background: linear-gradient(180deg, var(--lb-accent-2), #7fd9ff);
}

.lb-round-date[b-4ktgyoi1k6] {
    margin-left: 0.32rem;
    font-size: var(--font-size-sm);
    opacity: 0.85;
}

.lb-mode-bar[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    border-radius: 999px;
    border: 1px solid #3a5f93;
    background: rgba(14, 34, 62, 0.58);
    padding: 0.28rem 0.4rem;
    margin-bottom: 0.75rem;
}

.lb-mode-label[b-4ktgyoi1k6] {
    color: var(--lb-text-soft);
    font-size: var(--font-size-sm);
    font-weight: 700;
    margin: 0 0.2rem;
}

.lb-mode-btn[b-4ktgyoi1k6] {
    border: none;
    border-radius: 999px;
    padding: 0.26rem 0.64rem;
    background: transparent;
    color: var(--lb-text-soft);
    font-size: var(--font-size-sm);
    font-weight: 800;
}

.lb-mode-btn.active[b-4ktgyoi1k6] {
    color: #051422;
    background: linear-gradient(180deg, var(--lb-accent-2), #7fd9ff);
}

.lb-mode-explain[b-4ktgyoi1k6] {
    border: 1px solid #3e6298;
    background: linear-gradient(180deg, rgba(16, 33, 61, 0.95) 0%, rgba(12, 26, 50, 0.95) 100%);
    border-radius: 12px;
    padding: 0.8rem 0.9rem;
    margin-bottom: 0.85rem;
}

.lb-mode-title[b-4ktgyoi1k6] {
    margin: 0;
    color: var(--lb-text);
    font-weight: 800;
}

.lb-mode-copy[b-4ktgyoi1k6] {
    margin: 0.2rem 0 0;
    color: var(--lb-text-soft);
    font-size: var(--font-size-sm);
}

.lb-explain-details[b-4ktgyoi1k6] {
    margin-top: 0.52rem;
}

.lb-explain-details summary[b-4ktgyoi1k6] {
    cursor: pointer;
    color: var(--lb-accent-2);
    font-size: var(--font-size-sm);
    font-weight: 700;
}

/* EV-FMT-1: honest "team standings are gross" note for Best Ball / Chapman events that have a
   handicap allowance configured (their team totals stay gross; only net skins reflect the allowance). */
.lb-gross-note[b-4ktgyoi1k6] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    border: 1px solid var(--lb-border);
    border-radius: 12px;
    padding: 0.7rem 0.85rem;
    margin-bottom: 0.85rem;
    color: var(--lb-text-soft);
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

.lb-gross-note i[b-4ktgyoi1k6] {
    color: var(--lb-accent-2);
    margin-top: 0.1rem;
    flex: 0 0 auto;
}

.lb-gross-note strong[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-weight: 800;
}

.lb-table-wrap[b-4ktgyoi1k6] {
    border: 1px solid var(--lb-border);
    border-radius: 14px;
    /* 🔴 Was overflow:hidden, which CLIPPED a wide board instead of letting it scroll — a
       multi-round net table lost its right-hand columns at tablet widths just above the card
       breakpoint, with no way to reach them. The rounded corners still clip; the table now scrolls
       inside its own box, so the page body never scrolls sideways either. */
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    background: linear-gradient(180deg, var(--lb-card) 0%, var(--lb-card-2) 100%);
    box-shadow: 0 10px 24px rgba(0, 0, 0, 0.28);
}

.lb-table[b-4ktgyoi1k6] {
    width: 100%;
    border-collapse: collapse;
    color: var(--lb-text);
}

.lb-table thead tr[b-4ktgyoi1k6] {
    background: rgba(7, 19, 38, 0.94);
}

.lb-table thead th[b-4ktgyoi1k6] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-soft);
    padding: 0.64rem 0.72rem;
    border-bottom: 1px solid var(--lb-border);
}

.lb-table tbody tr[b-4ktgyoi1k6] {
    border-top: 1px solid rgba(67, 103, 154, 0.45);
    transition: background 0.12s ease;
}

.lb-table tbody tr:hover[b-4ktgyoi1k6] {
    background: rgba(53, 115, 188, 0.16);
}

.lb-table tbody td[b-4ktgyoi1k6] {
    padding: 0.7rem 0.72rem;
    vertical-align: middle;
    color: var(--lb-text);
}

.col-rank[b-4ktgyoi1k6] { width: 48px; text-align: center; }
.col-player-name[b-4ktgyoi1k6] { min-width: 160px; }
.col-round[b-4ktgyoi1k6] { width: 58px; text-align: center; }
.col-thru[b-4ktgyoi1k6] { width: 62px; text-align: center; }
.col-score[b-4ktgyoi1k6] { width: 80px; text-align: center; }
.col-toPar[b-4ktgyoi1k6] { width: 86px; text-align: center; }
.col-hcp[b-4ktgyoi1k6] { width: 62px; text-align: center; color: var(--lb-text-muted); }

.row-gold[b-4ktgyoi1k6] { background: rgba(204, 157, 47, 0.16); }
.row-silver[b-4ktgyoi1k6] { background: rgba(154, 175, 212, 0.12); }
.row-bronze[b-4ktgyoi1k6] { background: rgba(167, 110, 69, 0.14); }
.row-no-score[b-4ktgyoi1k6] { opacity: 0.84; }

.lb-row-current[b-4ktgyoi1k6] {
    box-shadow: inset 0 0 0 1px rgba(100, 230, 255, 0.75);
    background: linear-gradient(90deg, rgba(72, 180, 211, 0.18) 0%, rgba(21, 48, 78, 0.3) 100%);
}

.rank-badge[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    font-size: var(--font-size-sm);
    font-weight: 900;
}

.rank-gold[b-4ktgyoi1k6] { background: #f6c84f; color: #2b1c00; }
.rank-silver[b-4ktgyoi1k6] { background: #bfd0e8; color: #14263f; }
.rank-bronze[b-4ktgyoi1k6] { background: #ce9d74; color: #2a1200; }
.rank-default[b-4ktgyoi1k6] { background: #2c4e7b; color: #edf5ff; }

.lb-name-cell[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.36rem;
}

.lb-entity-name[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-weight: 700;
}

.lb-you-badge[b-4ktgyoi1k6] {
    display: inline-block;
    border-radius: 999px;
    border: 1px solid #6dd8ff;
    background: rgba(79, 211, 255, 0.16);
    color: #d9f8ff;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.08rem 0.38rem;
}

.lb-team-members[b-4ktgyoi1k6] {
    margin-top: 0.18rem;
    color: var(--lb-text-muted);
    font-size: var(--font-size-sm);
}

.lb-round-cell[b-4ktgyoi1k6],
.lb-stat-muted[b-4ktgyoi1k6] {
    color: var(--lb-text-muted);
}

.lb-thru-complete[b-4ktgyoi1k6] {
    color: var(--lb-success);
    font-weight: 800;
}

.lb-dash[b-4ktgyoi1k6] {
    color: var(--lb-text-muted);
}

.to-par-even[b-4ktgyoi1k6] { color: var(--lb-success); font-weight: 800; }
.to-par-under[b-4ktgyoi1k6] { color: var(--lb-success); font-weight: 800; }
.to-par-over[b-4ktgyoi1k6] { color: var(--lb-danger); font-weight: 700; }

.lb-card-list[b-4ktgyoi1k6] {
    display: flex;
    flex-direction: column;
    gap: 0.56rem;
}

.lb-card[b-4ktgyoi1k6] {
    border-radius: 14px;
    border: 1px solid var(--lb-border);
    background: linear-gradient(180deg, var(--lb-card) 0%, var(--lb-card-2) 100%);
    padding: 0.82rem 0.88rem;
}

.lb-card-current[b-4ktgyoi1k6] {
    box-shadow: inset 0 0 0 1px rgba(100, 230, 255, 0.72);
    background: linear-gradient(180deg, rgba(20, 53, 89, 0.95) 0%, rgba(17, 41, 70, 0.95) 100%);
}

.card-gold[b-4ktgyoi1k6] { border-left: 4px solid #f6c84f; }
.card-silver[b-4ktgyoi1k6] { border-left: 4px solid #bfd0e8; }
.card-bronze[b-4ktgyoi1k6] { border-left: 4px solid #ce9d74; }

.lb-card-header[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 0.56rem;
}

.lb-card-name-wrap[b-4ktgyoi1k6] {
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 0.36rem;
}

/* A 180px ceiling with an ellipsis turned a real team into "G. Borgschatz/R. Borg…" on the
   results board of a finished event — the one place the name is the whole point, and there is no
   hover, no tooltip and no tap to read the rest of it on a phone. Team names are two surnames and
   a slash; they need a second line, not a cut. min-width:0 on the wrap already lets this shrink,
   so wrapping here cannot push the row sideways. */
.lb-card-name[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-size: 0.95rem;
    font-weight: 700;
    min-width: 0;
    overflow-wrap: anywhere;
    line-height: 1.25;
}

.lb-card-toPar[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-weight: 800;
    font-size: 1rem;
}

.lb-team-members-mobile[b-4ktgyoi1k6] {
    margin: 0.36rem 0 0.46rem;
}

.lb-card-stats[b-4ktgyoi1k6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.34rem 0.92rem;
}

.lb-stat[b-4ktgyoi1k6] {
    display: flex;
    flex-direction: column;
    min-width: 44px;
    align-items: center;
}

.lb-stat-label[b-4ktgyoi1k6] {
    color: var(--lb-text-muted);
    font-size: var(--font-size-sm);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 700;
}

.lb-stat-value[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-size: 0.89rem;
    font-weight: 700;
}

.lb-back-btn:focus-visible[b-4ktgyoi1k6],
.lb-scorecard-btn:focus-visible[b-4ktgyoi1k6],
.lb-signin-btn:focus-visible[b-4ktgyoi1k6],
.lb-matchplay-action:focus-visible[b-4ktgyoi1k6],
.lb-round-tab:focus-visible[b-4ktgyoi1k6],
.lb-mode-btn:focus-visible[b-4ktgyoi1k6],
.lb-explain-details summary:focus-visible[b-4ktgyoi1k6] {
    outline: 2px solid #9fe8ff;
    outline-offset: 2px;
}

/* ── G01: the format explainer, folded to one line ──────────────────────────
   "Scramble Format" as a full card took a third of a phone screen before the first row. It is
   one line now — a native <details>; the paragraph opens on "How it works". No script, and the
   whole line is the tap target. */
.lb-format-details[b-4ktgyoi1k6] {
    border-radius: 12px;
    border: 1px solid var(--lb-border);
    background: linear-gradient(180deg, var(--lb-card) 0%, var(--lb-card-2) 100%);
    color: var(--lb-text-soft);
    padding: 0 0.9rem;
    margin-bottom: 0.7rem;
}

.lb-format-details summary[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 48px;
    cursor: pointer;
    list-style: none;
    color: var(--lb-text);
    font-weight: 700;
    font-size: 0.95rem;
}

.lb-format-details summary[b-4ktgyoi1k6]::-webkit-details-marker { display: none; }
.lb-format-details summary > .bi-info-circle[b-4ktgyoi1k6] { color: var(--lb-accent-2); }

.lb-format-how[b-4ktgyoi1k6] {
    /* "How it works" is a control a user taps to learn the format — 13.6px is under the read floor. */
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    color: var(--lb-accent-2);
    font-size: var(--font-size-sm);
    white-space: nowrap;
}

.lb-format-details[open] .lb-format-how .bi-chevron-down[b-4ktgyoi1k6] { transform: rotate(180deg); }
.lb-format-details p[b-4ktgyoi1k6] { margin: 0 0 0.9rem; line-height: 1.5; }

.lb-format-details summary:focus-visible[b-4ktgyoi1k6] {
    outline: 2px solid var(--lb-accent-2);
    outline-offset: 2px;
}

/* ── G01: the results band, under the top three ─────────────────────────────
   Official-results note + "Presented by" + sponsor strip, drawn as cards inside the list rather
   than as full-width strips above it. */
.lb-results-band[b-4ktgyoi1k6] {
    display: flex;
    flex-direction: column;
    gap: 0.56rem;
}

.lb-results-band-top[b-4ktgyoi1k6] { margin-bottom: 0.9rem; }
.lb-results-band-tail[b-4ktgyoi1k6] { margin-top: 0.9rem; }

.lb-results-band .lb-final-banner[b-4ktgyoi1k6],
.lb-results-band .lb-presented-by[b-4ktgyoi1k6],
.lb-results-band .lb-sponsor-strip[b-4ktgyoi1k6] {
    border-radius: 12px;
    border: 1px solid var(--lb-border);
}

@keyframes lb-pulse-b-4ktgyoi1k6 {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.38; transform: scale(0.72); }
}

/* ── Upgrade prompt (Free plan — live updates disabled) ─────────────────── */

.lb-upgrade-prompt[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 1.25rem auto 0.5rem;
    padding: 0.65rem 1rem;
    max-width: 680px;
    border-radius: 8px;
    background: rgba(99, 102, 241, 0.12);
    border: 1px solid rgba(99, 102, 241, 0.28);
    color: var(--lb-text-soft);
    font-size: var(--font-size-sm);
    flex-wrap: wrap;
}

.lb-upgrade-prompt i[b-4ktgyoi1k6] {
    color: #818cf8;
    flex-shrink: 0;
}

.lb-upgrade-link[b-4ktgyoi1k6] {
    color: #93c5fd;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.lb-upgrade-link:hover[b-4ktgyoi1k6] { color: #bfdbfe; text-decoration: underline; }

/* ── Responsive ──────────────────────────────────────────────────────────── */

@media (max-width: 767.98px) {
    .lb-hero[b-4ktgyoi1k6] {
        flex-direction: column;
        align-items: stretch;
    }

    .lb-hero-actions[b-4ktgyoi1k6] {
        justify-content: flex-start;
    }

    .lb-shell[b-4ktgyoi1k6] {
        padding: 0.78rem;
    }

    .lb-mode-bar[b-4ktgyoi1k6] {
        width: 100%;
        justify-content: center;
    }
}

/* ── Export bar (admin-only) ─────────────────────────────────────────────── */
.lb-export-bar[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.6rem 1rem;
    border-top: 1px solid var(--border-muted, rgba(255,255,255,0.08));
    background: var(--bg-elevated, rgba(255,255,255,0.04));
    border-radius: 0 0 0.5rem 0.5rem;
    margin-top: 0.25rem;
}

.lb-export-label[b-4ktgyoi1k6] {
    font-size: var(--font-size-chip);
    color: var(--text-muted, #9ca3af);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.lb-export-btn[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.25rem 0.65rem;
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--text-secondary, #9ca3af);
    border: 1px solid var(--border-muted, rgba(255,255,255,0.12));
    border-radius: 0.35rem;
    text-decoration: none;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
    white-space: nowrap;
}

.lb-export-btn:hover[b-4ktgyoi1k6],
.lb-export-btn:focus-visible[b-4ktgyoi1k6] {
    color: var(--text-primary, #f1f5f9);
    border-color: var(--brand, #4a90e2);
    background: var(--brand-soft, rgba(74,144,226,0.12));
    text-decoration: none;
}

/* ── Wolf standings panel (Wolf is a primary event format, not a side game) ── */
.lb-wolf[b-4ktgyoi1k6] {
    border-radius: 14px;
    border: 1px solid var(--lb-border);
    background: linear-gradient(180deg, var(--lb-card) 0%, var(--lb-card-2) 100%);
    padding: 1.2rem 1.1rem 1.3rem;
    margin-bottom: 1rem;
}

.lb-wolf-head[b-4ktgyoi1k6] {
    text-align: center;
    margin-bottom: 1rem;
}

.lb-wolf-title[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-size: 1.3rem;
    font-weight: 800;
    margin: 0;
}

.lb-wolf-sub[b-4ktgyoi1k6] {
    color: var(--lb-text-muted);
    font-size: var(--font-size-sm);
    margin: 0.35rem 0 0;
}

.lb-wolf-empty[b-4ktgyoi1k6] {
    text-align: center;
    color: var(--lb-text-soft);
    padding: 1.6rem 0.5rem;
}

.lb-wolf-empty i[b-4ktgyoi1k6] {
    font-size: 1.8rem;
    color: var(--lb-accent-2);
    display: block;
    margin-bottom: 0.6rem;
}

.lb-wolf-empty p[b-4ktgyoi1k6] {
    margin: 0;
}

.lb-wolf-rules[b-4ktgyoi1k6] {
    margin-top: 1rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--lb-border, rgba(255, 255, 255, 0.12));
    color: var(--lb-text-muted);
    font-size: var(--font-size-sm);
}

.lb-wolf-rules .fw-semibold[b-4ktgyoi1k6] {
    color: var(--lb-text-soft);
    margin-bottom: 0.35rem;
}

.lb-wolf-rules ul[b-4ktgyoi1k6] {
    margin: 0;
    padding-left: 1.1rem;
}

.lb-wolf-rules li[b-4ktgyoi1k6] {
    margin: 0.15rem 0;
}

.lb-wolf-list[b-4ktgyoi1k6] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.lb-wolf-row[b-4ktgyoi1k6] {
    display: grid;
    grid-template-columns: 2.2rem 1fr auto;
    align-items: center;
    gap: 0.7rem;
    padding: 0.6rem 0.8rem;
    border-radius: 10px;
    border: 1px solid var(--lb-border);
    background: rgba(255, 255, 255, 0.02);
}

.lb-wolf-row--leader[b-4ktgyoi1k6] {
    border-color: var(--lb-accent);
    background: rgba(86, 199, 255, 0.10);
}

.lb-wolf-rank[b-4ktgyoi1k6] {
    font-weight: 800;
    font-size: 1rem;
    color: var(--lb-text-muted);
    text-align: center;
}

.lb-wolf-row--leader .lb-wolf-rank[b-4ktgyoi1k6] {
    color: var(--lb-accent-2);
}

.lb-wolf-name[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lb-wolf-value[b-4ktgyoi1k6] {
    color: var(--lb-text);
    font-weight: 800;
    font-size: 1.05rem;
    white-space: nowrap;
}

.lb-wolf-unit[b-4ktgyoi1k6] {
    color: var(--lb-text-muted);
    font-weight: 600;
    font-size: var(--font-size-sm);
    margin-left: 0.15rem;
}

/* ── Final-results celebration banner ─────────────────────── */
.lb-final-banner[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.9rem 1.5rem;
    background: linear-gradient(90deg, rgba(202,138,4,0.18), rgba(234,179,8,0.10));
    border-bottom: 1px solid rgba(234,179,8,0.25);
    border-top: 1px solid rgba(234,179,8,0.12);
}

.lb-final-icon[b-4ktgyoi1k6] {
    font-size: 1.5rem;
    color: #fbbf24;
    flex-shrink: 0;
}

.lb-final-body[b-4ktgyoi1k6] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.lb-final-title[b-4ktgyoi1k6] {
    font-weight: 800;
    font-size: 0.9rem;
    color: #fef08a;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

.lb-final-sub[b-4ktgyoi1k6] {
    font-size: var(--font-size-sm);
    color: rgba(254,240,138,0.7);
}

/* ── Share button ──────────────────────────────────────────── */
.lb-share-btn[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.85rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.15));
    border-radius: 999px;
    background: transparent;
    color: var(--text-secondary, #94a3b8);
    cursor: pointer;
    transition: background .15s, color .15s, border-color .15s;
}

.lb-share-btn:hover[b-4ktgyoi1k6] {
    background: rgba(255,255,255,0.07);
    color: var(--text-primary, #f1f5f9);
    border-color: var(--border-default, rgba(255,255,255,0.25));
}

.lb-share-btn--copied[b-4ktgyoi1k6] {
    border-color: var(--success, #22c55e);
    color: var(--success-text, #4ade80);
    background: var(--success-soft, rgba(34,197,94,0.12));
}

/* "TV View" — opens the full-screen kiosk board in a new tab for casting to a clubhouse display. */
.lb-tv-btn[b-4ktgyoi1k6] {
    min-height: var(--touch-target, 48px);   /* measured 105x34 */
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.85rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.15));
    border-radius: 999px;
    background: transparent;
    color: var(--text-secondary, #94a3b8);
    text-decoration: none;
    transition: background .15s, color .15s, border-color .15s;
}
.lb-tv-btn:hover[b-4ktgyoi1k6] {
    background: rgba(255,255,255,0.07);
    color: var(--text-primary, #f1f5f9);
    border-color: var(--border-default, rgba(255,255,255,0.25));
}

/* ── "Presented by" branding strip (Club tier, gated) ─────── */
.lb-presented-by[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 0.55rem 1.5rem;
    background: var(--bg-elevated, rgba(255,255,255,0.04));
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.lb-presented-label[b-4ktgyoi1k6] {
    font-size: var(--font-size-chip);
    font-weight: 500;
    color: var(--text-muted, #64748b);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.lb-presented-logo[b-4ktgyoi1k6] {
    height: 28px;
    width: auto;
    max-width: 80px;
    object-fit: contain;
    border-radius: 4px;
}

/* Supporting sponsor wall strip — compact logo band under "Presented by". Logos render as-is
   (no backing plate), matching the committed .pub-sponsor-logo treatment on the public event
   page; wraps on phones, never overflows. */
.lb-sponsor-strip[b-4ktgyoi1k6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.45rem;
    padding: 0.6rem 1rem 0.75rem;
    background: var(--bg-elevated, rgba(255,255,255,0.04));
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}
/* An uppercase eyebrow ("PRESENTED BY"), so the chip floor is right for the LABEL. A review of
   the 2026-09-14 ops pass flagged this rule as read text, and it was half right: the label is
   furniture, but the anchor sitting INSIDE it inherited 13px, and that link is the only way to
   the full sponsor roll. Sizing the link is the fix; enlarging the eyebrow was not. */
.lb-sponsor-strip-label[b-4ktgyoi1k6] {
    font-size: var(--font-size-chip);
    font-weight: 500;
    color: var(--text-muted, #64748b);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}
/* ONE row that scrolls sideways, never a block that wraps.
   Wrapping eight plates made the strip 212px tall — 26% of a phone screen — so a player opened the
   leaderboard and saw sponsors instead of scores. The board's job is scores; recognition rides
   along in a fixed-height band, and the full roll is one tap away on the sponsors page. */
.lb-sponsor-strip-logos[b-4ktgyoi1k6] {
    display: flex;
    flex-wrap: nowrap;
    align-items: center;
    justify-content: flex-start;
    gap: 0.6rem;
    max-width: 100%;
    overflow-x: auto;
    overflow-y: hidden;
    padding-bottom: 2px;
    scrollbar-width: none;              /* Firefox */
    -webkit-overflow-scrolling: touch;
}

.lb-sponsor-strip-logos[b-4ktgyoi1k6]::-webkit-scrollbar { display: none; }
.lb-sponsor-strip-logo[b-4ktgyoi1k6] {
    height: 34px;
    width: auto;
    max-width: 110px;
    object-fit: contain;
    border-radius: 6px;
}

.lb-presented-name[b-4ktgyoi1k6] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-secondary, #94a3b8);
}

/* ── Hole-by-hole scorecard expand ────────────────────────── */
.lb-row-expandable[b-4ktgyoi1k6],
.lb-card-expandable[b-4ktgyoi1k6] {
    cursor: pointer;
}

.lb-row-expandable:hover td[b-4ktgyoi1k6] { background: rgba(255,255,255,0.03); }

.lb-expand-chevron[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    margin-left: 0.35rem;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    transition: transform .2s;
    vertical-align: middle;
}

.lb-expand-chevron--open[b-4ktgyoi1k6] {
    transform: rotate(-180deg);
}

.lb-scorecard-expand-row td[b-4ktgyoi1k6] {
    background: var(--bg-surface, #0f172a) !important;
    border-bottom: 2px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.lb-sc-wrap[b-4ktgyoi1k6] {
    padding: 0.6rem 0.75rem 0.75rem;
    overflow-x: auto;
}

.lb-sc-round-label[b-4ktgyoi1k6] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--text-muted, #64748b);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    margin-bottom: 0.3rem;
    margin-top: 0.5rem;
}

.lb-sc-grid[b-4ktgyoi1k6] {
    display: grid;
    gap: 2px;
    min-width: max-content;
}

.lb-sc-label[b-4ktgyoi1k6] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-muted, #64748b);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    display: flex;
    align-items: center;
    padding-right: 0.4rem;
}

.lb-sc-cell[b-4ktgyoi1k6] {
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-sm);
    font-weight: 600;
    border-radius: 4px;
    background: var(--bg-elevated, rgba(255,255,255,0.04));
    color: var(--text-secondary, #94a3b8);
}

.lb-sc-hole-num[b-4ktgyoi1k6] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-muted, #64748b);
    background: transparent;
}

.lb-sc-par[b-4ktgyoi1k6] {
    color: var(--text-muted, #64748b);
    background: transparent;
    font-weight: 500;
}

/* Score notation cells */
.lb-sc-eagle[b-4ktgyoi1k6]  { background: rgba(234,179,8,0.20); color: #fbbf24; border: 1px solid rgba(234,179,8,0.35); border-radius: 50%; }
.lb-sc-birdie[b-4ktgyoi1k6] { background: var(--success-soft, rgba(34,197,94,0.15)); color: var(--success-text, #4ade80); border-radius: 50%; }
.lb-sc-par-cell[b-4ktgyoi1k6] { color: var(--text-secondary, #94a3b8); background: var(--bg-elevated, rgba(255,255,255,0.04)); }
.lb-sc-bogey[b-4ktgyoi1k6]  { background: rgba(251,146,60,0.15); color: #fb923c; border: 1px solid rgba(251,146,60,0.25); }
.lb-sc-double[b-4ktgyoi1k6] { background: var(--danger-soft, rgba(239,68,68,0.12)); color: var(--danger-text, #f87171); border: 1px solid rgba(239,68,68,0.2); }

/* Mobile scorecard is slightly smaller */
.lb-sc-grid--mobile .lb-sc-cell[b-4ktgyoi1k6] { width: 1.75rem; height: 1.75rem; font-size: var(--font-size-sm); }
.lb-sc-grid--mobile .lb-sc-hole-num[b-4ktgyoi1k6] { font-size: var(--font-size-sm); }

/* Wrapped mobile scorecard: rows of up to 9 holes that fill the card width so every
   hole is visible with no horizontal scrolling (fixes holes running off the screen).
   Cells flex to the available width but stay square and capped, so the layout holds
   from a 320px phone up to a wide one, and for short/partial rows alike. */
.lb-sc-grid--wrap[b-4ktgyoi1k6] {
    min-width: 0;
    width: 100%;
    justify-items: center;
}
.lb-sc-grid--wrap + .lb-sc-grid--wrap[b-4ktgyoi1k6] { margin-top: 4px; }
.lb-sc-grid--wrap .lb-sc-label[b-4ktgyoi1k6] { justify-self: start; }
.lb-sc-grid--wrap .lb-sc-cell[b-4ktgyoi1k6] {
    width: 100%;
    height: auto;
    max-width: 2.1rem;
    aspect-ratio: 1 / 1;
}

/* Keep card-level expand from triggering double events on stat chips */
.lb-card-expandable .lb-stat[b-4ktgyoi1k6] { pointer-events: none; }

/* ── Flight tabs ─────────────────────────────────────────────────────────── */
.lb-flight-tabs[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0 1rem 0.25rem;
    border-bottom: 1px solid var(--lb-border);
    overflow-x: auto;
    scrollbar-width: none;
}
.lb-flight-tabs[b-4ktgyoi1k6]::-webkit-scrollbar { display: none; }

.lb-flight-tab[b-4ktgyoi1k6] {
    flex-shrink: 0;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    color: var(--lb-text-muted);
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: 0.45rem 0.75rem;
    cursor: pointer;
    border-radius: 6px 6px 0 0;
    transition: color 0.15s, border-color 0.15s;
    white-space: nowrap;
}
.lb-flight-tab:hover[b-4ktgyoi1k6] {
    color: var(--lb-text-soft);
    background: rgba(255,255,255,0.04);
}
.lb-flight-tab--active[b-4ktgyoi1k6] {
    color: var(--lb-accent);
    border-bottom-color: var(--lb-accent);
}

/* Custom event photo — slim banner above the leaderboard hero (clubhouse-TV branding) */
/* The banner a club uploads here is a FLYER — words, a date, a logo, a sponsor line. It was
   stretched to the full width and then cut to a 130px letterbox with object-fit: cover, which on a
   390px phone showed a 390x130 window onto a 390x219 image: 40% of the flyer gone, sliced straight
   through its own type. A picture can be cropped; a sentence cannot.

   So the whole image is shown, scaled to fit a box it can never overflow: max-width holds it
   inside the page, max-height keeps it from eating the leaderboard on a tall screen, and with both
   dimensions auto the browser keeps the aspect ratio, so nothing is ever cut. On a phone the 16:9
   flyer lands at 390x219; on a desktop the cap decides and it centres. */
.lb-event-banner[b-4ktgyoi1k6] {
    width: 100%;
    overflow: hidden;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card);
    display: flex;
    justify-content: center;
}
.lb-event-banner img[b-4ktgyoi1k6] {
    max-width: 100%;
    max-height: 260px;
    width: auto;
    height: auto;
    object-fit: contain;
    display: block;
}

/* ── Skins panel (moved from an embedded <style> block, audit Batch D) ──────────
   The old block referenced tokens that were never defined (--surface-2, --text,
   --border, …) so it silently rendered on hex fallbacks — a second palette fighting
   this page's own. Aligned to the --lb-* palette above. */
.lb-skins-panel[b-4ktgyoi1k6] { margin: 16px 0; padding: 16px; border-radius: 12px;
    background: var(--lb-card); border: 1px solid var(--lb-border); }
.lb-skins-head[b-4ktgyoi1k6] { margin-bottom: 12px; }
.lb-skins-title[b-4ktgyoi1k6] { font-size: 1.1rem; font-weight: 700; margin: 0; color: var(--lb-text); }
.lb-skins-sub[b-4ktgyoi1k6] { font-size: var(--font-size-sm); color: var(--lb-text-muted); margin: 2px 0 0; }
.lb-skins-totals[b-4ktgyoi1k6] { list-style: none; margin: 0 0 16px; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.lb-skins-row[b-4ktgyoi1k6] { display: flex; align-items: center; gap: 12px; padding: 8px 12px; border-radius: 8px;
    background: var(--lb-card-2); }
.lb-skins-row--leader[b-4ktgyoi1k6] { background: var(--lb-accent-soft); }
.lb-skins-rank[b-4ktgyoi1k6] { min-width: 1.5rem; font-weight: 700; color: var(--lb-accent); }
.lb-skins-name[b-4ktgyoi1k6] { flex: 1; color: var(--lb-text); }
.lb-skins-value[b-4ktgyoi1k6] { font-weight: 700; color: var(--lb-text); }
.lb-skins-unit[b-4ktgyoi1k6] { font-size: var(--font-size-sm); font-weight: 400; color: var(--lb-text-muted); }
.lb-skins-none[b-4ktgyoi1k6] { font-size: var(--font-size-sm); color: var(--lb-text-muted); margin: 0 0 12px; }
.lb-skins-grid-label[b-4ktgyoi1k6] { font-size: var(--font-size-sm); text-transform: uppercase; letter-spacing: .04em;
    color: var(--lb-text-muted); margin-bottom: 8px; }
.lb-skins-grid[b-4ktgyoi1k6] { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 6px; }
.lb-skins-cell[b-4ktgyoi1k6] { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px;
    padding: 8px 4px; border-radius: 8px; min-height: 56px;
    border: 1px solid var(--lb-border); }
.lb-skins-cell--won[b-4ktgyoi1k6] { background: var(--lb-success-soft); border-color: var(--lb-success); }
.lb-skins-cell-hole[b-4ktgyoi1k6] { font-size: var(--font-size-sm); color: var(--lb-text-muted); }
.lb-skins-cell-team[b-4ktgyoi1k6] { display: flex; flex-direction: column; align-items: center; max-width: 100%;
    font-size: var(--font-size-sm); font-weight: 600; color: var(--lb-text); text-align: center; }
/* Same cut, smaller box: "Meincke/Dather" arrived as "Meincke/Dat…" in a 68px skins cell. The
   grid row grows to its tallest cell and the cells only carry a min-height, so a second line
   costs a few pixels and gives back the name. */
.lb-skins-cell-name[b-4ktgyoi1k6] { max-width: 100%; overflow-wrap: anywhere; line-height: 1.2; }
.lb-skins-cell-mult[b-4ktgyoi1k6] { font-size: var(--font-size-sm); font-weight: 700; line-height: 1.1; color: var(--lb-success); }
.lb-skins-legend[b-4ktgyoi1k6] { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 12px; font-size: var(--font-size-sm); color: var(--lb-text-muted); }
.lb-skins-legend > span[b-4ktgyoi1k6] { display: inline-flex; align-items: center; gap: 6px; }
.lb-skins-swatch[b-4ktgyoi1k6] { width: 12px; height: 12px; border-radius: 3px; display: inline-block;
    border: 1px solid var(--lb-border); }
.lb-skins-swatch--won[b-4ktgyoi1k6] { background: var(--lb-success-soft); border-color: var(--lb-success); }
/* "You're in the skins" / "You're not in the skins" — the one line a player looks for on an
   optional-buy-in event.
   Uses the board's OWN --lb-* palette, never the global light/dark tokens: .lb-page is a
   deliberately dark surface in both themes, so a global --bg-elevated here would turn into a
   white box on a navy board the moment the viewer is in light mode. */
.lb-skins-you[b-4ktgyoi1k6] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 10px;
    padding: 10px 12px;
    border-radius: 10px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    border: 1px solid var(--lb-border);
    color: var(--lb-text);
    background: var(--lb-card-2);
}

.lb-skins-you.is-in[b-4ktgyoi1k6] { border-color: var(--lb-success); background: var(--lb-success-soft); }
.lb-skins-you.is-in i[b-4ktgyoi1k6] { color: var(--lb-success); }
.lb-skins-you.is-out[b-4ktgyoi1k6] { color: var(--lb-text-soft); }

.lb-skins-empty[b-4ktgyoi1k6] { text-align: center; padding: 20px; color: var(--lb-text-muted); }
.lb-skins-empty i[b-4ktgyoi1k6] { font-size: 1.5rem; display: block; margin-bottom: 8px; }
.lb-skins-empty p[b-4ktgyoi1k6] { margin: 0; font-size: .9rem; }

/* ── Tie-break panel (same move) ─────────────────────────────────────────────── */
.lb-tb-panel[b-4ktgyoi1k6] { margin: 16px 0; padding: 16px; border-radius: 12px;
    background: var(--lb-card); border: 1px solid var(--lb-border); }
.lb-tb-head[b-4ktgyoi1k6] { font-weight: 700; margin-bottom: 8px; color: var(--lb-text); }
.lb-tb-hint[b-4ktgyoi1k6], .lb-tb-empty[b-4ktgyoi1k6] { font-size: var(--font-size-sm); color: var(--lb-text-muted); margin: 0 0 12px; }
.lb-tb-group[b-4ktgyoi1k6] { margin-bottom: 12px; }
.lb-tb-group-label[b-4ktgyoi1k6] { font-size: var(--font-size-sm); text-transform: uppercase; letter-spacing: .04em;
    color: var(--lb-text-muted); margin-bottom: 4px; }
.lb-tb-row[b-4ktgyoi1k6] { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px;
    background: var(--lb-card-2); margin-bottom: 4px; }
.lb-tb-pos[b-4ktgyoi1k6] { min-width: 1.5rem; font-weight: 700; color: var(--lb-accent); }
.lb-tb-name[b-4ktgyoi1k6] { flex: 1; color: var(--lb-text); }
.lb-tb-actions[b-4ktgyoi1k6] { display: flex; gap: 6px; }
.lb-tb-btn[b-4ktgyoi1k6] { min-width: 40px; min-height: 40px; border-radius: 8px; border: 1px solid var(--lb-border);
    background: transparent; color: var(--lb-text); cursor: pointer; }
.lb-tb-btn:disabled[b-4ktgyoi1k6] { opacity: .35; cursor: default; }
.lb-tb-btn:not(:disabled):hover[b-4ktgyoi1k6] { background: var(--lb-card-2); }

/* ── Individual Net side competition (Best Ball only) ─────────────────────── */
.lb-indivnet[b-4ktgyoi1k6] {
    margin: 22px 16px 8px;
    border: 1px solid var(--lb-border);
    border-radius: 14px;
    background: linear-gradient(180deg, rgba(19, 39, 70, 0.55), rgba(16, 33, 61, 0.35));
    overflow: hidden;
}
.lb-indivnet-head[b-4ktgyoi1k6] {
    padding: 16px 18px 4px;
}
.lb-indivnet-title[b-4ktgyoi1k6] {
    display: flex; align-items: center; gap: 8px;
    font-size: 1.05rem; font-weight: 800; color: var(--lb-text); margin: 0;
}
.lb-indivnet-title i[b-4ktgyoi1k6] { color: var(--lb-accent); }
.lb-indivnet-sub[b-4ktgyoi1k6] {
    margin: 4px 0 0; font-size: var(--font-size-sm); color: var(--lb-text-muted);
}
.lb-indivnet-flight[b-4ktgyoi1k6] { padding: 10px 12px 16px; }
.lb-indivnet-flight-name[b-4ktgyoi1k6] {
    display: inline-block;
    font-size: var(--font-size-chip); font-weight: 800; letter-spacing: .06em; text-transform: uppercase;
    color: var(--lb-accent-2);
    background: var(--lb-accent-soft);
    border: 1px solid var(--lb-border);
    border-radius: 999px; padding: 3px 12px; margin: 4px 6px 10px;
}
.lb-indivnet-table-wrap[b-4ktgyoi1k6] { overflow-x: auto; }
.lb-indivnet-table[b-4ktgyoi1k6] {
    width: 100%; border-collapse: collapse; font-size: 0.9rem;
    color: var(--lb-text);
}
.lb-indivnet-table thead th[b-4ktgyoi1k6] {
    text-align: left; font-size: var(--font-size-sm); font-weight: 700; letter-spacing: .04em;
    text-transform: uppercase; color: var(--lb-text-muted);
    padding: 6px 10px; border-bottom: 1px solid var(--lb-border); white-space: nowrap;
}
.lb-indivnet-table td[b-4ktgyoi1k6] {
    padding: 9px 10px; border-bottom: 1px solid rgba(40, 68, 111, 0.5); white-space: nowrap;
}
.lb-indivnet-table tbody tr:last-child td[b-4ktgyoi1k6] { border-bottom: none; }
.lb-in-pos[b-4ktgyoi1k6] { width: 3.2rem; font-weight: 800; color: var(--lb-accent); }
.lb-in-player[b-4ktgyoi1k6] { font-weight: 600; }
.lb-in-team[b-4ktgyoi1k6] { color: var(--lb-text-soft); }
.lb-in-num[b-4ktgyoi1k6] { text-align: right; font-variant-numeric: tabular-nums; }
th.lb-in-num[b-4ktgyoi1k6] { text-align: right; }
.lb-in-net[b-4ktgyoi1k6] { font-weight: 800; color: var(--lb-success); }
.lb-indivnet-table tbody tr.lb-in-leader td[b-4ktgyoi1k6] { background: var(--lb-success-soft); }
.lb-indivnet-table tbody tr.lb-in-me td[b-4ktgyoi1k6] { box-shadow: inset 3px 0 0 var(--lb-accent); }

/* ::deep is REQUIRED, not stylistic. The mark is rendered by the shared <SponsorMark />
   child component, so its element never receives THIS component's b-* scope attribute and a
   plain `.lb-sponsor-strip-logo { }` rule silently does nothing — the logo falls back to its natural
   size (a 1px image renders as 1px). `.lb-sponsor-strip-logos ::deep` compiles to
   `.lb-sponsor-strip-logos[b-xxxx] .lb-sponsor-strip-logo`, which matches because the wrapper IS in this
   component's own markup. Applies to BOTH treatments, so a nameplate occupies the same box
   as the logo beside it. */
.lb-sponsor-strip-logos[b-4ktgyoi1k6]  .lb-sponsor-strip-logo {
    flex: 0 0 auto;                 /* never squeeze inside the scrolling row */
    height: 34px;
    width: auto;
    min-width: 84px;
    max-width: 130px;
    object-fit: contain;
    border-radius: 6px;
}

/* A plate is not a logo, and the rule above is a LOGO's box. Capped at 130px it cut the two
   longest names on this board — "Bank Heating & Air Conditioning" read "BANK HEATING & AIR…" —
   and across the 140 real sponsor names in the clone, 63 of them clipped at that width.

   So the plate keeps the strip's 34px height as a FLOOR (it still sits on the same baseline as a
   real logo beside it) and takes the width its name needs, up to the same cap the event and team
   sign-up walls already use. That is the SAME plate treatment as those two walls — one rule for
   every public sponsor surface, differing only in the host's logo height.

   The band does not grow, which was the other half of the promise: the strip is one row that
   scrolls sideways, so width is paid in scroll, not in screen height. Measured at 390px and
   1280px, all 140 names fit and the band stays 88px — every live plate is still 34px tall,
   because two lines at 14px/1.1 (30.8px) already fit inside 34px. The third line is headroom for
   a name longer than any that exists (the longest real one is 43 characters), not a new height.
   Vertical padding stays 0 for exactly that reason: 0.4rem of it would push two lines to 47px
   and put the 212px-tall wrapped strip back on the table. */
.lb-sponsor-strip-logos[b-4ktgyoi1k6]  .lb-sponsor-strip-logo.sponsor-mark-plate {
    padding: 0 0.5rem;
    border-width: 1.5px;
    height: auto;
    min-height: 34px;
    max-width: min(100%, 15rem);
}

.lb-sponsor-strip-logos[b-4ktgyoi1k6]  .lb-sponsor-strip-logo.sponsor-mark-plate .sponsor-plate-text {
    font-size: var(--font-size-sm);
    line-height: 1.1;
    -webkit-line-clamp: 3;
    /* Word boundaries only: the longest single word in the real data is "Communications" (14
       chars, ~120px), which never needs breaking inside a 240px plate — and breaking one gave
       "Schurham mer", which is worse than a wrap. */
    overflow-wrap: normal;
    word-break: normal;
}

/* Sponsor strip is a WINDOW onto the roll — its label doubles as the link to the full
   public sponsors page, which is where all 100+ actually live.

   It was a bare inline <a>: 163x17 on a phone, against a 48px floor, and it is the only way a
   visitor reaches the page every sponsor on this board is paying to appear on.

   The hit area is grown with padding and given straight back as an equal negative margin, so the
   thumb gets 49px and the LAYOUT DOES NOT MOVE — measured on the phone board at 375px, the strip
   stays 88px tall exactly as it did before, which the 2026-09-14 plate work deliberately protected.
   A plain min-height:48px would have pushed that band to ~119px on a public page. The pair must
   stay equal and opposite; changing one without the other starts growing the band again. */
.lb-sponsor-strip-all[b-4ktgyoi1k6] {
    font-size: var(--font-size-sm);
    color: var(--b9-primary-text, #93C5FD);
    text-decoration: none;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    padding-block: 14px;
    margin-block: -14px;
}

.lb-sponsor-strip-all:hover[b-4ktgyoi1k6] { text-decoration: underline; }

/* Mid-round retiree: a real row, real strokes, no position — golf writes it "WD". */
.lb-wd-badge[b-4ktgyoi1k6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    padding: 2px 8px;
    border-radius: 8px;
    background: var(--warning-soft);
    color: var(--text-primary);
    font-weight: 800;
    font-size: var(--font-size-sm);
    letter-spacing: .03em;
}

/* Entries exist but nothing is scored yet. Without this the board is a field of em-dashes under a
   pulsing LIVE pill, which reads as broken rather than as "play hasn't started". Design tokens only
   — this renders on the public board, which is dark-first and must stay legible in both themes. */
.lb-nothing-scored[b-4ktgyoi1k6] {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: .85rem 1rem;
    margin: 0 0 1rem;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    color: var(--text-primary);
}

.lb-nothing-scored i[b-4ktgyoi1k6] {
    font-size: 1.05rem;
    line-height: 1.5;
    color: var(--text-muted);
    flex: 0 0 auto;
}

.lb-nothing-scored strong[b-4ktgyoi1k6] {
    display: block;
    font-size: .95rem;
    font-weight: 700;
}

.lb-nothing-scored span[b-4ktgyoi1k6] {
    display: block;
    font-size: .88rem;
    color: var(--text-muted);
    margin-top: .15rem;
    line-height: 1.45;
}
/* /Components/Pages/Events/ManageSponsors.razor.rz.scp.css */
/* Organiser sponsor screens. Design tokens only; dark-theme safe; 48px touch targets. */

.ms-subtitle[b-xgxquvmk70] { color: var(--b9-text-muted); font-size: 0.9rem; }
.ms-muted[b-xgxquvmk70]    { color: var(--b9-text-soft); font-size: 0.9rem; }
.ms-help[b-xgxquvmk70]     { color: var(--b9-text-helper); font-size: 0.88rem; margin: 0; }

.ms-card[b-xgxquvmk70] {
    background: var(--b9-surface-alt);
    border: 1px solid var(--b9-border);
    border-radius: 14px;
}

.ms-count[b-xgxquvmk70] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text-muted);
    background: var(--b9-surface-muted);
    border-radius: 20px;
    padding: 2px 9px;
    margin-left: 4px;
}

.ms-ok[b-xgxquvmk70] { color: var(--b9-success-text); font-size: 0.88rem; font-weight: 600; }

.ms-paste[b-xgxquvmk70] {
    font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
    font-size: var(--font-size-sm);
    line-height: 1.6;
}

/* ── Tee box grid ────────────────────────────────────────────────── */
.ms-holes[b-xgxquvmk70] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 0.5rem;
}

.ms-hole[b-xgxquvmk70] {
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    padding: 0.5rem;
    min-height: 74px;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 0;
}

.ms-hole-num[b-xgxquvmk70] {
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--b9-text-soft);
}

.ms-hole-chip[b-xgxquvmk70] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    background: var(--b9-warning-soft);
    border: 1px solid var(--b9-warning);
    color: var(--b9-warning-text);
    border-radius: 6px;
    padding: 0.28rem 0.4rem;
    font-size: var(--font-size-chip);
    font-weight: 600;
    min-width: 0;
}

/* A sponsor who sent artwork reads as the brand colour; a nameplate reads amber. */
.ms-hole-chip.has-logo[b-xgxquvmk70] {
    background: var(--b9-primary-soft);
    border-color: var(--b9-primary);
    color: var(--b9-primary-text);
}

.ms-hole-chip-name[b-xgxquvmk70] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ms-hole-chip-x[b-xgxquvmk70] {
    flex: none;
    background: none;
    border: none;
    color: inherit;
    font-size: 1rem;
    line-height: 1;
    cursor: pointer;
    padding: 0 2px;
    min-width: 24px;
    min-height: 24px;
}

.ms-hole-chip-x:hover[b-xgxquvmk70] { opacity: 0.7; }

/* ── The list ────────────────────────────────────────────────────── */
.ms-list[b-xgxquvmk70] {
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    overflow: hidden;
}

.ms-row[b-xgxquvmk70] {
    display: grid;
    grid-template-columns: 68px 1fr 150px;
    gap: 0.75rem;
    align-items: center;
    padding: 0.55rem 0.85rem;
    border-bottom: 1px solid var(--b9-border);
    min-height: 48px;
}

.ms-row:last-child[b-xgxquvmk70] { border-bottom: none; }

.ms-row-head[b-xgxquvmk70] {
    background: var(--b9-surface-muted);
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--b9-text-soft);
    min-height: 0;
    padding-block: 0.45rem;
}

.ms-row.is-hidden .ms-col-name[b-xgxquvmk70] { color: var(--b9-text-soft); text-decoration: line-through; }

.ms-col-name[b-xgxquvmk70] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    font-size: 0.9rem;
    font-weight: 600;
    min-width: 0;
    overflow-wrap: anywhere;
}

/* 48px touch target on the one control an organiser taps 124 times. */
.ms-check[b-xgxquvmk70] {
    width: 22px;
    height: 22px;
    margin: 13px 0 13px 13px;
    cursor: pointer;
}

.ms-tag[b-xgxquvmk70] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    border-radius: 20px;
    padding: 2px 8px;
}

.ms-tag-logo[b-xgxquvmk70]  { color: var(--b9-primary-text); background: var(--b9-primary-soft); }
.ms-tag-plate[b-xgxquvmk70] { color: var(--b9-warning-text); background: var(--b9-warning-soft); }

.ms-hole-select[b-xgxquvmk70] { min-height: 40px; }

@media (max-width: 640px) {
    .ms-row[b-xgxquvmk70] { grid-template-columns: 52px 1fr; row-gap: 0.4rem; }
    .ms-col-hole[b-xgxquvmk70] { grid-column: 2; }
    .ms-row-head .ms-col-hole[b-xgxquvmk70] { display: none; }
}

/* Sign wording, shown only for sponsors with no artwork — the plate is all they get,
   so the organiser needs to be able to word it. */
.ms-name-line[b-xgxquvmk70] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.ms-plate-input[b-xgxquvmk70] {
    margin-top: 0.3rem;
    max-width: 320px;
    font-size: var(--font-size-sm);
    min-height: 34px;
}

/* EVT-009 — attaching artwork from the screen that lists the sponsors.
   The control is a label wrapping a hidden InputFile, so it reads as one target. */
.ms-upload[b-xgxquvmk70] { cursor: pointer; margin-left: .4rem; }
.ms-upload-text[b-xgxquvmk70] {
    font-size: var(--font-size-sm);
    color: var(--b9-primary-text, #93C5FD);
    border-bottom: 1px dashed currentColor;
}
.ms-upload:hover .ms-upload-text[b-xgxquvmk70] { color: var(--text-primary, #F8FAFC); }

/* Per-row feedback. Amber says "saved, but"; red says "not saved". */
.ms-row-note[b-xgxquvmk70] { font-size: var(--font-size-sm); margin-top: .2rem; }
.ms-row-warn[b-xgxquvmk70] { color: var(--b9-warning-text, #FCD34D); }
.ms-row-err[b-xgxquvmk70]  { color: var(--b9-danger-text, #FCA5A5); }
/* /Components/Pages/Events/MyEvent.razor.rz.scp.css */
/* Extracted inline styles (Blazor audit Batch G). */
.mev-score-input[b-0bcmqfxh6s] { width: 6rem; }
/* /Components/Pages/Events/MyScorecard.razor.rz.scp.css */
/* ---------------------------------------------------------------------------------------
   X02 on the two views a golfer uses to ENTER A SCORE, 2026-09-13, with Matt's word.

   SCOPE, deliberately narrow. This file carries 132 sub-14px declarations. The ones changed
   here are the ones the Enter view and the Card view actually RENDER — measured on the page,
   not read off the file. Contests, Wolf, player notes, certification, group cards and the
   desktop table are untouched: raising type blind across the highest-stakes screen in the
   product is the broad rewrite the rules warn about, and I cannot photograph what I have not
   made render. That is a second pass, not an oversight.

   WHAT THE LOCK RULES, and what this does not touch: band order, the 64px key height, the
   #93C5FD selection fill and #020617 ink, the 26px digit, the full-width overflow key, the
   resting key fill and border. ScoringDesignLockTests extracts every one of those and fails
   if a surface disagrees — it is the safety net this change was made against, not around.

   The two that matter most, and why they are not furniture:
     .msc-ec-key-w   the word under each number — Ace, Eagle, Birdie, Par, Bogey. On a keypad
                     you tap ONCE, that word is how a golfer confirms they pressed the right
                     thing. It was 12px, ten times over.
     .msc-ea-hole-meta  "Par 4 · SI 1" at 10.88px — how a golfer knows what a good score IS.
   --------------------------------------------------------------------------------------- */

/* ═══════════════════════════════════════════════════════════
   TOP BAR
═══════════════════════════════════════════════════════════ */
.msc-shell[b-g34efi8djj] {
    --msc-dark-text: #f8fafc;
    --msc-dark-secondary: #e5edf7;
    --msc-light-text: var(--b9-text, #f3f6fb);
    --msc-light-secondary: var(--b9-text-muted, #c2cfdf);
    --msc-light-muted: var(--b9-text-soft, #9fb0c4);
    --msc-accent-ring: rgba(29, 78, 216, 0.28);
    --msc-surface-paper: var(--b9-surface-alt, #0f172a);
    --msc-surface-ivory: var(--b9-surface-alt, #0f172a);
    --msc-surface-soft: var(--b9-surface-muted, #111827);
    --msc-surface-line: var(--b9-border, rgba(255,255,255,0.12));
}

.msc-topbar[b-g34efi8djj] {
    position: sticky;
    top: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    padding: 0.65rem 1rem;
    min-height: 58px;
    background: linear-gradient(140deg, #141d2a 0%, #1f2a3b 100%);
    border-bottom: 1px solid rgba(255,255,255,0.06);
    box-shadow: inset 0 -1px 0 rgba(255,255,255,0.04), 0 8px 20px rgba(15, 23, 42, 0.18);
    gap: 0.75rem;
}

.msc-topbar-left[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.msc-back-btn[b-g34efi8djj] {
    /* 48 TALL and 35 WIDE. A thumb needs both — same half-fix as the landing page's
       "Sign in" and the team page's rename control. */
    min-width: 48px;
    color: rgba(255,255,255,0.9) !important;
    border-color: rgba(255,255,255,0.24) !important;
    flex-shrink: 0;
    padding: 0.3rem 0.6rem;
}

.msc-back-btn:hover[b-g34efi8djj] {
    background: rgba(255,255,255,0.1) !important;
    color: #fff !important;
}

.msc-topbar-info[b-g34efi8djj] {
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.14rem;
}

.msc-topbar-kicker[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--msc-dark-secondary);
}

.msc-topbar-event[b-g34efi8djj] {
    font-size: 1rem;
    font-weight: 800;
    color: var(--msc-dark-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 1.2;
}

.msc-topbar-player[b-g34efi8djj] {
    font-size: 0.84rem;
    color: var(--msc-dark-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.msc-topbar-right[b-g34efi8djj] {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-left: auto;
}

.msc-display-options-trigger[b-g34efi8djj] {
    display: none;
    align-items: center;
    gap: 0.3rem;
    border: 1px solid rgba(255,255,255,0.22);
    background: rgba(255,255,255,0.12);
    color: #f8fafc;
    border-radius: 999px;
    /* 44px is the iOS HIG number. This project's own UX rule says 48x48, and X03 is not
       deferred on player surfaces — only on dense ops rows. Found by driving the CARD view,
       which no row had ever opened. */
    min-height: 48px;
    padding: 0.34rem 0.72rem;
    font-size: var(--font-size-sm);
    font-weight: 800;
}

.msc-control-cluster[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.22rem;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,0.14);
    background: linear-gradient(180deg, rgba(255,255,255,0.08) 0%, rgba(255,255,255,0.04) 100%);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.1);
}

.msc-command-strip[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin-top: 0.15rem;
}

.msc-command-chip[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.18rem 0.5rem;
    border-radius: 999px;
    border: 1px solid rgba(255,255,255,0.14);
    background: rgba(255,255,255,0.06);
    color: var(--msc-dark-secondary);
    font-size: 0.78rem;
    font-weight: 700;
}

.msc-command-chip strong[b-g34efi8djj] {
    color: var(--msc-dark-text);
}

.msc-command-chip.is-saved[b-g34efi8djj] {
    background: rgba(134,239,172,0.14);
    border-color: rgba(134,239,172,0.28);
    color: #86efac;
}

.msc-command-chip.is-offline[b-g34efi8djj],
.msc-command-chip.is-warning[b-g34efi8djj] {
    background: rgba(252, 211, 77, 0.12);
    border-color: rgba(252, 211, 77, 0.25);
    color: #fde68a;
}

.msc-command-toggle[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    padding: 0.18rem;
    border-radius: 999px;
    background: rgba(255,255,255,0.06);
    border: 1px solid rgba(255,255,255,0.09);
}

.msc-command-toggle-btn[b-g34efi8djj] {
    border: none;
    background: transparent;
    color: #f1f5f9;
    font-size: 0.8rem;
    font-weight: 700;
    border-radius: 999px;
    min-height: 44px;
    padding: 0.4rem 0.76rem;
}

.msc-command-toggle-btn.active[b-g34efi8djj] {
    background: rgba(255,255,255,0.14);
    color: var(--b9-text, #f3f6fb);
    box-shadow: 0 1px 2px rgba(15, 23, 42, 0.14);
}
/* The Display options panel: "Show full scorecard" and "Large type". These are the controls a
   golfer opens BECAUSE they are struggling to read the screen, and they were the smallest text on
   it at 12.8px. The class is literally called senior-toggle. */

.msc-senior-toggle[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    border: 1px solid rgba(255,255,255,0.12);
    background: rgba(255,255,255,0.08);
    color: #f1f5f9;
    border-radius: 999px;
    /* 44px again — the iOS number. These two toggles are how a player reaches the full
       scorecard and the large-type setting, and they measured 338x44. */
    min-height: 48px;
    padding: 0.4rem 0.74rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.msc-senior-toggle.active[b-g34efi8djj] {
    background: rgba(134,239,172,0.16);
    border-color: rgba(134,239,172,0.36);
    color: #ecfdf5;
}

.msc-save-indicator[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 4px 12px;
    border-radius: 30px;
}

.msc-save-indicator.saving[b-g34efi8djj] {
    color: rgba(255,255,255,0.6);
    background: rgba(255,255,255,0.08);
}

.msc-save-indicator.saved[b-g34efi8djj] {
    color: #86efac;
    background: rgba(134,239,172,0.12);
}

.msc-save-indicator.msc-save-silent[b-g34efi8djj],
.msc-save-indicator.msc-save-warning[b-g34efi8djj] {
    width: 32px;
    height: 32px;
    padding: 0;
    justify-content: center;
    border-radius: 50%;
}

.msc-save-indicator.msc-save-silent[b-g34efi8djj] {
    color: #86efac;
    background: rgba(134,239,172,0.14);
}

.msc-save-indicator.msc-save-warning[b-g34efi8djj] {
    color: #fcd34d;
    background: rgba(245, 158, 11, 0.2);
}

.msc-team-context[b-g34efi8djj] {
    margin: 0.6rem 0.9rem 0;
    padding: 0.85rem 0.95rem;
    background: var(--b9-surface-muted, #111827);
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    box-shadow: 0 5px 12px rgba(69, 52, 23, 0.06);
}

.msc-team-context-summary[b-g34efi8djj] {
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--b9-text-muted, #c2cfdf);
    margin-bottom: 0.55rem;
}

.msc-team-context[open] .msc-team-context-summary[b-g34efi8djj] {
    margin-bottom: 0.7rem;
}

.msc-wolf-context[b-g34efi8djj] {
    margin: 0.75rem 0 0.45rem;
    padding: 0.86rem 1rem;
    border: 1px solid rgba(59, 130, 246, 0.34);
    border-radius: 12px;
    background: linear-gradient(145deg, rgba(30, 41, 59, 0.92), rgba(15, 23, 42, 0.95));
    box-shadow: 0 6px 16px rgba(2, 6, 23, 0.28);
}

.msc-wolf-context-title[b-g34efi8djj] {
    font-size: 0.78rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #bfdbfe;
    margin-bottom: 0.45rem;
}

.msc-wolf-context-row[b-g34efi8djj] {
    margin: 0;
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.75rem;
    font-size: 0.92rem;
    line-height: 1.35;
    color: #e2e8f0;
}

.msc-wolf-context-row + .msc-wolf-context-row[b-g34efi8djj] {
    margin-top: 0.3rem;
}

.msc-wolf-context-label[b-g34efi8djj] {
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: #93c5fd;
}

.msc-wolf-context-player strong[b-g34efi8djj],
.msc-wolf-context-decision strong[b-g34efi8djj],
.msc-wolf-context-partner strong[b-g34efi8djj] {
    color: #f8fafc;
    text-align: right;
}

.msc-wolf-context-guidance[b-g34efi8djj] {
    margin: 0.55rem 0 0;
    padding-top: 0.5rem;
    border-top: 1px solid rgba(148, 163, 184, 0.22);
    font-size: 0.86rem;
    line-height: 1.45;
    color: #cbd5e1;
}

.msc-wolf-context-rotation[b-g34efi8djj] {
    margin: 0.45rem 0 0;
    font-size: 0.82rem;
    line-height: 1.4;
    color: #bfdbfe;
    overflow-wrap: anywhere;
}

/* ── Live Wolf decision picker ─────────────────────────────────────────── */
.msc-wolf-pick-prompt[b-g34efi8djj] {
    margin: 0.5rem 0 0.35rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: #e2e8f0;
}

.msc-wolf-pick-confirmed[b-g34efi8djj] {
    margin: 0.5rem 0 0.35rem;
    font-size: 0.9rem;
    line-height: 1.4;
    color: #bfdbfe;
}

.msc-wolf-pick-confirmed strong[b-g34efi8djj] {
    color: #f8fafc;
}

.msc-wolf-pick-actions[b-g34efi8djj] {
    display: flex;
    gap: 0.5rem;
}

.msc-wolf-pick-partners[b-g34efi8djj] {
    margin-top: 0.6rem;
}

.msc-wolf-pick-partner-row[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.35rem;
}

.msc-wolf-pick-btn[b-g34efi8djj] {
    flex: 1 1 0;
    min-height: 48px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.1rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid rgba(96, 165, 250, 0.45);
    border-radius: 10px;
    background: rgba(30, 58, 138, 0.35);
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 700;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease;
}

.msc-wolf-pick-btn:hover:not(:disabled)[b-g34efi8djj] {
    background: rgba(37, 99, 235, 0.5);
}

.msc-wolf-pick-btn:disabled[b-g34efi8djj] {
    opacity: 0.55;
    cursor: default;
}

.msc-wolf-pick-btn.is-chosen[b-g34efi8djj] {
    background: rgba(37, 99, 235, 0.85);
    border-color: #93c5fd;
    box-shadow: 0 0 0 1px #93c5fd inset;
}

.msc-wolf-pick-partner[b-g34efi8djj] {
    flex: 0 1 auto;
    min-width: 6.5rem;
}

.msc-wolf-pick-hint[b-g34efi8djj] {
    font-size: 0.7rem;
    font-weight: 500;
    letter-spacing: 0.01em;
    color: #bfdbfe;
}

.msc-wolf-pick-error[b-g34efi8djj] {
    margin: 0.5rem 0 0;
    font-size: 0.85rem;
    color: #fecaca;
}

.msc-player-notes[b-g34efi8djj] {
    margin-top: 0.75rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    background: var(--b9-surface-muted, rgba(15, 23, 42, 0.4));
}

.msc-certification-panel[b-g34efi8djj] {
    margin-top: 0.75rem;
    padding: 0.65rem 0.8rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    background: var(--b9-surface-muted, rgba(15, 23, 42, 0.4));
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.msc-certification-title[b-g34efi8djj] {
    font-size: 0.82rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--b9-text-muted, #c2cfdf);
}

.msc-certification-status[b-g34efi8djj] {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--b9-text, #e5edf7);
}

.msc-certification-helper[b-g34efi8djj],
.msc-certification-message[b-g34efi8djj] {
    font-size: 0.8rem;
    color: var(--b9-text-muted, #c2cfdf);
}

.msc-certification-error[b-g34efi8djj] {
    font-size: 0.8rem;
    color: #fecaca;
}

.msc-player-notes-summary[b-g34efi8djj] {
    cursor: pointer;
    padding: 0.65rem 0.8rem;
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--b9-text, #e5edf7);
}

.msc-player-notes-body[b-g34efi8djj] {
    padding: 0.6rem 0.8rem 0.8rem;
}

.msc-player-notes-copy[b-g34efi8djj],
.msc-player-notes-foot[b-g34efi8djj] {
    font-size: 0.8rem;
    color: var(--b9-text-muted, #c2cfdf);
    margin: 0 0 0.6rem;
}

.msc-player-notes-status[b-g34efi8djj] {
    margin-bottom: 0.55rem;
    padding: 0.45rem 0.6rem;
    border-radius: 8px;
    border: 1px solid rgba(134, 239, 172, 0.35);
    background: rgba(134, 239, 172, 0.14);
    color: #dcfce7;
    font-size: 0.8rem;
}

.msc-player-notes-error[b-g34efi8djj] {
    margin-bottom: 0.55rem;
    padding: 0.45rem 0.6rem;
    border-radius: 8px;
    border: 1px solid rgba(252, 165, 165, 0.35);
    background: rgba(127, 29, 29, 0.24);
    color: #fecaca;
    font-size: 0.8rem;
}

.msc-player-note-row[b-g34efi8djj] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 10px;
    padding: 0.55rem;
    background: rgba(15, 23, 42, 0.35);
    margin-bottom: 0.5rem;
}

.msc-player-note-head[b-g34efi8djj] {
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--b9-text, #e5edf7);
    margin-bottom: 0.45rem;
}

.msc-player-note-field[b-g34efi8djj] {
    margin-bottom: 0.45rem;
}

.msc-player-note-field label[b-g34efi8djj] {
    display: block;
    font-size: 0.74rem;
    font-weight: 700;
    color: var(--b9-text-muted, #c2cfdf);
    margin-bottom: 0.2rem;
}

.msc-player-note-actions[b-g34efi8djj] {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.msc-player-note-readonly-score[b-g34efi8djj] {
    font-size: 0.8rem;
    color: var(--b9-text, #e5edf7);
    margin-bottom: 0.2rem;
}

.msc-player-note-readonly-text[b-g34efi8djj] {
    font-size: 0.8rem;
    color: var(--b9-text-muted, #c2cfdf);
    font-style: italic;
}

.msc-player-note-readonly-empty[b-g34efi8djj],
.msc-player-note-hole-status[b-g34efi8djj] {
    font-size: 0.76rem;
    color: var(--b9-text-soft, #9fb0c4);
}

@media (max-width: 768px) {
    .msc-wolf-context[b-g34efi8djj] {
        margin-top: 0.65rem;
        padding: 0.78rem 0.82rem;
    }

    .msc-wolf-context-row[b-g34efi8djj] {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.16rem;
    }

    .msc-wolf-context-label[b-g34efi8djj] {
        font-size: 0.72rem;
    }

    .msc-wolf-context-player strong[b-g34efi8djj],
    .msc-wolf-context-decision strong[b-g34efi8djj],
    .msc-wolf-context-partner strong[b-g34efi8djj] {
        text-align: left;
        font-size: 0.98rem;
    }

    .msc-wolf-context-guidance[b-g34efi8djj] {
        font-size: 0.82rem;
    }

    .msc-wolf-context-rotation[b-g34efi8djj] {
        font-size: 0.78rem;
    }

    .msc-player-notes-summary[b-g34efi8djj] {
        font-size: 0.84rem;
    }

    .msc-player-note-actions .btn[b-g34efi8djj] {
        flex: 1 1 auto;
        min-height: 40px;
    }
}

.msc-team-context-head[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
}

.msc-team-name[b-g34efi8djj] {
    font-size: 0.95rem;
    font-weight: 800;
    color: var(--b9-text, #f3f6fb);
    margin-right: 0.35rem;
}

.msc-team-chip[b-g34efi8djj] {
    font-size: 0.76rem;
    font-weight: 700;
    color: var(--b9-text, #f3f6fb);
    background: rgba(255,255,255,0.08);
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 999px;
    padding: 0.18rem 0.56rem;
}

.msc-team-players[b-g34efi8djj] {
    font-size: 0.8rem;
    color: var(--b9-text, #f3f6fb);
    margin-top: 0.35rem;
    font-weight: 600;
}

.msc-team-helper[b-g34efi8djj] {
    margin-top: 0.5rem;
    font-size: 0.84rem;
    color: var(--b9-text, #f3f6fb);
    font-weight: 700;
    line-height: 1.4;
}

.msc-team-helper-shotgun[b-g34efi8djj] {
    color: #93c5fd;
}

/* ═══════════════════════════════════════════════════════════
   LOADING / NOT FOUND
═══════════════════════════════════════════════════════════ */
.msc-loading[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 55vh;
    text-align: center;
}

.msc-notfound[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 55vh;
    padding: 2rem;
    text-align: center;
}

.msc-nf-icon[b-g34efi8djj] { font-size: 3.5rem; margin-bottom: 0.75rem; }

/* ═══════════════════════════════════════════════════════════
   ROUND TABS
═══════════════════════════════════════════════════════════ */
.msc-round-tabs[b-g34efi8djj] {
    display: flex;
    gap: 0;
    background: var(--b9-surface-muted, #111827);
    border-bottom: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.msc-round-tabs[b-g34efi8djj]::-webkit-scrollbar { display: none; }

.msc-round-tab[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 0.6rem 1.35rem;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--b9-text-soft, #9fb0c4);
    background: transparent;
    border: none;
    border-bottom: 3px solid transparent;
    cursor: pointer;
    transition: color 0.12s, border-color 0.12s;
    white-space: nowrap;
    position: relative;
}

.msc-round-tab:hover[b-g34efi8djj] { color: var(--b9-text-muted, #c2cfdf); }

.msc-round-tab-active[b-g34efi8djj] {
    color: var(--b9-primary-text);
    border-bottom-color: #1d4ed8;
    background: var(--b9-surface-alt, #0f172a);
}

.msc-rtab-num[b-g34efi8djj] { font-weight: 800; font-size: 0.8rem; }
.msc-rtab-date[b-g34efi8djj] { font-size: 0.68rem; opacity: 0.75; }

.msc-rtab-dot[b-g34efi8djj] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    position: absolute;
    top: 6px;
    right: 8px;
}

.msc-rtab-open[b-g34efi8djj] { background: #22c55e; box-shadow: 0 0 6px rgba(34,197,94,.5); }

/* ═══════════════════════════════════════════════════════════
   SCORING CLOSED BANNER
═══════════════════════════════════════════════════════════ */
.msc-closed-banner[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: rgba(245,158,11,0.15);
    border-bottom: 1px solid #ffc107;
    color: var(--b9-warning-text, #fcd34d);
    font-size: 0.85rem;
    padding: 0.65rem 1rem;
}

/* ── First-time score entry hint ───────────────────────── */
.msc-entry-hint[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--brand-soft, rgba(99,102,241,.12));
    border-bottom: 1px solid var(--brand-soft, rgba(99,102,241,.25));
    color: var(--b9-text-soft, #c7d2fe);
    font-size: var(--font-size-sm);
    padding: 0.55rem 1rem;
}

.msc-entry-hint span[b-g34efi8djj] {
    flex: 1;
}

/* Measured 22x48: tall enough and less than half wide enough. A single-glyph control needs the
   WIDTH floor as much as the height one — third time that half-fix has shown up in this audit. */
.msc-entry-hint-dismiss[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    background: none;
    border: none;
    padding: 0.1rem 0.25rem;
    color: var(--text-muted, #6b7280);
    cursor: pointer;
    line-height: 1;
    border-radius: 4px;
}

.msc-entry-hint-dismiss:hover[b-g34efi8djj] {
    color: var(--b9-text, #f3f4f6);
}

/* ═══════════════════════════════════════════════════════════
   COMPLETION PROGRESS METER
═══════════════════════════════════════════════════════════ */
.msc-progress-bar-wrap[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.55rem 1rem;
    background: var(--b9-surface-muted, #111827);
    border-bottom: 1px solid var(--b9-border, rgba(255,255,255,0.12));
}

.msc-progress-bar-track[b-g34efi8djj] {
    flex: 1;
    height: 6px;
    background: var(--bg-raised);
    border-radius: 3px;
    overflow: hidden;
}

.msc-progress-bar-fill[b-g34efi8djj] {
    height: 100%;
    background: #3b82f6;
    border-radius: 3px;
    transition: width 0.3s ease;
}

.msc-progress-bar-fill.msc-progress-complete[b-g34efi8djj] {
    background: #22c55e;
}

.msc-progress-label[b-g34efi8djj] {
    font-size: 0.78rem;
    color: var(--b9-text-soft, #9fb0c4);
    white-space: nowrap;
    flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════
   SUMMARY RIBBON
═══════════════════════════════════════════════════════════ */
.msc-summary-ribbon[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0;
    background: #0f172a;
    padding: 0.65rem 1rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.msc-summary-ribbon[b-g34efi8djj]::-webkit-scrollbar { display: none; }

.msc-round-cockpit[b-g34efi8djj] {
    margin: 0.45rem 0.9rem 0.35rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 18px;
    background: var(--b9-surface-muted, #111827);
    box-shadow: 0 14px 30px rgba(70, 52, 23, 0.08), inset 0 1px 0 rgba(255,255,255,0.72);
    overflow: hidden;
}

.msc-round-cockpit.scorecard-focus[b-g34efi8djj] {
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-muted, #111827);
}

.msc-round-cockpit .msc-compact-hcp[b-g34efi8djj],
.msc-round-cockpit .msc-team-context[b-g34efi8djj],
.msc-round-cockpit .msc-closed-banner[b-g34efi8djj],
.msc-round-cockpit .msc-task-card[b-g34efi8djj] {
    margin: 0;
    border-radius: 0;
    box-shadow: none;
}

.msc-round-cockpit .msc-team-context[b-g34efi8djj],
.msc-round-cockpit .msc-task-card[b-g34efi8djj],
.msc-round-cockpit .msc-closed-banner[b-g34efi8djj] {
    border-top: 1px solid #e2d8c8;
}

.msc-task-card[b-g34efi8djj] {
    margin: 0;
    background: transparent;
    border: none;
    border-radius: 0;
    box-shadow: none;
    overflow: hidden;
}

.msc-task-card.scorecard-focus[b-g34efi8djj] {
    background: transparent;
    border-color: transparent;
}

.msc-mini-strip-wrap[b-g34efi8djj] {
    background: transparent;
    border-top: 1px solid #e2d8c8;
    padding: 0.5rem 0.8rem 0.7rem;
}

.msc-compact-hcp[b-g34efi8djj] {
    margin: 0.3rem 0.9rem 0;
}

.msc-hcp-pill[b-g34efi8djj] {
    width: 100%;
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    color: var(--b9-text, #f3f6fb);
    border-radius: 999px;
    padding: 0.3rem 0.7rem;
    font-size: 0.78rem;
    font-weight: 700;
}

.msc-hcp-pill--unavailable[b-g34efi8djj] {
    opacity: 0.65;
    cursor: default;
}

.msc-hcp-pill-label[b-g34efi8djj] {
    color: var(--b9-text-muted, #c2cfdf);
    font-weight: 800;
}

.msc-hcp-pill-expand[b-g34efi8djj] {
    margin-left: auto;
    font-size: 0.68rem;
    color: var(--b9-primary-text);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.msc-hcp-expanded[b-g34efi8djj] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 10px;
    background: var(--b9-surface-alt, #0f172a);
    padding: 0.42rem;
}

.msc-hcp-expanded-head[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.35rem;
}

.msc-hcp-expanded-label[b-g34efi8djj] {
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--b9-text-muted, #c2cfdf);
}

.msc-hcp-collapse[b-g34efi8djj] {
    border: none;
    background: transparent;
    color: var(--b9-primary-text);
    font-size: 0.68rem;
    font-weight: 700;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.msc-compact-hcp[b-g34efi8djj]  .hcp-summary {
    padding: 0.44rem 0.65rem;
    border-radius: 10px;
    gap: 0.52rem;
}

.msc-compact-hcp[b-g34efi8djj]  .hcp-summary-kicker {
    font-size: 0.68rem;
    margin-bottom: 0.05rem;
}

.msc-compact-hcp[b-g34efi8djj]  .hcp-summary-title {
    font-size: 0.86rem;
    line-height: 1.15;
}

.msc-compact-hcp[b-g34efi8djj]  .hcp-summary-subtitle {
    display: none;
}

.msc-compact-hcp[b-g34efi8djj]  .hcp-summary-timing {
    margin-top: 0.08rem;
    font-size: 0.66rem;
}

.msc-task-head[b-g34efi8djj] {
    padding: 0.78rem 0.9rem 0.52rem;
}

.msc-task-kicker[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--b9-text-muted, #c2cfdf);
    margin-bottom: 0.18rem;
}

.msc-task-title[b-g34efi8djj] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 850;
    color: var(--b9-text, #f3f6fb);
    letter-spacing: -0.02em;
    line-height: 1.08;
}

.msc-task-sub[b-g34efi8djj],
.msc-task-authority[b-g34efi8djj] {
    margin: 0.28rem 0 0;
    font-size: 0.96rem;
    line-height: 1.42;
    color: #a7d8ff;
    font-weight: 600;
}

/* .msc-task-authority is visually identical to .msc-task-sub but deliberately a SEPARATE class:
   the <=480px block hides .msc-task-sub to keep first-score-focus near the top, which also hid the
   authority message — the one line telling a player what they may and may not do — on every phone.
   Never add .msc-task-authority to a display:none rule. */

.msc-scorer-surface[b-g34efi8djj] {
    margin-top: 0.62rem;
    border: 1px solid rgba(56, 189, 248, 0.42);
    background: rgba(14, 116, 144, 0.17);
    border-radius: 12px;
    padding: 0.55rem 0.62rem;
}

.msc-scorer-row[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    gap: 0.28rem;
}

.msc-scorer-label[b-g34efi8djj] {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: #bfdbfe;
}

.msc-scorer-select[b-g34efi8djj] {
    border: 1px solid rgba(56, 189, 248, 0.45);
    background-color: rgba(15, 23, 42, 0.86);
    color: #f8fbff;
    font-weight: 700;
}

.msc-scorer-copy[b-g34efi8djj] {
    margin: 0.5rem 0 0;
    color: #e0f2fe;
    font-size: 0.9rem;
    font-weight: 700;
}

.msc-scorer-group[b-g34efi8djj] {
    margin: 0.18rem 0 0;
    color: #bae6fd;
    font-size: 0.78rem;
    font-weight: 600;
}

.msc-group-panel[b-g34efi8djj] {
    margin-top: 0.62rem;
    border: 1px solid rgba(125, 211, 252, 0.34);
    background: linear-gradient(180deg, rgba(8, 47, 73, 0.9) 0%, rgba(12, 74, 110, 0.5) 100%);
    border-radius: 16px;
    padding: 0.75rem;
    box-shadow: inset 0 1px 0 rgba(224, 242, 254, 0.08);
}

.msc-group-panel-title[b-g34efi8djj] {
    font-size: 0.95rem;
    font-weight: 850;
    color: #f0f9ff;
    letter-spacing: -0.01em;
}

/* The honest answer to "who is the scorer?" — nobody is. Slightly stronger than the instruction
   line below it, because it is the rule; the line below is just how to use it. */
.msc-group-panel-rule[b-g34efi8djj] {
    margin: 0.3rem 0 0;
    color: #f0f9ff;
    font-size: 0.88rem;
    font-weight: 700;
}

.msc-group-panel-copy[b-g34efi8djj] {
    margin: 0.22rem 0 0;
    color: #dbeafe;
    font-size: 0.84rem;
    font-weight: 600;
}

.msc-group-panel-grid[b-g34efi8djj] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 0.52rem;
    margin-top: 0.7rem;
}

.msc-group-card[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    text-align: left;
    min-height: 78px;
    border-radius: 14px;
    border: 1px solid rgba(147, 197, 253, 0.25);
    background: rgba(15, 23, 42, 0.52);
    color: #eff6ff;
    padding: 0.72rem 0.78rem;
    box-shadow: 0 10px 24px rgba(2, 6, 23, 0.12);
}

.msc-group-card:hover[b-g34efi8djj],
.msc-group-card:focus-visible[b-g34efi8djj] {
    border-color: rgba(125, 211, 252, 0.55);
    background: rgba(12, 74, 110, 0.48);
    outline: none;
}

.msc-group-card.is-active[b-g34efi8djj] {
    border-color: rgba(134, 239, 172, 0.5);
    background: linear-gradient(180deg, rgba(20, 83, 45, 0.52) 0%, rgba(15, 23, 42, 0.7) 100%);
}

.msc-group-card-head[b-g34efi8djj] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.4rem;
}

.msc-group-card-name[b-g34efi8djj] {
    font-size: 0.92rem;
    font-weight: 800;
    line-height: 1.22;
}

.msc-group-card-badge[b-g34efi8djj] {
    flex-shrink: 0;
    border-radius: 999px;
    background: rgba(134, 239, 172, 0.18);
    border: 1px solid rgba(134, 239, 172, 0.34);
    color: #dcfce7;
    padding: 0.14rem 0.48rem;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.msc-group-card-status[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    width: fit-content;
    min-height: 26px;
    border-radius: 999px;
    padding: 0.16rem 0.5rem;
    font-size: 0.74rem;
    font-weight: 800;
    letter-spacing: 0.03em;
}

.msc-group-card-status.is-complete[b-g34efi8djj] {
    background: rgba(134, 239, 172, 0.16);
    color: #dcfce7;
}

.msc-group-card-status.is-needs-scores[b-g34efi8djj] {
    background: rgba(253, 224, 71, 0.16);
    color: #fef08a;
}

.msc-task-intel[b-g34efi8djj] {
    margin-top: 0.46rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.34rem;
}

.msc-task-intel-chip[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    gap: 0.18rem;
    min-height: 28px;
    border-radius: 999px;
    border: 1px solid rgba(56, 189, 248, 0.35);
    background: rgba(14, 116, 144, 0.18);
    padding: 0.14rem 0.56rem;
    /* "0 / 18 scored" — a progress readout a golfer checks, not a decorative pill, and its
       numbers live in a classless <strong> that inherits from here. */
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: #bae6fd;
}

.msc-task-intel-chip strong[b-g34efi8djj] {
    font-weight: 800;
    color: var(--b9-text, #f3f6fb);
}

.msc-task-note[b-g34efi8djj] {
    margin: 0.38rem 0 0;
    font-size: 0.86rem;
    font-weight: 700;
    color: var(--b9-text, #f3f6fb);
}

.msc-task-chip-row[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.38rem;
    margin-top: 0.48rem;
}

.msc-task-chip[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0.18rem 0.58rem;
    border-radius: 999px;
    border: 1px solid rgba(56, 189, 248, 0.35);
    background: rgba(14, 116, 144, 0.18);
    color: #cffafe;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.msc-entry-details[b-g34efi8djj] {
    margin-top: 0.55rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    background: rgba(15, 23, 42, 0.55);
    padding: 0.5rem 0.65rem;
}

.msc-entry-details-summary[b-g34efi8djj] {
    cursor: pointer;
    font-size: var(--font-size-sm);
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #93c5fd;
}

.msc-entry-details[open] .msc-entry-details-summary[b-g34efi8djj] {
    margin-bottom: 0.45rem;
}

.msc-entry-details .msc-task-intel[b-g34efi8djj],
.msc-entry-details .msc-task-chip-row[b-g34efi8djj],
.msc-entry-details .msc-task-note[b-g34efi8djj] {
    margin-top: 0.45rem;
}

.msc-view-toggle-wrap[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 0.35rem;
    flex-wrap: wrap;
}

.msc-view-toggle-label[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    color: var(--b9-text-soft, #9fb0c4);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.msc-progress-nav-head[b-g34efi8djj] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.55rem;
    flex-wrap: wrap;
}

.msc-progress-nav-title[b-g34efi8djj] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--b9-text, #f3f6fb);
}

.msc-progress-nav-sub[b-g34efi8djj] {
    margin-top: 0.08rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text, #f3f6fb);
    font-weight: 600;
}

.msc-progress-nav-sub strong[b-g34efi8djj] {
    color: var(--b9-text, #f3f6fb);
}

.msc-progress-now[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    margin-right: 0.2rem;
    padding: 0.12rem 0.42rem;
    border-radius: 999px;
    background: rgba(14, 116, 144, 0.24);
    color: #bae6fd;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.msc-progress-nav-summary[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: wrap;
}

.msc-view-toggle-btn[b-g34efi8djj] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    color: var(--b9-text-muted, #c2cfdf);
    border-radius: 8px;
    font-size: 0.7rem;
    font-weight: 700;
    padding: 0.2rem 0.55rem;
}

.msc-view-toggle-btn:focus-visible[b-g34efi8djj] {
    outline: 2px solid #60a5fa;
    outline-offset: 1px;
}

.msc-view-toggle-btn.active[b-g34efi8djj] {
    background: #1d4ed8;
    color: #fff;
    border-color: #1d4ed8;
}

.msc-compact-status-chip[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    gap: 0.2rem;
    border: 1px solid rgba(56, 189, 248, 0.35);
    background: rgba(14, 116, 144, 0.18);
    border-radius: 999px;
    padding: 0.12rem 0.45rem;
    font-size: var(--font-size-sm);
    color: #bae6fd;
    font-weight: 600;
}

.msc-compact-status-chip.is-saved[b-g34efi8djj] {
    border-color: #9dd8b2;
    background: var(--b9-surface-muted, #111827);
    color: #166534;
}

.msc-edit-cards-link[b-g34efi8djj] {
    margin-left: auto;
    border: none;
    background: transparent;
    color: var(--b9-primary-text);
    font-size: 0.68rem;
    font-weight: 800;
    text-decoration: underline;
    text-underline-offset: 2px;
    padding: 0;
}

.msc-mini-strip[b-g34efi8djj] {
    display: flex;
    gap: 0.35rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.msc-mini-strip[b-g34efi8djj]::-webkit-scrollbar { display: none; }

.msc-mini-hole[b-g34efi8djj] {
    min-width: 64px;
    border-radius: 12px;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    color: var(--msc-light-text);
    text-decoration: none;
    text-align: center;
    padding: 0.52rem 0.38rem;
    display: flex;
    flex-direction: column;
    line-height: 1.1;
    gap: 0.12rem;
    position: relative;
    appearance: none;
    cursor: pointer;
    transition: border-color 0.12s, box-shadow 0.12s, transform 0.08s, background 0.12s;
}

.msc-mini-hole[b-g34efi8djj]::before {
    content: "";
    position: absolute;
    left: 8px;
    right: 8px;
    top: 6px;
    height: 2px;
    border-radius: 2px;
    background: transparent;
}

.msc-mini-hole:hover[b-g34efi8djj] {
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    box-shadow: 0 4px 10px rgba(70, 52, 23, 0.08);
}

.msc-mini-hole:active[b-g34efi8djj] {
    transform: translateY(1px);
}

.msc-mini-hole:focus-visible[b-g34efi8djj] {
    outline: 2px solid #60a5fa;
    outline-offset: 1px;
}

.msc-mini-hole.filled[b-g34efi8djj] {
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
}

.msc-mini-hole.complete[b-g34efi8djj] {
    border-color: rgba(34,197,94,0.5);
    background: rgba(34,197,94,0.10);
    box-shadow: inset 0 0 0 1px rgba(34, 197, 94, 0.14);
}

.msc-mini-hole.complete[b-g34efi8djj]::before {
    background: linear-gradient(90deg, rgba(34, 197, 94, 0.12) 0%, rgba(34, 197, 94, 0.55) 100%);
}

.msc-mini-hole.active[b-g34efi8djj] {
    border-color: rgba(37,99,235,0.7);
    background: rgba(37,99,235,0.15);
    box-shadow: 0 0 0 3px rgba(37,99,235,0.25), 0 8px 16px rgba(0,0,0,0.3);
}

.msc-mini-hole.active[b-g34efi8djj]::before {
    background: linear-gradient(90deg, rgba(37, 99, 235, 0.12) 0%, rgba(37, 99, 235, 0.65) 100%);
}

.msc-mini-hole-num[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    color: var(--msc-light-secondary);
}

.msc-mini-hole-score[b-g34efi8djj] {
    font-size: 1.2rem;
    font-weight: 900;
    color: var(--msc-light-text);
    letter-spacing: -0.01em;
}

.msc-mini-hole-status[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text-soft, #9fb0c4);
}

.msc-desktop-scorecard-wrap[b-g34efi8djj] {
    display: block;
    max-width: 1100px;
    margin: 0.35rem auto 0;
    overflow-x: auto;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 14px;
    background: var(--b9-surface-muted, #111827);
    box-shadow: 0 16px 30px rgba(70, 52, 23, 0.1);
}

.msc-secondary-panel[b-g34efi8djj] {
    max-width: 1100px;
    margin: 1rem auto 0;
    padding: 0 0.25rem;
}

.msc-secondary-panel-summary[b-g34efi8djj] {
    cursor: pointer;
    font-size: 0.95rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    color: var(--b9-text, #f3f6fb);
    margin: 0 0 0.5rem;
    padding: 0.1rem 0.15rem;
    user-select: none;
}

@media (min-width: 768px) {
    .msc-desktop-scorecard-wrap[b-g34efi8djj] {
        margin-top: 0.4rem;
        border-color: #94a3b8;
        box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
    }
}

.msc-desktop-scorecard[b-g34efi8djj] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
    min-width: 760px;
}

.msc-score-legend[b-g34efi8djj] {
    border-top: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    padding: 0.5rem 0.75rem 0.6rem;
    background: var(--b9-surface-alt, #0f172a);
}

.msc-score-legend-label[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--b9-text-muted, #c2cfdf);
    margin-bottom: 0.35rem;
}

.msc-score-legend-items[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1.1rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text, #f3f6fb);
    font-weight: 600;
}

.msc-mark-circle[b-g34efi8djj],
.msc-mark-square[b-g34efi8djj],
.msc-mark-double[b-g34efi8djj] {
    display: inline-block;
    width: 1rem;
    text-align: center;
    font-weight: 900;
    margin-right: 0.12rem;
}

.msc-desktop-scorecard th[b-g34efi8djj],
.msc-desktop-scorecard td[b-g34efi8djj] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    padding: 0.45rem;
    text-align: center;
    background: var(--b9-surface-alt, #0f172a);
}

.msc-desktop-scorecard thead th[b-g34efi8djj] {
    background: linear-gradient(180deg, #0f172a 0%, #18253c 100%);
    color: #f8fafc;
    font-weight: 800;
    position: sticky;
    top: 0;
    z-index: 2;
}

.msc-desktop-scorecard th:first-child[b-g34efi8djj],
.msc-desktop-scorecard td:first-child[b-g34efi8djj] {
    position: sticky;
    left: 0;
    background: var(--b9-surface-alt, #0f172a);
    font-weight: 700;
    z-index: 1;
}

.msc-desktop-scorecard thead th:first-child[b-g34efi8djj] {
    z-index: 3;
}

.msc-desktop-scorecard tbody tr:nth-child(even) td[b-g34efi8djj] {
    background: var(--b9-surface-alt, #0f172a);
}

.msc-desktop-scorecard tbody th[b-g34efi8djj] {
    text-transform: uppercase;
    letter-spacing: 0.04em;
    font-size: var(--font-size-sm);
    color: var(--b9-text, #f3f6fb);
}

.msc-meta-row th[b-g34efi8djj],
.msc-meta-row td[b-g34efi8djj] {
    color: var(--b9-text, #f3f6fb);
    font-weight: 800;
}

.msc-meta-yards-row th[b-g34efi8djj],
.msc-meta-yards-row td[b-g34efi8djj] {
    background: var(--b9-surface-muted, #111827);
    color: var(--b9-text, #f3f6fb);
}

.msc-meta-par-row th[b-g34efi8djj],
.msc-meta-par-row td[b-g34efi8djj] {
    background: var(--b9-surface-alt, #0f172a);
    color: var(--b9-text-muted, #c2cfdf);
}

.msc-meta-si-row th[b-g34efi8djj],
.msc-meta-si-row td[b-g34efi8djj] {
    background: var(--b9-surface-muted, #111827);
    color: var(--b9-text-muted, #c2cfdf);
}

.msc-desktop-score-cell[b-g34efi8djj] {
    min-width: 62px;
    min-height: 52px;
}

.msc-desktop-score-btn[b-g34efi8djj] {
    border: 1px solid transparent;
    background: transparent;
    border-radius: 10px;
    min-width: 52px;
    /* 44px, the iOS number, for the third time in this file — and this one is a SCORE ENTRY
       target: eighteen of them, one per hole, on the full scorecard. The project's floor is 48
       and X03 is not deferred on a player surface. (The keypad's own 64px key is ruled by the
       Scoring Design Lock and is a different control; nothing here touches it.) */
    min-height: 48px;
    font-weight: 800;
    font-size: 1.14rem;
    color: var(--b9-text, #f3f6fb);
    transition: border-color 0.12s, background 0.12s, box-shadow 0.12s;
    position: relative;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
}

.msc-desktop-score-val[b-g34efi8djj] {
    letter-spacing: -0.02em;
}

.msc-desktop-score-btn:hover:not(:disabled)[b-g34efi8djj],
.msc-desktop-score-btn:focus-visible[b-g34efi8djj] {
    border-color: #8e7b5f;
    background: var(--b9-surface-alt, #0f172a);
    box-shadow: inset 0 0 0 1px rgba(142, 123, 95, 0.35);
    outline: none;
}

.msc-meta-diff-row th[b-g34efi8djj],
.msc-meta-diff-row td[b-g34efi8djj] {
    background: var(--b9-surface-muted, #111827);
    color: var(--b9-text, #f3f6fb);
    font-weight: 800;
}

.msc-cell-diff[b-g34efi8djj] {
    font-size: 0.76rem;
    letter-spacing: 0.01em;
}

.msc-desktop-score-btn.score-mark-circle[b-g34efi8djj],
.msc-desktop-score-btn.score-mark-double-circle[b-g34efi8djj],
.msc-desktop-score-btn.score-mark-square[b-g34efi8djj],
.msc-desktop-score-btn.score-mark-double-square[b-g34efi8djj] {
    border-color: transparent;
    background: transparent;
}

.msc-desktop-score-btn.score-mark-circle[b-g34efi8djj]::after,
.msc-desktop-score-btn.score-mark-double-circle[b-g34efi8djj]::after,
.msc-desktop-score-btn.score-mark-square[b-g34efi8djj]::after,
.msc-desktop-score-btn.score-mark-double-square[b-g34efi8djj]::after {
    content: "";
    position: absolute;
    inset: 5px;
    pointer-events: none;
}

.msc-desktop-score-btn.score-mark-circle[b-g34efi8djj]::after {
    border: 1.75px solid #0f172a;
    border-radius: 999px;
}

.msc-desktop-score-btn.score-mark-double-circle[b-g34efi8djj]::after {
    border: 1.75px solid #0f172a;
    border-radius: 999px;
    box-shadow: 0 0 0 3px var(--b9-surface-muted, #111827) inset, 0 0 0 3px rgba(255,255,255,0.65);
}

.msc-desktop-score-btn.score-mark-square[b-g34efi8djj]::after {
    border: 1.75px solid #0f172a;
    border-radius: 2px;
}

.msc-desktop-score-btn.score-mark-double-square[b-g34efi8djj]::after {
    border: 1.75px solid #0f172a;
    border-radius: 2px;
    box-shadow: 0 0 0 3px var(--b9-surface-muted, #111827) inset, 0 0 0 3px rgba(255,255,255,0.65);
}

.msc-hide-cards-desktop[b-g34efi8djj] {
    display: none;
}

.msc-ribbon-tile[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0 1.1rem;
    flex-shrink: 0;
}

.msc-ribbon-divider[b-g34efi8djj] {
    width: 1px;
    height: 32px;
    background: rgba(255,255,255,0.12);
    flex-shrink: 0;
}

.msc-ribbon-label[b-g34efi8djj] {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #cbd5e1;
    display: flex;
    align-items: center;
    gap: 4px;
}

.msc-ribbon-hcp[b-g34efi8djj] {
    background: rgba(255,255,255,0.15);
    border-radius: 10px;
    padding: 0 5px;
    font-size: 0.65rem;
    font-weight: 700;
    color: #cbd5e1;
}

.msc-ribbon-val[b-g34efi8djj] {
    font-size: 1.15rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.1;
    margin-top: 2px;
}

.msc-val-net[b-g34efi8djj] { color: #93c5fd; }

.msc-ribbon-diff[b-g34efi8djj] {
    font-size: 0.68rem;
    font-weight: 700;
    margin-top: 1px;
    padding: 1px 6px;
    border-radius: 8px;
}

.msc-tee-dot[b-g34efi8djj] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

/* diff color classes (ribbon + totals) */
.diff-under[b-g34efi8djj] { color: #86efac; }
.diff-over[b-g34efi8djj]  { color: #93c5fd; }
.diff-even[b-g34efi8djj]  { color: rgba(255,255,255,0.55); }

/* ═══════════════════════════════════════════════════════════
   HOLES CONTAINER
═══════════════════════════════════════════════════════════ */
.msc-holes-container[b-g34efi8djj] {
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0;
    max-width: 560px;
    margin: 0 auto;
    width: 100%;
}

.msc-simple-stage[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.msc-simple-stage-head[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.45rem;
    padding: 0.15rem 0.2rem 0.35rem;
}

.msc-simple-stage-hole[b-g34efi8djj] {
    font-size: 0.95rem;
    font-weight: 800;
    color: var(--b9-text, #f3f6fb);
}
.msc-simple-stage-save[b-g34efi8djj] {
    font-size: 0.76rem;
    font-weight: 700;
    color: #86efac;
}

.msc-simple-stage-nav[b-g34efi8djj] {
    display: flex;
    gap: 0.45rem;
    margin-top: 0.12rem;
}

.msc-simple-stage-nav-btn[b-g34efi8djj] {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    color: var(--b9-text, #f3f6fb);
    border-radius: 10px;
    min-height: 48px;
    padding: 0.4rem 0.8rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.msc-simple-stage .msc-hole-card[b-g34efi8djj] {
    margin-bottom: 0;
}

.msc-simple-stage-nav-btn:disabled[b-g34efi8djj] {
    opacity: 0.45;
    cursor: not-allowed;
}

.msc-first-score-focus[b-g34efi8djj] {
    margin: 0.52rem 0 0.48rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 14px;
    background: var(--b9-surface-muted, #111827);
    box-shadow: 0 6px 14px rgba(70, 52, 23, 0.08);
    padding: 0.55rem;
}

.msc-first-score-focus--submitted[b-g34efi8djj] {
    background: rgba(34,197,94,0.12);
    border-color: rgba(34,197,94,0.4);
}

.msc-first-score-action--readonly[b-g34efi8djj] {
    background: transparent;
    border-color: #86efac;
    cursor: default;
}

.msc-first-score-head[b-g34efi8djj] {
    font-size: 0.66rem;
    font-weight: 800;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: var(--b9-text-muted, #c2cfdf);
    margin-bottom: 0.28rem;
}

.msc-first-score-action[b-g34efi8djj] {
    width: 100%;
    border: 2px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    border-radius: 12px;
    padding: 0.52rem 0.65rem;
    display: flex;
    align-items: baseline;
    gap: 0.42rem;
    flex-wrap: wrap;
    text-align: left;
}

.msc-first-score-hole[b-g34efi8djj] {
    font-size: 0.84rem;
    font-weight: 900;
    color: var(--b9-text, #f3f6fb);
}

.msc-first-score-value[b-g34efi8djj] {
    font-size: 1.35rem;
    font-weight: 900;
    color: var(--b9-text, #f3f6fb);
    letter-spacing: -0.02em;
}

.msc-first-score-meta[b-g34efi8djj] {
    margin-left: auto;
    font-size: 0.74rem;
    font-weight: 700;
    color: var(--b9-text-muted, #c2cfdf);
}

/* ── Nine section label ── */
.msc-nine-label[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 0.25rem 0.35rem;
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    color: var(--b9-text-soft, #9fb0c4);
}

.msc-nine-par[b-g34efi8djj] {
    font-weight: 600;
    font-size: 0.7rem;
    color: var(--b9-text-soft, #9fb0c4);
}

/* ── Nine subtotal row ── */
.msc-nine-total[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.55rem 1rem;
    margin-bottom: 0.75rem;
    background: var(--b9-surface-muted, #111827);
    border-radius: 10px;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--b9-text-soft, #9fb0c4);
}

.msc-nine-score[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.95rem;
    font-weight: 800;
}

.msc-nine-diff[b-g34efi8djj] {
    font-size: 0.7rem;
    font-weight: 700;
    padding: 1px 7px;
    border-radius: 10px;
    background: rgba(0,0,0,0.06);
}

/* ═══════════════════════════════════════════════════════════
   HOLE CARD
═══════════════════════════════════════════════════════════ */
.msc-hole-card[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0;
    position: relative;
    padding: 0.8rem 0.95rem;
    margin-bottom: 6px;
    border-radius: 14px;
    background: var(--b9-surface-muted, #111827);
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-left-width: 8px;
    border-left-color: #94a3b8;
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
    box-shadow: 0 5px 12px rgba(70, 52, 23, 0.06);
}

.msc-hole-card.msc-hole-highlight[b-g34efi8djj] {
    border-color: #94a3b8;
    box-shadow: 0 0 0 3px rgba(29, 78, 216, 0.14), 0 14px 24px rgba(32, 57, 109, 0.12);
}

/* Score-status tinting */
.hole-eagle[b-g34efi8djj]  { background: rgba(22,163,74,0.10); border-color: var(--b9-border, rgba(255,255,255,0.12)); border-left-color: #16a34a; }
.hole-birdie[b-g34efi8djj] { background: rgba(34,197,94,0.08); border-color: var(--b9-border, rgba(255,255,255,0.12)); border-left-color: #22c55e; }
.hole-par[b-g34efi8djj]    { background: var(--b9-surface-muted, #111827); border-color: var(--b9-border, rgba(255,255,255,0.12)); border-left-color: #64748b; }
.hole-bogey[b-g34efi8djj]  { background: rgba(59,130,246,0.10); border-color: var(--b9-border, rgba(255,255,255,0.12)); border-left-color: #3b82f6; }
.hole-double[b-g34efi8djj] { background: rgba(37,99,235,0.12); border-color: var(--b9-border, rgba(255,255,255,0.12)); border-left-color: #2563eb; }

/* ── Left: hole number ── */
.msc-hole-left[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    min-width: 44px;
    flex-shrink: 0;
}

.msc-hole-num[b-g34efi8djj] {
    font-size: 1.42rem;
    font-weight: 900;
    color: var(--b9-text, #f3f6fb);
    line-height: 1;
}

.msc-hole-meta[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.msc-hole-par[b-g34efi8djj]  { font-size: var(--font-size-sm); font-weight: 800; color: var(--b9-text, #f3f6fb); }
.msc-hole-si[b-g34efi8djj]   { font-size: var(--font-size-sm); color: var(--b9-text-soft, #9fb0c4); font-weight: 800; }
.msc-hole-yrd[b-g34efi8djj]  { font-size: var(--font-size-sm); font-weight: 800; color: var(--b9-text, #f3f6fb); }

/* ── Middle: score name ── */
.msc-hole-score-label[b-g34efi8djj] {
    flex: 1;
    text-align: center;
    padding: 0 0.5rem;
}

.msc-score-pill[b-g34efi8djj] {
    position: relative;
    border: 2px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-muted, #111827);
    min-width: 118px;
    min-height: 82px;
    border-radius: 16px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.28rem 0.82rem;
    transition: border-color 0.12s, box-shadow 0.12s, background 0.12s;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.78);
}

.msc-score-pill.has-score[b-g34efi8djj] {
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-muted, #111827);
}

.msc-score-pill.is-empty[b-g34efi8djj] {
    border-style: dashed;
}

.msc-score-pill:focus-visible[b-g34efi8djj] {
    outline: 2px solid #60a5fa;
    outline-offset: 2px;
    box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.18);
}

.msc-score-pill.readonly[b-g34efi8djj] {
    font-size: 1.35rem;
    font-weight: 900;
}

.msc-score-pill-value[b-g34efi8djj] {
    position: relative;
    z-index: 1;
    font-size: 2.62rem;
    font-weight: 900;
    color: var(--b9-text, #f3f6fb);
    letter-spacing: -0.04em;
    font-variant-numeric: tabular-nums;
    font-feature-settings: "tnum" 1;
    text-shadow: 0 1px 0 rgba(255,255,255,0.85);
}

.msc-score-name[b-g34efi8djj] {
    font-size: 0.84rem;
    font-weight: 600;
    color: var(--b9-text, #f3f6fb);
}

.msc-score-empty[b-g34efi8djj] {
    font-size: 0.8rem;
    color: var(--b9-text-muted, #c2cfdf);
    font-weight: 600;
}

.msc-score-diff[b-g34efi8djj] {
    margin-top: 0.14rem;
    font-size: 0.72rem;
    font-weight: 700;
}

.msc-score-pill.score-mark-circle[b-g34efi8djj]::after,
.msc-score-pill.score-mark-double-circle[b-g34efi8djj]::after,
.msc-score-pill.score-mark-square[b-g34efi8djj]::after,
.msc-score-pill.score-mark-double-square[b-g34efi8djj]::after {
    content: "";
    position: absolute;
    inset: 6px;
    pointer-events: none;
}

.msc-score-pill.score-mark-circle[b-g34efi8djj]::after {
    border: 1.8px solid #1f3f7f;
    border-radius: 999px;
}

.msc-score-pill.score-mark-double-circle[b-g34efi8djj]::after {
    border: 1.8px solid #125a34;
    border-radius: 999px;
    box-shadow: 0 0 0 3px var(--b9-surface-muted, #111827) inset, 0 0 0 3px #22c55e;
}

.msc-score-pill.score-mark-square[b-g34efi8djj]::after {
    border: 1.8px solid #2563eb;
    border-radius: 4px;
}

.msc-score-pill.score-mark-double-square[b-g34efi8djj]::after {
    border: 1.8px solid #1d4ed8;
    border-radius: 4px;
    box-shadow: 0 0 0 3px var(--b9-surface-muted, #111827) inset, 0 0 0 3px #60a5fa;
}

/* The −/+ hole stepper lived here until EV-UX-1 (e26e0c9) made entry tap-only.
   Score entry is the pill + keypad above; there is no stepper to style. */

.msc-hole-sync[b-g34efi8djj] {
    position: absolute;
    bottom: 6px;
    left: 64px;
    font-size: 0.68rem;
    color: var(--b9-text-soft, #9fb0c4);
    font-weight: 600;
    opacity: 0.82;
}

/* score value tints on the number tile */
.hole-eagle-num[b-g34efi8djj]  { background: rgba(22,163,74,0.18); color: #dcfce7; border-color: #16a34a; }
.hole-birdie-num[b-g34efi8djj] { background: rgba(34,197,94,0.16); color: #bbf7d0; border-color: #22c55e; }
.hole-par-num[b-g34efi8djj]    { background: var(--b9-surface-alt, #0f172a); color: var(--b9-text, #f3f6fb); border-color: #64748b; }
.hole-bogey-num[b-g34efi8djj]  { background: rgba(59,130,246,0.14); color: #bfdbfe; border-color: #3b82f6; }
.hole-double-num[b-g34efi8djj] { background: rgba(37,99,235,0.18); color: #dbeafe; border-color: #2563eb; }

/* ═══════════════════════════════════════════════════════════
   TOTAL CARD
═══════════════════════════════════════════════════════════ */
.msc-total-card[b-g34efi8djj] {
    background: #0f172a;
    border-radius: 16px;
    padding: 1.3rem 1.35rem;
    margin-top: 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.msc-total-row[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.msc-total-net-row[b-g34efi8djj] {
    border-top: 1px solid rgba(255,255,255,0.1);
    padding-top: 0.6rem;
}

.msc-total-label[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    color: rgba(255,255,255,0.88);
}

.msc-total-vals[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.msc-total-gross[b-g34efi8djj] {
    font-size: 1.72rem;
    font-weight: 900;
    color: #fff;
}

.msc-total-under[b-g34efi8djj] { color: #86efac; }
.msc-total-over[b-g34efi8djj]  { color: #93c5fd; }
.msc-total-even[b-g34efi8djj]  { color: #93c5fd; }

.msc-total-diff[b-g34efi8djj] {
    font-size: 0.85rem;
    font-weight: 800;
    padding: 3px 10px;
    border-radius: 20px;
    background: rgba(255,255,255,0.08);
}

.msc-total-net-val[b-g34efi8djj] {
    font-size: 1.3rem;
    font-weight: 800;
    color: #93c5fd;
}

.msc-total-hint[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    color: rgba(255,255,255,0.78);
    font-weight: 700;
    padding-top: 0.25rem;
    border-top: 1px solid rgba(255,255,255,0.06);
}

/* ═══════════════════════════════════════════════════════════
   SAVE ERROR BANNER
═══════════════════════════════════════════════════════════ */
.msc-save-error[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    background: rgba(239, 68, 68, 0.12);
    border: 1px solid rgba(239, 68, 68, 0.4);
    border-radius: 12px;
    padding: 0.85rem 1rem;
    margin: 0.75rem 1rem 0;
    color: #fca5a5;
    font-size: 0.875rem;
    font-weight: 600;
}

.msc-save-error-hint[b-g34efi8djj] {
    font-weight: 400;
    font-size: 0.8rem;
    color: rgba(252,165,165,0.75);
}

.msc-submit-notice[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    background: rgba(34, 197, 94, 0.14);
    border: 1px solid rgba(34, 197, 94, 0.35);
    border-radius: 12px;
    padding: 0.75rem 0.95rem;
    margin: 0.75rem 1rem 0;
    color: #86efac;
    font-size: 0.85rem;
    font-weight: 700;
}

.msc-recovery-notice[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    background: rgba(59, 130, 246, 0.12);
    border: 1px solid rgba(59, 130, 246, 0.32);
    border-radius: 12px;
    padding: 0.75rem 0.95rem;
    margin: 0.75rem 1rem 0;
    color: #bfdbfe;
    font-size: 0.85rem;
    font-weight: 700;
}

/* The review dialog's own buttons — they used to borrow the deleted score pad's classes. */
.msc-review-btn[b-g34efi8djj] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    border-radius: 8px;
    padding: 0.3rem 0.65rem;
    font-size: 0.78rem;
    font-weight: 700;
    min-height: var(--touch-target-min, 48px);
    color: var(--b9-text, #f3f6fb);
}

.msc-review-btn.apply[b-g34efi8djj] {
    border-color: var(--b9-primary, #1d4ed8);
    background: var(--b9-primary, #1d4ed8);
    color: #fff;
}

.msc-review-btn:focus-visible[b-g34efi8djj] {
    outline: 2px solid #60a5fa;
    outline-offset: 1px;
}

.msc-review-backdrop[b-g34efi8djj] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.58);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    z-index: 1300;
}

.msc-review-modal[b-g34efi8djj] {
    width: min(640px, 100%);
    max-height: min(80vh, 760px);
    overflow: auto;
    background: var(--b9-surface-alt, #0f172a);
    border-radius: 18px;
    box-shadow: 0 24px 56px rgba(15, 23, 42, 0.28);
    padding: 1rem;
}

.msc-review-head[b-g34efi8djj] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
}

.msc-review-kicker[b-g34efi8djj] {
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--msc-light-secondary);
}

.msc-review-title[b-g34efi8djj] {
    margin: 0.12rem 0 0;
    font-size: 1.18rem;
    font-weight: 900;
    color: var(--msc-light-text);
}

.msc-review-close[b-g34efi8djj] {
    border: none;
    background: transparent;
    color: var(--msc-light-muted);
}

.msc-review-sub[b-g34efi8djj] {
    margin: 0.4rem 0 0;
    font-size: 0.86rem;
    color: var(--msc-light-secondary);
    font-weight: 700;
}

.msc-review-summary[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-top: 0.8rem;
}

.msc-review-list[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    margin-top: 0.8rem;
}

.msc-review-row[b-g34efi8djj] {
    display: grid;
    grid-template-columns: 88px 1fr 52px 120px;
    gap: 0.55rem;
    align-items: center;
    padding: 0.65rem 0.75rem;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    background: var(--b9-surface-muted, #111827);
}

.msc-review-hole[b-g34efi8djj],
.msc-review-score[b-g34efi8djj] {
    font-weight: 800;
    color: var(--msc-light-text);
}

.msc-review-meta[b-g34efi8djj],
.msc-review-notation[b-g34efi8djj] {
    font-size: 0.78rem;
    color: var(--msc-light-secondary);
    font-weight: 700;
}

.msc-review-actions[b-g34efi8djj] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 0.9rem;
}

/* ═══════════════════════════════════════════════════════════
   ROUND COMPLETE BANNER
═══════════════════════════════════════════════════════════ */
.msc-complete-banner[b-g34efi8djj] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
    background: linear-gradient(135deg, rgba(14,116,144,0.22) 0%, rgba(30,64,175,0.2) 100%);
    border: 1px solid rgba(56,189,248,0.38);
    border-radius: 16px;
    padding: 1.1rem 1.25rem;
    margin: 0.75rem 1rem 0;
}

.msc-complete-icon[b-g34efi8djj] {
    font-size: 2rem;
    color: #86efac;
    flex-shrink: 0;
    line-height: 1;
}

.msc-complete-body[b-g34efi8djj] {
    flex: 1;
    min-width: 0;
}

.msc-complete-title[b-g34efi8djj] {
    font-size: 1rem;
    font-weight: 800;
    color: #ecfeff;
    margin-bottom: 0.28rem;
}

.msc-complete-sub[b-g34efi8djj] {
    font-size: 0.86rem;
    color: #dbeafe;
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    align-items: center;
}

.msc-complete-lb-btn[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background: rgba(30, 41, 59, 0.76);
    border: 1px solid rgba(148, 163, 184, 0.45);
    color: #f8fafc;
    border-radius: 8px;
    min-height: 44px;
    padding: 0.52rem 0.9rem;
    font-size: 0.84rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
    transition: background 0.15s;
}

.msc-complete-actions[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.msc-complete-secondary-btn[b-g34efi8djj] {
    background: rgba(15, 23, 42, 0.7);
    border-color: rgba(148, 163, 184, 0.38);
    color: #e2e8f0;
}

.msc-complete-secondary-btn:hover[b-g34efi8djj] {
    background: rgba(30, 41, 59, 0.9);
    color: #f8fafc;
}

.msc-complete-lb-btn:hover[b-g34efi8djj] {
    background: rgba(51, 65, 85, 0.92);
    color: #f8fafc;
}

.msc-complete-primary-btn[b-g34efi8djj] {
    background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
    border-color: rgba(34, 197, 94, 0.55);
    color: #ffffff;
}

.msc-complete-primary-btn:hover:not(:disabled)[b-g34efi8djj] {
    background: linear-gradient(135deg, #22c55e 0%, #15803d 100%);
}

.msc-complete-primary-btn:disabled[b-g34efi8djj] {
    opacity: 0.55;
    cursor: not-allowed;
}

.msc-lock-notice[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin: 0.65rem 1rem 0;
    padding: 0.72rem 0.9rem;
    border-radius: 10px;
    border: 1px solid rgba(148, 163, 184, 0.4);
    background: rgba(15, 23, 42, 0.72);
    color: #e2e8f0;
    font-size: 0.86rem;
    line-height: 1.35;
}

/* ═══════════════════════════════════════════════════════════
   ON-COURSE CONTESTS
═══════════════════════════════════════════════════════════ */
.msc-contests-section[b-g34efi8djj] {
    padding: 0.75rem 1rem 0.25rem;
}

.msc-contests-title[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--b9-text-soft, #9fb0c4);
    margin-bottom: 0.5rem;
}

.msc-contest-chip[b-g34efi8djj] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 8px;
    padding: 0.6rem 0.85rem;
    margin-bottom: 0.5rem;
    background: var(--b9-surface-muted, #111827);
    font-size: var(--font-size-sm);
}

.msc-contest-chip.msc-contest-final[b-g34efi8djj] {
    border-color: rgba(34,197,94,0.4);
    background: rgba(34,197,94,0.10);
}

.msc-contest-chip-head[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.2rem;
}

.msc-contest-chip-name[b-g34efi8djj] {
    font-weight: 600;
    color: var(--b9-text, #f3f6fb);
}

.msc-contest-winner-badge[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    background: rgba(245,158,11,0.14);
    color: #fcd34d;
    border: 1px solid rgba(245,158,11,0.4);
    border-radius: 12px;
    padding: 1px 8px;
    white-space: nowrap;
}

.msc-contest-chip-holes[b-g34efi8djj],
.msc-contest-chip-prize[b-g34efi8djj],
.msc-contest-no-entry[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    margin-top: 0.15rem;
}

.msc-contest-entry-val[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    color: var(--b9-text, #f3f6fb);
    margin-top: 0.2rem;
}

/* Status pills */
.msc-contest-status-pill[b-g34efi8djj] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    padding: 1px 7px;
    border-radius: 4px;
}

.msc-csp-open[b-g34efi8djj]   { background: var(--success-soft); color: var(--success-text); }
.msc-csp-locked[b-g34efi8djj] { background: rgba(245,158,11,0.14); color: #fcd34d; }
.msc-csp-final[b-g34efi8djj]  { background: var(--brand-soft); color: var(--brand-text); }
.msc-csp-draft[b-g34efi8djj]  { background: var(--b9-surface-muted, #111827); color: var(--b9-text-soft, #9fb0c4); }

/* Player dark-shell readability normalization */
.msc-shell .msc-round-tabs[b-g34efi8djj],
.msc-shell .msc-progress-bar-wrap[b-g34efi8djj],
.msc-shell .msc-score-grid[b-g34efi8djj],
.msc-shell .msc-holes-container[b-g34efi8djj],
.msc-shell .msc-review[b-g34efi8djj],
.msc-shell .msc-scorecard-panel[b-g34efi8djj],
.msc-shell .msc-summary-card[b-g34efi8djj],
.msc-shell .msc-closed-banner[b-g34efi8djj] {
    background: var(--b9-surface-alt, #0f172a);
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    color: var(--b9-text, #f3f6fb);
}

.msc-shell .msc-round-tab[b-g34efi8djj],
.msc-shell .msc-progress-label[b-g34efi8djj],
.msc-shell .msc-score-meta[b-g34efi8djj],
.msc-shell .msc-review-sub[b-g34efi8djj],
.msc-shell .msc-score-empty[b-g34efi8djj],
.msc-shell .msc-task-sub[b-g34efi8djj],
.msc-shell .msc-task-authority[b-g34efi8djj],
.msc-shell .msc-team-players[b-g34efi8djj] {
    color: var(--b9-text-muted, #c2cfdf);
}

.msc-shell .msc-round-tab-active[b-g34efi8djj],
.msc-shell .msc-score-pill[b-g34efi8djj],
.msc-shell .msc-hole-card[b-g34efi8djj],
.msc-shell .msc-mini-hole[b-g34efi8djj],
.msc-shell .msc-review-row[b-g34efi8djj] {
    background: var(--b9-surface-muted, #111827);
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    color: var(--b9-text, #f3f6fb);
}

.msc-shell .msc-round-tab-active[b-g34efi8djj] {
    border-bottom-color: var(--b9-primary, #1d4ed8);
}

.msc-shell .msc-team-context[b-g34efi8djj],
.msc-shell .msc-task-intel[b-g34efi8djj],
.msc-shell .msc-progress-cockpit[b-g34efi8djj] {
    background: linear-gradient(180deg, var(--b9-surface-alt, #0f172a) 0%, var(--b9-surface-muted, #111827) 100%);
    border-color: var(--b9-border, rgba(255,255,255,0.12));
    color: var(--b9-text, #f3f6fb);
}

.msc-shell .msc-team-name[b-g34efi8djj],
.msc-shell .msc-team-helper[b-g34efi8djj],
.msc-shell .msc-score-name[b-g34efi8djj],
.msc-shell .msc-task-title[b-g34efi8djj],
.msc-shell .msc-review-title[b-g34efi8djj] {
    color: var(--b9-text, #f3f6fb);
}

.msc-shell .msc-team-chip[b-g34efi8djj],
.msc-shell .msc-task-chip[b-g34efi8djj],
.msc-shell .msc-command-toggle-btn.active[b-g34efi8djj] {
    background: var(--b9-surface-muted, #111827);
    color: var(--b9-text, #f3f6fb);
}

/* ═══════════════════════════════════════════════════════════
   RESPONSIVE — wider screens get a bit of padding
═══════════════════════════════════════════════════════════ */
@media (min-width: 600px) {
    .msc-holes-container[b-g34efi8djj] {
        padding: 1rem 1.25rem;
    }

    .msc-hole-card[b-g34efi8djj] {
        padding: 0.85rem 1.1rem;
    }
}

/* ═══════════════════════════════════════════════════════════
   STICKY ACTION BAR
═══════════════════════════════════════════════════════════ */
.msc-sticky-action-bar[b-g34efi8djj] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.85rem;
    padding: 0.95rem 1rem;
    padding-bottom: max(0.95rem, env(safe-area-inset-bottom));
    background: linear-gradient(180deg, rgba(14, 24, 36, 0.97) 0%, rgba(13, 22, 33, 0.99) 100%);
    border-top: 1.5px solid rgba(255, 255, 255, 0.08);
    box-shadow: 0 -8px 22px rgba(0, 0, 0, 0.24);
    backdrop-filter: blur(6px);
}

.msc-action-summary[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.72rem;
    flex: 1;
    min-width: 0;
    flex-wrap: wrap;
}

.msc-action-label[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: #e2e8f0;
    white-space: normal;
    overflow-wrap: anywhere;
}

.msc-action-label strong[b-g34efi8djj] {
    color: #fff;
    font-weight: 900;
}

.msc-action-gross[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: var(--font-size-sm);
    color: #d7e1ed;
    white-space: nowrap;
}

.msc-action-title[b-g34efi8djj] {
    min-width: 0;
}

.msc-action-helper[b-g34efi8djj] {
    opacity: 0.95;
}

.msc-action-gross strong[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    color: #86efac;
}

.msc-action-sync[b-g34efi8djj] {
    font-size: 0.74rem;
    font-weight: 700;
    color: #93c5fd;
}

.msc-action-ready[b-g34efi8djj] {
    font-size: 0.74rem;
    font-weight: 800;
    color: #86efac;
}

.msc-action-wait[b-g34efi8djj] {
    font-size: 0.8rem;
    font-weight: 800;
    color: #fcd34d;
}

.msc-action-buttons[b-g34efi8djj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
    flex-wrap: wrap;
    justify-content: flex-end;
}

.msc-action-btn[b-g34efi8djj] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    padding: 0.74rem 1.15rem;
    border: none;
    border-radius: 13px;
    /* Was 44px — the iOS number, not this project's. .msc-action-submit is "Review & Submit",
       the control that ENDS a round, and it measured 363x44 on the card view. */
    min-height: 48px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    white-space: nowrap;
    cursor: pointer;
    transition: background 0.15s, transform 0.08s, box-shadow 0.15s;
    -webkit-tap-highlight-color: transparent;
}

.msc-action-btn:focus-visible[b-g34efi8djj] {
    outline: 2px solid #93c5fd;
    outline-offset: 1px;
}

.msc-action-btn:active:not(:disabled)[b-g34efi8djj] {
    transform: scale(0.95);
}

.msc-action-btn:disabled[b-g34efi8djj] {
    opacity: 0.4;
    cursor: not-allowed;
}

.msc-action-save[b-g34efi8djj] {
    background: rgba(255, 255, 255, 0.1);
    color: #e2e8f0;
    border: 1px solid rgba(255, 255, 255, 0.18);
}

.msc-action-save:hover:not(:disabled)[b-g34efi8djj] {
    background: rgba(255, 255, 255, 0.18);
    color: #e2e8f0;
    box-shadow: 0 2px 8px rgba(255, 255, 255, 0.08);
}

.msc-action-submit[b-g34efi8djj] {
    background: linear-gradient(135deg, #22c55e 0%, #16a34a 100%);
    color: #fff;
    font-weight: 900;
    min-width: 170px;
    letter-spacing: 0.01em;
    box-shadow: 0 12px 24px rgba(21, 128, 61, 0.26), inset 0 1px 0 rgba(255,255,255,0.32);
}

.msc-action-submit i[b-g34efi8djj] {
    font-size: 0.94rem;
}

.msc-action-submit:hover:not(:disabled)[b-g34efi8djj] {
    background: linear-gradient(135deg, #22c55e 0%, #15803d 100%);
    box-shadow: 0 8px 18px rgba(34, 197, 94, 0.34);
}

.msc-action-submit:disabled[b-g34efi8djj] {
    background: linear-gradient(135deg, rgba(34, 197, 94, 0.5) 0%, rgba(22, 163, 74, 0.5) 100%);
}

.msc-large-type .msc-topbar-event[b-g34efi8djj] {
    font-size: 1.18rem;
}

.msc-large-type .msc-task-title[b-g34efi8djj] {
    font-size: 1.7rem;
}

.msc-large-type .msc-task-sub[b-g34efi8djj],
.msc-large-type .msc-task-authority[b-g34efi8djj],
.msc-large-type .msc-progress-nav-sub[b-g34efi8djj],
.msc-large-type .msc-review-sub[b-g34efi8djj] {
    font-size: var(--font-size-sm);
}

.msc-large-type .msc-task-intel-chip[b-g34efi8djj],
.msc-large-type .msc-task-chip[b-g34efi8djj] {
    min-height: 34px;
    font-size: var(--font-size-chip);
}

.msc-large-type .msc-task-note[b-g34efi8djj],
.msc-large-type .msc-team-helper[b-g34efi8djj],
.msc-large-type .msc-score-name[b-g34efi8djj],
.msc-large-type .msc-score-empty[b-g34efi8djj] {
    font-size: 0.96rem;
}

.msc-large-type .msc-mini-hole[b-g34efi8djj] {
    min-width: 82px;
    min-height: 86px;
    padding: 0.72rem 0.55rem;
}

.msc-large-type .msc-score-pill[b-g34efi8djj] {
    min-width: 144px;
    min-height: 104px;
}

.msc-large-type .msc-score-pill-value[b-g34efi8djj] {
    font-size: 2.7rem;
}

.msc-large-type .msc-command-chip[b-g34efi8djj],
.msc-large-type .msc-action-btn[b-g34efi8djj] {
    font-size: var(--font-size-sm);
}

.msc-large-type .msc-action-btn[b-g34efi8djj] {
    min-height: 60px;
}

.msc-large-type .msc-senior-toggle[b-g34efi8djj],
.msc-large-type .msc-command-toggle-btn[b-g34efi8djj] {
    min-height: 56px;
}

.msc-large-type .msc-action-summary[b-g34efi8djj] {
    gap: 1.1rem;
}

.msc-simple-mode .msc-score-legend[b-g34efi8djj],
.msc-simple-mode .msc-review-notation[b-g34efi8djj],
.msc-simple-mode .msc-hole-si[b-g34efi8djj],
.msc-simple-mode .msc-score-empty[b-g34efi8djj],
.msc-simple-mode .msc-meta-si-row[b-g34efi8djj] {
    display: none;
}

.msc-large-type .msc-review-row[b-g34efi8djj] {
    grid-template-columns: 96px 1fr 60px 132px;
}

/* Mobile layout: full width buttons stack vertically on very small screens */
/* ═══════════════════════════════════════════════════════════
   BOTTOM SPACER — reserves space below sticky action bar
═══════════════════════════════════════════════════════════ */
.msc-bottom-spacer[b-g34efi8djj] {
    height: 7rem;
    padding-bottom: env(safe-area-inset-bottom, 0px);
}

@media (max-width: 480px) {
    /* Taller spacer: stacked bar at ≤480px is ~165px; 12rem covers that + safe area */
    .msc-bottom-spacer[b-g34efi8djj] {
        height: 12rem;
        padding-bottom: env(safe-area-inset-bottom, 0px);
    }
}

@media (max-width: 480px) {
    .msc-round-cockpit[b-g34efi8djj] {
        margin: 0.35rem 0.55rem 0.28rem;
    }

    .msc-sticky-action-bar[b-g34efi8djj] {
        flex-direction: column;
        gap: 0.5rem;
        padding: 0.65rem 0.85rem;
        /* Preserve safe-area inset when stacked */
        padding-bottom: max(0.65rem, env(safe-area-inset-bottom));
    }

    .msc-action-summary[b-g34efi8djj] {
        width: 100%;
        justify-content: space-between;
        gap: 0.75rem;
    }

    .msc-action-buttons[b-g34efi8djj] {
        width: 100%;
        gap: 0.4rem;
    }

    .msc-action-btn[b-g34efi8djj] {
        flex: 1;
        padding: 0.6rem 0.85rem;
    }

    .msc-topbar-right[b-g34efi8djj] {
        width: 100%;
        justify-content: flex-start;
        flex-wrap: wrap;
        margin-left: 0;
    }

    .msc-display-options-trigger[b-g34efi8djj] {
        display: inline-flex;
    }

    .msc-topbar-right .msc-control-cluster[b-g34efi8djj] {
        display: none;
    }

    .msc-topbar-right.is-open .msc-control-cluster[b-g34efi8djj] {
        display: flex;
        width: 100%;
        flex-direction: column;
        align-items: stretch;
        gap: 0.45rem;
        border-radius: 14px;
        padding: 0.55rem;
    }

    .msc-topbar-right.is-open .msc-command-toggle[b-g34efi8djj],
    .msc-topbar-right.is-open .msc-senior-toggle[b-g34efi8djj] {
        width: 100%;
        justify-content: space-between;
    }

    .msc-task-head[b-g34efi8djj] {
        padding: 0.62rem 0.68rem 0.4rem;
    }

    .msc-task-intel[b-g34efi8djj] {
        display: none;
    }

    /* Hide secondary task content to keep first-score-focus near the top */
    .msc-task-sub[b-g34efi8djj] {
        display: none;
    }

    .msc-task-chip-row[b-g34efi8djj] {
        display: none;
    }

    .msc-task-note[b-g34efi8djj] {
        display: none;
    }

    .msc-mini-strip-wrap[b-g34efi8djj] {
        padding: 0.36rem 0.58rem 0.55rem;
    }

    .msc-review-row[b-g34efi8djj] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (min-width: 481px) and (max-width: 640px) {
    .msc-display-options-trigger[b-g34efi8djj] {
        display: inline-flex;
    }

    .msc-topbar-right[b-g34efi8djj] {
        width: 100%;
        justify-content: flex-start;
        margin-left: 0;
    }

    .msc-topbar-right .msc-control-cluster[b-g34efi8djj] {
        display: none;
    }

    .msc-topbar-right.is-open .msc-control-cluster[b-g34efi8djj] {
        display: flex;
        width: 100%;
        border-radius: 14px;
        flex-wrap: wrap;
    }
}

@media (max-width: 900px) {
    .msc-sticky-action-bar[b-g34efi8djj] {
        gap: 0.65rem;
    }

    .msc-action-summary[b-g34efi8djj] {
        gap: 0.48rem;
    }

    .msc-action-btn[b-g34efi8djj] {
        white-space: normal;
        text-align: center;
    }

    .msc-action-submit[b-g34efi8djj] {
        min-width: 148px;
    }
}

@media (max-width: 640px) {
    .msc-round-cockpit .msc-compact-hcp[b-g34efi8djj],
    .msc-round-cockpit .msc-team-context[b-g34efi8djj] {
        display: none;
    }

    .msc-round-cockpit[b-g34efi8djj] {
        margin: 0.22rem 0.55rem 0.2rem;
    }
}

@media (min-width: 481px) and (max-width: 640px) {
    .msc-action-label[b-g34efi8djj] {
        font-size: 0.75rem;
    }

    .msc-action-gross[b-g34efi8djj] {
        font-size: var(--font-size-sm);
    }

    .msc-action-gross strong[b-g34efi8djj] {
        font-size: var(--font-size-sm);
    }
}

/* ── On-course contest one-tap claim ─────────────────────────── */
.msc-contest-claim-row[b-g34efi8djj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    margin-top: .5rem;
}

.msc-contest-youlead[b-g34efi8djj] {
    color: var(--b9-primary-text);
    font-weight: 600;
}

/* The claim button is the contest's primary action. Its ink is --brand-ink, the lettering
   brand-tokens.css pairs with --brand. It was a raw #06210f, picked when the brand was green and
   left behind when it turned blue: 2.54:1 on #1D4ED8, measured 2026-09-22. 48px tall, not the 44
   it had: the touch floor. player-floors.spec.ts measures both, in both themes. */
.msc-contest-claim-btn[b-g34efi8djj] {
    flex: 0 0 auto;
    min-height: 48px;
    padding: 0 1rem;
    border: none;
    border-radius: .625rem;
    background: var(--brand, #22c55e);
    color: var(--brand-ink);
    font-weight: 700;
    cursor: pointer;
}

.msc-contest-claim-btn:active[b-g34efi8djj] { transform: scale(.98); }
.msc-contest-claim-btn:disabled[b-g34efi8djj] { opacity: .6; cursor: default; }

/* ══════════════════════════════════════════════════════════════════════════
   THE ENTRY SURFACE — Reports/ScoringDesign/06-web-player-card.html

   Four bands, A · B · D · C, and C is last against the bottom edge at EVERY
   width. Band C is the only thing on this page that must never move: it is a
   rehearsed ballistic movement to a stationary target, and a mouse rehearses
   the same way, which is why there is no desktop exception. The >=1024px rule
   below wraps the bands into two columns; it does not reorder them.

   Every colour here is an existing token. The one new pair, --score-key-min
   and --radius-score-key, sits beside --touch-target-min in brand-tokens.css.
   ══════════════════════════════════════════════════════════════════════════ */

.msc-enter[b-g34efi8djj] {
    display: flex;
    flex-direction: column;
    background: var(--bg-app, #020617);
}

/* ── Making band C actually land ON the phone ────────────────────────────────
   R4 says the numbers are there when the screen opens. Measured at 390x844 the
   first cut put keys 7, 8, 9 and "10 or more" BELOW the fold: two stacked top
   bars ate 191px before band A began, and a min-height that guessed at 4.75rem
   of chrome made band B inflate to 269px to fill a box taller than the screen.
   A pad you have to scroll to is a pad that moves under her thumb, which is the
   whole of R3.

   So on a phone this band stack takes its height from its CONTENT — band B stops
   absorbing slack that does not exist — and band C sticks above the layout's tab
   bar rather than under it. ═══════════════════════════════════════════════════ */
/* Below the wrap, the stack takes a BOUNDED height — the space the player layout has already
   worked out for it — and band B (flex: 1 1 auto, min-height: 0) gives up whatever band C needs.
   Without a bound the container grows to its content, band B never shrinks, and the "10 or more"
   key ends up under the fixed tab bar: measured at 390x844 on a foursome card its bottom edge sat
   at 785px with the tab bar starting at 772. .plr-main already reserves the tab bar's height in its
   own padding, so filling .plr-main is the whole answer and no number is guessed at here. */
@media (max-width: 1023px) {
    .msc-shell:has(.msc-enter)[b-g34efi8djj] {
        display: flex;
        flex-direction: column;
        /* A CAP, not a floor. `min-height: 100%` was the first attempt and changed nothing: .plr-main
           scrolls, so a floor lets the stack grow past the fold exactly as before. The only measured
           constant is the player layout's own mobile top bar (65px); this surface's own bar is INSIDE
           the shell, so flex handles it, and the tab bar's height comes from the layout's token. */
        height: calc(100svh - 65px - var(--plr-bottom-nav-height, 72px));
        overflow: hidden;
    }

    .msc-shell:has(.msc-enter) .msc-enter[b-g34efi8djj] {
        flex: 1 1 auto;
        min-height: 0;
    }
}

/* The page's OWN top bar is not in design 06 — band A is the top of the surface.
   While ENTER is showing it drops to a single compact row: the way back and where
   she is, and nothing else. Display options stay on CARD, where there is room and
   where nobody is standing over a ball. :has() is the whole mechanism, so a browser
   without it simply keeps the taller bar rather than breaking the layout. */
.msc-shell:has(.msc-enter) .msc-topbar[b-g34efi8djj] { padding-top: 0.35rem; padding-bottom: 0.35rem; }
.msc-shell:has(.msc-enter) .msc-topbar-kicker[b-g34efi8djj],
.msc-shell:has(.msc-enter) .msc-topbar-right[b-g34efi8djj] { display: none; }
.msc-shell:has(.msc-enter) .msc-topbar-event[b-g34efi8djj] {
    /* 0.85rem is 13.6px, and this is the EVENT'S NAME — the only thing on the bar saying which
       tournament you are scoring. It already truncates with an ellipsis below, so the width is
       handled; shrinking the type as well was solving the same problem twice. */
    font-size: var(--font-size-sm);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── BAND A — the hole, and the only place holes move ─────────────────────── */
.msc-band-a[b-g34efi8djj] {
    flex: 0 0 auto;
    min-height: 64px;
    display: flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0 0.625rem;
    background: var(--bg-elevated, #111827);
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.msc-ea-arrow[b-g34efi8djj] {
    flex: 0 0 48px;
    width: 48px;
    height: 48px;
    border-radius: 8px;
    background: var(--bg-raised, #1e293b);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    color: var(--text-primary, #f3f6fb);
    font-size: 1.3rem;
    line-height: 1;
}

.msc-ea-arrow:disabled[b-g34efi8djj] { opacity: 0.3; }

.msc-ea-hole[b-g34efi8djj] {
    /* An <h1>: reset the browser's heading margins and weight, which would otherwise blow band A
       past its 64px and push the keypad off the bottom of the phone.

       🔑 The three sizes inside this block were 9.6px ("HOLE"), 10.88px ("Par 4 · SI 1") and
       11.52px ("of 18"), and TWO of them came from browser defaults on <small> and <em> rather
       than from any declaration — which is why no sweep of this file's font-size values found
       them. All three are now 13px. Measured on a 375px phone: the block went 49.8px -> and the
       64px budget above is what bounds it, so re-measure here before adding anything else. */
    margin: 0;
    font-weight: 400;
    flex: 1 1 auto;
    min-width: 0;
    text-align: center;
    line-height: 1.1;
    overflow: hidden;
}

.msc-ea-hole small[b-g34efi8djj] {
    display: block;
    font-size: var(--font-size-sm);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-muted, #9fb0c4);
    font-weight: 700;
}

.msc-ea-hole-row[b-g34efi8djj] {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 0.3rem;
    white-space: nowrap;
}

.msc-ea-hole-row b[b-g34efi8djj] { font-size: 1.55rem; font-weight: 800; color: var(--text-primary, #f3f6fb); }
.msc-ea-hole-row em[b-g34efi8djj] { font-style: normal; font-size: var(--font-size-sm); font-weight: 700; color: var(--text-muted, #9fb0c4); }

/* R2 item 2 — par and stroke index must never need a scroll. They live in band B,
   and they are repeated here for the small phone where band B has to give up its
   context line to the offline strip. */
/* 🔴 The ONE class on these two views that stays under the floor, and it is a constraint rather
   than a decision not to bother. Band A is capped at 64px — the rule right above says growing it
   "would push the keypad off the bottom of the phone", and the keypad's position is RULED by the
   design lock. At 14px this line needs 63px inside a 57px column and the stroke index gets cut
   off: the strip read "Par 4 · SI" with the 1 missing, which is worse than small.

   Left small because nothing is lost. The same fact renders at the full 14px three lines below,
   in .msc-eb-ctx ("Par 4 · SI 1 · —") under the player's name. This strip is the duplicate.
   Reaching the floor HERE means re-laying-out band A, which is a design change on a locked
   screen and Matt's to approve. */
.msc-ea-hole-meta[b-g34efi8djj] {
    display: block;
    font-size: var(--font-size-sm);   /* "Par 4 · SI 1" is DATA — this file calls it "how a golfer knows what a good score IS" */
    font-weight: 700;
    color: var(--text-muted, #9fb0c4);
    white-space: nowrap;
}

.msc-ea-seg[b-g34efi8djj] {
    flex: 0 0 auto;
    display: flex;
    background: var(--bg-raised, #1e293b);
    border-radius: 999px;
    padding: 3px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    margin-left: auto;
}

.msc-ea-seg-btn[b-g34efi8djj] {
    padding: 0 0.7rem;
    height: 38px;
    border: 0;
    background: transparent;
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: 750;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-muted, #9fb0c4);
    white-space: nowrap;
}

/* Selection is a LUMINANCE FLIP, not a hue judgement: BrandText fill with BgApp ink
   reads 8.11:1 against the resting track. Brand #1D4ED8 measures 2.18:1 and is not a
   state change on a dark surface at all. */
.msc-ea-seg-btn.is-on[b-g34efi8djj] {
    background: var(--b9-primary-text, #93c5fd);
    color: var(--bg-app, #020617);
}

.msc-ea-type[b-g34efi8djj] {
    flex: 0 0 48px;
    width: 48px;
    height: 48px;
    border-radius: 8px;
    background: var(--bg-raised, #1e293b);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    color: var(--text-primary, #f3f6fb);
    font-size: 1rem;
    font-weight: 750;
}

/* The "+" in a tee named A+ is not decoration — it is the whole difference between two tees, and
   it was 12px from the browser's own <sup> scaling with no rule anywhere to find. A superscript
   is defined by its RAISED BASELINE, not by being too small to read, so it keeps the position and
   clears the floor. */
.msc-ea-type sup[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    vertical-align: super;
    line-height: 0;
}

.msc-ea-type.is-on[b-g34efi8djj] {
    background: var(--b9-primary-text, #93c5fd);
    color: var(--bg-app, #020617);
    border-color: var(--b9-primary-text, #93c5fd);
}

/* ── the status strip: between A and B, NEVER below C ─────────────────────── */
.msc-enter-strip[b-g34efi8djj] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.5rem 0.875rem;
    font-size: 0.8rem;
    font-weight: 600;
    line-height: 1.3;
}

.msc-enter-strip.is-offline[b-g34efi8djj] {
    background: var(--b9-warning-soft, rgba(245,158,11,0.14));
    color: var(--b9-warning-text, #fcd34d);
    border-bottom: 1px solid rgba(245, 158, 11, 0.28);
}

.msc-enter-strip.is-problem[b-g34efi8djj] {
    background: var(--b9-danger-soft, rgba(239,68,68,0.14));
    color: var(--b9-danger-text, #fca5a5);
    border-bottom: 1px solid rgba(239, 68, 68, 0.28);
}

.msc-enter-strip-badge[b-g34efi8djj] {
    flex: 0 0 auto;
    font-family: var(--b9-font-mono, monospace);
    font-size: 0.68rem;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    background: rgba(0, 0, 0, 0.28);
}

/* ── BAND B — the ask. The only band that shrinks. ────────────────────────── */
.msc-band-b[b-g34efi8djj] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 0.875rem 1rem;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.msc-eb-eyebrow[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--text-muted, #9fb0c4);
    margin-bottom: 0.3rem;
}

/* The write target is the biggest thing on the screen, in words, by name. A write
   target you can read at arm's length cannot move without you noticing. */
.msc-eb-name[b-g34efi8djj] {
    font-size: 2.375rem;
    font-weight: 800;
    letter-spacing: -0.028em;
    line-height: 1.05;
    color: var(--text-primary, #f3f6fb);
    overflow-wrap: anywhere;
}

.msc-eb-name.is-tight[b-g34efi8djj] { font-size: 1.75rem; }

.msc-eb-ctx[b-g34efi8djj] {
    margin-top: 0.4rem;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #9fb0c4);
    font-family: var(--b9-font-mono, monospace);
}

.msc-eb-val[b-g34efi8djj] {
    margin-top: 0.55rem;
    display: flex;
    align-items: baseline;
    gap: 0.7rem;
    flex-wrap: wrap;
}

.msc-eb-val b[b-g34efi8djj] {
    font-size: 2.75rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    line-height: 1;
    color: #fff;
}

.msc-eb-rp[b-g34efi8djj] {
    font-size: 0.9rem;
    font-weight: 700;
    padding: 0.22rem 0.65rem;
    border-radius: 999px;
    background: var(--bg-raised, #1e293b);
}

.msc-eb-rp.diff-under[b-g34efi8djj] { background: var(--b9-success-soft, rgba(34,197,94,0.14)); color: var(--b9-success-text, #86efac); }
.msc-eb-rp.diff-over[b-g34efi8djj]  { background: var(--b9-danger-soft, rgba(239,68,68,0.14));  color: var(--b9-danger-text, #fca5a5); }
.msc-eb-rp.diff-even[b-g34efi8djj]  { color: var(--text-primary, #f3f6fb); }

.msc-eb-none[b-g34efi8djj] {
    margin-top: 0.6rem;
    font-size: 1.15rem;
    font-weight: 650;
    color: var(--text-muted, #9fb0c4);
}

/* R10 — the advance announcement. Unmissable on purpose: an older adult who is not
   sure a tap registered taps again, and a re-tap on a pad that silently re-pointed
   writes the previous player's number onto the next one. */
.msc-eb-note[b-g34efi8djj] {
    margin-top: 0.55rem;
    font-size: 0.87rem;
    font-weight: 650;
    color: var(--b9-primary-text, #93c5fd);
}

.msc-eb-note.is-correction[b-g34efi8djj] { color: var(--b9-warning-text, #fcd34d); }

/* ── BAND D — did I get everyone? ─────────────────────────────────────────── */
.msc-band-d[b-g34efi8djj] {
    flex: 0 0 auto;
    padding: 0.625rem 0.75rem 0.75rem;
    background: var(--bg-surface, #0f172a);
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.msc-ed-hd[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.13em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--text-muted, #9fb0c4);
    margin: 0 0.125rem 0.5rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.msc-ed-row[b-g34efi8djj] { display: flex; gap: 0.5rem; }
.msc-ed-row.is-grid[b-g34efi8djj] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 0.5rem; }

.msc-ed-cell[b-g34efi8djj] {
    flex: 1 1 0;
    min-width: 0;
    min-height: 56px;
    border-radius: var(--radius-score-key, 10px);
    background: var(--bg-raised, #1e293b);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 0 0.25rem;
}

.msc-ed-cell:disabled[b-g34efi8djj] { opacity: 1; }

.msc-ed-nm[b-g34efi8djj] {
    font-size: var(--font-size-sm);
    font-weight: 650;
    color: var(--text-secondary, #c2cfdf);
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* R12 — the confirmation lands in the scored player's OWN row, as a white numeral. */
.msc-ed-vl[b-g34efi8djj] { font-size: 1.3rem; font-weight: 800; color: #fff; line-height: 1; }
.msc-ed-cell.is-owing .msc-ed-vl[b-g34efi8djj] { color: var(--text-muted, #9fb0c4); font-weight: 700; }

/* R5a — the current target changes state by FILL and BORDER WEIGHT, never a tint,
   and never blue on blue. */
.msc-ed-cell.is-now[b-g34efi8djj] {
    background: var(--brand-soft, rgba(29,78,216,0.15));
    border: 1.5px solid var(--border-strong, rgba(255,255,255,0.20));
}

.msc-ed-cell.is-now .msc-ed-nm[b-g34efi8djj],
.msc-ed-cell.is-now.is-owing .msc-ed-vl[b-g34efi8djj] { color: var(--b9-primary-text, #93c5fd); }

/* ── BAND C — the numbers. LAST, docked, and it never moves. ──────────────── */
/* ── Hidden: the height the pad gave up goes to the CARD, not to whitespace ──
   Design 06's frame 6 is explicit that this is what hiding the numbers is FOR, and it does it by
   moving the flexible band: band B stops absorbing slack and band D grows into it. Without this the
   257px the pad released became an empty gap under the ask, which makes "Hide numbers" a control
   that takes something away and gives nothing back. */
.msc-enter:has(.msc-ec-collapsed) .msc-band-b[b-g34efi8djj] { flex: 0 0 auto; }
.msc-enter:has(.msc-ec-collapsed) .msc-band-d[b-g34efi8djj] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* The round, drawn the way a paper card draws it, in the space the pad released. */
.msc-ed-cg-name[b-g34efi8djj] {
    margin: 0.75rem 0 0;
    font-size: 0.8rem;
    font-weight: 700;
    color: var(--text-secondary, #c2cfdf);
}
.msc-ed-cg-name span[b-g34efi8djj] { font-weight: 500; color: var(--text-muted, #9fb0c4); }

.msc-ed-cardgrid[b-g34efi8djj] {
    margin-top: 0.5rem;
    display: grid;
    grid-template-columns: repeat(10, 1fr);
    gap: 0.25rem;
}

.msc-cg[b-g34efi8djj] { display: flex; flex-direction: column; align-items: center; gap: 3px; min-width: 0; }
.msc-cg-hd[b-g34efi8djj] {
    font-size: 0.6rem;
    letter-spacing: 0.06em;
    color: var(--text-muted, #9fb0c4);
}
.msc-cg-v[b-g34efi8djj] {
    height: 26px;
    width: 100%;
    border-radius: var(--radius-sm, 6px);
    background: var(--bg-raised, #1e293b);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 750;
    color: var(--text-primary, #f3f6fb);
}
.msc-cg.is-total .msc-cg-v[b-g34efi8djj] {
    background: transparent;
    border-color: var(--border-strong, rgba(255,255,255,0.20));
    color: #fff;
}
.msc-cg.is-now .msc-cg-v[b-g34efi8djj] {
    background: var(--b9-primary-soft, rgba(29,78,216,0.15));
    border: 1.5px solid var(--border-strong, rgba(255,255,255,0.20));
    color: var(--b9-primary-text, #93c5fd);
}

.msc-band-c[b-g34efi8djj] {
    flex: 0 0 auto;
    /* NOT sticky. It is the last band in flow, so it is already at the bottom — and
       `position: sticky; bottom: …` on a stack SHORTER than the viewport lifts the pad
       up over band D, which is R3a's exact prohibition: the pad must not overlay the row
       it is scoring. Measured at 390x844 it covered the roster by 72px. The layout
       already reserves the tab bar's height under .plr-main, so flow is enough. */
    z-index: 5;
    background: var(--bg-elevated, #111827);
    padding: 0 0.75rem 0.875rem;
    border-top: 1px solid var(--border-default, rgba(255,255,255,0.12));
}

.msc-ec-handle[b-g34efi8djj] {
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.625rem;
}

.msc-ec-grab[b-g34efi8djj] {
    width: 38px;
    height: 4px;
    border-radius: 999px;
    background: var(--border-strong, rgba(255,255,255,0.20));
}

/* R7 — words, never a bare chevron: a hairline handle is invisible in direct sun. */
.msc-ec-hide[b-g34efi8djj] {
    border: 0;
    background: transparent;
    font-size: var(--font-size-sm);
    font-weight: 650;
    color: var(--text-muted, #9fb0c4);
    padding: 0 0.5rem;
}

.msc-ec-keys[b-g34efi8djj] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.5rem;
}

/* R14 — score keys get their own floor, a third above the app-wide 48px touch
   target, in TIGHT gutters: wide spacing has been found to make older adults
   slower, and the variable that matters on a scorecard is error rate. */
.msc-ec-key[b-g34efi8djj] {
    min-height: var(--score-key-min, 64px);
    border-radius: var(--radius-score-key, 10px);
    background: var(--bg-raised, #1e293b);
    border: 1px solid var(--border-default, rgba(255,255,255,0.12));
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    /* R15 — a score commits on release, and sliding off the key before lifting
       cancels it, which is what `click` already means for a button. */
    touch-action: manipulation;
}

.msc-ec-key-n[b-g34efi8djj] {
    font-size: 1.625rem;
    font-weight: 750;
    letter-spacing: -0.02em;
    color: var(--text-primary, #f3f6fb);
    line-height: 1;
}

.msc-ec-key-w[b-g34efi8djj] { font-size: var(--font-size-sm); font-weight: 600; color: var(--text-muted, #9fb0c4); line-height: 1; }
.msc-ec-key-w.diff-under[b-g34efi8djj] { color: var(--b9-success-text, #86efac); }
.msc-ec-key-w.diff-over[b-g34efi8djj]  { color: var(--b9-danger-text, #fca5a5); }

/* A decorative "start here" ring on par — never the only marker of anything. */
.msc-ec-key.is-par-hint[b-g34efi8djj] { box-shadow: inset 0 0 0 1.5px var(--brand-ring, rgba(29,78,216,0.30)); }

.msc-ec-key.is-set[b-g34efi8djj] {
    background: var(--b9-primary-text, #93c5fd);
    border-color: var(--b9-primary-text, #93c5fd);
}

.msc-ec-key.is-set .msc-ec-key-n[b-g34efi8djj] { color: var(--bg-app, #020617); }
.msc-ec-key.is-set .msc-ec-key-w[b-g34efi8djj] { color: rgba(2, 6, 23, 0.62); }

/* The overflow key is full width and takes the SAME 64px floor. Three of the eight
   mockups shrank it, which is exactly the drift ScoreKeyMin exists to stop. */
.msc-ec-key.is-wide[b-g34efi8djj] { grid-column: 1 / -1; flex-direction: row; gap: 0.5rem; }
.msc-ec-key.is-ghost[b-g34efi8djj] { background: transparent; }
.msc-ec-key.is-ghost .msc-ec-key-n[b-g34efi8djj] { font-size: 1rem; font-weight: 700; color: var(--text-secondary, #c2cfdf); }

.msc-ec-key:focus-visible[b-g34efi8djj],
.msc-ed-cell:focus-visible[b-g34efi8djj],
.msc-ea-arrow:focus-visible[b-g34efi8djj],
.msc-ea-seg-btn:focus-visible[b-g34efi8djj],
.msc-ea-type:focus-visible[b-g34efi8djj],
.msc-ec-hide:focus-visible[b-g34efi8djj],
.msc-ec-show:focus-visible[b-g34efi8djj] {
    outline: 2px solid #60a5fa;
    outline-offset: 2px;
}

/* R7 — the collapsed bar still says who and what. */
.msc-ec-collapsed[b-g34efi8djj] {
    min-height: 74px;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
}

.msc-ec-who[b-g34efi8djj] { flex: 1 1 auto; min-width: 0; }
.msc-ec-w1[b-g34efi8djj] { font-size: 1.05rem; font-weight: 750; color: var(--text-primary, #f3f6fb); overflow-wrap: anywhere; }
.msc-ec-w2[b-g34efi8djj] { font-size: var(--font-size-sm); color: var(--text-muted, #9fb0c4); margin-top: 2px; }

.msc-ec-show[b-g34efi8djj] {
    flex: 0 0 auto;
    min-height: var(--touch-target-min, 48px);
    padding: 0 1.125rem;
    border: 0;
    border-radius: 999px;
    background: var(--b9-primary, #1d4ed8);
    color: #fff;
    font-size: 0.9rem;
    font-weight: 750;
}

/* Large type scales the name, the numerals and the words under the keys — the
   whole point of the control, on the one screen it matters most. */
.msc-large-type .msc-eb-name[b-g34efi8djj] { font-size: 3rem; }
.msc-large-type .msc-eb-name.is-tight[b-g34efi8djj] { font-size: 2.25rem; }
.msc-large-type .msc-eb-none[b-g34efi8djj] { font-size: 1.45rem; }
.msc-large-type .msc-eb-note[b-g34efi8djj] { font-size: 1.05rem; }
.msc-large-type .msc-ec-key[b-g34efi8djj] { min-height: calc(var(--score-key-min, 64px) + 12px); }
.msc-large-type .msc-ec-key-n[b-g34efi8djj] { font-size: 2rem; }
.msc-large-type .msc-ec-key-w[b-g34efi8djj] { font-size: var(--font-size-sm); }
.msc-large-type .msc-ed-vl[b-g34efi8djj] { font-size: 1.6rem; }
.msc-large-type .msc-ed-nm[b-g34efi8djj] { font-size: var(--font-size-sm); }

/* ── The one licensed web difference: a WRAP at >=1024px ──────────────────────
   A + B + D on the left, C on the right at full column height. The reading order
   along the path is unchanged, in the DOM and on the screen: this is a wrap, not
   a reorder, and no band is placed after the keypad at any width. */
@media (min-width: 1024px) {
    .msc-enter[b-g34efi8djj] {
        display: grid;
        grid-template-columns: minmax(0, 1fr) 420px;
        /* EXPLICIT rows, and this is not decoration. `grid-row: 1 / -1` counts to the last explicit
           row LINE; with no grid-template-rows there is only line 1, so the keypad spanned a single
           row, that row took the pad's full height, and band A stretched from 64px to 336px to match.
           Four content rows cover A + the status strip + B + D; the trailing 1fr absorbs the slack so
           the keypad still runs the full column height the way design 06 draws it. */
        grid-template-rows: repeat(4, auto) 1fr;
        min-height: calc(100svh - 4.75rem);
    }

    /* The phone's height cap does not apply here: the wrap has its own column height. */
    .msc-shell:has(.msc-enter)[b-g34efi8djj] { display: block; height: auto; overflow: visible; }

    .msc-enter > *[b-g34efi8djj] { grid-column: 1; }

    .msc-band-c[b-g34efi8djj] {
        grid-column: 2;
        grid-row: 1 / -1;
        border-top: 0;
        border-left: 1px solid var(--border-default, rgba(255,255,255,0.12));
        display: flex;
        flex-direction: column;
        justify-content: flex-end;
        padding: 0 1.125rem 1.25rem;
    }

    .msc-band-b[b-g34efi8djj] { border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08)); }
    .msc-eb-name[b-g34efi8djj] { font-size: 3.25rem; }
    .msc-eb-val b[b-g34efi8djj] { font-size: 3.5rem; }

    /* No desktop-only key literal. The column is taller than the pad needs, so the
       rows grow into the slack from the SAME floor every other surface uses — the floor is
       the unified dimension, and how leftover height is shared is not a second size decision. */
    .msc-ec-keys[b-g34efi8djj] {
        flex: 1 1 auto;
        grid-auto-rows: minmax(var(--score-key-min, 64px), 1fr);
    }
}

@media (max-width: 380px) {
    .msc-eb-name[b-g34efi8djj] { font-size: 1.9rem; }
    .msc-eb-val b[b-g34efi8djj] { font-size: 2.1rem; }
    .msc-ea-seg-btn[b-g34efi8djj] { padding: 0 0.45rem; font-size: var(--font-size-sm); }
}
/* /Components/Pages/Events/Pairings.razor.rz.scp.css */
/* ── Top bar ─────────────────────────────────────────────────────────────── */
.pg-bar[b-t7srtr13fe] {
    position: sticky;
    top: 0;
    z-index: 100;
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-subtle);
    padding: 0.6rem 1.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-height: 52px;
}

.pg-bar-left[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
    flex: 1;
}

.pg-bar-right[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

/* ── Unassigned pool ──────────────────────────────────────────────────────── */
.unassigned-pool[b-t7srtr13fe] {
    max-height: 420px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.player-chip[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.45rem 0.75rem;
    border-radius: 8px;
    border: 1.5px solid var(--border-default);
    background: var(--bg-raised);
    cursor: pointer;
    transition: border-color 0.12s, background 0.12s, transform 0.1s;
    user-select: none;
}

.player-chip:hover[b-t7srtr13fe] {
    border-color: var(--brand);
    background: var(--brand-soft);
}

.player-chip:active[b-t7srtr13fe] {
    transform: scale(0.98);
}

.chip-selected[b-t7srtr13fe] {
    border-color: var(--brand) !important;
    background: var(--brand-soft) !important;
    box-shadow: 0 0 0 3px var(--brand-ring);
}

.chip-name[b-t7srtr13fe] {
    font-size: 0.875rem;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chip-hcp[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    padding: 1px 7px;
    border-radius: 20px;
    background: var(--bg-elevated);
    color: var(--text-muted);
    flex-shrink: 0;
    margin-left: 6px;
}

.chip-hcp-idx[b-t7srtr13fe] {
    background: rgba(13,148,136,0.16);
    color: #5eead4;
}

/* Team chips share the player-chip interaction but read as a distinct unit. */
.team-chip[b-t7srtr13fe] {
    margin-bottom: 0.35rem;
    border-style: dashed;
    border-color: var(--brand);
}
.team-chip .chip-name[b-t7srtr13fe] {
    color: var(--brand-text);
    font-weight: 600;
}

/* ── Group cards ─────────────────────────────────────────────────────────── */
.group-card[b-t7srtr13fe] {
    background: var(--bg-elevated);
    border-radius: 12px;
    border: 1.5px solid var(--border-default);
    box-shadow: 0 1px 4px rgba(0,0,0,.18);
    overflow: hidden;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.group-card-target[b-t7srtr13fe] {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-ring);
    cursor: pointer;
}

.group-card-target:hover[b-t7srtr13fe] {
    background: var(--brand-soft);
}

.group-header[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.55rem 0.75rem;
    background: var(--bg-raised);
    border-bottom: 1px solid var(--border-default);
    gap: 0.5rem;
}

.group-label[b-t7srtr13fe] {
    font-weight: 700;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-muted);
}

/* "Team A vs Team B" matchup label on a group header */
.group-matchup[b-t7srtr13fe] {
    display: block;
    margin-top: 2px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: none;
    letter-spacing: 0;
    color: var(--brand-text);
}

.group-teetime[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--brand-text);
}

.group-hole[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    background: var(--bg-raised);
    border-radius: 20px;
    padding: 1px 8px;
}

.group-edit-row[b-t7srtr13fe] {
    padding: 0.65rem 0.75rem;
    background: var(--brand-soft);
    border-bottom: 1px solid var(--border-default);
}

.group-notes[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    color: var(--warning-text);
    padding: 0.3rem 0.75rem;
    background: var(--warning-soft);
    border-bottom: 1px solid rgba(251,191,36,0.22);
    font-style: italic;
}

.group-players[b-t7srtr13fe] {
    padding: 0.4rem 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-height: 56px;
}

.group-empty-slot[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    padding: 0.4rem 0.25rem;
    color: var(--text-muted);
}

.group-player-row[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.35rem 0.4rem;
    border-radius: 6px;
    background: var(--bg-raised);
    gap: 0.4rem;
}

.group-player-name[b-t7srtr13fe] {
    font-size: 0.875rem;
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.player-hcp-badge[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    background: var(--bg-elevated);
    color: var(--text-muted);
    border-radius: 20px;
    padding: 1px 7px;
    flex-shrink: 0;
}

/* ── Team sub-blocks ──────────────────────────────────────────────────────────
   For team formats (e.g. a 2-player scramble) each team's players are wrapped in
   their own bordered block with a team heading, so two teams sharing one tee time
   read clearly as TEAMS — not four loose individuals. */
.group-team-block[b-t7srtr13fe] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.group-team-block.is-team[b-t7srtr13fe] {
    border: 1px solid var(--border-default);
    border-left: 3px solid var(--brand-text);
    border-radius: 8px;
    padding: 0.3rem 0.35rem 0.35rem;
    background: var(--brand-soft);
}

.group-team-block.is-team + .group-team-block.is-team[b-t7srtr13fe] {
    margin-top: 6px;
}

.group-team-heading[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.1rem 0.25rem 0.25rem;
    color: var(--brand-text);
}

.group-team-name[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.01em;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── Icon buttons ────────────────────────────────────────────────────────── */
.btn-icon[b-t7srtr13fe] {
    background: none;
    border: none;
    color: var(--text-muted);
    padding: 3px 5px;
    border-radius: 4px;
    cursor: pointer;
    font-size: var(--font-size-chip);
    line-height: 1;
    transition: background 0.1s, color 0.1s;
}

.btn-icon:hover[b-t7srtr13fe] {
    background: var(--bg-raised);
    color: var(--text-primary);
}

.btn-icon-sm[b-t7srtr13fe] {
    font-size: var(--font-size-chip);
    padding: 2px 4px;
}

.btn-icon-danger:hover[b-t7srtr13fe] {
    background: var(--danger-soft);
    color: var(--danger-text);
}

.btn-icon-muted[b-t7srtr13fe] {
    opacity: 0.5;
}

.btn-icon-muted:hover[b-t7srtr13fe] {
    opacity: 1;
}

/* ── Assignment toast ────────────────────────────────────────────────────── */
/* ── Assignment banner (appears inline above groups when player is selected) ── */
.assign-banner[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: var(--brand, #3b82f6);
    color: #fff;
    padding: 0.75rem 1rem;
    border-radius: 10px;
    font-size: 0.88rem;
    animation: assign-in-b-t7srtr13fe 0.18s ease;
}

.assign-banner-hint[b-t7srtr13fe] {
    font-size: var(--font-size-sm);
    opacity: 0.88;
}

.assign-banner-deselect[b-t7srtr13fe] {
    opacity: 0.75;
    flex-shrink: 0;
}

.assign-banner-deselect:hover[b-t7srtr13fe] {
    opacity: 1;
}

@keyframes assign-in-b-t7srtr13fe {
    from { opacity: 0; transform: translateY(-6px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Mobile layout improvements (< md = 768px) ───────────────────────────── */
@media (max-width: 767.98px) {
    /* Top bar: stack title below actions */
    .pg-bar[b-t7srtr13fe] {
        flex-direction: column;
        align-items: flex-start;
        padding: 0.5rem 0.9rem;
        gap: 0.4rem;
    }
    .pg-bar-left[b-t7srtr13fe] {
        flex-wrap: wrap;
    }
    .pg-bar-right[b-t7srtr13fe] {
        width: 100%;
        justify-content: flex-end;
    }

    /* Unassigned pool: horizontal scrolling chip row instead of tall column */
    .unassigned-pool[b-t7srtr13fe] {
        max-height: none;
        flex-direction: row;
        flex-wrap: nowrap;
        overflow-x: auto;
        overflow-y: hidden;
        padding-bottom: 4px;
        gap: 6px;
        -webkit-overflow-scrolling: touch;
    }
    .player-chip[b-t7srtr13fe] {
        flex-shrink: 0;
        min-width: 130px;
        max-width: 160px;
        padding: 0.4rem 0.6rem;
    }

    /* Group cards: full-width, more breathing room for player rows */
    .group-card[b-t7srtr13fe] {
        margin-bottom: 0.5rem;
    }
    .group-header[b-t7srtr13fe] {
        padding: 0.6rem 0.85rem;
    }
    .group-label[b-t7srtr13fe] {
        font-size: 0.88rem;
    }
    .group-teetime[b-t7srtr13fe] {
        font-size: var(--font-size-sm);
    }
    .group-players[b-t7srtr13fe] {
        padding: 0.5rem 0.6rem;
        gap: 4px;
    }
    .group-player-row[b-t7srtr13fe] {
        padding: 0.5rem 0.55rem;
        border-radius: 8px;
    }
    .group-player-name[b-t7srtr13fe] {
        font-size: 0.92rem;
    }
    .player-hcp-badge[b-t7srtr13fe] {
        font-size: var(--font-size-sm);
        padding: 2px 9px;
    }
    /* Prevent tee-time/hole chips from wrapping awkwardly */
    .group-header[b-t7srtr13fe] {
        flex-wrap: wrap;
        gap: 0.35rem;
    }
}

/* ── Marker Assignment Section ──────────────────────────────────────────── */
.group-marker-section[b-t7srtr13fe] {
    padding: 0.65rem 0.75rem;
    background: color-mix(in srgb, var(--bs-body-bg) 88%, var(--bs-secondary-bg, #6c757d) 12%);
    border-bottom: 1px solid var(--bs-border-color, #dee2e6);
    border-top: 1px solid var(--bs-border-color, #dee2e6);
}

.group-marker-row[b-t7srtr13fe] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-bottom: 0.5rem;
}

.group-marker-row:last-child[b-t7srtr13fe] {
    margin-bottom: 0;
}

.group-marker-target[b-t7srtr13fe] {
    min-width: 165px;
    flex-shrink: 0;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--bs-body-color, #212529);
    margin-bottom: 0;
}

.group-marker-select[b-t7srtr13fe] {
    flex: 1;
    font-size: 0.875rem;
    padding: 0.35rem 0.6rem;
    background-color: var(--bs-body-bg, #fff);
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 6px;
    color: var(--bs-body-color, #212529);
}

.group-marker-select:focus[b-t7srtr13fe] {
    border-color: #0d6efd;
    box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
}

.group-marker-select:disabled[b-t7srtr13fe] {
    background-color: var(--bs-secondary-bg, #e9ecef);
    color: var(--bs-secondary-color, #6c757d);
    cursor: not-allowed;
}

/* The keyboard/AT equivalent of tapping the group card (axe nested-interactive fix).
   Reads as a normal action for assistive tech and keyboard users; visually it is a quiet
   full-width strip so the card still looks like one tappable surface. */
.group-place-btn[b-t7srtr13fe] {
    display: block;
    width: 100%;
    margin-top: .5rem;
    padding: .45rem .6rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-primary-text);
    background: transparent;
    border: 1px dashed var(--b9-border);
    border-radius: 8px;
    cursor: pointer;
}

.group-place-btn:hover[b-t7srtr13fe] {
    background: var(--b9-primary-soft);
}

.group-place-btn:focus-visible[b-t7srtr13fe] {
    outline: 2px solid var(--b9-primary-text);
    outline-offset: 2px;
}
/* /Components/Pages/Events/PlayerEventsHub.razor.rz.scp.css */
/* Player Events Hub — scoped styles */

.pdb-avatar[b-v2oo93ve8n] {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-size: 1.25rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
    flex-shrink: 0;
    overflow: hidden;
}

.pdb-avatar--photo[b-v2oo93ve8n] {
    background: transparent;
}

/* ── Event cards (P04) ──────────────────────────────────────────────────────
   my-event.css lays a card out as [bar | text | actions] in one row. On a phone
   the actions column sat on top of the status chip ("Scoring Underwa…"). Here
   the card becomes a two-column grid on phones: the accent bar spans both rows,
   the text takes row 1 and the actions take row 2, UNDER the text. */

.pdb-org[b-v2oo93ve8n],
.pdb-hcp-label[b-v2oo93ve8n],
.pdb-live-badge[b-v2oo93ve8n] {
    font-size: 0.875rem;
}

/* The name is a link to the hub: the tap area is a full 48px tall without moving the text.
   The padding alone measured 46.9 — a hair under, because it was computed from the font rather
   than from the floor. The min-height states the floor outright (border-box, so the padding
   still counts toward it). */
.pdb-ec-name[b-v2oo93ve8n] {
    display: inline-block;
    min-height: var(--touch-target-min, 48px);
    padding: 0.85rem 0;
    margin: -0.85rem 0;
    overflow-wrap: anywhere;
}

.pdb-ec-status[b-v2oo93ve8n],
.pdb-ec-date-chip[b-v2oo93ve8n] {
    font-size: 0.875rem;
}

.pdb-ec-detail[b-v2oo93ve8n] {
    font-size: 0.875rem;
}

.pdb-ec-guidance[b-v2oo93ve8n] {
    font-size: 0.9rem;
}

/* The chips row may wrap under the name instead of running off the card */
.pdb-ec-top > div[b-v2oo93ve8n] {
    flex-wrap: wrap;
}

/* One primary per card; every action is a real touch target */
.pdb-ec-actions .pdb-btn-primary[b-v2oo93ve8n],
.pdb-ec-actions .pdb-btn-secondary[b-v2oo93ve8n],
.pdb-ec-actions .pdb-btn-ghost[b-v2oo93ve8n] {
    min-height: var(--touch-target-min);
    font-size: var(--font-size-base);
}

/* The hub link is text, not a second button */
.pdb-ec-hub-link[b-v2oo93ve8n] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.15rem;
    min-height: var(--touch-target-min);
    padding: 0.25rem 0.5rem;
    font-size: var(--font-size-base);
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
    white-space: normal;
    text-align: center;
}

.pdb-ec-hub-link:hover[b-v2oo93ve8n],
.pdb-ec-hub-link:focus-visible[b-v2oo93ve8n] {
    text-decoration: underline;
}

@media (max-width: 767.98px) {
    .pdb-event-card[b-v2oo93ve8n] {
        display: grid;
        grid-template-columns: 4px minmax(0, 1fr);
    }

    .pdb-ec-state-bar[b-v2oo93ve8n] {
        grid-column: 1;
        grid-row: 1 / span 2;
    }

    .pdb-ec-main[b-v2oo93ve8n] {
        grid-column: 2;
        grid-row: 1;
    }

    .pdb-ec-actions[b-v2oo93ve8n] {
        grid-column: 2;
        grid-row: 2;
        flex-direction: column;
        align-items: stretch;
        padding: 0 1rem 0.9rem;
    }

    .pdb-ec-actions .pdb-btn-primary[b-v2oo93ve8n],
    .pdb-ec-actions .pdb-btn-secondary[b-v2oo93ve8n],
    .pdb-ec-actions .pdb-btn-ghost[b-v2oo93ve8n] {
        width: 100%;
        justify-content: center;
    }
}
/* /Components/Pages/Events/PlayerNotesReview.razor.rz.scp.css */
.pnr-page[b-tfcvhgczwz] {
    color: var(--bs-body-color, #dee2e6);
}

.pnr-header-row[b-tfcvhgczwz] {
    padding: 0.2rem 0.15rem 0.3rem;
}

.pnr-title-block h2[b-tfcvhgczwz] {
    color: var(--bs-emphasis-color, #f8f9fa);
    letter-spacing: 0.01em;
    font-size: clamp(1.12rem, 1.3vw + 0.95rem, 1.52rem);
    line-height: 1.2;
    text-wrap: balance;
}

.pnr-title-subtext[b-tfcvhgczwz] {
    color: var(--bs-secondary-color, #adb5bd);
    font-size: 0.91rem;
    max-width: 42rem;
    line-height: 1.35;
}

.pnr-helper-copy[b-tfcvhgczwz] {
    color: var(--bs-secondary-color, #adb5bd) !important;
    font-size: 0.88rem;
}

.pnr-toolbar[b-tfcvhgczwz] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 0.45rem 1rem;
    padding: 0.5rem 0.7rem;
    border: 1px solid var(--bs-border-color, #495057);
    border-radius: 0.65rem;
    background: color-mix(in srgb, var(--bs-secondary-bg, #1f2a3a) 64%, transparent 36%);
}

.pnr-toolbar__count[b-tfcvhgczwz] {
    font-size: 0.9rem;
    color: var(--bs-emphasis-color, #f8f9fa);
}

.pnr-toolbar__hint[b-tfcvhgczwz] {
    font-size: var(--font-size-sm);
    color: var(--bs-secondary-color, #adb5bd);
}

.pnr-callout-stack[b-tfcvhgczwz] {
    display: grid;
    gap: 0.5rem;
}

.pnr-callout[b-tfcvhgczwz] {
    border: 1px solid color-mix(in srgb, var(--bs-border-color, #495057) 78%, transparent 22%);
    border-radius: 0.7rem;
    padding: 0.65rem 0.85rem;
    line-height: 1.35;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
}

.pnr-callout-primary[b-tfcvhgczwz] {
    background:
        linear-gradient(180deg, rgba(110, 168, 254, 0.13), rgba(110, 168, 254, 0.03)),
        color-mix(in srgb, var(--bs-primary, #0d6efd) 12%, var(--bs-body-bg, #0b1220) 88%);
}

.pnr-callout-neutral[b-tfcvhgczwz] {
    background:
        linear-gradient(180deg, rgba(255, 255, 255, 0.04), rgba(255, 255, 255, 0.01)),
        color-mix(in srgb, var(--bs-secondary-bg, #1f2a3a) 66%, transparent 34%);
}

.pnr-legend[b-tfcvhgczwz] {
    display: grid;
    grid-template-columns: repeat(2, minmax(16rem, 1fr));
    gap: 0.65rem;
}

.pnr-legend-group[b-tfcvhgczwz] {
    border: 1px solid var(--bs-border-color, #495057);
    border-radius: 0.65rem;
    padding: 0.55rem 0.7rem;
    background: color-mix(in srgb, var(--bs-secondary-bg, #1f2a3a) 72%, transparent 28%);
}

.pnr-legend-title[b-tfcvhgczwz] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--bs-secondary-color, #adb5bd);
    margin-bottom: 0.35rem;
}

.pnr-legend-items[b-tfcvhgczwz] {
    display: grid;
    gap: 0.25rem;
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

.pnr-table-wrap[b-tfcvhgczwz] {
    position: relative;
    border: 1px solid var(--bs-border-color, #495057);
    border-radius: 12px;
    background: color-mix(in srgb, var(--bs-body-bg, #0b1220) 92%, var(--bs-secondary-bg, #1f2a3a) 8%);
    overflow-x: auto;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
    scrollbar-width: thin;
}

.pnr-table-wrap[b-tfcvhgczwz]::after {
    content: "";
    position: sticky;
    right: 0;
    float: right;
    width: 1.25rem;
    height: 100%;
    background: linear-gradient(to left, color-mix(in srgb, var(--bs-body-bg, #0b1220) 95%, transparent 5%), transparent);
    pointer-events: none;
}

.pnr-table[b-tfcvhgczwz] {
    margin-bottom: 0;
    color: var(--bs-body-color, #dee2e6);
    min-width: 78rem;
}

.pnr-col-player[b-tfcvhgczwz] {
    width: 11rem;
}

.pnr-col-hole[b-tfcvhgczwz],
.pnr-col-official[b-tfcvhgczwz],
.pnr-col-suggestion[b-tfcvhgczwz] {
    width: 5.8rem;
}

.pnr-col-note[b-tfcvhgczwz] {
    width: 15.5rem;
}

.pnr-col-status[b-tfcvhgczwz],
.pnr-col-certification[b-tfcvhgczwz] {
    width: 12rem;
}

.pnr-col-actions[b-tfcvhgczwz] {
    width: 19rem;
}

.pnr-table thead th[b-tfcvhgczwz] {
    color: #f8fbff;
    background: color-mix(in srgb, #0b1220 80%, #162844 20%);
    border-bottom-color: var(--bs-border-color, #495057);
    border-bottom-width: 2px;
    font-weight: 700;
    letter-spacing: 0.01em;
    font-size: var(--font-size-sm);
    vertical-align: middle;
    text-transform: none;
    position: sticky;
    top: 0;
    z-index: 2;
    padding-top: 0.64rem;
    padding-bottom: 0.64rem;
    white-space: nowrap;
}

.pnr-table tbody td[b-tfcvhgczwz] {
    color: var(--bs-body-color, #dee2e6);
    border-top-color: color-mix(in srgb, var(--bs-border-color, #495057) 75%, transparent 25%);
    vertical-align: middle;
    padding-top: 0.58rem;
    padding-bottom: 0.58rem;
    padding-left: 0.62rem;
    padding-right: 0.62rem;
    font-size: 0.9rem;
}

.pnr-table tbody tr:nth-child(odd)[b-tfcvhgczwz] {
    background: color-mix(in srgb, var(--bs-secondary-bg, #1f2a3a) 42%, transparent 58%);
}

.pnr-table tbody tr:hover[b-tfcvhgczwz] {
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 16%, transparent 84%);
}

.pnr-player[b-tfcvhgczwz] {
    color: var(--bs-emphasis-color, #f8f9fa);
    font-weight: 600;
}

.pnr-numeric[b-tfcvhgczwz] {
    text-align: center;
    font-variant-numeric: tabular-nums;
}

.pnr-note[b-tfcvhgczwz] {
    color: var(--bs-body-color, #dee2e6);
    max-width: 26rem;
    white-space: normal;
    word-break: break-word;
    line-height: 1.3;
}

.pnr-actions .btn[b-tfcvhgczwz] {
    white-space: nowrap;
    width: auto;
    min-width: 11rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.pnr-actions .form-control[b-tfcvhgczwz] {
    min-width: 0;
}

.pnr-actions[b-tfcvhgczwz] {
    min-width: 18rem;
}

.pnr-status-badge[b-tfcvhgczwz] {
    margin-bottom: 0.25rem;
}

.pnr-status-cell[b-tfcvhgczwz],
.pnr-cert-cell[b-tfcvhgczwz] {
    line-height: 1.15;
}

.pnr-cell-help[b-tfcvhgczwz] {
    font-size: var(--font-size-sm);
    color: var(--bs-secondary-color, #adb5bd);
    line-height: 1.25;
    margin-top: 0.1rem;
    opacity: 0.9;
}

.pnr-action-card[b-tfcvhgczwz] {
    display: grid;
    gap: 0.35rem;
    padding: 0.5rem;
    border: 1px solid var(--bs-border-color, #495057);
    border-radius: 0.5rem;
    background: color-mix(in srgb, var(--bs-secondary-bg, #1f2a3a) 70%, transparent 30%);
}

.pnr-action-card .btn[b-tfcvhgczwz] {
    width: 100%;
}

.pnr-action-title[b-tfcvhgczwz] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--bs-secondary-color, #adb5bd);
}

.pnr-reviewed-meta[b-tfcvhgczwz] {
    font-size: var(--font-size-sm);
    color: var(--bs-emphasis-color, #f8f9fa);
    line-height: 1.35;
}

.pnr-review-note[b-tfcvhgczwz] {
    color: var(--bs-body-color, #dee2e6);
    background: color-mix(in srgb, var(--bs-secondary-bg, #1f2a3a) 78%, transparent 22%);
    border: 1px solid var(--bs-border-color, #495057);
    border-radius: 0.5rem;
    padding: 0.4rem 0.55rem;
}

.pnr-table thead th:last-child[b-tfcvhgczwz],
.pnr-table tbody td:last-child[b-tfcvhgczwz] {
    position: sticky;
    right: 0;
    z-index: 1;
    background: color-mix(in srgb, var(--bs-body-bg, #0b1220) 84%, var(--bs-secondary-bg, #1f2a3a) 16%);
    box-shadow: -1px 0 0 var(--bs-border-color, #495057);
}

.pnr-table thead th:last-child[b-tfcvhgczwz] {
    z-index: 3;
}

.pnr-footer-note[b-tfcvhgczwz] {
    font-size: var(--font-size-sm);
    color: var(--bs-secondary-color, #adb5bd);
}

.pnr-go-scoring-hint[b-tfcvhgczwz] {
    font-size: var(--font-size-sm);
    color: var(--bs-secondary-color, #adb5bd);
    margin-top: 0.3rem;
    max-width: 20rem;
}

.pnr-priority-note[b-tfcvhgczwz] {
    border-left: 3px solid color-mix(in srgb, var(--bs-warning, #ffc107) 75%, transparent 25%);
    padding: 0.35rem 0.55rem;
    font-size: var(--font-size-sm);
    color: var(--bs-secondary-color, #adb5bd);
    background: color-mix(in srgb, var(--bs-warning, #ffc107) 8%, transparent 92%);
    border-radius: 0.35rem;
}

.pnr-table .badge[b-tfcvhgczwz] {
    font-weight: 700;
    letter-spacing: 0.01em;
}

@media (max-width: 991.98px) {
    .pnr-header-row[b-tfcvhgczwz] {
        align-items: stretch !important;
    }

    .pnr-title-subtext[b-tfcvhgczwz] {
        max-width: none;
    }

    .pnr-legend[b-tfcvhgczwz] {
        grid-template-columns: 1fr;
    }

    .pnr-toolbar[b-tfcvhgczwz] {
        padding: 0.45rem 0.55rem;
    }

    .pnr-table[b-tfcvhgczwz] {
        min-width: 66rem;
    }

    .pnr-table thead th[b-tfcvhgczwz],
    .pnr-table tbody td[b-tfcvhgczwz] {
        padding: 0.5rem 0.55rem;
        font-size: 0.92rem;
    }

    .pnr-note[b-tfcvhgczwz] {
        max-width: 18rem;
    }

    .pnr-col-actions[b-tfcvhgczwz] {
        width: 16.5rem;
    }

    .pnr-go-scoring-hint[b-tfcvhgczwz] {
        max-width: 16rem;
    }
}

@media (max-width: 767.98px) {
    .pnr-cell-help[b-tfcvhgczwz] {
        font-size: var(--font-size-sm);
        opacity: 0.8;
    }

    .pnr-table[b-tfcvhgczwz] {
        min-width: 58rem;
    }

    .pnr-col-note[b-tfcvhgczwz] {
        width: 13rem;
    }

    .pnr-col-status[b-tfcvhgczwz],
    .pnr-col-certification[b-tfcvhgczwz],
    .pnr-col-actions[b-tfcvhgczwz] {
        width: 14rem;
    }

    .pnr-actions[b-tfcvhgczwz] {
        min-width: 14rem;
    }
}
/* /Components/Pages/Events/PublicEvent.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════
   LOADING / NOT FOUND
═══════════════════════════════════════════════════════════ */
.pub-loading[b-4ehvn49c0j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 50vh;
    gap: 0.5rem;
}

.pub-notfound[b-4ehvn49c0j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    text-align: center;
    padding: 2rem;
}

.pub-nf-icon[b-4ehvn49c0j] {
    font-size: 4rem;
    margin-bottom: 1rem;
}

/* ═══════════════════════════════════════════════════════════
   HERO BANNER
═══════════════════════════════════════════════════════════ */
.pub-hero[b-4ehvn49c0j] {
    padding: 2.75rem 1.5rem 2.25rem;
    position: relative;
    overflow: hidden;
}

/* Status-themed hero gradients */
.pub-hero-open[b-4ehvn49c0j]   { background: linear-gradient(140deg, #0f172a 0%, #1e3a5f 60%, #0e4d2f 100%); }
.pub-hero-active[b-4ehvn49c0j] { background: linear-gradient(140deg, #1a0a0a 0%, #7f1d1d 55%, #3b1414 100%); }
.pub-hero-closed[b-4ehvn49c0j] { background: linear-gradient(140deg, #0f172a 0%, #1e3050 60%, #0c2340 100%); }
.pub-hero-cancelled[b-4ehvn49c0j] { background: linear-gradient(140deg, #1e1e1e 0%, #374151 100%); }

.pub-hero-inner[b-4ehvn49c0j] {
    max-width: 1100px;
    margin: 0 auto;
    display: flex;
    gap: 2.5rem;
    flex-wrap: wrap;
    align-items: flex-start;
}

/* Single-column hero variant (QR landing) */
.pub-hero-single[b-4ehvn49c0j] {
    max-width: 640px;
    display: block;
    gap: 0;
}

/* ── Left column: name, desc, chips ── */
.pub-hero-left[b-4ehvn49c0j] {
    flex: 1;
    min-width: 280px;
}

/* A round's state — "Scoring Open", "Complete", "Today", "Upcoming" — is four branches of
   one if/else, each a raw Bootstrap .badge at 0.75em, which is 12px. An earlier X02 pass
   gave only the "Today" branch a class of ours, because "Today" was the branch the test
   event happened to be rendering; the other three stayed 12px and invisible. A per-page
   measurement only ever sees the branch today's data takes, so when a control has states,
   dress all of them at once. This class is the one place their size is decided. */
.pub-round-badge[b-4ehvn49c0j] {
    font-size: var(--font-size-chip);
}

.pub-status-pill[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.1em;
    color: rgba(255,255,255,0.75);
    background: rgba(255,255,255,0.1);
    border: 1px solid rgba(255,255,255,0.15);
    border-radius: 30px;
    padding: 4px 14px;
    margin-bottom: 1rem;
}

.pub-status-dot[b-4ehvn49c0j] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.pub-dot-open[b-4ehvn49c0j]     { background: #4ade80; }
.pub-dot-active[b-4ehvn49c0j]   { background: #f87171; box-shadow: 0 0 6px rgba(248,113,113,.7); animation: dot-pulse-b-4ehvn49c0j 1.5s infinite; }
.pub-dot-closed[b-4ehvn49c0j]   { background: #60a5fa; }
.pub-dot-cancelled[b-4ehvn49c0j] { background: #9ca3af; }

@keyframes dot-pulse-b-4ehvn49c0j {
    0%, 100% { box-shadow: 0 0 6px rgba(248,113,113,.7); }
    50%       { box-shadow: 0 0 14px rgba(248,113,113,.9); }
}

.pub-event-title[b-4ehvn49c0j] {
    font-size: 2.2rem;
    font-weight: 900;
    color: #fff;
    margin: 0 0 0.65rem;
    line-height: 1.15;
    letter-spacing: -0.03em;
}

.pub-event-desc[b-4ehvn49c0j] {
    color: rgba(255,255,255,0.7);
    font-size: 0.95rem;
    line-height: 1.65;
    margin-bottom: 1.25rem;
    max-width: 520px;
}

.pub-hero-chips[b-4ehvn49c0j] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.pub-chip[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: var(--font-size-chip);
    font-weight: 600;
    padding: 5px 13px;
    border-radius: 30px;
    border: 1px solid rgba(255,255,255,0.18);
}

.pub-chip-org[b-4ehvn49c0j]     { background: rgba(99,102,241,.25); color: #c7d2fe; }
.pub-chip-format[b-4ehvn49c0j]  { background: rgba(16,185,129,.2);  color: #6ee7b7; }
.pub-chip-hcp[b-4ehvn49c0j]     { background: rgba(245,158,11,.2);  color: #fcd34d; }
.pub-chip-rounds[b-4ehvn49c0j]  { background: rgba(59,130,246,.2);  color: #93c5fd; }

/* ── Right column: info cards ── */
.pub-hero-right[b-4ehvn49c0j] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    min-width: 240px;
    flex-shrink: 0;
}

.pub-date-card[b-4ehvn49c0j],
.pub-course-card[b-4ehvn49c0j],
.pub-field-card[b-4ehvn49c0j] {
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 12px;
    padding: 0.85rem 1rem;
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    color: #fff;
    backdrop-filter: blur(4px);
}

.pub-date-icon[b-4ehvn49c0j],
.pub-course-icon[b-4ehvn49c0j],
.pub-field-icon[b-4ehvn49c0j] {
    font-size: 1.25rem;
    flex-shrink: 0;
    margin-top: 2px;
    opacity: 0.85;
}

.pub-date-icon[b-4ehvn49c0j]  { color: #93c5fd; }
.pub-course-icon[b-4ehvn49c0j] { color: #6ee7b7; }
.pub-field-icon[b-4ehvn49c0j] { color: #fca5a5; }

.pub-date-main[b-4ehvn49c0j]  { font-weight: 700; font-size: 0.9rem; }
.pub-date-day[b-4ehvn49c0j]   { font-size: var(--font-size-sm); color: rgba(255,255,255,0.55); margin-top: 2px; }
.pub-date-dash[b-4ehvn49c0j]  { margin: 0 4px; }

.pub-course-name[b-4ehvn49c0j] { font-weight: 700; font-size: 0.9rem; }
.pub-course-loc[b-4ehvn49c0j]  { font-size: var(--font-size-sm); color: rgba(255,255,255,0.55); margin-top: 2px; }
.pub-course-tee[b-4ehvn49c0j]  { font-size: var(--font-size-sm); color: rgba(255,255,255,0.7); margin-top: 4px; display: flex; align-items: center; gap: 5px; }

.pub-tee-dot[b-4ehvn49c0j] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.pub-field-count[b-4ehvn49c0j] { font-size: 1.5rem; font-weight: 800; line-height: 1; }
.pub-field-max[b-4ehvn49c0j]   { font-size: 1rem; font-weight: 500; color: rgba(255,255,255,0.55); }
.pub-field-label[b-4ehvn49c0j] { font-size: var(--font-size-chip); color: rgba(255,255,255,0.55); margin-top: 3px; }

.pub-field-bar-wrap[b-4ehvn49c0j] {
    height: 4px;
    background: rgba(255,255,255,0.15);
    border-radius: 4px;
    margin-top: 6px;
    overflow: hidden;
    width: 120px;
}

.pub-field-bar[b-4ehvn49c0j] {
    height: 100%;
    background: linear-gradient(90deg, #4ade80, #22c55e);
    border-radius: 4px;
    transition: width 0.4s ease;
}

/* ═══════════════════════════════════════════════════════════
   INFO STRIP  (date · course · field — below hero)
═══════════════════════════════════════════════════════════ */
.pub-info-strip[b-4ehvn49c0j] {
    background: var(--bg-surface, #0f172a);
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.pub-info-items[b-4ehvn49c0j] {
    max-width: 1100px;
    margin: 0 auto;
    padding: 1rem 1.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem 3rem;
    align-items: flex-start;
}

.pub-info-item[b-4ehvn49c0j] {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    min-width: 140px;
}

.pub-info-icon[b-4ehvn49c0j] {
    font-size: 1.15rem;
    flex-shrink: 0;
    margin-top: 2px;
    opacity: 0.85;
}

.pub-info-icon--date[b-4ehvn49c0j]   { color: #93c5fd; }
.pub-info-icon--course[b-4ehvn49c0j] { color: #6ee7b7; }
.pub-info-icon--field[b-4ehvn49c0j]  { color: #fca5a5; }

.pub-info-main[b-4ehvn49c0j] {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--text-primary, #f1f5f9);
    line-height: 1.2;
}

.pub-info-muted[b-4ehvn49c0j] {
    font-weight: 500;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
}

.pub-info-sub[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    margin-top: 3px;
    display: flex;
    align-items: center;
    gap: 5px;
}

.pub-field-progress[b-4ehvn49c0j] {
    height: 4px;
    background: rgba(255,255,255,0.1);
    border-radius: 4px;
    margin-top: 6px;
    overflow: hidden;
    width: 110px;
}

.pub-field-progress-bar[b-4ehvn49c0j] {
    height: 100%;
    background: linear-gradient(90deg, #4ade80, #22c55e);
    border-radius: 4px;
    transition: width 0.4s ease;
}

/* ═══════════════════════════════════════════════════════════
   LEADERBOARD BANNER
═══════════════════════════════════════════════════════════ */
.pub-lb-banner[b-4ehvn49c0j] {
    padding: 0.9rem 1.5rem;
}

.pub-lb-active[b-4ehvn49c0j] { background: linear-gradient(90deg, #7f1d1d, #991b1b); }
.pub-lb-closed[b-4ehvn49c0j] { background: linear-gradient(90deg, #1e3a5f, #1d4ed8); }

.pub-lb-inner[b-4ehvn49c0j] {
    max-width: 1100px;
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.pub-lb-left[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    flex-wrap: wrap;
}

.pub-live-badge[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #B91C1C;   /* was #ef4444 — #fff 3.76:1, now 6.47:1; still reads as red-means-live */
    color: #fff;
    font-weight: 800;
    font-size: var(--font-size-chip);
    letter-spacing: 0.12em;
    padding: 4px 12px;
    border-radius: 30px;
}

.pub-live-dot[b-4ehvn49c0j] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #fff;
    animation: blink-b-4ehvn49c0j 1.2s step-start infinite;
}

@keyframes blink-b-4ehvn49c0j {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

/* The pill was a light wash (white at 18%) with light gold lettering on it — a pale ink on a
   pale fill, which is low contrast whatever is underneath. Over the closed banner's blue end it
   measured 3.97:1, in BOTH themes. Darkening the wash instead of the gold keeps the trophy
   reading gold and clears AA against every banner this pill appears on: 7.95:1 over the blue
   end of --pub-lb-closed, 11.91:1 over its navy end, 9.46:1 over the active banner's red. */
.pub-final-badge[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    background: rgba(0,0,0,0.22);
    color: #fef08a;
    font-weight: 800;
    font-size: var(--font-size-chip);
    letter-spacing: 0.1em;
    padding: 4px 12px;
    border-radius: 30px;
}

.pub-lb-text[b-4ehvn49c0j] {
    font-size: 0.88rem;
    font-weight: 500;
    color: rgba(255,255,255,0.85);
}

.pub-lb-btn[b-4ehvn49c0j] {
    background: #fff;
    /* Ink ON a white pill (white in both themes): the dark brand blue, 10.4:1 here.
       --b9-primary-text would flip to #93C5FD on dark and vanish against the white. */
    color: var(--b9-primary-active);
    font-weight: 700;
    font-size: var(--font-size-sm);
    border-radius: 30px;
    padding: 0.45rem 1.35rem;
    white-space: nowrap;
    transition: background 0.12s, transform 0.1s;
    text-decoration: none;
}

.pub-lb-btn:hover[b-4ehvn49c0j] {
    background: rgba(255,255,255,0.92);
    transform: translateY(-1px);
    color: var(--b9-primary-active);
}

/* ═══════════════════════════════════════════════════════════
   BODY SECTIONS
═══════════════════════════════════════════════════════════ */
.pub-body[b-4ehvn49c0j] {
    max-width: 1100px;
    margin: 0 auto;
    padding: 1.75rem 1.5rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 2.25rem;
}

.pub-body-narrow[b-4ehvn49c0j] {
    max-width: 640px;
}

.pub-section[b-4ehvn49c0j] {
    background: var(--bg-elevated);
    border-radius: 16px;
    border: 1px solid var(--border-default);
    box-shadow: 0 2px 8px rgba(0,0,0,.22);
    padding: 1.5rem;
}

.pub-share-section[b-4ehvn49c0j] {
    background: var(--brand-soft);
    border-color: var(--brand-ring);
}

/* ── Section header ── */
.pub-section-header[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
}

.pub-section-icon[b-4ehvn49c0j] {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    flex-shrink: 0;
}

.pub-si-purple[b-4ehvn49c0j] { background: rgba(109,40,217,0.16); color: #c4b5fd; }
.pub-si-blue[b-4ehvn49c0j]   { background: var(--brand-soft); color: var(--brand-text); }
.pub-si-teal[b-4ehvn49c0j]   { background: rgba(13,148,136,0.18); color: #5eead4; }

.pub-section-title[b-4ehvn49c0j] {
    font-size: 1.05rem;
    font-weight: 800;
    margin: 0;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
}

.pub-title-badge[b-4ehvn49c0j] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    background: var(--bg-raised);
    color: var(--text-muted);
    border-radius: 20px;
    padding: 2px 10px;
}

.pub-clear-search[b-4ehvn49c0j] {
    background: none;
    border: none;
    color: var(--text-muted);
    font-size: var(--font-size-sm);
    cursor: pointer;
    padding: 2px 8px;
    border-radius: 6px;
}
.pub-clear-search:hover[b-4ehvn49c0j] { background: var(--bg-raised); }

/* ── Schedule / Rounds ── */
.pub-rounds[b-4ehvn49c0j] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.pub-round[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.75rem 1rem;
    border-radius: 10px;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-default);
    transition: border-color 0.12s;
}

.pub-round-today[b-4ehvn49c0j] {
    border-color: rgba(251,191,36,0.55);
    background: var(--warning-soft);
}

.pub-round-past[b-4ehvn49c0j] {
    opacity: 0.7;
}

.pub-round-num-badge[b-4ehvn49c0j] {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: linear-gradient(135deg, #4f46e5, #7c3aed);
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.03em;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.pub-round-today .pub-round-num-badge[b-4ehvn49c0j] {
    background: linear-gradient(135deg, #d97706, #f59e0b);
}

.pub-round-info[b-4ehvn49c0j] { flex: 1; }
.pub-round-date[b-4ehvn49c0j] { font-weight: 600; font-size: 0.9rem; color: var(--text-primary); }
.pub-round-meta[b-4ehvn49c0j] { margin-top: 3px; }

/* ── Search ── */
.pub-search-wrap[b-4ehvn49c0j] {
    position: relative;
    margin-bottom: 1.1rem;
}

.pub-search-icon[b-4ehvn49c0j] {
    position: absolute;
    left: 0.85rem;
    top: 50%;
    transform: translateY(-50%);
    color: #9ca3af;
    font-size: 0.9rem;
}

.pub-search[b-4ehvn49c0j] {
    /* measured 321x41 on a phone; a search field is a thumb target too (X03) */
    min-height: var(--touch-target-min);
    width: 100%;
    padding: 0.55rem 1rem 0.55rem 2.35rem;
    border: 1.5px solid var(--border-default);
    border-radius: 30px;
    font-size: 0.875rem;
    outline: none;
    transition: border-color 0.15s, box-shadow 0.15s;
    background: var(--bg-raised);
    color: var(--text-primary);
}

.pub-search:focus[b-4ehvn49c0j] {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-ring);
    background: var(--bg-elevated);
}

/* ── Field grid ── */
.pub-field-grid[b-4ehvn49c0j] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.6rem;
}

.pub-player-card[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.65rem 0.85rem;
    border-radius: 10px;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-default);
    transition: border-color 0.12s, background 0.12s;
}

.pub-player-card:hover[b-4ehvn49c0j] {
    border-color: var(--brand-ring);
    background: var(--brand-soft);
}

.pub-player-num[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-muted);
    width: 18px;
    text-align: right;
    flex-shrink: 0;
}

/* ── Player avatar ── */
.pub-player-avatar[b-4ehvn49c0j] {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    font-size: var(--font-size-chip);
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    text-transform: uppercase;
    letter-spacing: -0.02em;
    overflow: hidden;
}
.pub-player-avatar--photo[b-4ehvn49c0j] {
    object-fit: cover;
}

.av-green[b-4ehvn49c0j]  { background: var(--success-soft);             color: var(--success-text); }
.av-blue[b-4ehvn49c0j]   { background: var(--brand-soft);               color: var(--brand-text); }
/* These three were the only members of the palette hand-typed rather than tokenised, and the
   only three that broke in light: lilac on lilac 1.17:1, mint on mint 1.01:1, ice on ice 1.01:1
   — 24 chips on one page. The FILLS are unchanged (the tokens hold the same rgba); the ink now
   has a light twin, exactly as --success-text/--brand-text already gave the other five. */
.av-purple[b-4ehvn49c0j] { background: var(--b9-violet-soft);          color: var(--b9-violet-text); }
.av-teal[b-4ehvn49c0j]   { background: var(--b9-teal-soft);            color: var(--b9-teal-text); }
.av-amber[b-4ehvn49c0j]  { background: var(--warning-soft);             color: var(--warning-text); }
.av-rose[b-4ehvn49c0j]   { background: var(--danger-soft);              color: var(--danger-text); }
.av-indigo[b-4ehvn49c0j] { background: var(--brand-soft);               color: var(--brand-text); }
.av-cyan[b-4ehvn49c0j]   { background: var(--b9-cyan-soft);             color: var(--b9-cyan-text); }

.pub-player-info[b-4ehvn49c0j] { flex: 1; min-width: 0; }
.pub-player-name[b-4ehvn49c0j] { font-size: 0.875rem; font-weight: 600; color: var(--text-primary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pub-player-hcp[b-4ehvn49c0j]  { font-size: var(--font-size-sm); color: var(--text-muted); margin-top: 1px; }

.pub-player-confirmed[b-4ehvn49c0j] {
    color: #22c55e;
    font-size: 0.9rem;
    flex-shrink: 0;
}

/* ── Share section ── */
.pub-share-row[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.85rem;
    flex-wrap: wrap;
}

.pub-share-url[b-4ehvn49c0j] {
    flex: 1;
    min-width: 200px;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-default);
    border-radius: 8px;
    padding: 0.45rem 0.85rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    font-family: monospace;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* X05: the second "Share" in the product. The one on the public league page sat on the raw
   #2563eb; this one sat on the raw #1d4ed8 — the right shade, hand-typed, which is the same
   problem a step later: nothing stops the next edit moving one and not the other. Both Shares
   now read the one token, so the product has one blue and it lives in one place. */
.pub-share-btn[b-4ehvn49c0j] {
    background: var(--b9-primary, #1D4ED8);
    color: var(--b9-primary-ink, #FFFFFF);
    border-radius: 8px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: 0.45rem 1.15rem;
    white-space: nowrap;
    transition: background 0.12s;
}

.pub-share-btn:hover[b-4ehvn49c0j] { background: var(--b9-primary-active, #1E40AF); color: var(--b9-primary-ink, #FFFFFF); }

/* #475569 hand-typed: fine on the light card it also renders on, 2.44:1 on the dark one. It is
   the light theme's own --text-secondary, so the token says the same thing in light and says a
   readable thing in dark (#C2CFDF, 9.4:1) — the light rendering does not move at all. */
.pub-share-lb[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    margin-top: 0.25rem;
}

/* ═══════════════════════════════════════════════════════════
   TEE SHEET / PAIRINGS
═══════════════════════════════════════════════════════════ */

.pub-round-label[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted);
    margin: 0 0 0.75rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--border-default);
}

.pub-tee-sheet[b-4ehvn49c0j] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.pub-group-card[b-4ehvn49c0j] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,.18);
}

.pub-group-header[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    padding: 0.5rem 0.75rem;
    background: var(--bg-raised);
    border-bottom: 1px solid var(--border-default);
}

.pub-group-time[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--brand-text);
}

.pub-group-num[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-primary);
}

.pub-group-hole[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    background: var(--bg-raised);
    border-radius: 20px;
    padding: 1px 7px;
}

.pub-group-notes[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    font-style: italic;
}

.pub-group-players[b-4ehvn49c0j] {
    padding: 0.5rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.pub-group-player[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.pub-gp-avatar[b-4ehvn49c0j] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--brand-soft);
    color: var(--brand-text);
    font-size: var(--font-size-chip);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    letter-spacing: -0.02em;
    overflow: hidden;
}
.pub-gp-avatar--photo[b-4ehvn49c0j] {
    background: transparent;
    object-fit: cover;
}

/* A golfer opens this on a phone to find their group, so a name they cannot read is the one thing
   this list must not do. It used to clip with an ellipsis and no way to see the rest — nineteen
   names on a real 165-player field, "Randy Meincke" given 85px for 96px of text. It wraps now.
   overflow-wrap keeps a single very long name inside the card instead of pushing the page sideways,
   which is the failure mode nowrap was there to prevent. */
.pub-gp-name[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--text-primary);
    flex: 1;
    min-width: 0;
    white-space: normal;
    overflow-wrap: anywhere;
}

.pub-gp-hcp[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: 4px;
    padding: 0 5px;
    line-height: 1.6;
    flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════════════════ */
@media (max-width: 767px) {
    .pub-hero[b-4ehvn49c0j] { padding: 2rem 1rem 1.75rem; }

    .pub-event-title[b-4ehvn49c0j] { font-size: 1.6rem; }

    .pub-hero-right[b-4ehvn49c0j] {
        width: 100%;
        flex-direction: row;
        flex-wrap: wrap;
    }

    .pub-date-card[b-4ehvn49c0j],
    .pub-course-card[b-4ehvn49c0j],
    .pub-field-card[b-4ehvn49c0j] {
        flex: 1;
        min-width: 160px;
    }

    .pub-lb-inner[b-4ehvn49c0j] { flex-direction: column; align-items: flex-start; }

    .pub-body[b-4ehvn49c0j] { padding: 1.25rem 1rem 2rem; gap: 1.25rem; }

    .pub-section[b-4ehvn49c0j] { padding: 1.1rem; }

    .pub-field-grid[b-4ehvn49c0j] { grid-template-columns: 1fr; }

    .pub-tee-sheet[b-4ehvn49c0j] { grid-template-columns: 1fr 1fr; }
}

/* ══════════════════════════════════════════════════════════════════════════════
   SELF-REGISTRATION PANEL
══════════════════════════════════════════════════════════════════════════════ */

.pub-self-reg[b-4ehvn49c0j] {
    margin: 0;
    border-top: 1px solid var(--b9-border, #e9ecef);
    border-bottom: 1px solid var(--b9-border, #e9ecef);
    background: var(--b9-surface, #fff);
}

.pub-self-reg.pub-sr-state-registered[b-4ehvn49c0j] {
    background: color-mix(in srgb, var(--b9-success, #198754) 6%, transparent);
    border-color: color-mix(in srgb, var(--b9-success, #198754) 25%, transparent);
}

.pub-self-reg.pub-sr-state-full[b-4ehvn49c0j] {
    background: var(--b9-muted-bg, #f8f9fa);
}

.pub-sr-inner[b-4ehvn49c0j] {
    max-width: 1140px;
    margin: 0 auto;
    padding: 1rem 2rem;
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

/* Icon bubble */
.pub-sr-icon[b-4ehvn49c0j] {
    flex-shrink: 0;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.25rem;
}
.pub-sr-icon-green[b-4ehvn49c0j]  { background: color-mix(in srgb, var(--b9-success, #198754) 12%, transparent); color: var(--b9-success, #198754); }
.pub-sr-icon-blue[b-4ehvn49c0j]   { background: color-mix(in srgb, var(--b9-primary, #0d6efd) 12%, transparent); color: var(--b9-primary-text); }
.pub-sr-icon-muted[b-4ehvn49c0j]  { background: var(--b9-muted-bg, #f1f3f5); color: var(--b9-muted, #6c757d); }

/* Text block */
.pub-sr-text[b-4ehvn49c0j] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: .15rem;
}
.pub-sr-text strong[b-4ehvn49c0j] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--b9-text, #212529);
    line-height: 1.3;
}
.pub-sr-text span[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--b9-muted, #6c757d);
}

/* Buttons */
.pub-sr-btn[b-4ehvn49c0j] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    padding: .5rem 1.1rem;
    border-radius: 6px;
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s, box-shadow .15s, opacity .15s;
    text-decoration: none;
    border: none;
    line-height: 1.4;
}
.pub-sr-btn:disabled[b-4ehvn49c0j] { opacity: .6; cursor: not-allowed; }

.pub-sr-btn-primary[b-4ehvn49c0j] {
    background: var(--b9-primary, #0d6efd);
    color: #fff;
    box-shadow: 0 1px 3px rgba(13,110,253,.25);
}
.pub-sr-btn-primary:hover:not(:disabled)[b-4ehvn49c0j] {
    background: color-mix(in srgb, var(--b9-primary, #0d6efd) 85%, #000);
    box-shadow: 0 2px 6px rgba(13,110,253,.35);
    color: #fff;
}

.pub-sr-btn-ghost[b-4ehvn49c0j] {
    background: transparent;
    color: var(--b9-muted, #6c757d);
    border: 1.5px solid var(--b9-border, #dee2e6);
}
.pub-sr-btn-ghost:hover:not(:disabled)[b-4ehvn49c0j] {
    background: var(--b9-muted-bg, #f8f9fa);
    color: var(--b9-text, #212529);
    border-color: var(--b9-text-muted, #adb5bd);
}

/* Error bar */
.pub-sr-error[b-4ehvn49c0j] {
    padding: .5rem 2rem .6rem;
    font-size: var(--font-size-sm);
    color: var(--b9-danger, #dc3545);
    background: color-mix(in srgb, var(--b9-danger, #dc3545) 8%, transparent);
    border-top: 1px solid color-mix(in srgb, var(--b9-danger, #dc3545) 20%, transparent);
}

/* Responsive */
@media (max-width: 576px) {
    .pub-sr-inner[b-4ehvn49c0j] {
        padding: .875rem 1rem;
        gap: .75rem;
    }
    .pub-sr-btn[b-4ehvn49c0j] { width: 100%; justify-content: center; }
}

/* ══════════════════════════════════════════════════════════════
   CONTEST RESULTS
══════════════════════════════════════════════════════════════ */

.pub-si-amber[b-4ehvn49c0j] { background: var(--warning-soft); color: var(--warning-text); }

.pub-contest-grid[b-4ehvn49c0j] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
    padding: 0.25rem 0;
}

.pub-contest-card[b-4ehvn49c0j] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    padding: 0.875rem 1rem;
}

.pub-contest-card-head[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.625rem;
}

.pub-contest-card-name[b-4ehvn49c0j] {
    font-weight: 700;
    font-size: 0.95rem;
}

.pub-contest-card-holes[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    background: var(--b9-surface-muted);
    padding: 0.1em 0.5em;
    border-radius: 6px;
}

.pub-contest-winner[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-bottom: 0.25rem;
}

.pub-contest-winner-name[b-4ehvn49c0j] {
    font-weight: 700;
    font-size: 1rem;
}

.pub-contest-winner-val[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-left: 0.25rem;
}

.pub-contest-prize[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-top: 0.375rem;
}

/* ── Live on-course games board ─────────────────────────────── */
.pub-live-badge[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    margin-left: 0.6rem;
    padding: 0.15em 0.6em;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--brand-text);
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.06em;
}

.pub-live-dot[b-4ehvn49c0j] {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background: var(--brand, #22c55e);
    animation: pub-live-pulse-b-4ehvn49c0j 1.4s ease-in-out infinite;
}

@keyframes pub-live-pulse-b-4ehvn49c0j {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: 0.4; transform: scale(0.7); }
}

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

.pub-contest-card--live[b-4ehvn49c0j] {
    border-color: var(--brand-ring);
}

.pub-contest-leadtag[b-4ehvn49c0j] {
    margin-left: auto;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--brand-text);
    background: var(--brand-soft);
    padding: 0.1em 0.5em;
    border-radius: 6px;
}

.pub-contest-open[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    font-style: italic;
}

/* ── Custom event photo banner ─────────────────────────────────────────────── */
.pub-event-banner[b-4ehvn49c0j] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 1.75rem 1.5rem;
    margin-bottom: 1rem;
    border-radius: 16px;
    overflow: hidden;
    /* A rich branded field so the event image reads as a mounted emblem, not a stark full-bleed band.
       A club crest, a transparent logo, or a wide photo all sit framed on the same premium surface;
       the org's accent colour (when set) tints the glow. */
    background:
        radial-gradient(120% 150% at 50% -30%, color-mix(in srgb, var(--event-accent, #1e3a5f) 40%, transparent) 0%, transparent 62%),
        linear-gradient(140deg, #0f172a 0%, #16233b 55%, #0e2a1c 100%);
    border: 1px solid var(--b9-border, #2a3850);
    border-bottom: 3px solid var(--event-accent, #1e3a5f);
}
.pub-event-banner img[b-4ehvn49c0j] {
    max-width: min(560px, 92%);
    max-height: 190px;
    width: auto;
    object-fit: contain;      /* frame the whole image — a crest is never cropped into a band */
    display: block;
    border-radius: 10px;
    box-shadow: 0 12px 34px rgba(0, 0, 0, 0.45), 0 0 0 1px rgba(255, 255, 255, 0.06);
}

/* ── Presenting sponsor band ───────────────────────────────────────────────── */
.pub-presenting[b-4ehvn49c0j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
    margin: 0.25rem 0 1rem;
    padding: 0.9rem 1rem;
    border-radius: 12px;
    background: var(--b9-surface, #0f1722);
    border: 1px solid var(--event-accent, var(--b9-border, #2a3850));
}
.pub-presenting-label[b-4ehvn49c0j] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--b9-text-soft, #93a3b8);
}
.pub-presenting-logo[b-4ehvn49c0j] {
    max-height: 64px;
    max-width: 240px;
    object-fit: contain;
}
.pub-presenting-name[b-4ehvn49c0j] {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--b9-text, #e8eef6);
}

/* ── THANK YOU: the sponsors, given a section of their own ─────────────────
   Replaces the old .pub-sponsor-wall, which stacked 123 high-contrast plates in a
   bordered box directly under the event title. Two problems it had:

   - Every name looked like a control, so the block read as one texture and got skimmed.
   - It occupied the most valuable space on the page with the least urgent content.

   The treatment here is typographic, not chrome: no boxes around names, no borders
   competing with the content, and sponsors own the WARM end of the token palette so
   recognition never wears the same colour as "tap this" (which is blue everywhere else
   in the product). Nothing below encodes an amount, a level or a rank. */

.pub-thanks-section[b-4ehvn49c0j] {
    border-top: 1px solid rgba(245, 158, 11, 0.16);
    background:
        radial-gradient(90% 120% at 50% 0%, rgba(245, 158, 11, 0.06), transparent 70%);
}
.pub-thanks-head[b-4ehvn49c0j] {
    text-align: center;
    max-width: 60ch;
    margin: 0 auto 1.75rem;
}
.pub-thanks-kicker[b-4ehvn49c0j] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--b9-warning-text, #fcd34d);
}
.pub-thanks-title[b-4ehvn49c0j] {
    font-size: clamp(1.35rem, 3vw, 1.9rem);
    font-weight: 800;
    letter-spacing: -0.02em;
    margin: 0.4rem 0 0;
}
.pub-thanks-lede[b-4ehvn49c0j] {
    color: var(--b9-text-muted, #c2cfdf);
    margin: 0.6rem 0 0;
}
.pub-thanks-count[b-4ehvn49c0j] {
    color: var(--b9-warning-text, #fcd34d);
    font-variant-numeric: tabular-nums;
}

.pub-thanks-subhead[b-4ehvn49c0j] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    padding-bottom: 0.6rem;
    margin: 2rem 0 1rem;
    border-bottom: 1px solid var(--b9-border, #2a3850);
}
.pub-thanks-subhead h3[b-4ehvn49c0j] {
    margin: 0;
    font-size: var(--font-size-sm);
    font-weight: 800;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--b9-text-soft, #9fb0c4);
}
.pub-thanks-subhead span[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #9fb0c4);
    font-variant-numeric: tabular-nums;
}

/* The hole board. A hole can carry more than one sign, so each cell stacks them. */
.pub-hole-board[b-4ehvn49c0j] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(168px, 1fr));
    gap: 0.55rem;
}
.pub-hole[b-4ehvn49c0j] {
    background: var(--b9-surface, #0f1722);
    border: 1px solid var(--b9-border, #2a3850);
    border-radius: 12px;
    padding: 0.75rem 0.8rem 0.8rem;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}
.pub-hole-n[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--b9-warning-text, #fcd34d);
    font-variant-numeric: tabular-nums;
}
.pub-hole-sign[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 650;
    color: var(--b9-text, #f3f6fb);
    line-height: 1.3;
    overflow-wrap: anywhere;
}
.pub-hole-sign + .pub-hole-sign[b-4ehvn49c0j] {
    padding-top: 0.45rem;
    border-top: 1px dashed var(--b9-border, #2a3850);
}

/* The roll: names set in columns like a printed programme, not 124 buttons.
   The 150px floor matters most on a phone: at a 210px floor a 375px screen gets ONE
   column and 124 names run seven screens. Two columns halves that, and a business name
   wrapping to a second line costs nothing in a roll. */
.pub-roll[b-4ehvn49c0j] {
    columns: 4 150px;
    column-gap: 1.5rem;
    margin: 0;
    padding: 0;
    list-style: none;
}
@media (min-width: 700px) {
    .pub-roll[b-4ehvn49c0j] { columns: 4 210px; column-gap: 2.1rem; }
}
.pub-roll li[b-4ehvn49c0j] {
    break-inside: avoid;
    padding: 0.32rem 0;
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted, #c2cfdf);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
    overflow-wrap: anywhere;
}

/* Link to the committee's shareable sponsors-only page. 48px min target — this is
   tapped on a phone, often by an older reader. */
.pub-thanks-page-link[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    margin-top: 1.15rem;
    padding: 0 0.15rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
}
.pub-thanks-page-link:hover[b-4ehvn49c0j],
.pub-thanks-page-link:focus-visible[b-4ehvn49c0j] {
    text-decoration: underline;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.pub-th-rank[b-4ehvn49c0j] { width: 64px; }
.pub-th-num[b-4ehvn49c0j] { width: 96px; }

/* The `.pub-sponsor-grid ::deep .pub-sponsor-logo` rule that lived here is gone with the wall it
   sized. This page no longer renders <SponsorMark /> at all — the roll is typeset names, and the
   only remaining mark is the presenting sponsor's own <img>, which this component owns and can
   therefore style without ::deep. The ::deep note itself is preserved on the surfaces that still
   host the shared component (Leaderboard, TvBoard, Flyer): a scoped rule cannot reach a child
   component's markup, and without it a logo silently renders at its natural size. */

/* ── Field fold ────────────────────────────────────────────────────────────
   159 player cards ran 11,600px on a phone — sixteen screens — and buried every
   section below them. The roster is reference material you go looking for, not
   reading, so past a threshold it opens on request. The count stays visible in the
   heading either way, and a search forces it open so typing a name never looks broken. */
.pub-field-note[b-4ehvn49c0j] {
    color: var(--b9-text-muted, #c2cfdf);
    font-size: 0.9rem;
    margin: 0 0 0.75rem;
}
.pub-field-fold[b-4ehvn49c0j] {
    margin-top: 0.25rem;
}
.pub-field-summary[b-4ehvn49c0j] {
    cursor: pointer;
    list-style: none;
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 48px;
    padding: 0.6rem 1rem;
    border: 1px solid var(--b9-border, #2a3850);
    border-radius: 10px;
    background: var(--b9-surface, #0f1722);
    color: var(--b9-primary-text, #93c5fd);
    font-weight: 650;
    font-size: 0.92rem;
}
.pub-field-summary[b-4ehvn49c0j]::-webkit-details-marker { display: none; }
.pub-field-summary[b-4ehvn49c0j]::after {
    content: "▾";
    font-size: var(--font-size-sm);
    transition: transform 0.15s ease;
}
.pub-field-fold[open] > .pub-field-summary[b-4ehvn49c0j]::after { transform: rotate(180deg); }
.pub-field-summary:hover[b-4ehvn49c0j] { border-color: var(--b9-primary, #1d4ed8); }
.pub-field-summary:focus-visible[b-4ehvn49c0j] {
    outline: 2px solid var(--b9-primary-text, #93c5fd);
    outline-offset: 2px;
}
.pub-field-fold[open] > .pub-field-summary[b-4ehvn49c0j] { margin-bottom: 0.9rem; }
@media (prefers-reduced-motion: reduce) {
    .pub-field-summary[b-4ehvn49c0j]::after { transition: none; }
}

/* ── Facts strip ───────────────────────────────────────────────────────────
   Date, tee time, course, format and field in one band, immediately under the hero.
   Replaces three stacked icon cards that pushed the same information down the page and
   never named the tee time at all — the single most asked question before an outing.
   Cells are hairline-separated on one row and stack cleanly on a phone. */
.pub-facts[b-4ehvn49c0j] {
    display: grid;
    /* 128px, not 150px: at 150 the fifth cell wrapped onto a row of its own and sat in a
       half-empty band. Five cells is the maximum this strip ever holds (the tee-time cell is
       absent when no pairing carries one), so they fit one row on any tablet or desktop. */
    grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
    margin: 0;
    border: 1px solid var(--b9-border, #2a3850);
    border-radius: 14px;
    overflow: hidden;
    background: var(--b9-surface, #0f1722);
}
.pub-fact[b-4ehvn49c0j] {
    padding: 0.85rem 1rem;
    border-right: 1px solid rgba(255, 255, 255, 0.05);
}
.pub-fact:last-child[b-4ehvn49c0j] { border-right: 0; }
.pub-fact dt[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    letter-spacing: 0.15em;
    text-transform: uppercase;
    font-weight: 700;
    color: var(--b9-text-soft, #9fb0c4);
    margin: 0 0 0.3rem;
}
.pub-fact dd[b-4ehvn49c0j] {
    margin: 0;
    font-size: 1.02rem;
    font-weight: 650;
    color: var(--b9-text, #f3f6fb);
    font-variant-numeric: tabular-nums;
    line-height: 1.25;
}
.pub-fact dd small[b-4ehvn49c0j] {
    display: block;
    font-weight: 400;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #9fb0c4);
    margin-top: 0.1rem;
}
/* Stacked on a phone: the vertical rule becomes a horizontal one. */
@media (max-width: 620px) {
    .pub-fact[b-4ehvn49c0j] { border-right: 0; border-bottom: 1px solid rgba(255, 255, 255, 0.05); }
    .pub-fact:last-child[b-4ehvn49c0j] { border-bottom: 0; }
}

/* Jump link on the closed-registration card. Deliberately NOT .pub-cta-btn-primary — that class
   is reserved for the single sign-up CTA and a release gate counts it. Same shape, quieter fill,
   because this navigates within the page rather than committing anyone to anything. */
.pub-cta-btn-jump[b-4ehvn49c0j] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 48px;
    padding: 0.7rem 1.25rem;
    border-radius: 10px;
    border: 1px solid var(--b9-primary, #1d4ed8);
    background: var(--b9-primary-soft, rgba(29, 78, 216, 0.15));
    color: var(--b9-primary-text, #93c5fd);
    font-weight: 700;
    text-decoration: none;
}
.pub-cta-btn-jump:hover[b-4ehvn49c0j] { background: var(--b9-primary, #1d4ed8); color: #fff; }
.pub-cta-btn-jump:focus-visible[b-4ehvn49c0j] {
    outline: 2px solid var(--b9-primary-text, #93c5fd);
    outline-offset: 2px;
}

/* ── Sponsor logo row ──────────────────────────────────────────────────────
   Only businesses that actually supplied artwork. Setting every sponsor as text made
   sending a logo worthless, which is the opposite of what recognition should reward.

   ::deep is REQUIRED, not stylistic: the mark is drawn by the shared <SponsorMark />
   child component, so its element never receives THIS component's b-* scope attribute
   and a plain `.pub-logo-mark { }` rule silently does nothing — a logo would render at
   its natural size, and a 1px image renders as 1px. */
.pub-logo-row[b-4ehvn49c0j] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: center;
    gap: 1.4rem 1.8rem;
}
.pub-logo-cell[b-4ehvn49c0j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
    width: 132px;
}
.pub-logo-row[b-4ehvn49c0j]  .pub-logo-mark {
    width: 132px;
    height: 62px;
    object-fit: contain;
    background: #fff;
    border-radius: 10px;
    padding: 6px;
}
.pub-logo-name[b-4ehvn49c0j] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-soft, #9fb0c4);
    text-align: center;
    line-height: 1.3;
    overflow-wrap: anywhere;
}

/* ── Width: use the screen you are given ───────────────────────────────────
   Two separate faults, both visible only on a desktop.

   1. The facts strip lost its container. It replaced .pub-info-items, which carried
      max-width + auto margins + padding, and inherited none of them — so at 1440px it
      ran 1400px wide while every other section sat in a 640px column beside it.

   2. .pub-body-narrow pins the whole page to 640px. That is right for the QR landing it
      was built for, and wrong for a laptop: at 1440px it wasted 800px and pushed the
      hole board down to three columns, so a page that fits on one screen needed several.

   The internal grids are all auto-fill/auto-fit, so widening the container is all that is
   needed — they reflow into more columns on their own. Prose does not widen with them:
   .pub-event-desc keeps its own reading measure. */
.pub-facts[b-4ehvn49c0j] {
    max-width: 1100px;
    margin-inline: auto;
}
.pub-info-strip > .pub-facts[b-4ehvn49c0j] {
    margin-block: 1rem;
}

@media (min-width: 1024px) {
    .pub-body-narrow[b-4ehvn49c0j] { max-width: 1100px; }
    .pub-hero-single[b-4ehvn49c0j] { max-width: 1100px; }
}

/* ── X02 / X03, UX audit 2026-09-06 ───────────────────────────────────────────
   Three page-owned offenders the rendered probe found that the stylesheet alone
   did not: two Bootstrap classes used inline, and a link carrying no box. */

/* "Today" rides Bootstrap's .badge, whose default is 0.75em (12px). It is a status
   marker, so it takes the chip floor rather than the reading floor. */
.pub-today-badge[b-4ehvn49c0j] { font-size: var(--font-size-chip); }

/* Measured 181x17 — an anchor with nothing but text. Height from the box, not the type. */
.pub-lb-inline-link[b-4ehvn49c0j] {
    display: inline-flex; align-items: center;
    min-height: var(--touch-target-min);
}
/* /Components/Pages/Events/RegisterTeam.razor.rz.scp.css */
.rt-page[b-321m5dr5gc] {
    min-height: 100vh;
    padding: 1.5rem 1rem 4rem;
}

.rt-loading[b-321m5dr5gc],
.rt-state[b-321m5dr5gc] {
    max-width: 520px;
    margin: 4rem auto;
    text-align: center;
    color: var(--text-primary, #e5e7eb);
}

.rt-state-title[b-321m5dr5gc] {
    font-size: 1.5rem;
    font-weight: 700;
}

.rt-state-sub[b-321m5dr5gc] {
    color: var(--text-muted, #9ca3af);
}

.rt-container[b-321m5dr5gc] {
    max-width: 640px;
    margin: 0 auto;
}

/* ── Header ── */
.rt-header[b-321m5dr5gc] {
    margin-bottom: 1.5rem;
}

.rt-org[b-321m5dr5gc] {
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted, #9ca3af);
    margin: 0 0 0.25rem;
}

.rt-event-name[b-321m5dr5gc] {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--text-primary, #f3f4f6);
    margin: 0 0 0.5rem;
    line-height: 1.15;
}

.rt-lead[b-321m5dr5gc] {
    font-size: 1.05rem;
    color: var(--text-secondary, #cbd5e1);
    margin: 0 0 0.75rem;
}

.rt-fee-pill[b-321m5dr5gc] {
    display: inline-flex;
    align-items: baseline;
    /* A club member rate roughly doubles this line ("Members $300 · Everyone else $400 per team").
       Measured at 375px: it does NOT overflow without these — the text already wraps inside the flex
       items. Kept as a guard for longer strings (four-figure prices, large accessibility font sizes)
       so the pill can never become a horizontal-scroll source. Not a fix for an observed bug. */
    flex-wrap: wrap;
    justify-content: center;
    max-width: 100%;
    gap: 0.4rem;
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    background: var(--success-soft, rgba(34, 197, 94, 0.14));
    color: var(--success-text, #4ade80);
    font-weight: 700;
    font-size: 1rem;
}

.rt-fee-sub[b-321m5dr5gc] {
    font-weight: 500;
    font-size: var(--font-size-sm);
    opacity: 0.85;
}

/* ── Fields ── */
.rt-field[b-321m5dr5gc] {
    margin-bottom: 0.9rem;
}

.rt-label[b-321m5dr5gc] {
    display: block;
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--text-primary, #e5e7eb);
    margin-bottom: 0.35rem;
}

.rt-required[b-321m5dr5gc] {
    color: var(--danger, #ef4444);
}

.rt-optional[b-321m5dr5gc],
.rt-soft[b-321m5dr5gc] {
    font-weight: 400;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #9ca3af);
}

.rt-input[b-321m5dr5gc] {
    background: var(--bg-elevated, #1f2937);
    border: 1px solid var(--border-default, #374151);
    color: var(--text-primary, #f3f4f6);
    border-radius: 10px;
    padding: 0.7rem 0.85rem;
    font-size: 1.05rem;
}

.rt-input[b-321m5dr5gc]::placeholder {
    color: var(--text-muted, #6b7280);
}

.rt-input:focus[b-321m5dr5gc] {
    background: var(--bg-elevated, #1f2937);
    color: var(--text-primary, #f3f4f6);
    border-color: var(--brand, #3b82f6);
    box-shadow: 0 0 0 3px var(--brand-ring, rgba(59, 130, 246, 0.3));
}

.rt-hint[b-321m5dr5gc] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #9ca3af);
    margin-top: 0.25rem;
}

/* ── Player cards ── */
.rt-player-card[b-321m5dr5gc] {
    background: var(--bg-surface, #111827);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: 14px;
    padding: 1rem 1.1rem 0.6rem;
    margin-bottom: 1rem;
}

.rt-player-card--captain[b-321m5dr5gc] {
    border-color: var(--brand-ring, rgba(59, 130, 246, 0.4));
    background: var(--brand-soft, rgba(59, 130, 246, 0.08));
}

.rt-player-head[b-321m5dr5gc] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-bottom: 0.75rem;
}

.rt-player-num[b-321m5dr5gc] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--brand, #3b82f6);
    color: #fff;
    font-weight: 700;
    font-size: 0.9rem;
    flex-shrink: 0;
}

.rt-player-role[b-321m5dr5gc] {
    font-weight: 700;
    color: var(--text-primary, #f3f4f6);
}

.rt-player-grid[b-321m5dr5gc] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem 0.75rem;
}

@media (max-width: 520px) {
    .rt-player-grid[b-321m5dr5gc] {
        grid-template-columns: 1fr;
    }
}

/* ── Notes / errors ── */
.rt-tbd-note[b-321m5dr5gc],
.rt-pay-note[b-321m5dr5gc] {
    background: var(--brand-soft, rgba(59, 130, 246, 0.1));
    border: 1px solid var(--brand-ring, rgba(59, 130, 246, 0.25));
    color: var(--text-secondary, #cbd5e1);
    border-radius: 10px;
    padding: 0.75rem 0.95rem;
    font-size: 0.95rem;
    margin-bottom: 1rem;
}

.rt-pay-note[b-321m5dr5gc] {
    background: var(--success-soft, rgba(34, 197, 94, 0.14));
    border-color: var(--success-ring, rgba(34, 197, 94, 0.3));
    color: var(--success-text, #4ade80);
    margin: 1rem 0;
}

.rt-error[b-321m5dr5gc] {
    background: var(--danger-soft, rgba(239, 68, 68, 0.14));
    border: 1px solid var(--danger-ring, rgba(239, 68, 68, 0.3));
    color: var(--danger-text, #f87171);
    border-radius: 10px;
    padding: 0.75rem 0.95rem;
    margin-bottom: 1rem;
}

.rt-closed[b-321m5dr5gc] {
    background: var(--warning-soft, rgba(245, 158, 11, 0.14));
    border: 1px solid var(--warning-ring, rgba(245, 158, 11, 0.3));
    color: var(--warning-text, #fbbf24);
    border-radius: 12px;
    padding: 1rem 1.1rem;
    font-weight: 600;
    margin-bottom: 1rem;
}

/* ── Submit ── */
.rt-submit[b-321m5dr5gc] {
    width: 100%;
    border: none;
    border-radius: 12px;
    background: var(--brand, #3b82f6);
    color: #fff;
    font-size: 1.15rem;
    font-weight: 700;
    padding: 0.95rem 1rem;
    margin-top: 0.5rem;
    cursor: pointer;
    transition: background 0.15s ease, transform 0.05s ease;
}

.rt-submit:hover:not(:disabled)[b-321m5dr5gc] {
    background: var(--brand-strong, #2563eb);
}

.rt-submit:active:not(:disabled)[b-321m5dr5gc] {
    transform: translateY(1px);
}

.rt-submit:disabled[b-321m5dr5gc] {
    opacity: 0.7;
    cursor: default;
}

.rt-back-link[b-321m5dr5gc] {
    display: inline-flex;
    align-items: center;
    /* 24px tall, and the same "only way out" as .ereg-back-link. X03, audit 2026-09-06. */
    min-height: var(--touch-target-min);
    margin-top: 1.25rem;
    color: var(--text-muted, #9ca3af);
    text-decoration: none;
    font-weight: 500;
}

.rt-back-link:hover[b-321m5dr5gc] {
    color: var(--text-primary, #e5e7eb);
}

/* ── Success ── */
.rt-success[b-321m5dr5gc] {
    text-align: center;
    max-width: 560px;
    margin: 2rem auto;
}

.rt-success-icon[b-321m5dr5gc] {
    font-size: 3.5rem;
    color: var(--success, #22c55e);
    line-height: 1;
    margin-bottom: 0.5rem;
}

.rt-success-title[b-321m5dr5gc] {
    font-size: 1.6rem;
    font-weight: 800;
    color: var(--text-primary, #f3f4f6);
    margin-bottom: 0.5rem;
}

.rt-success-sub[b-321m5dr5gc] {
    font-size: 1.05rem;
    color: var(--text-secondary, #cbd5e1);
}

.rt-success-help[b-321m5dr5gc] {
    font-size: 0.9rem;
    color: var(--text-muted, #9ca3af);
    margin-top: 1rem;
}

/* ── Sponsor wall — "Thank you to our sponsors" at the bottom of every page state ── */
.rt-sponsor-wall[b-321m5dr5gc] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.6rem;
    margin: 1.75rem auto 0;
    padding: 1rem;
    max-width: 640px;
    border-top: 1px solid rgba(148, 163, 184, 0.18);
}

.rt-sponsor-wall-label[b-321m5dr5gc] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: #94a3b8;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

.rt-sponsor-wall-logos[b-321m5dr5gc] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.7rem;
    max-width: 100%;
}

.rt-sponsor-wall-logo[b-321m5dr5gc] {
    height: 40px;
    width: auto;
    max-width: 120px;
    object-fit: contain;
    border-radius: 6px;
}

/* ::deep is REQUIRED, not stylistic. The mark is rendered by the shared <SponsorMark />
   child component, so its element never receives THIS component's b-* scope attribute and a
   plain `.rt-sponsor-wall-logo { }` rule silently does nothing — the logo falls back to its natural
   size (a 1px image renders as 1px). `.rt-sponsor-wall-logos ::deep` compiles to
   `.rt-sponsor-wall-logos[b-xxxx] .rt-sponsor-wall-logo`, which matches because the wrapper IS in this
   component's own markup. Applies to BOTH treatments, so a nameplate occupies the same box
   as the logo beside it. */
.rt-sponsor-wall-logos[b-321m5dr5gc]  .rt-sponsor-wall-logo {
    height: 40px;
    width: auto;
    max-width: 120px;
    object-fit: contain;
    border-radius: 6px;
}

/* …but NOT for a nameplate, and that last line above is where this went wrong. A plate is a
   sponsor's NAME set in type, not an image, and 120x40 is a logo's box. Three names clipped here
   the moment the type was readable — "Bank Heating & Air Conditioning", "Mahn Family Funeral
   Services", "Mike & Joann Blair & Family". The plate keeps the logo's height as a FLOOR, so it
   still sits on the same baseline as a real logo beside it, and takes the width its name needs.
   Sized here rather than on the shared .sponsor-mark-plate: that base feeds nine hosts with nine
   different boxes, including a 22x22px tee-box mark above score entry. */
.rt-sponsor-wall-logos[b-321m5dr5gc]  .sponsor-mark-plate {
    height: auto;
    min-height: 40px;
    max-width: min(100%, 15rem);
    padding: 0.4rem 0.75rem;
}

.rt-sponsor-wall-logos[b-321m5dr5gc]  .sponsor-mark-plate .sponsor-plate-text {
    font-size: var(--font-size-sm);
    -webkit-line-clamp: 3;
}

/* ── Optional skins pot ──────────────────────────────────────────────────────
   A captain signing up on a phone taps this one box, so the whole row is the
   target (48px min) rather than the 1rem checkbox itself. */
.rt-skins-optin[b-321m5dr5gc] {
    background: var(--brand-soft, rgba(59, 130, 246, 0.1));
    border: 1px solid var(--brand-ring, rgba(59, 130, 246, 0.25));
    border-radius: 10px;
    padding: 0.75rem 0.95rem;
    margin-bottom: 1rem;
}

.rt-skins-check[b-321m5dr5gc] {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    min-height: 48px;
    cursor: pointer;
    color: var(--text-primary, #f8fafc);
    font-size: 0.95rem;
}

.rt-skins-check input[b-321m5dr5gc] {
    width: 1.35rem;
    height: 1.35rem;
    flex: 0 0 auto;
    cursor: pointer;
}

.rt-skins-optin .rt-hint[b-321m5dr5gc] { margin-top: 0.4rem; }

/* The organizer's own questions, inside the player card they belong to. A hairline separates them
   from the name/email grid above so it reads as "and these are about this person", not as four more
   contact fields. Same tokens the card itself uses — never a raw colour. */
.rt-questions[b-321m5dr5gc] {
    margin-top: 0.35rem;
    padding-top: 0.85rem;
    border-top: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
}
/* /Components/Pages/Events/RyderCupMatchEntry.razor.rz.scp.css */
/* ── Ryder Cup Match Entry Styles ────────────────────────────────────────── */

/* On .rce-shell (not :root): Blazor scopes :root to :root[b-hash], which never matches the
   html element, so these team vars silently never applied (dots transparent, names white).
   The shell wraps every consumer. Team A teal / Team B amber to match RyderCupScoreboard
   (commit 8f6f286) and the mobile Ryder Cup. */
.rce-shell[b-h24ll3l6yl] {
    --rce-a: #14B8A6;
    --rce-b: #F59E0B;
    --rce-a-soft: rgba(20, 184, 166, 0.12);
    --rce-b-soft: rgba(245, 158, 11, 0.12);
}

/* ── Loading ────────────────────────────────────────────────────────────── */

.rce-loading[b-h24ll3l6yl], .rce-not-found[b-h24ll3l6yl] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 4rem 1rem;
    color: var(--b9-text-soft, #94a3b8);
}

.rce-spinner[b-h24ll3l6yl] {
    width: 2rem;
    height: 2rem;
    border: 3px solid var(--b9-surface-muted, rgba(148,163,184,0.2));
    border-top-color: var(--brand, #6366f1);
    border-radius: 50%;
    animation: rce-spin-b-h24ll3l6yl 0.8s linear infinite;
}

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

/* ── Shell ──────────────────────────────────────────────────────────────── */

.rce-shell[b-h24ll3l6yl] {
    max-width: 720px;
    margin: 0 auto;
    padding: 1rem 1rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* ── Topbar ─────────────────────────────────────────────────────────────── */

.rce-topbar[b-h24ll3l6yl] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.rce-back-link[b-h24ll3l6yl] {
    color: var(--b9-text-soft, #94a3b8);
    text-decoration: none;
    font-size: 0.875rem;
}
.rce-back-link:hover[b-h24ll3l6yl] { color: var(--b9-text, #e2e8f0); }

.rce-breadcrumb[b-h24ll3l6yl] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-primary-text);
    margin-left: auto;
}

/* ── Match header ───────────────────────────────────────────────────────── */

.rce-match-header[b-h24ll3l6yl] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 1rem;
    background: var(--bg-elevated, rgba(30,41,59,0.6));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
}

.rce-team[b-h24ll3l6yl] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.rce-team--b[b-h24ll3l6yl] {
    flex-direction: row-reverse;
    text-align: right;
}

.rce-team-dot[b-h24ll3l6yl] {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    flex-shrink: 0;
}

.rce-team--a .rce-team-dot[b-h24ll3l6yl] { background: var(--rce-a); }
.rce-team--b .rce-team-dot[b-h24ll3l6yl] { background: var(--rce-b); }

.rce-team-info[b-h24ll3l6yl] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.rce-team-info--right[b-h24ll3l6yl] { align-items: flex-end; }

.rce-team-name[b-h24ll3l6yl] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--b9-text, #e2e8f0);
}

.rce-player-names[b-h24ll3l6yl] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

.rce-vs-block[b-h24ll3l6yl] {
    text-align: center;
}

.rce-vs[b-h24ll3l6yl] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-text-muted, #64748b);
}

/* ── State Banner ───────────────────────────────────────────────────────── */

.rce-state-banner[b-h24ll3l6yl] {
    border-radius: 10px;
    padding: 0.85rem 1.25rem;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-weight: 600;
    font-size: 1rem;
}

.rce-banner--a[b-h24ll3l6yl] {
    background: var(--rce-a-soft);
    border: 1px solid rgba(56,189,248,0.25);
    color: var(--rce-a);
}

.rce-banner--b[b-h24ll3l6yl] {
    background: var(--rce-b-soft);
    border: 1px solid rgba(239,68,68,0.25);
    color: var(--rce-b);
}

.rce-banner--neutral[b-h24ll3l6yl] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    color: var(--b9-text, #e2e8f0);
}

.rce-banner--closed[b-h24ll3l6yl] {
    background: var(--success-soft, rgba(34,197,94,0.1));
    border: 1px solid rgba(34,197,94,0.25);
    color: var(--success, #22c55e);
}

.rce-state-text[b-h24ll3l6yl] { flex: 1; }

.rce-final-badge[b-h24ll3l6yl] {
    background: var(--success, #22c55e);
    color: #000;
    font-size: var(--font-size-chip);
    font-weight: 800;
    text-transform: uppercase;
    padding: 0.15rem 0.45rem;
    border-radius: 5px;
}

/* ── Start / Close prompts ──────────────────────────────────────────────── */

.rce-start-prompt[b-h24ll3l6yl], .rce-close-prompt[b-h24ll3l6yl] {
    text-align: center;
    padding: 1.5rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    border-radius: 10px;
    border: 1px solid var(--b9-border, rgba(148,163,184,0.12));
}

.rce-start-prompt p[b-h24ll3l6yl], .rce-close-prompt p[b-h24ll3l6yl] {
    color: var(--b9-text-soft, #94a3b8);
    margin: 0 0 1rem;
    font-size: 0.9rem;
}

/* ── Hole Entry Area ────────────────────────────────────────────────────── */

.rce-hole-entry-area[b-h24ll3l6yl] {
    background: var(--bg-elevated, rgba(30,41,59,0.6));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 12px;
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.rce-hole-label[b-h24ll3l6yl] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--b9-text, #e2e8f0);
}

.rce-par-label[b-h24ll3l6yl], .rce-si-label[b-h24ll3l6yl] {
    font-size: var(--font-size-sm);
    font-weight: 500;
    background: var(--b9-surface-muted, rgba(148,163,184,0.1));
    color: var(--b9-text-soft, #94a3b8);
    padding: 0.15rem 0.45rem;
    border-radius: 5px;
}

.rce-hcp-note[b-h24ll3l6yl] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--warning-soft, rgba(245,158,11,0.1));
    border: 1px solid rgba(245,158,11,0.2);
    border-radius: 7px;
    padding: 0.55rem 0.85rem;
    font-size: 0.875rem;
    color: var(--b9-text, #e2e8f0);
}

.rce-already-recorded[b-h24ll3l6yl] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.875rem;
    color: var(--b9-text-soft, #94a3b8);
}

.rce-change-hint[b-h24ll3l6yl] {
    font-size: var(--font-size-sm);
    font-style: italic;
    color: var(--b9-text-muted, #64748b);
}

/* BIG outcome buttons — 64px min-height for easy tapping */
.rce-outcome-buttons[b-h24ll3l6yl] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 0.65rem;
}

@media (max-width: 500px) {
    .rce-outcome-buttons[b-h24ll3l6yl] {
        grid-template-columns: 1fr;
    }
}

.rce-outcome-btn[b-h24ll3l6yl] {
    min-height: 72px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    border-radius: 10px;
    border: 2px solid transparent;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: all 0.15s;
    padding: 0.75rem 0.5rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
    color: var(--b9-text, #e2e8f0);
}

.rce-outcome-btn:disabled[b-h24ll3l6yl] {
    opacity: 0.5;
    cursor: not-allowed;
}

.rce-outcome-btn:hover:not(:disabled)[b-h24ll3l6yl] {
    transform: translateY(-1px);
}

.rce-outcome-btn--a:hover:not(:disabled)[b-h24ll3l6yl] {
    background: var(--rce-a-soft);
    border-color: rgba(56,189,248,0.4);
    color: var(--rce-a);
}

.rce-outcome-btn--halved:hover:not(:disabled)[b-h24ll3l6yl] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.15));
    border-color: rgba(148,163,184,0.4);
}

.rce-outcome-btn--b:hover:not(:disabled)[b-h24ll3l6yl] {
    background: var(--rce-b-soft);
    border-color: rgba(239,68,68,0.4);
    color: var(--rce-b);
}

/* Selected state */
.rce-outcome-btn--selected.rce-outcome-btn--a[b-h24ll3l6yl] {
    background: var(--rce-a-soft);
    border-color: var(--rce-a);
    color: var(--rce-a);
}

.rce-outcome-btn--selected.rce-outcome-btn--halved[b-h24ll3l6yl] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.15));
    border-color: rgba(148,163,184,0.5);
    color: var(--b9-text, #e2e8f0);
}

.rce-outcome-btn--selected.rce-outcome-btn--b[b-h24ll3l6yl] {
    background: var(--rce-b-soft);
    border-color: var(--rce-b);
    color: var(--rce-b);
}

.rce-outcome-icon[b-h24ll3l6yl] {
    font-size: 1.5rem;
    line-height: 1;
}

/* ── Hole Progress ──────────────────────────────────────────────────────── */

.rce-progress-section[b-h24ll3l6yl] {
    background: var(--bg-elevated, rgba(30,41,59,0.5));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    border-radius: 12px;
    padding: 1rem 1.25rem;
}

.rce-progress-label[b-h24ll3l6yl] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--b9-text-soft, #94a3b8);
    margin-bottom: 0.75rem;
}

.rce-holes-grid[b-h24ll3l6yl] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.rce-hole-dot[b-h24ll3l6yl] {
    width: 40px;
    height: 40px;
    border-radius: 50%;
    border: 2px solid var(--b9-border, rgba(148,163,184,0.2));
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: all 0.15s;
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    padding: 0;
}

.rce-hole-dot--current[b-h24ll3l6yl] {
    border-color: var(--brand, #6366f1) !important;
    box-shadow: 0 0 0 2px rgba(99,102,241,0.25);
}

.rce-hole-dot--a[b-h24ll3l6yl] {
    background: var(--rce-a-soft);
    border-color: var(--rce-a);
}

.rce-hole-dot--b[b-h24ll3l6yl] {
    background: var(--rce-b-soft);
    border-color: var(--rce-b);
}

.rce-hole-dot--halved[b-h24ll3l6yl] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.15));
    border-color: rgba(148,163,184,0.4);
}

.rce-hole-dot--empty[b-h24ll3l6yl] {
    opacity: 0.4;
}

.rce-hole-num[b-h24ll3l6yl] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text, #e2e8f0);
}

.rce-prev-next[b-h24ll3l6yl] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 1rem;
}

/* ── Admin / Concede actions ────────────────────────────────────────────── */

.rce-admin-actions[b-h24ll3l6yl] {
    border-top: 1px solid var(--b9-border, rgba(148,163,184,0.1));
    padding-top: 1rem;
}

.rce-concede-links[b-h24ll3l6yl] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
    justify-content: center;
}

.rce-concede-link[b-h24ll3l6yl] {
    background: none;
    border: none;
    color: var(--b9-text-muted, #64748b);
    font-size: var(--font-size-sm);
    cursor: pointer;
    text-decoration: underline;
    padding: 0;
}
.rce-concede-link:hover[b-h24ll3l6yl] { color: var(--danger, #EF4444); }

.rce-concede-confirm[b-h24ll3l6yl] {
    background: var(--danger-soft, rgba(239,68,68,0.08));
    border: 1px solid rgba(239,68,68,0.2);
    border-radius: 8px;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    text-align: center;
}

.rce-concede-confirm p[b-h24ll3l6yl] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--b9-text, #e2e8f0);
}

/* ── Shared buttons (reused from setup, keep scope) ─────────────────────── */

.rce-btn[b-h24ll3l6yl] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.55rem 1rem;
    border-radius: 7px;
    font-size: 0.9rem;
    font-weight: 500;
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.15s;
    white-space: nowrap;
}

.rce-btn:disabled[b-h24ll3l6yl] { opacity: 0.5; cursor: not-allowed; }

.rce-btn-primary[b-h24ll3l6yl] { background: var(--brand, #6366f1); color: #fff; border-color: var(--brand, #6366f1); }
.rce-btn-primary:hover:not(:disabled)[b-h24ll3l6yl] { opacity: 0.88; }

.rce-btn-big[b-h24ll3l6yl] { min-height: 56px; font-size: 1.1rem; padding: 0.75rem 2rem; }

.rce-btn-secondary[b-h24ll3l6yl] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.1));
    color: var(--b9-text, #e2e8f0);
    border-color: var(--b9-border, rgba(148,163,184,0.25));
}

.rce-btn-ghost[b-h24ll3l6yl] {
    background: transparent;
    color: var(--b9-text-soft, #94a3b8);
    border-color: var(--b9-border, rgba(148,163,184,0.2));
}

.rce-btn-danger-ghost[b-h24ll3l6yl] {
    background: transparent;
    color: var(--danger, #EF4444);
    border-color: rgba(239,68,68,0.3);
}

.rce-btn-sm[b-h24ll3l6yl] {
    padding: 0.3rem 0.65rem;
    font-size: var(--font-size-sm);
}

.rce-error[b-h24ll3l6yl] {
    color: var(--danger, #EF4444);
    font-size: 0.875rem;
    margin: 0;
    background: var(--danger-soft, rgba(239,68,68,0.08));
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
}

/* ── Net gross entry (Foursomes / Four-Ball net) ───────────────────────────── */
.rce-net-entry[b-h24ll3l6yl] {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
    margin: 0.5rem 0 0.25rem;
}

.rce-net-row[b-h24ll3l6yl] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

.rce-net-field[b-h24ll3l6yl] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.75rem;
    border-radius: 12px;
    background: var(--bg-elevated, rgba(30,41,59,0.6));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
}

.rce-net-field--a[b-h24ll3l6yl] { border-top: 3px solid var(--rce-a); }
.rce-net-field--b[b-h24ll3l6yl] { border-top: 3px solid var(--rce-b); }

.rce-net-team[b-h24ll3l6yl] {
    font-weight: 600;
    color: var(--b9-text, #e2e8f0);
    font-size: 0.9rem;
}

.rce-net-strokes[b-h24ll3l6yl] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-primary-text);
}

.rce-net-input[b-h24ll3l6yl] {
    width: 100%;
    min-height: 48px;
    font-size: 1.35rem;
    font-weight: 700;
    text-align: center;
    border-radius: 10px;
    border: 1px solid var(--b9-border, rgba(148,163,184,0.25));
    background: var(--b9-surface, rgba(15,23,42,0.6));
    color: var(--b9-text, #e2e8f0);
}

.rce-net-input:focus[b-h24ll3l6yl] {
    outline: none;
    border-color: var(--brand, #6366f1);
}

.rce-net-record[b-h24ll3l6yl] { width: 100%; }

.rce-net-hint[b-h24ll3l6yl] {
    margin: 0;
    text-align: center;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

.rce-net-divider[b-h24ll3l6yl] {
    display: flex;
    align-items: center;
    text-align: center;
    margin: 0.75rem 0 0.25rem;
    color: var(--b9-text-muted, #64748b);
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.rce-net-divider[b-h24ll3l6yl]::before,
.rce-net-divider[b-h24ll3l6yl]::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--b9-border, rgba(148,163,184,0.15));
}

.rce-net-divider span[b-h24ll3l6yl] { padding: 0 0.75rem; }
/* /Components/Pages/Events/RyderCupScoreboard.razor.rz.scp.css */
/* ── Ryder Cup Scoreboard Styles ─────────────────────────────────────────── */

/* Defined on .rsb-shell (not :root): Blazor scopes :root to :root[b-hash], which never
   matches, so these vars silently never applied (dots transparent, points white).
   .rsb-shell wraps every consumer. Team identity matches the Player+ palette
   (mobile TeamA/TeamB, Teams card, board): Team A teal, Team B amber — so the same
   cup looks the same on web and mobile. */
.rsb-shell[b-uhoxhpgeh9] {
    --rsb-a: #14B8A6;
    --rsb-b: #F59E0B;
    --rsb-a-soft: rgba(20, 184, 166, 0.12);
    --rsb-b-soft: rgba(245, 158, 11, 0.12);
}

/* ── Loading ────────────────────────────────────────────────────────────── */

.rsb-loading[b-uhoxhpgeh9], .rsb-not-found[b-uhoxhpgeh9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 5rem 1rem;
    color: var(--b9-text-soft, #94a3b8);
}

.rsb-spinner[b-uhoxhpgeh9] {
    width: 2.5rem;
    height: 2.5rem;
    border: 3px solid var(--b9-surface-muted, rgba(148,163,184,0.2));
    border-top-color: var(--brand, #6366f1);
    border-radius: 50%;
    animation: rsb-spin-b-uhoxhpgeh9 0.8s linear infinite;
}

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

/* ── Shell ──────────────────────────────────────────────────────────────── */

.rsb-shell[b-uhoxhpgeh9] {
    max-width: 800px;
    margin: 0 auto;
    padding: 1.5rem 1rem 4rem;
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

/* ── Header ─────────────────────────────────────────────────────────────── */

.rsb-header[b-uhoxhpgeh9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.rsb-event-name[b-uhoxhpgeh9] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 800;
    color: var(--b9-text, #e2e8f0);
}

.rsb-refresh-hint[b-uhoxhpgeh9] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

.rsb-live-dot[b-uhoxhpgeh9] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--success, #22c55e);
    animation: rsb-pulse-b-uhoxhpgeh9 2s ease-in-out infinite;
}

@keyframes rsb-pulse-b-uhoxhpgeh9 {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.3; }
}

/* ── Score Hero ─────────────────────────────────────────────────────────── */

.rsb-score-hero[b-uhoxhpgeh9] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 0.75rem;
    background: var(--bg-elevated, rgba(30,41,59,0.7));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 16px;
    padding: 1.75rem 1.5rem;
}

.rsb-team-score[b-uhoxhpgeh9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
}

.rsb-team-dot[b-uhoxhpgeh9] {
    width: 16px;
    height: 16px;
    border-radius: 50%;
}

.rsb-team-score--a .rsb-team-dot[b-uhoxhpgeh9] { background: var(--rsb-a); }
.rsb-team-score--b .rsb-team-dot[b-uhoxhpgeh9] { background: var(--rsb-b); }

.rsb-team-name[b-uhoxhpgeh9] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--b9-text, #e2e8f0);
    text-align: center;
}

.rsb-points[b-uhoxhpgeh9] {
    font-size: 3rem;
    font-weight: 900;
    line-height: 1;
    color: var(--b9-text, #e2e8f0);
}

.rsb-team-score--a .rsb-points[b-uhoxhpgeh9] { color: var(--rsb-a); }
.rsb-team-score--b .rsb-points[b-uhoxhpgeh9] { color: var(--rsb-b); }

.rsb-divider[b-uhoxhpgeh9] {
    text-align: center;
    padding: 0 0.25rem;
}

.rsb-status-summary[b-uhoxhpgeh9] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
    text-align: center;
    line-height: 1.4;
    max-width: 140px;
}

/* ── Sessions ───────────────────────────────────────────────────────────── */

.rsb-sessions[b-uhoxhpgeh9] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.rsb-session-card[b-uhoxhpgeh9] {
    background: var(--bg-elevated, rgba(30,41,59,0.5));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    border-radius: 12px;
    overflow: hidden;
}

.rsb-session-header[b-uhoxhpgeh9] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.9rem 1.1rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.05));
    border-bottom: 1px solid var(--b9-border, rgba(148,163,184,0.1));
    flex-wrap: wrap;
}

.rsb-session-icon[b-uhoxhpgeh9] {
    font-size: 1.1rem;
}

.rsb-session-title-block[b-uhoxhpgeh9] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 120px;
}

.rsb-session-title[b-uhoxhpgeh9] {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--b9-text, #e2e8f0);
}

.rsb-session-format[b-uhoxhpgeh9] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

.rsb-session-pts[b-uhoxhpgeh9] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-weight: 700;
    font-size: 0.95rem;
}

.rsb-session-pts-a[b-uhoxhpgeh9] { color: var(--rsb-a); }
.rsb-session-pts-b[b-uhoxhpgeh9] { color: var(--rsb-b); }
.rsb-session-pts-dash[b-uhoxhpgeh9] { color: var(--b9-text-muted, #64748b); }

.rsb-session-status[b-uhoxhpgeh9] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.2rem 0.55rem;
    border-radius: 5px;
}

.rsb-status-Complete[b-uhoxhpgeh9] {
    background: var(--success-soft, rgba(34,197,94,0.1));
    color: var(--success, #22c55e);
}

.rsb-status-InProgress[b-uhoxhpgeh9] {
    background: var(--info-soft, rgba(56,189,248,0.1));
    color: var(--info, #38BDF8);
}

.rsb-status-NotStarted[b-uhoxhpgeh9] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
    color: var(--b9-text-soft, #94a3b8);
}

/* ── Match list ─────────────────────────────────────────────────────────── */

.rsb-match-list[b-uhoxhpgeh9] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.rsb-match-row[b-uhoxhpgeh9] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.55rem 1.1rem;
    border-bottom: 1px solid var(--b9-border, rgba(148,163,184,0.07));
    flex-wrap: wrap;
}

.rsb-match-row:last-child[b-uhoxhpgeh9] { border-bottom: none; }

.rsb-match-icon[b-uhoxhpgeh9] {
    font-size: var(--font-size-sm);
}

.rsb-match-label[b-uhoxhpgeh9] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-text-soft, #94a3b8);
    min-width: 4.5rem;
}

.rsb-match-sides[b-uhoxhpgeh9] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    min-width: 0;
}

.rsb-side-a[b-uhoxhpgeh9] {
    color: var(--rsb-a);
    font-weight: 500;
    font-size: 0.875rem;
}

.rsb-side-b[b-uhoxhpgeh9] {
    color: var(--rsb-b);
    font-weight: 500;
    font-size: 0.875rem;
}

.rsb-match-vs[b-uhoxhpgeh9] {
    color: var(--b9-text-muted, #64748b);
    font-size: var(--font-size-sm);
}

.rsb-match-state[b-uhoxhpgeh9] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
    white-space: nowrap;
}

.rsb-session-empty[b-uhoxhpgeh9] {
    padding: 0.85rem 1.1rem;
    font-size: 0.875rem;
    color: var(--b9-text-muted, #64748b);
    font-style: italic;
    margin: 0;
}

/* ── Footer ─────────────────────────────────────────────────────────────── */

.rsb-footer[b-uhoxhpgeh9] {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    border-top: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    padding-top: 1.25rem;
}

/* ── Shared buttons ─────────────────────────────────────────────────────── */

.rsb-btn[b-uhoxhpgeh9] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.5rem 0.9rem;
    border-radius: 7px;
    font-size: 0.875rem;
    font-weight: 500;
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.15s;
    white-space: nowrap;
}

.rsb-btn-primary[b-uhoxhpgeh9] { background: var(--brand, #6366f1); color: #fff; border-color: var(--brand, #6366f1); }
.rsb-btn-primary:hover[b-uhoxhpgeh9] { opacity: 0.88; }

.rsb-btn-secondary[b-uhoxhpgeh9] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.1));
    color: var(--b9-text, #e2e8f0);
    border-color: var(--b9-border, rgba(148,163,184,0.25));
}

.rsb-btn-ghost[b-uhoxhpgeh9] {
    background: transparent;
    color: var(--b9-text-soft, #94a3b8);
    border-color: var(--b9-border, rgba(148,163,184,0.2));
}
.rsb-btn-ghost:hover[b-uhoxhpgeh9] { color: var(--b9-text, #e2e8f0); }

.rsb-btn-sm[b-uhoxhpgeh9] {
    padding: 0.25rem 0.6rem;
    font-size: var(--font-size-sm);
}

/* ── Mobile ─────────────────────────────────────────────────────────────── */

@media (max-width: 500px) {
    .rsb-score-hero[b-uhoxhpgeh9] {
        grid-template-columns: 1fr auto 1fr;
        padding: 1.25rem 0.75rem;
    }
    .rsb-points[b-uhoxhpgeh9] { font-size: 2.25rem; }
    .rsb-event-name[b-uhoxhpgeh9] { font-size: 1.1rem; }
    .rsb-match-row[b-uhoxhpgeh9] { gap: 0.4rem; }
}
/* /Components/Pages/Events/RyderCupSetup.razor.rz.scp.css */
/* ── Ryder Cup Setup Styles ──────────────────────────────────────────────── */
/* All colours via design tokens. Prefix: .rc-* */

/* On .rc-setup-shell (not :root): Blazor scopes :root to :root[b-hash], which never matches
   the html element, so these team vars silently never applied (dots transparent, names white).
   The shell wraps every consumer. Team A teal / Team B amber to match RyderCupScoreboard
   (commit 8f6f286) and the mobile Ryder Cup. */
.rc-setup-shell[b-zk219vn4kb] {
    --rc-team-a-color: #14B8A6;
    --rc-team-b-color: #F59E0B;
    --rc-team-a-soft: rgba(20, 184, 166, 0.12);
    --rc-team-b-soft: rgba(245, 158, 11, 0.12);
}

/* ── Loading / Error states ─────────────────────────────────────────────── */

.rc-loading[b-zk219vn4kb] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 4rem 1rem;
    color: var(--b9-text-soft, #94a3b8);
}

.rc-spinner[b-zk219vn4kb] {
    width: 2rem;
    height: 2rem;
    border: 3px solid var(--b9-surface-muted, rgba(148,163,184,0.2));
    border-top-color: var(--brand, #6366f1);
    border-radius: 50%;
    animation: rc-spin-b-zk219vn4kb 0.8s linear infinite;
}

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

.rc-access-denied[b-zk219vn4kb] {
    padding: 2rem;
    text-align: center;
    color: var(--b9-text-soft, #94a3b8);
}

/* ── Shell ──────────────────────────────────────────────────────────────── */

.rc-setup-shell[b-zk219vn4kb] {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.25rem 1rem 3rem;
}

.rc-setup-header[b-zk219vn4kb] {
    margin-bottom: 1.5rem;
}

.rc-back-link[b-zk219vn4kb] {
    color: var(--b9-text-soft, #94a3b8);
    text-decoration: none;
    font-size: 0.875rem;
    display: inline-block;
    margin-bottom: 0.5rem;
}

.rc-back-link:hover[b-zk219vn4kb] {
    color: var(--b9-text, #e2e8f0);
}

.rc-setup-title-row[b-zk219vn4kb] {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    flex-wrap: wrap;
}

.rc-setup-title[b-zk219vn4kb] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--b9-text, #e2e8f0);
}

.rc-event-name[b-zk219vn4kb] {
    color: var(--b9-text-soft, #94a3b8);
    font-size: 0.95rem;
}

/* ── Tab Navigation ─────────────────────────────────────────────────────── */

.rc-tabs[b-zk219vn4kb] {
    display: flex;
    gap: 0;
    border-bottom: 2px solid var(--b9-border, rgba(148,163,184,0.15));
    margin-bottom: 1.5rem;
    overflow-x: auto;
}

.rc-tab[b-zk219vn4kb] {
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    padding: 0.65rem 1.1rem;
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--b9-text-soft, #94a3b8);
    cursor: pointer;
    white-space: nowrap;
    transition: color 0.15s, border-color 0.15s;
}

.rc-tab:hover[b-zk219vn4kb] {
    color: var(--b9-text, #e2e8f0);
}

.rc-tab--active[b-zk219vn4kb] {
    color: var(--b9-primary-text);
    border-bottom-color: var(--brand, #6366f1);
}

/* ── Panel ──────────────────────────────────────────────────────────────── */

.rc-panel[b-zk219vn4kb] {
    background: var(--bg-elevated, rgba(30,41,59,0.6));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 12px;
    padding: 1.5rem;
}

.rc-panel-title[b-zk219vn4kb] {
    margin: 0 0 0.4rem;
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--b9-text, #e2e8f0);
}

.rc-panel-desc[b-zk219vn4kb] {
    color: var(--b9-text-soft, #94a3b8);
    font-size: 0.875rem;
    margin: 0 0 1.25rem;
}

/* ── Inputs / Buttons ───────────────────────────────────────────────────── */

.rc-label[b-zk219vn4kb] {
    display: block;
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--b9-text-soft, #94a3b8);
    margin-bottom: 0.3rem;
}

.rc-input[b-zk219vn4kb] {
    background: var(--bg-surface, rgba(15,23,42,0.6));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.25));
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
    color: var(--b9-text, #e2e8f0);
    font-size: 1rem;
    width: 100%;
    max-width: 280px;
    outline: none;
    transition: border-color 0.15s;
}

.rc-input:focus[b-zk219vn4kb] {
    border-color: var(--brand, #6366f1);
}

.rc-input--narrow[b-zk219vn4kb] {
    max-width: 100px;
}

.rc-select[b-zk219vn4kb] {
    background: var(--bg-surface, rgba(15,23,42,0.6));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.25));
    border-radius: 6px;
    padding: 0.45rem 0.65rem;
    color: var(--b9-text, #e2e8f0);
    font-size: 0.875rem;
    width: 100%;
    outline: none;
}

/* Buttons */
.rc-btn[b-zk219vn4kb] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.55rem 1rem;
    border-radius: 7px;
    font-size: 0.9rem;
    font-weight: 500;
    border: 1px solid transparent;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.15s, background 0.15s;
    white-space: nowrap;
}

.rc-btn:disabled[b-zk219vn4kb] {
    opacity: 0.5;
    cursor: not-allowed;
}

.rc-btn-primary[b-zk219vn4kb] {
    background: var(--brand, #6366f1);
    color: #fff;
    border-color: var(--brand, #6366f1);
}
.rc-btn-primary:hover:not(:disabled)[b-zk219vn4kb] { opacity: 0.88; }

.rc-btn-secondary[b-zk219vn4kb] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.1));
    color: var(--b9-text, #e2e8f0);
    border-color: var(--b9-border, rgba(148,163,184,0.25));
}
.rc-btn-secondary:hover:not(:disabled)[b-zk219vn4kb] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.18));
}

.rc-btn-ghost[b-zk219vn4kb] {
    background: transparent;
    color: var(--b9-text-soft, #94a3b8);
    border-color: var(--b9-border, rgba(148,163,184,0.2));
}
.rc-btn-ghost:hover:not(:disabled)[b-zk219vn4kb] {
    color: var(--b9-text, #e2e8f0);
    border-color: var(--b9-border, rgba(148,163,184,0.4));
}

.rc-btn-danger-ghost[b-zk219vn4kb] {
    background: transparent;
    color: var(--danger, #EF4444);
    border-color: rgba(239,68,68,0.3);
}
.rc-btn-danger-ghost:hover:not(:disabled)[b-zk219vn4kb] {
    background: var(--danger-soft, rgba(239,68,68,0.1));
}

.rc-btn-sm[b-zk219vn4kb] {
    padding: 0.3rem 0.65rem;
    font-size: var(--font-size-sm);
}

.rc-btn-team-a[b-zk219vn4kb] {
    background: var(--rc-team-a-soft);
    color: var(--rc-team-a-color);
    border-color: rgba(56,189,248,0.3);
    padding: 0.35rem 0.7rem;
    font-size: var(--font-size-sm);
    border-radius: 6px;
    border: 1px solid rgba(56,189,248,0.3);
    cursor: pointer;
    white-space: nowrap;
}
.rc-btn-team-a:hover[b-zk219vn4kb] { opacity: 0.85; }

.rc-btn-team-b[b-zk219vn4kb] {
    background: var(--rc-team-b-soft);
    color: var(--rc-team-b-color);
    border-color: rgba(239,68,68,0.3);
    padding: 0.35rem 0.7rem;
    font-size: var(--font-size-sm);
    border-radius: 6px;
    border: 1px solid rgba(239,68,68,0.3);
    cursor: pointer;
    white-space: nowrap;
}
.rc-btn-team-b:hover[b-zk219vn4kb] { opacity: 0.85; }

/* ── Tab 1 — Teams ──────────────────────────────────────────────────────── */

.rc-team-names-row[b-zk219vn4kb] {
    display: flex;
    align-items: flex-end;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.rc-team-name-field[b-zk219vn4kb] {
    flex: 1 1 200px;
}

.rc-save-names-btn[b-zk219vn4kb] { align-self: flex-end; }

.rc-vs[b-zk219vn4kb] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--b9-text-soft, #94a3b8);
    padding-bottom: 0.5rem;
}

.rc-scoring-options[b-zk219vn4kb] {
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 8px;
    padding: 0.85rem 1rem;
    margin-bottom: 1.5rem;
    background: var(--bg-surface, rgba(15,23,42,0.3));
}

.rc-option-row[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    padding: 0.3rem 0;
}

.rc-option-row .rc-label[b-zk219vn4kb] {
    margin: 0;
    min-width: 180px;
}

.rc-toggle[b-zk219vn4kb] {
    padding: 0.35rem 0.85rem;
    border-radius: 20px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    border: none;
    cursor: pointer;
    transition: background 0.15s;
}

.rc-toggle--on[b-zk219vn4kb] {
    background: var(--success-soft, rgba(34,197,94,0.15));
    color: var(--success, #22c55e);
}

.rc-toggle--off[b-zk219vn4kb] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.12));
    color: var(--b9-text-soft, #94a3b8);
}

/* Teams grid */
.rc-teams-grid[b-zk219vn4kb] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

@media (max-width: 600px) {
    .rc-teams-grid[b-zk219vn4kb] { grid-template-columns: 1fr; }
}

.rc-team-column[b-zk219vn4kb] {
    background: var(--bg-surface, rgba(15,23,42,0.3));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 10px;
    overflow: hidden;
}

.rc-team-header[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.65rem 0.9rem;
}

.rc-team-header--a[b-zk219vn4kb] {
    background: var(--rc-team-a-soft);
    border-bottom: 1px solid rgba(56,189,248,0.2);
}

.rc-team-header--b[b-zk219vn4kb] {
    background: var(--rc-team-b-soft);
    border-bottom: 1px solid rgba(239,68,68,0.2);
}

.rc-team-header h3[b-zk219vn4kb] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--b9-text, #e2e8f0);
    flex: 1;
}

.rc-team-dot[b-zk219vn4kb] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.rc-team-header--a .rc-team-dot[b-zk219vn4kb] { background: var(--rc-team-a-color); }
.rc-team-header--b .rc-team-dot[b-zk219vn4kb] { background: var(--rc-team-b-color); }

.rc-team-count[b-zk219vn4kb] {
    font-size: var(--font-size-chip);
    color: var(--b9-text-soft, #94a3b8);
}

/* Member list */
.rc-member-list[b-zk219vn4kb] {
    list-style: none;
    margin: 0;
    padding: 0.4rem 0;
}

.rc-member-item[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.9rem;
    font-size: 0.875rem;
    border-bottom: 1px solid var(--b9-border, rgba(148,163,184,0.08));
}
.rc-member-item:last-child[b-zk219vn4kb] { border-bottom: none; }

.rc-member-name[b-zk219vn4kb] {
    flex: 1;
    color: var(--b9-text, #e2e8f0);
}

.rc-member-hcp[b-zk219vn4kb] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
    padding: 0.15rem 0.4rem;
    border-radius: 4px;
}

.rc-captain-badge[b-zk219vn4kb] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    background: var(--warning-soft, rgba(245,158,11,0.15));
    color: var(--warning, #F59E0B);
    padding: 0.1rem 0.35rem;
    border-radius: 4px;
}

.rc-member-remove[b-zk219vn4kb] {
    background: none;
    border: none;
    color: var(--b9-text-muted, #64748b);
    font-size: 1.1rem;
    cursor: pointer;
    padding: 0 0.2rem;
    line-height: 1;
}
.rc-member-remove:hover[b-zk219vn4kb] { color: var(--danger, #EF4444); }

.rc-member-empty[b-zk219vn4kb] {
    padding: 0.75rem 0.9rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted, #64748b);
    font-style: italic;
}

/* Unassigned players */
.rc-unassigned-section[b-zk219vn4kb] {
    border-top: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    padding-top: 1.25rem;
    margin-bottom: 1.25rem;
}

.rc-section-label[b-zk219vn4kb] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--b9-text-soft, #94a3b8);
    margin: 0 0 0.75rem;
}

.rc-unassigned-list[b-zk219vn4kb] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.rc-unassigned-item[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    flex-wrap: wrap;
    padding: 0.5rem 0.75rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    border-radius: 8px;
}

.rc-all-assigned[b-zk219vn4kb] {
    color: var(--success, #22c55e);
    font-size: 0.875rem;
    margin: 0 0 1.25rem;
}

/* ── Tab 2 — Sessions ───────────────────────────────────────────────────── */

.rc-session-list[b-zk219vn4kb] {
    list-style: none;
    margin: 0 0 1.25rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.rc-session-item[b-zk219vn4kb] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    border-radius: 8px;
    padding: 0.75rem 1rem;
}

.rc-session-summary[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.rc-session-number[b-zk219vn4kb] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--b9-text-soft, #94a3b8);
    min-width: 1.5rem;
}

.rc-session-info[b-zk219vn4kb] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.rc-session-name[b-zk219vn4kb] {
    font-weight: 600;
    color: var(--b9-text, #e2e8f0);
    font-size: 0.95rem;
}

.rc-session-meta[b-zk219vn4kb] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

.rc-session-actions[b-zk219vn4kb] {
    display: flex;
    gap: 0.4rem;
    align-items: center;
}

.rc-session-edit-row[b-zk219vn4kb] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}

.rc-quick-add[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    flex-wrap: wrap;
    padding: 0.75rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    border-radius: 8px;
    margin-bottom: 1.5rem;
}

.rc-empty-state[b-zk219vn4kb] {
    color: var(--b9-text-soft, #94a3b8);
    font-size: 0.875rem;
    padding: 1.5rem 0;
    font-style: italic;
}

/* ── Tab 3 — Pairings ───────────────────────────────────────────────────── */

.rc-session-tabs[b-zk219vn4kb] {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.rc-session-tab[b-zk219vn4kb] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.2));
    border-radius: 6px;
    padding: 0.4rem 0.85rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
    cursor: pointer;
    transition: all 0.15s;
}

.rc-session-tab--active[b-zk219vn4kb] {
    background: var(--brand-soft, rgba(99,102,241,0.15));
    border-color: rgba(99,102,241,0.4);
    color: var(--b9-primary-text);
}

.rc-pairings-panel[b-zk219vn4kb] {
    border: 1px solid var(--b9-border, rgba(148,163,184,0.15));
    border-radius: 10px;
    padding: 1rem;
    background: var(--bg-surface, rgba(15,23,42,0.3));
}

.rc-pairings-header[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.rc-pairings-header h3[b-zk219vn4kb] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--b9-text, #e2e8f0);
}

.rc-format-badge[b-zk219vn4kb] {
    background: var(--brand-soft, rgba(99,102,241,0.15));
    color: var(--b9-primary-text);
    border-radius: 5px;
    padding: 0.2rem 0.55rem;
    font-size: var(--font-size-chip);
    font-weight: 600;
}

.rc-format-hint[b-zk219vn4kb] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

/* Generated matches */
.rc-pairings-generated[b-zk219vn4kb] {}
.rc-pairings-status[b-zk219vn4kb] {
    font-weight: 600;
    color: var(--success, #22c55e);
    margin-bottom: 0.75rem;
    font-size: 0.9rem;
}

.rc-match-list[b-zk219vn4kb] {
    list-style: none;
    margin: 0 0 1rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.rc-match-item[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    padding: 0.55rem 0.75rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    border-radius: 7px;
    flex-wrap: wrap;
}

.rc-match-num[b-zk219vn4kb] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text-soft, #94a3b8);
    min-width: 4rem;
}

.rc-match-sides[b-zk219vn4kb] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.rc-side-a[b-zk219vn4kb] { color: var(--rc-team-a-color); font-weight: 500; }
.rc-side-b[b-zk219vn4kb] { color: var(--rc-team-b-color); font-weight: 500; }
.rc-match-vs[b-zk219vn4kb] { color: var(--b9-text-muted, #64748b); font-size: var(--font-size-sm); }

.rc-match-status[b-zk219vn4kb] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
}

/* Pairing builder */
.rc-pairing-builder[b-zk219vn4kb] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.rc-pairing-row[b-zk219vn4kb] {
    display: grid;
    grid-template-columns: 3.5rem 1fr auto 1fr auto;
    gap: 0.5rem;
    align-items: start;
    padding: 0.75rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.06));
    border: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    border-radius: 8px;
}

@media (max-width: 700px) {
    .rc-pairing-row[b-zk219vn4kb] {
        grid-template-columns: 1fr;
    }
    .rc-pairing-row .rc-vs[b-zk219vn4kb] { text-align: center; }
}

.rc-pairing-num[b-zk219vn4kb] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text-soft, #94a3b8);
    padding-top: 0.45rem;
}

.rc-pairing-side[b-zk219vn4kb] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.rc-pairing-team-label[b-zk219vn4kb] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.rc-pairing-side--a .rc-pairing-team-label[b-zk219vn4kb] { color: var(--rc-team-a-color); }
.rc-pairing-side--b .rc-pairing-team-label[b-zk219vn4kb] { color: var(--rc-team-b-color); }

.rc-pairing-actions[b-zk219vn4kb] {
    display: flex;
    gap: 0.65rem;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}

/* ── Tab 4 — Review ─────────────────────────────────────────────────────── */

.rc-review-list[b-zk219vn4kb] {
    list-style: none;
    margin: 0 0 1.25rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.rc-review-item[b-zk219vn4kb] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border-radius: 7px;
    font-size: 0.9rem;
}

.rc-review--ok[b-zk219vn4kb] {
    background: var(--success-soft, rgba(34,197,94,0.1));
    color: var(--b9-text, #e2e8f0);
}

.rc-review--warn[b-zk219vn4kb] {
    background: var(--warning-soft, rgba(245,158,11,0.1));
    color: var(--b9-text, #e2e8f0);
}

.rc-review-session[b-zk219vn4kb] {
    margin-left: 1.25rem;
    font-size: var(--font-size-sm);
}

.rc-review-all-good[b-zk219vn4kb] {
    background: var(--success-soft, rgba(34,197,94,0.1));
    border: 1px solid rgba(34,197,94,0.25);
    border-radius: 8px;
    padding: 0.85rem 1rem;
    margin-bottom: 1.25rem;
    color: var(--success, #22c55e);
    font-weight: 500;
}

.rc-review-actions[b-zk219vn4kb] {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1.5rem;
}

/* ── Shared utils ───────────────────────────────────────────────────────── */

.rc-hint[b-zk219vn4kb] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
    font-style: italic;
}

.rc-error[b-zk219vn4kb] {
    color: var(--danger, #EF4444);
    font-size: 0.875rem;
    margin: 0.5rem 0 0;
    background: var(--danger-soft, rgba(239,68,68,0.08));
    border-radius: 6px;
    padding: 0.5rem 0.75rem;
}

.rc-tab-nav-btns[b-zk219vn4kb] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 1.75rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--b9-border, rgba(148,163,184,0.12));
    flex-wrap: wrap;
    gap: 0.5rem;
}
/* /Components/Pages/Events/Scoring.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════
   TOP BAR
══════════════════════════════════════════════════════════════ */

.sc-bar[b-earm9xspjh] {
    position: sticky;
    top: 0;
    z-index: 200;
    background: var(--b9-surface);
    border-bottom: 1px solid var(--b9-border);
    padding: 0 1rem;
    min-height: 56px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.sc-bar-left[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    min-width: 0;
    flex: 1;
}

.sc-back[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    color: var(--b9-text-soft);
    text-decoration: none;
    font-size: 1rem;
    flex-shrink: 0;
    transition: background .15s, color .15s;
}
.sc-back:hover[b-earm9xspjh] { background: var(--b9-surface-muted); color: var(--b9-text); }

.sc-bar-info[b-earm9xspjh] {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}
.sc-bar-event[b-earm9xspjh] {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--b9-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 240px;
}
.sc-bar-meta[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}
.sc-round-badge[b-earm9xspjh] {
    display: inline-block;
    padding: .1rem .45rem;
    border-radius: 6px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    background: var(--b9-surface-muted);
    color: var(--b9-text-soft);
    white-space: nowrap;
}
.sc-bar-date[b-earm9xspjh] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    white-space: nowrap;
}
.sc-tee-chip[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: var(--font-size-chip);
    color: var(--b9-text-soft);
}
.sc-tee-dot[b-earm9xspjh] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    border: 1px solid rgba(0,0,0,.12);
    flex-shrink: 0;
}
.sc-tee-rating[b-earm9xspjh] { font-size: var(--font-size-sm); color: var(--b9-text-soft); }

/* On phones the sticky bar is tight, so prevent the old overflow-onto-the-banner:
   let the event title wrap to two legible lines instead of a hard one-line clip,
   and keep the meta on one tidy row (Round + Date). There is no room for the tee
   name at phone width and a lone color dot reads as a mystery, so the tee chip is
   hidden here — it still shows on desktop and in the scorecard's yardage row. */
@media (max-width: 480px) {
    .sc-bar-event[b-earm9xspjh] {
        max-width: none;
        white-space: normal;
        display: -webkit-box;
        -webkit-line-clamp: 2;
        -webkit-box-orient: vertical;
        overflow: hidden;
        line-height: 1.15;
    }
    .sc-bar-meta[b-earm9xspjh] { flex-wrap: nowrap; overflow: hidden; }
    .sc-tee-chip[b-earm9xspjh] { display: none; }
}

.sc-bar-right[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-shrink: 0;
}

/* O03 — with the switch labelled and the views named, the controls no longer fit beside a
   two-line title at 390px. They take a full row under it rather than shrinking the words. */
@media (max-width: 767.98px) {
    .sc-bar[b-earm9xspjh] {
        flex-wrap: wrap;
        padding: 0.4rem 1rem 0.5rem;
    }
    .sc-bar-right[b-earm9xspjh] {
        width: 100%;
        justify-content: space-between;
        gap: 0.5rem;
    }
}

/* Save indicator */
.sc-save-indicator[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: var(--font-size-sm);
    font-weight: 500;
    white-space: nowrap;
}
.sc-saving[b-earm9xspjh] { color: var(--b9-text-soft); }
.sc-saved[b-earm9xspjh]  { color: var(--b9-success, #16a34a); }
.sc-save-text[b-earm9xspjh] { display: none; }
@media (min-width: 500px) { .sc-save-text[b-earm9xspjh] { display: inline; } }

/* View toggle — Cards / Table (hidden at desktop) */
.sc-view-toggle[b-earm9xspjh] {
    display: flex;
    background: var(--b9-surface-muted);
    border-radius: 8px;
    padding: 2px;
    gap: 2px;
}
/* O03 — the two views have names, and each is a 48px target (it was a 32×28 icon-only pair). */
.sc-vtbtn[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.35rem;
    min-width: 48px;
    min-height: 48px;
    padding: 0 0.75rem;
    border: none;
    background: none;
    border-radius: 6px;
    color: var(--b9-text-soft);
    font-size: .875rem;
    cursor: pointer;
    transition: background .12s, color .12s;
}
.sc-vtbtn-active[b-earm9xspjh] {
    background: var(--b9-surface);
    color: var(--b9-text);
    box-shadow: 0 1px 3px rgba(0,0,0,.08);
}
@media (min-width: 900px) { .sc-view-toggle[b-earm9xspjh] { display: none; } }

/* Custom toggle pill */
.sc-toggle-wrap[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    min-height: 48px;
    cursor: pointer;
}
.sc-toggle-check[b-earm9xspjh] { display: none; }
.sc-toggle-pill[b-earm9xspjh] {
    position: relative;
    display: inline-block;
    width: 40px;
    height: 22px;
    border-radius: 999px;
    transition: background .2s;
    cursor: pointer;
    flex-shrink: 0;
}
.sc-toggle-open[b-earm9xspjh]   { background: var(--b9-success); }
/* Neutral, not red — red is for destructive actions only, and "closed" is the resting state. */
.sc-toggle-closed[b-earm9xspjh] { background: var(--b9-surface-muted); box-shadow: inset 0 0 0 1px var(--b9-border-strong); }
.sc-toggle-thumb[b-earm9xspjh] {
    position: absolute;
    top: 3px;
    left: 3px;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: #fff;
    transition: transform .2s;
    box-shadow: 0 1px 3px rgba(0,0,0,.2);
}
.sc-toggle-check:checked ~ .sc-toggle-pill .sc-toggle-thumb[b-earm9xspjh] { transform: translateX(18px); }
/* O03 — always visible, at every width. Was display:none under 480px: the switch had no words on
   the one screen used at the first tee. Reads "Scoring: Closed · Open it". */
.sc-toggle-label[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0 0.3rem;
    font-size: .9rem;
    font-weight: 600;
    cursor: pointer;
}
.sc-toggle-next[b-earm9xspjh] { color: var(--b9-text-muted); font-weight: 500; }
/* -text variants: the raw status hue as ink on a dark ground measures under AA. */
.sc-label-open  .sc-toggle-state[b-earm9xspjh] { color: var(--b9-success-text); }
.sc-label-closed .sc-toggle-state[b-earm9xspjh] { color: var(--b9-text); }


/* ══════════════════════════════════════════════════════════════
   STATE DISPLAYS
══════════════════════════════════════════════════════════════ */

.sc-state-wrap[b-earm9xspjh] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 5rem 1.5rem;
    text-align: center;
}
.sc-state-icon[b-earm9xspjh]    { font-size: 2.5rem; color: var(--b9-border); }
.sc-state-danger[b-earm9xspjh]  { color: var(--b9-danger, #dc2626); }
.sc-state-title[b-earm9xspjh]   { font-size: 1.125rem; font-weight: 700; margin: 0; }
.sc-state-text[b-earm9xspjh]    { color: var(--b9-text-soft); font-size: .9375rem; margin: 0; }

.sc-closed-banner[b-earm9xspjh] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem;
    background: var(--warning-soft);
    border-bottom: 1px solid rgba(251,191,36,0.28);
    color: var(--warning-text);
    font-size: .875rem;
    padding: .625rem 1.25rem;
}

.sc-open-now-btn[b-earm9xspjh] {
    font-size: var(--font-size-sm);
    padding: 0.2rem 0.7rem;
    white-space: nowrap;
}

.sc-vtbtn-label[b-earm9xspjh] {
    display: inline;
    font-size: .875rem;
}

.sc-compact-hcp[b-earm9xspjh] {
    padding: 0.5rem 1rem 0.35rem;
    overflow: visible;
}

.sc-compact-hcp[b-earm9xspjh]  .hcp-summary {
    padding: 0.72rem 0.9rem;
    border-radius: 10px;
    gap: 0.8rem;
    overflow: visible;
}

.sc-compact-hcp[b-earm9xspjh]  .hcp-summary-kicker {
    font-size: var(--font-size-sm);
}

.sc-compact-hcp[b-earm9xspjh]  .hcp-summary-title {
    font-size: 1rem;
    line-height: 1.28;
    white-space: normal;
}

.sc-compact-hcp[b-earm9xspjh]  .hcp-summary-subtitle {
    margin-top: 0.18rem;
    font-size: 0.875rem;
    line-height: 1.35;
    white-space: normal;
}

.sc-compact-hcp[b-earm9xspjh]  .hcp-summary-timing {
    margin-top: 0.2rem;
    font-size: var(--font-size-sm);
    line-height: 1.3;
    white-space: normal;
}



/* ══════════════════════════════════════════════════════════════
   VIEW CONTAINER
══════════════════════════════════════════════════════════════ */

.sc-mobile-view[b-earm9xspjh]  { display: block; }
.sc-desktop-view[b-earm9xspjh] { display: none; }

@media (min-width: 900px) {
    .sc-mobile-view[b-earm9xspjh]  { display: none  !important; }
    .sc-desktop-view[b-earm9xspjh] { display: block !important; }
}

.sc-force-table .sc-mobile-view[b-earm9xspjh]  { display: none  !important; }
.sc-force-table .sc-desktop-view[b-earm9xspjh] { display: block !important; }


/* ══════════════════════════════════════════════════════════════
   PROGRESS STRIP
══════════════════════════════════════════════════════════════ */

.sc-progress[b-earm9xspjh] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    padding: 0.75rem 1rem 0.5rem;
    background: var(--b9-surface);
    border-top: 1px solid var(--b9-border);
    border-bottom: 1px solid var(--b9-border);
}

.sc-progress-row[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    flex-wrap: wrap;
}

.sc-dot[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 8px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    border: 2px solid var(--b9-border);
    background: var(--b9-surface);
    color: var(--b9-text-soft);
    cursor: pointer;
    transition: all .12s;
    flex-shrink: 0;
    padding: 0;
}
.sc-dot:hover[b-earm9xspjh] { border-color: var(--b9-primary); color: var(--b9-primary-text); }

.sc-dot-done[b-earm9xspjh]    { background: var(--success-soft); border-color: rgba(34,197,94,0.45); color: var(--success-text); }
.sc-dot-partial[b-earm9xspjh] { background: var(--warning-soft); border-color: rgba(253,224,71,0.45); color: var(--warning-text); }
.sc-dot-active[b-earm9xspjh]  {
    border-color: var(--b9-primary) !important;
    outline: 2px solid var(--b9-primary);
    outline-offset: 1px;
    color: var(--b9-primary-text) !important;
    font-weight: 800;
}

.sc-nine-label[b-earm9xspjh] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: .06em;
    margin-left: 0.25rem;
    white-space: nowrap;
}


/* ══════════════════════════════════════════════════════════════
   HOLE HERO
══════════════════════════════════════════════════════════════ */

.sc-hole-hero[b-earm9xspjh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.25rem 1rem;
    background: var(--b9-surface);
    border-bottom: 1px solid var(--b9-border);
}

.sc-nav-arrow[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 12px;
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    color: var(--b9-text);
    font-size: 1.125rem;
    cursor: pointer;
    transition: background .12s, transform .1s;
    flex-shrink: 0;
}
.sc-nav-arrow:hover:not(:disabled)[b-earm9xspjh] { background: var(--b9-border); }
.sc-nav-arrow:active:not(:disabled)[b-earm9xspjh] { transform: scale(0.93); }
.sc-nav-arrow:disabled[b-earm9xspjh] { opacity: .3; cursor: default; }

.sc-hole-center[b-earm9xspjh] { text-align: center; flex: 1; }
.sc-hole-num[b-earm9xspjh]  { font-size: 1.75rem; font-weight: 800; color: var(--b9-text); line-height: 1; }
.sc-hole-par[b-earm9xspjh]  { font-size: 1rem; font-weight: 600; color: var(--b9-text-soft); margin-top: 0.2rem; }
.sc-hole-aux[b-earm9xspjh]  { display: flex; justify-content: center; gap: 1rem; font-size: var(--font-size-sm); color: var(--b9-text-soft); margin-top: 0.25rem; }


/* ══════════════════════════════════════════════════════════════
   PLAYER STEPPER CARDS
══════════════════════════════════════════════════════════════ */

/* Player filter */
.sc-filter-wrap[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.5rem 1rem 0;
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    padding: 0.45rem 0.75rem;
}

.sc-filter-icon[b-earm9xspjh] {
    color: var(--text-muted, #64748b);
    font-size: 0.875rem;
    flex-shrink: 0;
}

.sc-filter-input[b-earm9xspjh] {
    flex: 1;
    background: none;
    border: none;
    outline: none;
    font-size: 0.9rem;
    color: var(--text-primary, #f1f5f9);
    min-width: 0;
}

.sc-filter-input[b-earm9xspjh]::placeholder {
    color: var(--text-muted, #64748b);
}

.sc-filter-clear[b-earm9xspjh] {
    background: none;
    border: none;
    padding: 0;
    color: var(--text-muted, #64748b);
    cursor: pointer;
    line-height: 1;
    font-size: 1rem;
}

.sc-filter-empty[b-earm9xspjh] {
    text-align: center;
    color: var(--text-muted, #64748b);
    font-size: 0.875rem;
    padding: 2rem 1rem;
}

.sc-cards[b-earm9xspjh] {
    padding: 0.75rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.sc-card[b-earm9xspjh] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 14px;
    overflow: hidden;
}

.sc-card-player[b-earm9xspjh] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.625rem 1rem;
    background: var(--brand-soft);
    border-bottom: 1px solid var(--b9-border);
}
.sc-card-name[b-earm9xspjh] {
    font-size: .9375rem;
    font-weight: 700;
    color: var(--brand-text);
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* "Grp 1" — a short label in a compact pill, so the CHIP floor, not the read floor.
   That is not a preference, it is what the row can afford. Measured on /events/78/scoring/86 at
   390px: every .sc-card-name on this page sits at EXACTLY 0px of slack, so the group chip's old
   12px was buying the last few pixels of the player's name. Raising it to 14px truncated three
   of them — "Ziebell/D. Schmidt +1", "Rothgarn/Hughgly +1", "Harkins/Gravenish +1" — and a
   marker picking a half-name on the group card is the one error class the Scoring Design Lock
   says nothing downstream can detect. 13px plus 3px off each side of the pill clears the
   absolute floor and gives the names back: 0 clipped, chip 41x24.
   🔴 The column still has ZERO headroom. That is a layout question, on the record for Matt. */
.sc-card-hcp[b-earm9xspjh] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--brand-text);
    background: rgba(37,99,235,0.2);
    padding: .15rem .25rem;
    border-radius: 5px;
    white-space: nowrap;
    flex-shrink: 0;
    margin-left: .5rem;
}

/* Verify button (desktop table) */
.sc-verify-btn[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: .15rem .45rem;
    border-radius: 5px;
    border: 1.5px solid currentColor;
    cursor: pointer;
    background: transparent;
    line-height: 1.4;
    white-space: nowrap;
}
.sc-verify-btn.sc-unverified[b-earm9xspjh] {
    color: var(--text-muted);
    border-color: var(--border-default);
}
.sc-verify-btn.sc-unverified:hover[b-earm9xspjh] {
    color: var(--success-text);
    border-color: rgba(34,197,94,0.45);
    background: var(--success-soft);
}
.sc-verify-btn.sc-verified[b-earm9xspjh] {
    color: var(--success-text);
    border-color: rgba(34,197,94,0.38);
    background: var(--success-soft);
}
.sc-verify-btn.sc-verified:hover[b-earm9xspjh] {
    color: var(--danger-text);
    border-color: rgba(239,68,68,0.38);
    background: var(--danger-soft);
}

/* Verified chip (mobile card) */
.sc-verified-chip[b-earm9xspjh] {
    font-size: var(--font-size-chip);
    color: var(--success-text);
    margin-left: .4rem;
    flex-shrink: 0;
}

/* Player-confirmed chip (mobile card) — the player's own "scores are correct"
   acknowledgement from the guest/QR flow. Info-blue to read as distinct from the
   organizer's green Verified. */
.sc-confirmed-chip[b-earm9xspjh] {
    font-size: var(--font-size-chip);
    color: var(--info-text);
    margin-left: .4rem;
    flex-shrink: 0;
}

/* Player-confirmed tag (desktop table) — read-only, non-interactive. */
.sc-confirmed-tag[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: var(--font-size-chip);
    font-weight: 600;
    padding: .1rem .4rem;
    margin-top: .25rem;
    border-radius: 5px;
    color: var(--info-text);
    background: var(--info-soft);
    line-height: 1.3;
    white-space: nowrap;
}

.sc-stepper[b-earm9xspjh] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1.25rem;
    padding: 1rem;
}

.sc-step-btn[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 56px;
    height: 56px;
    border-radius: 14px;
    background: var(--b9-surface-muted);
    border: 1.5px solid var(--b9-border);
    color: var(--b9-text);
    font-size: 1.25rem;
    cursor: pointer;
    transition: background .12s, border-color .12s, transform .1s;
    flex-shrink: 0;
    user-select: none;
    -webkit-user-select: none;
}
.sc-step-btn:hover:not(:disabled)[b-earm9xspjh] {
    border-color: var(--b9-primary);
    color: var(--b9-primary-text);
    background: var(--brand-soft);
}
.sc-step-btn:active:not(:disabled)[b-earm9xspjh] { transform: scale(0.91); }
.sc-step-btn:disabled[b-earm9xspjh] { opacity: .25; cursor: default; }

/* Score badge */
.sc-badge[b-earm9xspjh] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 96px;
    height: 84px;
    border-radius: 16px;
    padding: 0.5rem 1rem;
    transition: background .15s;
}
.sc-badge-num[b-earm9xspjh] {
    font-size: 2.125rem;
    font-weight: 800;
    line-height: 1;
    letter-spacing: -.03em;
}
.sc-badge-label[b-earm9xspjh] {
    /* 13px, not 10, and no opacity. This label sits on a saturated badge fill: at .9 alpha the
       white composites toward the fill and "BOGEY" measured 2.86:1 while the 34px number beside
       it passed on the large-text 3:1 allowance. Two children, one fill, two different
       thresholds — the small one decides. */
    font-size: .8125rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .1em;
    margin-top: 3px;
}

.sc-badge-empty[b-earm9xspjh]  { background: var(--b9-surface-muted); border: 2px dashed var(--b9-border); color: var(--b9-text-soft); }
.sc-badge-eagle[b-earm9xspjh]  { background: #6D28D9; color: #fff; }
.sc-badge-birdie[b-earm9xspjh] { background: #DC2626; color: #fff; }
.sc-badge-par[b-earm9xspjh]    { background: var(--b9-surface-muted); color: var(--b9-text); border: 2px solid var(--b9-border); }
.sc-badge-bogey[b-earm9xspjh]  { background: #B45309; color: #fff; }  /* was #D97706 — #fff 3.19:1, now 5.02:1 */
.sc-badge-double[b-earm9xspjh] { background: #C2410C; color: #fff; }  /* was #EA580C — #fff 3.56:1, now 5.18:1 */


/* ══════════════════════════════════════════════════════════════
   BOTTOM NAV
══════════════════════════════════════════════════════════════ */

.sc-bottom-nav[b-earm9xspjh] {
    position: sticky;
    bottom: 0;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    padding-bottom: max(0.75rem, env(safe-area-inset-bottom));
    background: var(--b9-surface);
    border-top: 1px solid var(--b9-border);
    box-shadow: 0 -2px 8px rgba(0,0,0,.06);
}

.sc-bnav-btn[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    padding: 0.5rem 1.125rem;
    border-radius: 10px;
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    color: var(--b9-text);
    font-size: .9rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .12s;
}
.sc-bnav-btn:hover:not(:disabled)[b-earm9xspjh] { background: var(--b9-border); }
.sc-bnav-btn:disabled[b-earm9xspjh] { opacity: .3; cursor: default; }

.sc-bnav-label[b-earm9xspjh] { font-size: .875rem; font-weight: 600; color: var(--b9-text-soft); }


/* ══════════════════════════════════════════════════════════════
   DESKTOP SCORECARD TABLE
══════════════════════════════════════════════════════════════ */

.sc-desktop-view[b-earm9xspjh] { padding: 1.5rem 1.25rem 3rem; }

.sc-table-editor-shell[b-earm9xspjh] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1rem;
}

.sc-table-pane[b-earm9xspjh] {
    min-width: 0;
}

@media (min-width: 1240px) {
    .sc-table-editor-shell[b-earm9xspjh] {
        grid-template-columns: minmax(0, 1fr) 340px;
        align-items: start;
    }
}

.sc-focused-editor[b-earm9xspjh] {
    /* R14 — score keys get their own floor, ABOVE the app-wide 48px touch target, because they are
       the most-tapped control in the product. Mirrors ScoreKeyMin in Spacing.xaml (64). Declared on
       the pad itself and read by the pad's own rules: a custom property that is never defined voids
       the whole declaration it sits in, silently, so definition and use stay in one file. */
    --score-key-min: 64px;

    border: 1px solid var(--b9-border);
    border-radius: 12px;
    background: var(--b9-surface);
    padding: 0.9rem;
    box-shadow: 0 8px 24px rgba(2, 8, 23, 0.2);
    position: sticky;
    bottom: 0.75rem;
    z-index: 11;
}

@media (min-width: 1240px) {
    .sc-focused-editor[b-earm9xspjh] {
        top: 4.6rem;
        bottom: auto;
    }
}

.sc-focused-editor:focus-visible[b-earm9xspjh] {
    outline: 2px solid #60a5fa;
    outline-offset: 2px;
}

.sc-editor-header[b-earm9xspjh] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
}

.sc-editor-kicker[b-earm9xspjh] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-text-soft);
    font-weight: 700;
}

.sc-editor-title[b-earm9xspjh] {
    margin: 0.1rem 0 0;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--b9-text);
    line-height: 1.2;
}

.sc-editor-meta[b-earm9xspjh] {
    margin-top: 0.45rem;
    color: var(--b9-text-muted);
    font-size: 0.92rem;
    line-height: 1.35;
}

.sc-editor-row[b-earm9xspjh] {
    margin-top: 0.65rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.sc-editor-chip[b-earm9xspjh] {
    display: inline-flex;
    align-items: center;
    border: 1px solid var(--b9-border);
    border-radius: 999px;
    padding: 0.26rem 0.56rem;
    font-size: var(--font-size-chip);
    color: var(--b9-text-muted);
    background: var(--b9-surface-muted);
    font-weight: 600;
}

.sc-editor-current-score-wrap[b-earm9xspjh] {
    margin-top: 0.72rem;
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    background: rgba(30, 64, 175, 0.12);
    padding: 0.62rem 0.72rem;
}

.sc-editor-current-label[b-earm9xspjh] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-weight: 700;
}

.sc-editor-current-score[b-earm9xspjh] {
    margin-top: 0.2rem;
    font-size: 1.7rem;
    line-height: 1.05;
    color: #f8fafc;
    font-weight: 800;
}

.sc-editor-score-grid[b-earm9xspjh] {
    margin-top: 0.72rem;
    display: grid;
    /* Three across, so 1-9 fall in the same three rows the phone's keypad uses and the overflow key
       gets its own full-width row underneath. Bigger keys in a TIGHT grid: wide gutters measurably
       slow older adults down, so the gap stays where it was. */
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.45rem;
}

.sc-editor-score-btn[b-earm9xspjh] {
    min-height: var(--score-key-min);
    border-radius: 10px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    font-size: 1.25rem;
    font-weight: 700;
    transition: border-color .12s, background .12s;
}

/* "10 or more", not a bare chevron or a plus sign: the overflow key is the one control on this pad
   whose meaning is not the numeral printed on it, so it says what it does. Full width, its own row,
   and the SAME 64px floor as every other key. */
.sc-editor-score-more[b-earm9xspjh] {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

.sc-editor-more-num[b-earm9xspjh] {
    font-size: 1.25rem;
    font-weight: 700;
}

.sc-editor-more-word[b-earm9xspjh] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--b9-text-muted);
}

.sc-editor-score-btn:hover:not(:disabled)[b-earm9xspjh],
.sc-editor-score-btn:focus-visible[b-earm9xspjh] {
    border-color: #60a5fa;
    background: rgba(59, 130, 246, 0.18);
}

.sc-editor-score-btn:disabled[b-earm9xspjh] {
    opacity: 0.55;
}

.sc-editor-controls[b-earm9xspjh] {
    margin-top: 0.72rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.45rem;
}

.sc-editor-action[b-earm9xspjh] {
    min-height: 48px;
    border-radius: 10px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface);
    color: var(--b9-text);
    font-size: 1rem;
    font-weight: 600;
}

.sc-editor-next[b-earm9xspjh] {
    background: rgba(22, 101, 52, 0.18);
    border-color: rgba(34, 197, 94, 0.4);
}

.sc-table-card[b-earm9xspjh] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    overflow: hidden;
}

.scorecard-wrapper[b-earm9xspjh] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

table.scorecard[b-earm9xspjh] {
    border-collapse: collapse;
    min-width: 800px;
    width: 100%;
    font-size: 0.875rem;
}
table.scorecard th[b-earm9xspjh],
table.scorecard td[b-earm9xspjh] {
    text-align: center;
    padding: 0;
    border: 1px solid var(--b9-border);
    white-space: nowrap;
}

.col-player[b-earm9xspjh] {
    position: sticky;
    left: 0;
    z-index: 4;
    min-width: 155px;
    max-width: 155px;
    text-align: left !important;
    padding: 0.4rem 0.65rem;
    background: var(--b9-surface);
    border-right: 2px solid var(--b9-text-soft) !important;
}
.sc-team-player-cell[b-earm9xspjh] {
    background: var(--b9-surface) !important;
}
.sc-team-name[b-earm9xspjh] {
    color: #e0e7ff !important;
    font-weight: 700 !important;
}
.sc-team-players[b-earm9xspjh] {
    color: #cbd5e1 !important;
    font-size: 0.875rem !important;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 148px;
}

.sc-team-meta[b-earm9xspjh] {
    font-size: 0.875rem !important;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 148px;
}

.sc-player-meta[b-earm9xspjh] {
    font-size: 0.84rem !important;
    line-height: 1.3;
}
.col-hole[b-earm9xspjh]     { min-width: 42px; width: 42px; }
.col-subtotal[b-earm9xspjh] {
    min-width: 50px;
    width: 50px;
    padding: 0.4rem 0.35rem;
    background: var(--b9-surface-muted);
    color: var(--b9-text);
    font-weight: 700;
    font-size: 1rem;
}
.sep-left[b-earm9xspjh] { border-left: 2px solid var(--b9-text-soft) !important; }

tr.row-holes th[b-earm9xspjh] {
    height: 30px;
    font-size: 0.95rem;
    font-weight: 700;
    background: #1E293B;
    color: #fff;
    padding: 0.3rem 0.25rem;
}
tr.row-holes .col-player[b-earm9xspjh] {
    background: #1E293B;
    color: #fff;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: .05em;
}
tr.row-yardage td[b-earm9xspjh] {
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: #94a3b8;
    background: #2d3748;
    padding: 0.2rem 0.3rem;
}
tr.row-yardage .col-player[b-earm9xspjh] { background: #2d3748; font-weight: 500; }
tr.row-par td[b-earm9xspjh] {
    font-size: 0.95rem;
    font-weight: 700;
    background: var(--bg-raised);
    color: var(--text-primary);
    padding: 0.3rem 0.25rem;
}
tr.row-par .col-player[b-earm9xspjh] { background: var(--bg-raised); }

.scorecard td.col-subtotal.text-dark[b-earm9xspjh] {
    color: var(--b9-text) !important;
}

.scorecard td.col-subtotal.text-muted[b-earm9xspjh] {
    color: color-mix(in srgb, var(--b9-text) 78%, #94a3b8) !important;
    opacity: 1;
}

.score-cell[b-earm9xspjh] { padding: 0; }

.score-cell.sc-cell-selected[b-earm9xspjh] {
    position: relative;
    box-shadow: inset 0 0 0 2px #60a5fa;
}

.score-input[b-earm9xspjh] {
    display: block;
    width: 100%;
    height: 44px;
    border: none;
    text-align: center;
    font-size: 1rem;
    font-weight: 700;
    background: transparent;
    color: #f8fafc;
    cursor: pointer;
    -moz-appearance: textfield;
}
.score-input[b-earm9xspjh]::-webkit-outer-spin-button,
.score-input[b-earm9xspjh]::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.score-input:focus[b-earm9xspjh] {
    outline: 2px solid transparent;
    box-shadow: inset 0 0 0 2px #60a5fa;
    outline-offset: 0;
    border-radius: 2px;
    background: transparent;
    position: relative;
    z-index: 1;
}
.score-input:disabled[b-earm9xspjh] { cursor: default; color: var(--b9-text-soft); }

td.sc-eagle[b-earm9xspjh]  { background: rgba(109,40,217,0.22); }
td.sc-eagle .score-input[b-earm9xspjh]  { color: #DDD6FE; font-weight: 700; }
td.sc-birdie[b-earm9xspjh] { background: rgba(220,38,38,0.22); }
td.sc-birdie .score-input[b-earm9xspjh] { color: #FECACA; font-weight: 700; }
td.sc-par[b-earm9xspjh] { background: rgba(15, 23, 42, 0.45); }
td.sc-par .score-input[b-earm9xspjh] { color: #f8fafc; font-weight: 700; }
td.sc-bogey[b-earm9xspjh]  { background: rgba(217,119,6,0.22); }
td.sc-bogey .score-input[b-earm9xspjh]  { color: #FDE68A; font-weight: 700; }
td.sc-double[b-earm9xspjh] { background: rgba(234,88,12,0.22); }
td.sc-double .score-input[b-earm9xspjh] { color: #FED7AA; font-weight: 700; }

.legend-chip[b-earm9xspjh] {
    display: inline-block;
    padding: 0.2rem 0.55rem;
    border-radius: 5px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    border: 1px solid rgba(0,0,0,.08);
}
span.sc-eagle[b-earm9xspjh]  { background: rgba(109,40,217,0.20); color: #DDD6FE; }
span.sc-birdie[b-earm9xspjh] { background: rgba(220,38,38,0.20); color: #FECACA; }
span.sc-par[b-earm9xspjh]    { background: var(--b9-surface-muted); color: var(--b9-text); }
span.sc-bogey[b-earm9xspjh]  { background: rgba(217,119,6,0.20); color: #FDE68A; }
span.sc-double[b-earm9xspjh] { background: rgba(234,88,12,0.20); color: #FED7AA; }

/* ══════════════════════════════════════════════════════════════
   ON-COURSE CONTESTS PANEL
══════════════════════════════════════════════════════════════ */

.sc-contests-panel[b-earm9xspjh] {
    margin: 1.25rem 0 0;
    border: 1px solid var(--b9-border);
    border-radius: 14px;
    overflow: hidden;
}

.sc-contests-panel-header[b-earm9xspjh] {
    display: flex;
    align-items: center;
    padding: 0.75rem 1rem;
    background: var(--b9-surface);
    border-bottom: 1px solid var(--b9-border);
    font-weight: 700;
    font-size: 0.95rem;
}

.sc-contest-block[b-earm9xspjh] {
    padding: 0.875rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    background: var(--b9-bg);
}
.sc-contest-block:last-child[b-earm9xspjh] { border-bottom: none; }

.sc-contest-block-head[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
}

.sc-contest-block-name[b-earm9xspjh] {
    font-weight: 700;
    font-size: 0.9rem;
}

.sc-cstatus-pill[b-earm9xspjh] {
    display: inline-block;
    padding: 0.15em 0.6em;
    border-radius: 9999px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.sc-cstatus-open[b-earm9xspjh]   { background: var(--success-soft); color: var(--success-text); }
.sc-cstatus-locked[b-earm9xspjh] { background: var(--warning-soft); color: var(--warning-text); }
.sc-cstatus-final[b-earm9xspjh]  { background: rgba(109,40,217,0.16); color: #c4b5fd; }
.sc-cstatus-draft[b-earm9xspjh]  { background: var(--b9-surface-muted); color: var(--b9-text-soft); }

/* Sits where the hole numbers would be, for a contest saved before a hole was required. */
.sc-contest-nohole[b-earm9xspjh] {
    color: var(--warning-text);
    font-weight: 500;
}

.sc-contest-entries[b-earm9xspjh] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.sc-contest-entry-row[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.sc-centry-name[b-earm9xspjh] {
    min-width: 130px;
    font-size: 0.875rem;
    font-weight: 600;
}

.sc-centry-input-wrap[b-earm9xspjh] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    flex-wrap: wrap;
}

.sc-centry-input[b-earm9xspjh] {
    width: 80px;
    padding: 0.3rem 0.5rem;
    border: 1px solid var(--b9-border);
    border-radius: 8px;
    background: var(--b9-surface);
    color: var(--b9-text);
    font-size: 0.875rem;
}

.sc-centry-unit[b-earm9xspjh] {
    padding: 0.3rem 0.5rem;
    border: 1px solid var(--b9-border);
    border-radius: 8px;
    background: var(--b9-surface);
    color: var(--b9-text);
    font-size: var(--font-size-sm);
}

.sc-centry-save[b-earm9xspjh] {
    font-size: var(--font-size-sm);
    padding: 0.25rem 0.6rem;
}

/* Info callout — dark-safe replacement for alert-light */
.sc-info-callout[b-earm9xspjh] {
    border: 1px solid var(--border-subtle, #334155);
    border-radius: 0.375rem;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
}

html[data-theme="light"] .sc-info-callout[b-earm9xspjh] {
    background: #f8fafc;
    border-color: #e2e8f0;
    color: #1f2937;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.sc-yardage-label[b-earm9xspjh] { font-size: var(--font-size-sm); }
.sc-name-clamp[b-earm9xspjh] { max-width: 140px; }
.sc-team-name[b-earm9xspjh] { max-width: 160px; }
/* /Components/Pages/Events/Sponsors.razor.rz.scp.css */
/* Public sponsors page. Design-token colours only; dark-theme safe; no horizontal overflow at 375px. */

.spon-page[b-2bo0e9s3z8] {
    max-width: 940px;
    margin-inline: auto;
    padding: 1.5rem 1rem 4rem;
    color: var(--b9-text);
}

.spon-head[b-2bo0e9s3z8] {
    text-align: center;
    padding-bottom: 1.25rem;
    margin-bottom: 1.75rem;
    border-bottom: 1px solid var(--b9-border);
}

.spon-title[b-2bo0e9s3z8] {
    font-size: clamp(1.6rem, 5vw, 2.4rem);
    font-weight: 800;
    margin: 0;
    text-wrap: balance;
}

.spon-event[b-2bo0e9s3z8] {
    margin: 0.4rem 0 0;
    color: var(--b9-text-muted);
    font-size: 1rem;
}

.spon-thanks[b-2bo0e9s3z8] {
    margin: 0.9rem 0 0;
    color: var(--b9-text-soft);
    font-size: 0.95rem;
}

.spon-section[b-2bo0e9s3z8] { margin-bottom: 2.5rem; }

.spon-section-title[b-2bo0e9s3z8] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--b9-primary-text);
    margin: 0 0 1rem;
}

/* ── Tee-box cards ───────────────────────────────────────────────── */
/* 150px, not 140px, and the 10px is load-bearing. This grid holds NAMEPLATES — on this page a
   plate is the only place the business name appears (a card is captioned only when it has a
   logo), so the card width IS the name's width. At 140px a desktop row packs six 141px cards and
   "Lakes Sotheby's Real Estate- Heidi Hartzell" is the one name of 140 in the clone that cannot
   fit; at 150px the row packs five 172px cards and every name fits. Measured at 390/768/1280:
   150 through 170 are identical at all three, so this is the smallest number that closes it, and
   a phone is untouched (two columns either way, +8px of page). */
.spon-cards[b-2bo0e9s3z8] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 0.75rem;
}

.spon-card[b-2bo0e9s3z8] {
    background: var(--b9-surface-alt);
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    padding: 0.75rem 0.6rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    text-align: center;
    min-width: 0;
}

.spon-card-hole[b-2bo0e9s3z8] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--b9-primary-text);
}

/* Sized here so a logo and a nameplate occupy the same box — see SponsorMark.razor.

   ::deep is REQUIRED, not stylistic. The mark is rendered by the shared <SponsorMark /> child
   component, so its element never receives THIS component's b-* scope attribute; a plain
   `.spon-card-mark { }` rule silently matches nothing and the logo falls back to its natural
   size. `.spon-card ::deep` compiles to `.spon-card[b-xxxx] .spon-card-mark`, which matches
   because `.spon-card` IS in this component's own markup. */
.spon-card[b-2bo0e9s3z8]  .spon-card-mark {
    width: 100%;
    height: 54px;
    max-width: 100%;
    object-fit: contain;
    background: #fff;
    border-radius: 8px;
    padding: 4px;
}

/* …but a PLATE is not a logo, and on THIS page the plate is the sponsor's whole recognition:
   a card carries a caption only when it has artwork, precisely because a nameplate already
   spells the business out. So the name was the 9.92px base — the smallest type in the product,
   set on the businesses the page exists to thank — and 2 of the 140 real names clipped at that
   size on a desktop anyway.
   Same fix as the leaderboard strip and both sign-up walls: the logo height becomes a FLOOR
   rather than a ceiling, and the name is set at the same 14px the rest of the page reads at.
   The card grid grows downward, which a page whose whole job is the sponsor roll can afford —
   the leaderboard band could not, which is why it clamps at three lines and this clamps at four.
   Measured across all 140 real nameplate names at 390px, 768px and 1280px: none clips. */
.spon-card[b-2bo0e9s3z8]  .spon-card-mark.sponsor-mark-plate {
    height: auto;
    min-height: 54px;
}

.spon-card[b-2bo0e9s3z8]  .spon-card-mark.sponsor-mark-plate .sponsor-plate-text {
    font-size: var(--font-size-sm);
    -webkit-line-clamp: 4;
}

.spon-card-name[b-2bo0e9s3z8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-muted);
    line-height: 1.3;
    overflow-wrap: anywhere;
}

/* ── The roll ────────────────────────────────────────────────────── */
.spon-roll[b-2bo0e9s3z8] {
    columns: 3 200px;
    column-gap: 1.75rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

.spon-roll-name[b-2bo0e9s3z8] {
    break-inside: avoid;
    padding: 0.32rem 0;
    border-bottom: 1px solid var(--b9-border);
    font-size: 0.92rem;
    line-height: 1.4;
    color: var(--b9-text-muted);
    overflow-wrap: anywhere;
}

.spon-empty[b-2bo0e9s3z8] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--b9-text-soft);
}

@media (max-width: 480px) {
    .spon-roll[b-2bo0e9s3z8] { columns: 1; }
    .spon-cards[b-2bo0e9s3z8] { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
}
/* /Components/Pages/Events/TeeSheet.razor.rz.scp.css */
/* ═══════════════════════════════════════════════════════════
   SCREEN NAV BAR
═══════════════════════════════════════════════════════════ */
.ts-bar[b-ddb18bdqei] {
    position: sticky;
    top: 0;
    z-index: 100;
    background: var(--bg-elevated);
    border-bottom: 1px solid var(--border-default);
    padding: 0.6rem 1.25rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    min-height: 52px;
}

.ts-bar-left[b-ddb18bdqei] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
    flex: 1;
}

.ts-bar-right[b-ddb18bdqei] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* ═══════════════════════════════════════════════════════════
   TEE SHEET PAGE WRAPPER
═══════════════════════════════════════════════════════════ */
.ts-page[b-ddb18bdqei] {
    max-width: 1100px;
    margin: 1.5rem auto;
    padding: 0 1rem;
    font-family: 'Segoe UI', system-ui, sans-serif;
}

/* ── Event header ── */
.ts-header[b-ddb18bdqei] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1rem;
}

.ts-event-title[b-ddb18bdqei] {
    font-size: 1.75rem;
    font-weight: 800;
    margin: 0 0 0.15rem;
    line-height: 1.2;
}

.ts-event-sub[b-ddb18bdqei] {
    color: var(--text-muted);
    margin: 0;
    font-size: 0.9rem;
}

.ts-header-meta[b-ddb18bdqei] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem 1.5rem;
}

.ts-meta-item[b-ddb18bdqei] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}

.ts-meta-label[b-ddb18bdqei] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .07em;
    color: var(--text-muted);
    font-weight: 700;
}

.ts-meta-value[b-ddb18bdqei] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    gap: 5px;
}

.ts-meta-sub[b-ddb18bdqei] {
    font-weight: 400;
    color: var(--text-muted);
}

.ts-tee-dot[b-ddb18bdqei] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.ts-divider[b-ddb18bdqei] {
    border-top: 2px solid #212529;
    margin-bottom: 1.25rem;
}

.ts-dot[b-ddb18bdqei] {
    margin: 0 0.3rem;
    color: #adb5bd;
}

/* ── Time section headers ── */
.ts-time-header[b-ddb18bdqei] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    color: var(--text-muted);
    border-bottom: 1px solid var(--border-default);
    padding-bottom: 0.3rem;
    margin: 1rem 0 0.6rem;
}

/* ── Group row ── */
.ts-groups[b-ddb18bdqei] {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.ts-group-row[b-ddb18bdqei] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

/* ── Single group card ── */
.ts-group[b-ddb18bdqei] {
    border: 1.5px solid var(--border-default);
    border-radius: 10px;
    overflow: hidden;
    background: var(--bg-elevated);
    break-inside: avoid;
}

.ts-group-header[b-ddb18bdqei] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.45rem 0.7rem;
    background: #212529;
    color: #fff;
}

.ts-group-meta[b-ddb18bdqei] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.ts-group-num[b-ddb18bdqei] {
    font-weight: 700;
    font-size: var(--font-size-sm);
}

.ts-group-hole[b-ddb18bdqei] {
    font-size: var(--font-size-sm);
    background: rgba(255,255,255,.15);
    border-radius: 20px;
    padding: 1px 8px;
}

.ts-group-time[b-ddb18bdqei] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: #ffc107;
}

.ts-group-note[b-ddb18bdqei] {
    font-size: var(--font-size-sm);
    color: var(--warning-text);
    background: var(--warning-soft);
    padding: 3px 10px;
    border-bottom: 1px solid rgba(251,191,36,0.22);
    font-style: italic;
}

/* ── Players list ── */
.ts-players[b-ddb18bdqei] {
    padding: 0.35rem 0.6rem;
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.ts-player[b-ddb18bdqei] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.3rem 0.25rem;
    border-bottom: 1px solid var(--border-default);
    gap: 0.5rem;
    min-height: 28px;
}

.ts-player:last-child[b-ddb18bdqei] {
    border-bottom: none;
}

.ts-player-name[b-ddb18bdqei] {
    font-size: 0.875rem;
    font-weight: 500;
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ts-player-hcp[b-ddb18bdqei] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    background: var(--bg-raised);
    color: var(--text-muted);
    border-radius: 20px;
    padding: 1px 7px;
    flex-shrink: 0;
}

.ts-hcp-idx[b-ddb18bdqei] {
    background: rgba(13,148,136,0.16);
    color: #5eead4;
}

.ts-hcp-none[b-ddb18bdqei] {
    background: transparent;
    color: var(--text-muted);
}

.ts-player-empty[b-ddb18bdqei] {
    color: var(--text-muted);
}

.ts-player-blank .ts-blank-line[b-ddb18bdqei] {
    display: block;
    width: 100%;
    height: 1px;
    background: var(--border-default);
    border-radius: 2px;
}

/* ── Print score grid (hidden on screen, shown on print) ── */
.ts-score-grid[b-ddb18bdqei] {
    border-top: 1px solid #dee2e6;
    font-size: var(--font-size-sm);
    display: none;
}

.ts-score-row[b-ddb18bdqei] {
    display: grid;
    grid-template-columns: repeat(9, 1fr) 1.4fr repeat(9, 1fr) 1.4fr 1.4fr;
    text-align: center;
    border-bottom: 1px solid #dee2e6;
}

.ts-score-row > div[b-ddb18bdqei] {
    padding: 2px 0;
    border-right: 1px solid #dee2e6;
}

.ts-score-row > div:last-child[b-ddb18bdqei] {
    border-right: none;
}

.ts-score-header[b-ddb18bdqei] {
    background: #f8f9fa;
    font-weight: 700;
    color: #6c757d;
}

.ts-score-entry > div[b-ddb18bdqei] {
    height: 16px;
}

.ts-score-out[b-ddb18bdqei] {
    background: #f3f4f6;
    font-weight: 700;
}

/* ── Footer ── */
.ts-footer[b-ddb18bdqei] {
    margin-top: 2rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--border-default);
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    text-align: center;
}

/* ═══════════════════════════════════════════════════════════
   PRINT STYLES
═══════════════════════════════════════════════════════════ */
@media print {
    .no-print[b-ddb18bdqei] { display: none !important; }

    .ts-page[b-ddb18bdqei] {
        margin: 0;
        padding: 0.5cm 0.75cm;
        max-width: none;
    }

    .ts-bar[b-ddb18bdqei] { display: none !important; }

    .ts-event-title[b-ddb18bdqei] { font-size: 1.4rem; }

    .ts-group[b-ddb18bdqei] {
        border: 1px solid #333;
        border-radius: 4px;
    }

    .ts-group-header[b-ddb18bdqei] {
        background: #333 !important;
        -webkit-print-color-adjust: exact;
        print-color-adjust: exact;
    }

    .ts-group-row[b-ddb18bdqei] {
        grid-template-columns: repeat(3, 1fr);
        break-inside: avoid;
    }

    /* Keep time header with its groups — never orphan a header at page bottom */
    .ts-time-header[b-ddb18bdqei] {
        break-after: avoid;
    }

    /* Show the score tracking grid on print */
    .ts-score-grid[b-ddb18bdqei] {
        display: block;
    }

    .ts-footer[b-ddb18bdqei] {
        font-size: var(--font-size-sm);
    }
}

/* ── Responsive: stack on small screens ── */
@media (max-width: 575px) {
    .ts-group-row[b-ddb18bdqei] {
        grid-template-columns: 1fr;
    }

    .ts-header[b-ddb18bdqei] {
        flex-direction: column;
    }

    .ts-score-grid[b-ddb18bdqei] {
        font-size: var(--font-size-sm);
    }
}

/* Withdrew after the draw. Marked rather than removed, so the on-screen sheet matches the printed
   one already in the starter's hand. Uses tokens, and the "WD" text carries the meaning on its own
   so nothing depends on colour alone. */
.ts-player-wd .ts-player-name[b-ddb18bdqei] { color: var(--b9-text-muted, #6B7280); }

.ts-player-wd-badge[b-ddb18bdqei] {
    display: inline-block;
    margin-left: .35rem;
    padding: 0 .28rem;
    border: 1px solid var(--b9-border, #6B7280);
    border-radius: 3px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: .04em;
    color: var(--b9-text-muted, #6B7280);
    vertical-align: 1px;
}
/* /Components/Pages/FriendLink.razor.rz.scp.css */
/* /f/{token} — one calm card: an initial, a first name, one action. Brand tokens only. */
.fl-page[b-53fvj2k1sa]   { max-width:480px; margin:0 auto; padding:40px 16px 56px; }
.fl-card[b-53fvj2k1sa]   { background:var(--b9-surface-alt); border:1.5px solid var(--b9-border); border-radius:16px;
             padding:28px 20px; text-align:center; display:flex; flex-direction:column; align-items:center; gap:12px; }
.fl-avatar[b-53fvj2k1sa] { width:72px; height:72px; border-radius:50%; background:var(--b9-primary-soft); color:var(--b9-primary-text);
             display:flex; align-items:center; justify-content:center; font-size:2rem; font-weight:700; }
.fl-avatar--muted[b-53fvj2k1sa] { background:var(--b9-surface-muted); color:var(--b9-text-muted); }
.fl-title[b-53fvj2k1sa]  { font-size:1.375rem; font-weight:700; color:var(--b9-text); margin:0; overflow-wrap:anywhere; }
.fl-sub[b-53fvj2k1sa]    { font-size:var(--font-size-base); color:var(--b9-text-muted); margin:0; }
.fl-result[b-53fvj2k1sa] { font-size:var(--font-size-base); font-weight:600; color:var(--b9-success-text); margin:0; }
.fl-btn[b-53fvj2k1sa]    { display:inline-flex; align-items:center; justify-content:center; width:100%; max-width:320px;
             min-height:var(--touch-target-min); padding:8px 18px; border-radius:12px; border:1.5px solid var(--b9-border);
             background:var(--b9-surface); color:var(--b9-text); font-size:var(--font-size-base); font-weight:700;
             text-decoration:none; cursor:pointer; }
.fl-btn:hover[b-53fvj2k1sa] { background:var(--b9-surface-muted); color:var(--b9-text); }
.fl-btn--primary[b-53fvj2k1sa] { background:var(--b9-primary); border-color:var(--b9-primary); color:var(--player-text-inverse); }
.fl-btn--primary:hover[b-53fvj2k1sa] { background:var(--b9-primary-hover); color:var(--player-text-inverse); }
.fl-btn:focus-visible[b-53fvj2k1sa] { outline:2px solid var(--b9-primary); outline-offset:2px; }
/* /Components/Pages/GuestScore.razor.rz.scp.css */
/* ── GuestScore.razor.css
   QR Guest Scoring page — /s/{token}
   All design tokens. Dark-first. Mobile-first (390px baseline).
   Touch targets ≥ --touch-target-min (48px). No hardcoded hex.

   🔴 That line used to read "Touch targets ≥ 56px" while this file shipped .gs-nav-btn and
   .gs-fullcard-toggle at 44px, .gs-dot at 36px wide, and .gs-upsell-link with no rule at all
   at 17px tall. A header that states a floor the file does not keep reads as proof to anyone
   sweeping the stylesheet, which is how all four survived. Measured live at 390x844 on
   2026-09-15 and corrected; .gs-dot is CLOSED 2026-09-16 — the band it belonged to is deleted.

   This is design 07 under ai-context/SCORING_DESIGN_LOCK.md. Process rule 1: no visual change
   here ships without Matt seeing a picture first.
   ─────────────────────────────────────────────────────────────── */

/* ── Loading ─────────────────────────────────────────────────── */
.gs-loading[b-he383av14i] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    gap: 1rem;
    color: var(--text-muted, #94a3b8);
}

.gs-spinner[b-he383av14i] {
    width: 40px;
    height: 40px;
    border: 3px solid var(--b9-surface-muted, #1e293b);
    border-top-color: var(--brand, #22c55e);
    border-radius: 50%;
    animation: gs-spin-b-he383av14i 0.8s linear infinite;
}

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

/* ── Error ───────────────────────────────────────────────────── */
.gs-error-shell[b-he383av14i] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 1.5rem;
}

.gs-error-card[b-he383av14i] {
    background: var(--b9-surface, #0f172a);
    border: 1px solid var(--danger-soft, rgba(239,68,68,.2));
    border-radius: 16px;
    padding: 2rem 1.5rem;
    max-width: 420px;
    width: 100%;
    text-align: center;
}

.gs-error-icon[b-he383av14i] { font-size: 2.5rem; display: block; margin-bottom: .75rem; }
.gs-error-title[b-he383av14i] { font-size: 1.25rem; font-weight: 700; margin: 0 0 .5rem; }
.gs-error-msg[b-he383av14i] { color: var(--danger, #ef4444); margin: 0 0 .75rem; }
.gs-error-hint[b-he383av14i] { font-size: .875rem; color: var(--text-muted, #94a3b8); margin: 0; }

/* ── Confirmation screen ─────────────────────────────────────── */
.gs-confirm-shell[b-he383av14i] {
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 1.5rem 1rem 3rem;
    min-height: 60vh;
}

.gs-confirm-card[b-he383av14i] {
    background: var(--b9-surface, #0f172a);
    border: 1px solid var(--b9-border, #1e293b);
    border-radius: 20px;
    padding: 2rem 1.5rem;
    max-width: 460px;
    width: 100%;
}

/* This is the page's <h1>. Every value the browser would otherwise supply for a heading —
   font-size, weight, margins — is set here, so promoting the tag changed the markup and not
   one pixel of the card. */
.gs-event-name[b-he383av14i] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-muted, #94a3b8);
    letter-spacing: .04em;
    text-transform: uppercase;
    margin: 0 0 1.25rem;
}

/* Optional event branding on the scoring lobby (cosmetic, fail-soft) */
.gs-brand-photo[b-he383av14i] {
    display: block;
    width: 100%;
    max-height: 120px;
    object-fit: contain;
    margin: 0 auto .75rem;
    border-radius: .6rem;
}
.gs-brand-sponsor[b-he383av14i] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .3rem;
    margin: -.5rem 0 1rem;
}
.gs-brand-presented[b-he383av14i] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--text-muted, #94a3b8);
}
.gs-brand-sponsor-logo[b-he383av14i] {
    max-height: 38px;
    max-width: 160px;
    object-fit: contain;
}
.gs-brand-sponsor-name[b-he383av14i] {
    font-size: .95rem;
    font-weight: 700;
    color: var(--text-primary, #e8eef6);
}

.gs-player-block[b-he383av14i] {
    background: var(--bg-elevated, #1e293b);
    border-radius: 12px;
    padding: 1.25rem;
    margin-bottom: 1.5rem;
}

.gs-player-label[b-he383av14i] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    margin-bottom: .25rem;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.gs-player-name[b-he383av14i] {
    font-size: 1.625rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: .75rem;
}

/* G04: the line under an unnamed seat — what it is, and who can name it. */
.gs-seat-note[b-he383av14i] {
    font-size: .9375rem;
    color: var(--text-secondary, #cbd5e1);
    margin: -.25rem 0 .75rem;
    line-height: 1.45;
}

.gs-team-block[b-he383av14i] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .5rem;
    margin-top: .75rem;
}

.gs-team-badge[b-he383av14i] {
    background: var(--brand-soft, rgba(34,197,94,.15));
    /* G04: the brand FILL as ink measured 2.39:1 on this chip. The -text variant is the readable one. */
    color: var(--b9-primary-text);
    font-size: var(--font-size-chip);   /* 12px -> 13px */
    font-weight: 600;
    padding: .2rem .6rem;
    border-radius: 99px;
    text-transform: uppercase;
    letter-spacing: .06em;
}

.gs-team-name[b-he383av14i] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
}

.gs-teammates[b-he383av14i] {
    width: 100%;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    margin-top: .25rem;
}

.gs-scoring-note[b-he383av14i] {
    margin-top: .75rem;
    font-size: .875rem;
    color: var(--text-secondary, #cbd5e1);
    background: var(--b9-surface, #0f172a);
    border-left: 3px solid var(--brand, #22c55e);
    padding: .625rem .75rem;
    border-radius: 0 8px 8px 0;
}

/* The one message a golfer standing on the first tee with a QR code might get instead of a
   scorecard, and in light it was the warning FILL written on the warning TINT: 2.73:1. The -text
   twin answers the other question — what this colour can BE as writing — and reads 5.85:1 on the
   same banner in light, 9.85:1 in dark. Nothing about the banner's colour changes. */
.gs-closed-banner[b-he383av14i] {
    background: var(--warning-soft, rgba(245,158,11,.12));
    color: var(--warning-text, #fcd34d);
    border: 1px solid var(--warning-soft, rgba(245,158,11,.2));
    border-radius: 10px;
    padding: .75rem 1rem;
    font-size: .875rem;
    font-weight: 500;
    margin-bottom: 1.25rem;
    text-align: center;
}

.gs-start-btn[b-he383av14i] {
    display: block;
    width: 100%;
    min-height: 60px;
    background: var(--brand, #22c55e);
    /* G04: black on brand blue measured 3.13:1. White ink reads 6.7:1 on it, in both themes. */
    color: var(--player-text-inverse);
    font-size: 1.125rem;
    font-weight: 700;
    border: none;
    border-radius: 14px;
    cursor: pointer;
    transition: opacity .15s;
    margin-bottom: .875rem;
}

.gs-start-btn:hover:not(:disabled)[b-he383av14i] { opacity: .88; }
/* G04: a blanket opacity faded the ink AND the fill together, so white-on-blue measured 6.7:1 in
   the stylesheet and about 3.0:1 on the glass — and that faded button is exactly what a stranger
   meets, because the page a QR opens before the organizer starts scoring shows the disabled state.
   A disabled button gets its own colours instead; nothing here is see-through, so what is measured
   is what is seen. */
.gs-start-btn:disabled[b-he383av14i] {
    background: var(--b9-surface-muted);
    color: var(--text-secondary);
    border: 1px solid var(--border-default);
    cursor: not-allowed;
}

.gs-not-you[b-he383av14i] {
    text-align: center;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    margin: 0;
}

/* ── Cart-sign roster picker ─────────────────────────────────── */
.gs-roster-prompt[b-he383av14i] {
    text-align: center;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin: .5rem 0 .25rem;
}

.gs-roster-start[b-he383av14i] {
    text-align: center;
    font-size: .9375rem;
    color: var(--text-muted, #94a3b8);
    margin-bottom: 1rem;
}

.gs-roster-list[b-he383av14i] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
    margin-bottom: 1rem;
}

.gs-roster-btn[b-he383av14i] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 64px;
    padding: .75rem 1rem;
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
    font-size: 1.125rem;
    font-weight: 700;
    text-align: center;
    text-decoration: none;
    border: 2px solid var(--brand-soft, rgba(34,197,94,.35));
    border-radius: 14px;
    transition: background .15s, border-color .15s;
}

.gs-roster-btn:hover[b-he383av14i],
.gs-roster-btn:active[b-he383av14i] {
    background: var(--brand-soft, rgba(34,197,94,.15));
    border-color: var(--brand, #22c55e);
    color: var(--text-primary, #f1f5f9);
}

/* ── Score screen ────────────────────────────────────────────── */
.gs-score-shell[b-he383av14i] {
    padding: 0 0 4rem;
    max-width: 420px;
    margin: 0 auto;
}

.gs-score-header[b-he383av14i] {
    background: var(--b9-surface, #0f172a);
    border-bottom: 1px solid var(--b9-border, #1e293b);
    padding: .875rem 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .125rem;
}

/* The <h1> on the hole-entry screen. Same reasoning as .gs-event-name: the heading's own
   font-size and weight were already declared, and the margin reset keeps the header's flex gap
   the only spacing between the event name and the scorer's name. */
/* Was 13px. This is the event's own NAME and the page's <h1> — the only thing telling a
   stranger which tournament she is scoring. A proper name is read text however it is dressed,
   so it takes the 14px floor; the uppercase eyebrow treatment stays. */
.gs-score-event[b-he383av14i] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: .05em;
    margin: 0;
}

.gs-score-player[b-he383av14i] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
}

/* "Team score for <Team Beta Scramble>" — a team's NAME, which is read text however small the
   bar is. Was a raw .8125rem. */
.gs-team-context-bar[b-he383av14i] {
    background: var(--brand-soft, rgba(34,197,94,.1));
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    padding: .5rem 1.25rem;
    border-bottom: 1px solid var(--brand-soft, rgba(34,197,94,.15));
}

.gs-scoring-closed[b-he383av14i] {
    background: var(--warning-soft, rgba(245,158,11,.1));
    color: var(--warning, #f59e0b);
    font-size: .875rem;
    padding: .625rem 1.25rem;
    text-align: center;
    border-bottom: 1px solid var(--warning-soft, rgba(245,158,11,.15));
}

/* ── Dead-spot scoring (js/guest-score-offline.js) ──────────── */
/* The one sentence that says what this phone is keeping and what has reached the server. Empty
   — no box, no height — until the script has something to say, so a healthy round looks exactly
   as it did. Neutral tokens only: the design lock keeps yellow off the scoring card, and a warning
   colour would read as "something broke" when nothing has been lost. Full-weight text on a raised
   panel so it reads in sunlight, in both themes. */
.gs-held-strip[data-held-state][b-he383av14i] {
    margin: .75rem 1.25rem 0;
    padding: .75rem 1rem;
    background: var(--bg-raised);
    border: 1.5px solid var(--border-strong);
    border-radius: 12px;
    color: var(--text-primary);
    font-size: 1rem;
    line-height: 1.4;
    overflow-wrap: anywhere;
}

/* "Everything is saved." after a few seconds: same box, same height — only the ink steps back, so
   nothing under it moves. It goes entirely when the scorer moves to another hole. */
.gs-held-strip[data-held-state="quiet"][b-he383av14i] {
    color: var(--text-secondary);
}

/* On the "link not valid" card: the strip sits under the message, inside the card's own padding. */
.gs-error-card .gs-held-strip[data-held-state][b-he383av14i] {
    margin: 0 0 .75rem;
    text-align: left;
}

/* The stand-in hole card's single status line. Always rendered, even empty, and never more than
   one line, so moving between holes never shifts the keypad under a thumb. */
.gs-held-note[b-he383av14i] {
    min-height: 1.4em;
    line-height: 1.4;
    margin-bottom: .75rem;
    font-size: .875rem;
    color: var(--text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* While the phone is keeping scores, the circuit-bound hole card and everything that needs the
   server step aside; the header, the closed notice and the strip stay. Direct children only —
   the stand-in card inside .gs-held-panel reuses the same class names. */
.gs-score-shell[data-held] > .gs-group-switcher[b-he383av14i],
.gs-score-shell[data-held] > .gs-hole-section[b-he383av14i],
.gs-score-shell[data-held] > .gs-nav-row[b-he383av14i],
.gs-score-shell[data-held] > .gs-fullcard[b-he383av14i],
.gs-score-shell[data-held] > .gs-fullcard-toggle[b-he383av14i],
.gs-score-shell[data-held] > .gs-games[b-he383av14i],
.gs-score-shell[data-held] > .gs-all-done[b-he383av14i],
.gs-score-shell[data-held] > .gs-upsell-banner[b-he383av14i],
.gs-score-shell[data-held] > .gs-help-footer[b-he383av14i] {
    display: none;
}

/* ── Hole entry section ──────────────────────────────────────── */
.gs-hole-section[b-he383av14i] {
    padding: 1.25rem 1.25rem .5rem;
}

.gs-hole-title[b-he383av14i] {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1rem;
}

.gs-hole-num[b-he383av14i] {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
}

.gs-par-tag[b-he383av14i],
.gs-si-tag[b-he383av14i] {
    background: var(--bg-elevated, #1e293b);
    color: var(--text-muted, #94a3b8);
    font-size: var(--font-size-chip);
    font-weight: 600;
    padding: .2rem .6rem;
    border-radius: 99px;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.gs-saved-feedback[b-he383av14i] {
    text-align: center;
    color: var(--success, #22c55e);
    font-weight: 600;
    font-size: .9375rem;
    margin-bottom: .75rem;
    animation: gs-fade-in-b-he383av14i .2s ease;
}

.gs-save-error[b-he383av14i] {
    text-align: center;
    color: var(--danger, #ef4444);
    font-size: .875rem;
    margin-bottom: .75rem;
    background: var(--danger-soft, rgba(239,68,68,.1));
    border-radius: 8px;
    padding: .5rem .75rem;
}

.gs-already-saved[b-he383av14i] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: .875rem;
    color: var(--text-secondary, #cbd5e1);
    margin-bottom: .75rem;
    background: var(--bg-elevated, #1e293b);
    border-radius: 8px;
    padding: .5rem .875rem;
}

/* "Change" — a control label with a verb, on the button a golfer presses to correct a score
   they already entered. Read text, not furniture. Was a raw .8125rem. */
.gs-change-btn[b-he383av14i] {
    margin-left: auto;
    background: none;
    border: 1px solid var(--b9-border, #334155);
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: .25rem .625rem;
    border-radius: 6px;
    cursor: pointer;
}

.gs-change-btn:hover[b-he383av14i] { background: var(--brand-soft, rgba(34,197,94,.1)); }

/* ── Selected-score readout ──────────────────────────────────── */
.gs-score-readout[b-he383av14i] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .15rem;
    margin: .25rem 0 1rem;
}

.gs-score-readout-num[b-he383av14i] {
    position: relative;
    font-size: 3.25rem;
    font-weight: 700;
    line-height: 1;
    color: var(--text-primary, #f1f5f9);
    padding: .15rem .55rem;
}

.gs-score-readout-label[b-he383av14i] {
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--b9-primary-text);
    text-transform: uppercase;
}

/* Read-only readout (finalized or scoring closed): calm, muted, non-interactive */
.gs-score-readout--locked .gs-score-readout-num[b-he383av14i] { color: var(--text-secondary, #cbd5e1); }
.gs-score-readout-num--empty[b-he383av14i] { color: var(--text-muted, #94a3b8); }
.gs-score-readout-label--muted[b-he383av14i] {
    color: var(--text-muted, #94a3b8);
    text-transform: none;
    font-weight: 600;
}

/* ── Fine-adjust stepper (only shown for 10+) ────────────────── */
.gs-tenplus-adjust[b-he383av14i] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin: 0 0 1.25rem;
}

.gs-adj-btn[b-he383av14i] {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    border: 2px solid var(--b9-border, #334155);
    background: var(--bg-elevated, #1e293b);
    color: var(--text-primary, #f1f5f9);
    font-size: 1.75rem;
    font-weight: 300;
    cursor: pointer;
    transition: background .12s, border-color .12s;
    display: flex;
    align-items: center;
    justify-content: center;
}

.gs-adj-btn:hover:not(:disabled)[b-he383av14i] {
    background: var(--b9-surface-muted, #334155);
    border-color: var(--brand, #22c55e);
}

.gs-adj-btn:disabled[b-he383av14i] { opacity: .3; cursor: not-allowed; }

.gs-tenplus-val[b-he383av14i] {
    min-width: 64px;
    font-size: 2.5rem;
    font-weight: 700;
    text-align: center;
    color: var(--text-primary, #f1f5f9);
    line-height: 1;
}

/* ── Quick-tap number grid ───────────────────────────────────── */
.gs-quick-grid[b-he383av14i] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .5rem;
    margin-bottom: 1.25rem;
}

.gs-quick-btn[b-he383av14i] {
    position: relative;
    height: 72px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    border-radius: 10px;
    border: 1px solid var(--b9-border, #334155);
    background: var(--bg-elevated, #1e293b);
    color: var(--text-secondary, #cbd5e1);
    cursor: pointer;
    transition: background .1s, border-color .1s, color .1s;
}

.gs-quick-num[b-he383av14i] {
    position: relative;
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1;
    padding: 2px 6px;
}

.gs-quick-label[b-he383av14i] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    line-height: 1;
    color: var(--text-muted, #94a3b8);
    text-transform: uppercase;
    letter-spacing: .02em;
}

.gs-quick-btn:hover:not(:disabled)[b-he383av14i] {
    background: var(--b9-surface-muted, #334155);
    color: var(--text-primary, #f1f5f9);
}

.gs-quick-btn:disabled[b-he383av14i] { opacity: .35; cursor: not-allowed; }

.gs-quick-btn--active[b-he383av14i] {
    background: var(--brand, #22c55e);
    border-color: var(--brand, #22c55e);
    color: #000;
}

.gs-quick-btn--active .gs-quick-label[b-he383av14i] { color: rgba(0,0,0,.65); }

/* Full-width "10+" escape hatch for a big hole.

   Was height: 52px against the lock's RULED score-key height of 64px, whose own table entry
   says it covers "every overflow key". This is the one web scoring surface no test watches:
   ScoringScreenLayoutContractTests enforces the four MAUI XAML pages only, so the web guest
   card drifted with nobody looking. MyScorecard's equivalent key already carries the comment
   "Three of the eight mockups shrank it, which is exactly the drift ScoreKeyMin exists to
   stop" — and this was the fourth. min-height, not height: a floor, never a budget line. */
.gs-quick-btn--more[b-he383av14i] {
    grid-column: 1 / -1;
    min-height: var(--score-key-min, 64px);
    flex-direction: row;
    gap: .4rem;
}
.gs-quick-btn--more .gs-quick-num[b-he383av14i] { font-size: 1.25rem; }

/* ── Golf notation rings (circle = under par, square = over) ──── */
/* Drawn around the number span so the ring hugs the digit, not the whole button. */
.gs-mark-circle .gs-quick-num[b-he383av14i]::after,
.gs-mark-double-circle .gs-quick-num[b-he383av14i]::after,
.gs-mark-square .gs-quick-num[b-he383av14i]::after,
.gs-mark-double-square .gs-quick-num[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-circle[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-double-circle[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-square[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-double-square[b-he383av14i]::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    border: 2px solid currentColor;
    opacity: .9;
}

.gs-mark-circle .gs-quick-num[b-he383av14i]::after,
.gs-mark-double-circle .gs-quick-num[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-circle[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-double-circle[b-he383av14i]::after {
    border-radius: 999px;
}

.gs-mark-square .gs-quick-num[b-he383av14i]::after,
.gs-mark-double-square .gs-quick-num[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-square[b-he383av14i]::after,
.gs-score-readout-num.gs-mark-double-square[b-he383av14i]::after {
    border-radius: 3px;
}

/* Double = a second outer ring */
.gs-mark-double-circle .gs-quick-num[b-he383av14i]::before,
.gs-mark-double-square .gs-quick-num[b-he383av14i]::before,
.gs-score-readout-num.gs-mark-double-circle[b-he383av14i]::before,
.gs-score-readout-num.gs-mark-double-square[b-he383av14i]::before {
    content: "";
    position: absolute;
    inset: -4px;
    pointer-events: none;
    border: 2px solid currentColor;
    opacity: .55;
}
.gs-mark-double-circle .gs-quick-num[b-he383av14i]::before,
.gs-score-readout-num.gs-mark-double-circle[b-he383av14i]::before { border-radius: 999px; }
.gs-mark-double-square .gs-quick-num[b-he383av14i]::before,
.gs-score-readout-num.gs-mark-double-square[b-he383av14i]::before { border-radius: 3px; }

/* ── Save button ─────────────────────────────────────────────── */
.gs-save-btn[b-he383av14i] {
    display: block;
    width: 100%;
    min-height: 60px;
    background: var(--brand, #22c55e);
    color: #000;
    font-size: 1.125rem;
    font-weight: 700;
    border: none;
    border-radius: 14px;
    cursor: pointer;
    margin-bottom: 1rem;
    transition: opacity .15s;
}

.gs-save-btn:hover:not(:disabled)[b-he383av14i] { opacity: .88; }
.gs-save-btn:disabled[b-he383av14i] { opacity: .45; cursor: not-allowed; }

/* ── Progress dots — DELETED 2026-09-16 ──────────────────────────
   The 18-button hole-jump grid and its section heading are gone, per design 07
   (Reports/ScoringDesign/07-web-guest-casual.html), which renders nothing after the keypad,
   "not the dots". Each dot also measured 36x48 — 12px under the touch floor on the axis a
   thumb misses, on a control whose tap SAVES a score, so a mis-tap wrote a real number onto
   the wrong hole. Widening was not the fix: free at 390px, +54px at 414px and up, where it
   destroys the front-nine / back-nine split.

   Jumping to a hole survives on a bigger target — "View full card" lists every hole and
   GoToHoleFromCard takes you there. The rules are removed rather than left orphaned so
   guard-dead-css.sh has nothing to find and nobody re-attaches markup to them. */

/* ── Nav row ─────────────────────────────────────────────────── */
.gs-nav-row[b-he383av14i] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .75rem 1.25rem;
    border-top: 1px solid var(--b9-border, #1e293b);
}

/* "← Prev" / "Next →" — the most-pressed pair on the guest card, measured 91.7x44 live.
   The explicit 44 beat app.css's global button floor because a scoped selector is more
   specific, so the app-wide rule never reached it. */
.gs-nav-btn[b-he383av14i] {
    min-height: var(--touch-target-min, 48px);
    padding: .5rem 1.25rem;
    background: var(--bg-elevated, #1e293b);
    border: 1px solid var(--b9-border, #334155);
    border-radius: 10px;
    color: var(--text-secondary, #cbd5e1);
    font-size: .9375rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .1s;
}

.gs-nav-btn:hover:not(:disabled)[b-he383av14i] { background: var(--b9-surface-muted, #334155); }
.gs-nav-btn:disabled[b-he383av14i] { opacity: .3; cursor: not-allowed; }

/* "18 / 18 holes" — the readout telling a golfer how much of the round is in. Read text. */
.gs-holes-done-label[b-he383av14i] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
}

/* ── All done panel ──────────────────────────────────────────── */
.gs-all-done[b-he383av14i] {
    margin: 1.5rem 1.25rem;
    background: var(--success-soft, rgba(34,197,94,.1));
    border: 1px solid var(--success, #22c55e);
    border-radius: 16px;
    padding: 2rem 1.5rem;
    text-align: center;
}

.gs-all-done-icon[b-he383av14i] { font-size: 2.5rem; margin-bottom: .5rem; }
.gs-all-done-title[b-he383av14i] { font-size: 1.375rem; font-weight: 700; margin-bottom: .25rem; }
.gs-all-done-sub[b-he383av14i] { font-size: .9375rem; color: var(--text-muted, #94a3b8); margin-bottom: 1.25rem; }

.gs-leaderboard-btn[b-he383av14i] {
    display: block;
    min-height: 56px;
    line-height: 56px;
    background: var(--brand, #22c55e);
    color: #000;
    font-size: 1rem;
    font-weight: 700;
    border-radius: 12px;
    text-decoration: none;
    margin-bottom: 1.25rem;
}

.gs-account-upsell[b-he383av14i] { font-size: .875rem; color: var(--text-muted, #94a3b8); }
.gs-account-upsell p[b-he383av14i] { margin: 0 0 .375rem; }
.gs-account-upsell a[b-he383av14i] { color: var(--b9-primary-text); text-decoration: underline; }

/* ── Soft account upsell banner ──────────────────────────────── */
.gs-upsell-banner[b-he383av14i] {
    margin: 0 1.25rem 1.5rem;
    background: var(--bg-elevated, #1e293b);
    border: 1px solid var(--b9-border, #334155);
    border-radius: 12px;
    padding: .875rem 1rem;
    display: flex;
    align-items: center;
    gap: .75rem;
}

.gs-upsell-text[b-he383av14i] {
    flex: 1;
    font-size: var(--font-size-sm);
    display: flex;
    flex-direction: column;
    gap: .125rem;
}

.gs-upsell-text strong[b-he383av14i] { color: var(--text-primary, #f1f5f9); }
.gs-upsell-text span[b-he383av14i]  { color: var(--text-muted, #94a3b8); }

.gs-upsell-actions[b-he383av14i] {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-shrink: 0;
}

.gs-upsell-cta[b-he383av14i] {
    background: var(--brand-soft, rgba(34,197,94,.15));
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 600;
    /* 🔴 Was 109x33 — the padding alone decided the height and left it 15px under the floor.
       The type pass that raised this from 13px never measured the BOX, because this banner only
       exists from the 3rd scored hole and the floor sweep never scores three. A state a few taps
       in is unmeasured unless something drives it there. */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    padding: .375rem .875rem;
    border-radius: 8px;
    text-decoration: none;
    white-space: nowrap;
}

.gs-upsell-cta:hover[b-he383av14i] { background: var(--brand-soft, rgba(34,197,94,.25)); }

/* These two anchors carried a class that NO rule anywhere declared — markup only. They rendered
   as bare inline links, measured 214x17, and they are the only conversion path on the whole
   guest card: "Get the free Back9Ops app" and "Create a free account". A class with no rule is
   invisible to a stylesheet sweep, because there is nothing to find. */
.gs-upsell-link[b-he383av14i] {
    display:     inline-flex;
    align-items: center;
    min-height:  var(--touch-target-min, 48px);
    color:       var(--b9-primary-text);
    font-size:   var(--font-size-sm);
    font-weight: 600;
    text-decoration: none;
}

.gs-upsell-link:hover[b-he383av14i] { text-decoration: underline; }

.gs-upsell-dismiss[b-he383av14i] {
    background: none;
    border: none;
    color: var(--text-muted, #94a3b8);
    font-size: 1rem;
    cursor: pointer;
    /* Was 20x48 — tall enough, 28px too narrow. A dismiss that is hard to hit is worse than most
       misses: it is the control someone reaches for BECAUSE they do not want this banner, and
       missing it puts them back in a round with the thing still on screen. */
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    padding: .25rem;
    line-height: 1;
}

/* ── Group team switcher ─────────────────────────────────────── */
.gs-group-switcher[b-he383av14i] {
    padding: .625rem 1.25rem;
    background: var(--bg-elevated, #1e293b);
    border-bottom: 1px solid var(--b9-border, #1e293b);
}

/* "Your group has 3 players — each shows their score for this hole. Tap one to enter it:"
   is a full instruction sentence, and it is the sentence that stops a stranger entering a
   score against the wrong person. It was 13px ALL CAPS with letter-spacing, which ran to
   three lines at 390px.

   Sentence case at 14px is narrower per character than 13px all-caps-plus-tracking, so it
   lands in TWO lines: the type gets bigger and the block gets ~17px SHORTER. Measured both
   ways at 390x844 before the change was made. */
.gs-group-switcher-label[b-he383av14i] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted, #94a3b8);
    display: block;
    margin-bottom: .5rem;
}

/* Unified segmented control — two teams sit in one container so the choice
   reads as a single "this team OR that team" toggle, not two stray buttons. */
.gs-segmented[b-he383av14i] {
    display: flex;
    border: 1px solid var(--b9-border, #334155);
    border-radius: 12px;
    overflow: hidden;
    background: var(--b9-surface, #0f172a);
}

/* One segment (inactive teams are links to their own scoring page) */
.gs-seg[b-he383av14i] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .15rem;
    min-height: 52px;
    padding: .45rem .625rem;
    font-size: .875rem;
    font-weight: 600;
    line-height: 1.15;
    text-align: center;
    text-decoration: none;
    color: var(--text-muted, #94a3b8);
    background: transparent;
    border: none;
    border-left: 1px solid var(--b9-border, #334155);
    cursor: pointer;
    transition: background .12s, color .12s;
}

.gs-seg:first-child[b-he383av14i] { border-left: none; }

/* Team name line + this-hole score line inside a segment */
.gs-seg-name[b-he383av14i] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
}
.gs-seg-score[b-he383av14i] {
    font-size: 1.0625rem;
    font-weight: 800;
    line-height: 1;
    opacity: .95;
}

a.gs-seg:hover[b-he383av14i] {
    background: var(--b9-surface-muted, #1e293b);
    color: var(--text-primary, #f1f5f9);
}

/* Active segment — fills its half with solid brand + high-contrast white text */
.gs-seg--active[b-he383av14i] {
    background: var(--brand, #1D4ED8);
    color: #fff;
    font-weight: 800;
    cursor: default;
}

.gs-seg-check[b-he383av14i] { font-weight: 900; line-height: 1; }

/* A group member with no QR code (read-only indicator) */
.gs-seg--no-url[b-he383av14i] {
    opacity: .5;
    cursor: not-allowed;
}

/* Persistent "who am I scoring" anchor — sits directly above the number pad
   with a brand left-border so the active team is impossible to lose track of. */
.gs-scoring-for[b-he383av14i] {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: 1rem;
    color: var(--text-secondary, #cbd5e1);
    background: var(--brand-soft, rgba(29,78,216,.15));
    border-left: 4px solid var(--brand, #1D4ED8);
    border-radius: 0 8px 8px 0;
    padding: .625rem .875rem;
    margin-bottom: 1rem;
}

.gs-scoring-for-label[b-he383av14i] { font-weight: 500; }

.gs-scoring-for-name[b-he383av14i] {
    color: var(--brand-text, #93C5FD);
    font-weight: 800;
}

/* Plain-language format reminder (mirrors the mobile app's format hint).
   Was 13px. "Scramble — enter ONE score for your team. Everyone shares it." is a sentence a
   stranger reads to find out what number to put in, not a status token — the read floor, not
   the chip floor. Measured: still two lines at 14px, the keypad moves down ~5px. */
.gs-format-hint[b-he383av14i] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #cbd5e1);
    background: var(--bg-elevated, #1e293b);
    border-radius: 8px;
    padding: .5rem .75rem;
    margin-bottom: .75rem;
}

/* ── Full-card review (parity with the mobile "View full card") ─────── */
.gs-fullcard[b-he383av14i] { padding: 1.25rem 1.25rem .5rem; }

.gs-fullcard-title[b-he383av14i] {
    font-size: .875rem;
    color: var(--text-muted, #94a3b8);
    margin-bottom: .875rem;
}

/* Front 9 / Back 9 headers with Out / In subtotals (18-hole cards) */
.gs-fc-nine-head[b-he383av14i] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin: 1.125rem 0 .5rem;
}
.gs-fc-nine-head:first-of-type[b-he383av14i] { margin-top: 0; }
.gs-fc-nine-label[b-he383av14i] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-secondary, #cbd5e1);
}
.gs-fc-nine-total[b-he383av14i] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--brand-text, #93C5FD);
}

.gs-fullcard-grid[b-he383av14i] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: .5rem;
}

.gs-fc-cell[b-he383av14i] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .1rem;
    padding: .625rem .25rem;
    border-radius: 10px;
    border: 1px solid var(--b9-border, #334155);
    background: var(--bg-elevated, #1e293b);
    cursor: pointer;
}

.gs-fc-cell--current[b-he383av14i] {
    border-color: var(--brand, #1D4ED8);
    background: var(--brand-soft, rgba(29,78,216,.15));
}

.gs-fc-hole[b-he383av14i] { font-size: var(--font-size-chip); font-weight: 600; color: var(--text-secondary, #cbd5e1); }
.gs-fc-par[b-he383av14i]  { font-size: var(--font-size-chip); color: var(--text-muted, #94a3b8); }

.gs-fc-score[b-he383av14i] {
    position: relative;
    font-size: 1.375rem;
    font-weight: 800;
    color: var(--text-primary, #f1f5f9);
    margin-top: .15rem;
}

/* Golf-notation ring/square on the review score (matches the keypad marks) */
.gs-fc-score.gs-mark-circle[b-he383av14i]::before,
.gs-fc-score.gs-mark-double-circle[b-he383av14i]::before,
.gs-fc-score.gs-mark-square[b-he383av14i]::before,
.gs-fc-score.gs-mark-double-square[b-he383av14i]::before {
    content: "";
    position: absolute;
    inset: -3px -7px;
    border: 2px solid currentColor;
    opacity: .8;
    pointer-events: none;
}
.gs-fc-score.gs-mark-circle[b-he383av14i]::before,
.gs-fc-score.gs-mark-double-circle[b-he383av14i]::before { border-radius: 999px; }
.gs-fc-score.gs-mark-square[b-he383av14i]::before,
.gs-fc-score.gs-mark-double-square[b-he383av14i]::before { border-radius: 3px; }

.gs-fullcard-total[b-he383av14i] {
    text-align: center;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    margin-top: 1rem;
}

/* Measured 350x44 live. The only door to the review-your-card screen, and it was under the
   floor for the same reason as .gs-nav-btn above. */
.gs-fullcard-toggle[b-he383av14i] {
    display: block;
    width: calc(100% - 2.5rem);
    min-height: var(--touch-target-min, 48px);
    margin: .5rem 1.25rem 0;
    background: transparent;
    border: 1px solid var(--b9-border, #334155);
    color: var(--text-secondary, #cbd5e1);
    font-size: .9375rem;
    font-weight: 600;
    border-radius: 10px;
    cursor: pointer;
}
.gs-fullcard-toggle:hover[b-he383av14i] { background: var(--bg-elevated, #1e293b); }

/* ── Animations ──────────────────────────────────────────────── */
@keyframes gs-fade-in-b-he383av14i {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Responsive tweaks (larger screens) ─────────────────────── */
@media (min-width: 600px) {
    .gs-score-shell[b-he383av14i] {
        padding-top: 1.5rem;
    }

    .gs-confirm-shell[b-he383av14i] {
        padding-top: 3rem;
    }
}

/* ── On-course games (one-tap "beat the leader") ─────────────── */
.gs-games[b-he383av14i] {
    margin-top: 1rem;
    padding: 1rem;
    border-radius: 1rem;
    background: var(--b9-surface, #0f172a);
    border: 1px solid var(--b9-border, #1e293b);
}

.gs-games-title[b-he383av14i] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: .75rem;
}

.gs-game[b-he383av14i] {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .75rem 0;
    border-top: 1px solid var(--b9-border, #1e293b);
}

.gs-game:first-of-type[b-he383av14i] { border-top: none; }

.gs-game-info[b-he383av14i] { flex: 1 1 auto; min-width: 0; }

.gs-game-name[b-he383av14i] {
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
}

/* Who leads and what the prize is — read text, so the 14px floor, not the chip token. It was a
   raw .85rem (13.6px), which no sweep caught because this block only draws while the round has
   an OPEN game; player-floors.spec.ts now mints a card that has one. .gs-game-prize inherits it. */
.gs-game-leader[b-he383av14i] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    margin-top: .125rem;
}

.gs-game-youlead[b-he383av14i] { color: var(--b9-primary-text); font-weight: 600; }
.gs-game-prize[b-he383av14i] { color: var(--text-muted, #94a3b8); }

/* The claim button is the primary action — large, obvious, ≥48px tall. Its ink is --brand-ink,
   the lettering brand-tokens.css pairs with --brand. It was a raw #06210f, picked when the brand
   was green and left behind when it turned blue: 2.54:1 on #1D4ED8, measured 2026-09-22.
   player-floors.spec.ts measures it in both themes. */
.gs-game-claim[b-he383av14i] {
    flex: 0 0 auto;
    min-height: 48px;
    padding: 0 1.1rem;
    border: none;
    border-radius: .75rem;
    background: var(--brand, #22c55e);
    color: var(--brand-ink);
    font-weight: 700;
    font-size: .95rem;
    cursor: pointer;
}

.gs-game-claim:active[b-he383av14i] { transform: scale(.98); }
.gs-game-claim:disabled[b-he383av14i] { opacity: .6; cursor: default; }

.gs-game-leading[b-he383av14i] {
    flex: 0 0 auto;
    color: var(--b9-primary-text);
    font-weight: 700;
    font-size: .9rem;
}

.gs-game--mine[b-he383av14i] {
    background: var(--brand-soft, rgba(34, 197, 94, .08));
    border-radius: .75rem;
    padding-left: .625rem;
    padding-right: .625rem;
}

/* ── Confirm my card (guest attestation) — on the full-card review ── */
.gs-confirm-block[b-he383av14i] {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--b9-border, #1e293b);
}

.gs-confirm-check[b-he383av14i] {
    display: flex;
    align-items: center;
    gap: .625rem;
    min-height: 48px;
    cursor: pointer;
    color: var(--text-primary, #f1f5f9);
    font-size: 1rem;
}

.gs-confirm-check input[type="checkbox"][b-he383av14i] {
    width: 24px;
    height: 24px;
    accent-color: var(--brand, #22c55e);
    flex: 0 0 auto;
    cursor: pointer;
}

.gs-confirm-btn[b-he383av14i] {
    display: block;
    width: 100%;
    min-height: 56px;
    margin-top: .75rem;
    background: var(--brand, #22c55e);
    color: #000;
    font-size: 1.0625rem;
    font-weight: 700;
    border: none;
    border-radius: 14px;
    cursor: pointer;
    transition: opacity .15s;
}

.gs-confirm-btn:hover:not(:disabled)[b-he383av14i] { opacity: .88; }
.gs-confirm-btn:active:not(:disabled)[b-he383av14i] { transform: scale(.99); }
.gs-confirm-btn:disabled[b-he383av14i] { opacity: .5; cursor: default; }

.gs-confirmed-state[b-he383av14i] {
    display: flex;
    align-items: flex-start;
    gap: .625rem;
    padding: .875rem 1rem;
    background: var(--brand-soft, rgba(34, 197, 94, .1));
    border: 1px solid var(--brand-soft, rgba(34, 197, 94, .2));
    border-radius: 12px;
}

.gs-confirmed-check[b-he383av14i] {
    color: var(--b9-primary-text);
    font-size: 1.25rem;
    font-weight: 800;
    line-height: 1.3;
    flex: 0 0 auto;
}

.gs-confirmed-text[b-he383av14i] { display: flex; flex-direction: column; gap: .15rem; }
.gs-confirmed-text strong[b-he383av14i] { color: var(--text-primary, #f1f5f9); font-size: 1rem; }
.gs-confirmed-time[b-he383av14i] { color: var(--text-muted, #94a3b8); font-size: .85rem; }

/* "Need help?" — the guest surface's only route to a human. A guest has no account, no app and
   no other screen, so this has to exist on both the dead end (error card) and the working
   scorecard. Quiet by design: it must never compete with the score keypad. */
.gs-help-link[b-he383av14i] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 1rem;
    color: var(--text-muted, #94a3b8);
    font-size: .95rem;
    text-decoration: underline;
}

.gs-help-link:hover[b-he383av14i],
.gs-help-link:focus-visible[b-he383av14i] {
    color: var(--text-primary, #f1f5f9);
}

.gs-help-footer[b-he383av14i] {
    display: flex;
    justify-content: center;
    padding: 1rem 0 2rem;
}

/* ── After the card is confirmed: the one offer we can honestly make ────────────────────────────
   Sits under the green "You confirmed your card" state, so it reads as what comes next rather than
   as something competing with the confirmation. Calm, not a sales banner — this is a golfer who has
   just finished 18 holes, not a landing page. Same tokens as the rest of the guest card. */
.gs-afterround[b-he383av14i] {
    margin-top: .875rem;
    padding: 1rem;
    background: var(--b9-surface-muted, #0f172a);
    border: 1px solid var(--b9-border, #1e293b);
    border-radius: 12px;
}

.gs-afterround-head[b-he383av14i] {
    font-weight: 600;
    font-size: 1.05rem;
    margin-bottom: .35rem;
}

.gs-afterround-body[b-he383av14i] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
    line-height: 1.5;
    margin: 0 0 .875rem;
}

/* 48px minimum touch target — this is a phone screen by definition; the golfer scanned a QR to
   get here. Block-level so the whole width is tappable rather than just the words. */
.gs-afterround-cta[b-he383av14i] {
    display: block;
    width: 100%;
    min-height: 48px;
    padding: .75rem 1rem;
    border-radius: 10px;
    background: var(--brand, #2563eb);
    color: var(--brand-text, #ffffff);
    font-weight: 600;
    text-align: center;
    text-decoration: none;
    box-sizing: border-box;
}

.gs-afterround-cta:hover[b-he383av14i],
.gs-afterround-cta:focus-visible[b-he383av14i] {
    filter: brightness(1.08);
    text-decoration: none;
}
/* /Components/Pages/Help.razor.rz.scp.css */
/* Canonical brand tokens only (--text-*, --border-*, --brand*, --bg-*), verified against
   wwwroot/css/brand-tokens.css.

   NOTE for whoever edits this next: the `--color-text-primary` / `--color-border` / `--color-accent`
   names used by some older pages DO NOT EXIST. They resolve to empty, which makes the whole
   declaration invalid, so `border: 1px solid var(--color-border)` silently renders as NO border at
   all. That is this project's known invisible-token bug class — it looks like a missing style, not
   a typo, so it survives review. Every custom property below was checked in the browser. */

.help-page[b-58fq31gzic] {
    padding: 2rem 1rem 4rem;
}

.help-inner[b-58fq31gzic] {
    max-width: 680px;
    margin: 0 auto;
}

.help-inner h1[b-58fq31gzic] {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 0.5rem;
    color: var(--text-primary);
}

.help-lede[b-58fq31gzic] {
    font-size: 1.05rem;
    line-height: 1.7;
    color: var(--text-secondary);
    margin-bottom: 2rem;
}

.help-card[b-58fq31gzic] {
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-lg);
    padding: 1.25rem 1.25rem 1.5rem;
    margin-bottom: 1.25rem;
}

.help-card h2[b-58fq31gzic] {
    font-size: 1.15rem;
    font-weight: 600;
    margin: 0 0 0.75rem;
    color: var(--text-primary);
}

/* Body copy sits a notch above the usual 0.95rem: this page is read by someone who is already
   frustrated, often outdoors, often on a small phone. */
.help-card p[b-58fq31gzic] {
    font-size: 1rem;
    line-height: 1.7;
    color: var(--text-secondary);
    margin: 0 0 0.75rem;
}

.help-card p:last-of-type[b-58fq31gzic] {
    margin-bottom: 0;
}

/* Scoped to links INSIDE paragraphs on purpose. As a bare `.help-card a` this rule is specificity
   (0,1,1) and silently beat `.help-action--primary` (0,1,0), painting the primary button's label
   light blue on the blue fill — unreadable, and invisible in the markup. The action buttons are
   direct children of the section, never inside a <p>, so the two rules can no longer collide. */
.help-card p a[b-58fq31gzic] {
    color: var(--brand-text, var(--brand));
    text-decoration: underline;
}

/* 48px minimum touch target, per the app-wide rule. */
.help-action[b-58fq31gzic] {
    display: inline-flex;
    align-items: center;
    min-height: 48px;
    margin-top: 1rem;
    padding: 0 1.25rem;
    border: 1px solid var(--border-strong);
    border-radius: var(--radius-full);
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-primary);
    text-decoration: none;
}

.help-action:hover[b-58fq31gzic],
.help-action:focus-visible[b-58fq31gzic] {
    border-color: var(--brand);
    color: var(--text-primary);
    text-decoration: none;
}

/* White on the brand blue is the house convention for a filled control (components.css:355,
   EventSetupSteps.razor.css:69) — there is no on-brand token. It is a foreground on a dark blue
   fill, not a hardcoded light background, so it stays correct in both themes. */
.help-action--primary[b-58fq31gzic] {
    background: var(--brand);
    border-color: var(--brand);
    color: #fff;
}

.help-action--primary:hover[b-58fq31gzic],
.help-action--primary:focus-visible[b-58fq31gzic] {
    background: var(--brand-hover);
    border-color: var(--brand-hover);
    color: #fff;
}

.help-card--contact[b-58fq31gzic] {
    border-color: var(--brand);
}
/* /Components/Pages/Home.razor.rz.scp.css */
/* ---------------------------------------------------------------------------------------
   X02 on the PUBLIC landing page, 2026-09-13.

   This file dresses two different audiences from one stylesheet: `landingv2-*` is the
   marketing page at "/" that anyone sees signed out, and `dash-*` / `etd-*` / `etable` /
   `nextup-*` are the club's operations dashboard at "/dashboard". Only the first is changed
   here.

   Measured on a 390px phone as an anonymous visitor: 88 elements under 14px on the page a
   club owner meets BEFORE they have an account. Seventeen feature bullets at 12.48px, eight
   headings at 13.12px, sentences at 11.2px, and the "See How It Works" link at 12.16px —
   the copy that has to sell a product whose own stated bar is a 90-year-old.

   The ops half of this file is NOT touched. Dense ops tables are held by the approved X03
   split until they get a "one action per row" pass, and raising type inside them moves
   column widths that need those pages driven to verify. Deferred, not dismissed — and 61
   elements under the floor on /dashboard, 249 on /events and 256 on /leagues/{id} are the
   size of what is waiting.
   --------------------------------------------------------------------------------------- */

/* ═══════════════════════════════════════════════════════════
   LANDING (unauthenticated)
═══════════════════════════════════════════════════════════ */
.landingv2[b-lhah5qi39q] {
    /* Marketing landing is always dark — regardless of user's theme preference */
    color-scheme: dark;
    min-height: 100vh;
    color: #f3f6fb;
    background:
        radial-gradient(1200px 500px at 88% -10%, rgba(29, 78, 216, 0.14), transparent 70%),
        radial-gradient(920px 440px at 2% 12%, rgba(34, 197, 94, 0.09), transparent 72%),
        #020617;
}

.landingv2-nav[b-lhah5qi39q] {
    position: sticky;
    top: 0;
    z-index: 20;
    max-width: 1180px;
    margin: 0 auto;
    height: 68px;
    padding: 0 1.1rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid rgba(255, 255, 255, 0.08);
    background: rgba(2, 6, 23, 0.88);
    backdrop-filter: blur(8px);
}


/* X03 on the front door, 2026-09-13. Every control a visitor might press on the way in was
   under the floor: the brand lockup at 32px, "Sign In" at 35, the header's "Start Free" at 36,
   "See How It Works" at 22, and six footer links at 21 — including the address someone taps to
   contact a human. The page's job is to convert a stranger; these are the only things on it
   that can be pressed. */
.landingv2-brand[b-lhah5qi39q],
.landingv2-nav-link[b-lhah5qi39q],
.landingv2-nav-btn[b-lhah5qi39q],
.landingv2-subtle-link[b-lhah5qi39q],
.landingv2-foot-links a[b-lhah5qi39q],
.landingv2-foot-bottom a[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    /* Width as well as height: "Sign in" is short enough that a 48px-tall link was still only
       46px WIDE, and a thumb needs both. .landingv2-foot-bottom carries the contact address,
       which sits in its own row rather than the links nav and was missed the first time. */
    min-height: var(--touch-target-min);
    min-width: var(--touch-target-min);
    justify-content: center;
}

.landingv2-brand[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
}

.landingv2-nav-actions[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

.landingv2-nav-link[b-lhah5qi39q] {
    color: var(--text-secondary, #c2cfdf);
    text-decoration: none;
    font-size: 0.88rem;
    font-weight: 600;
    padding: 0.42rem 0.65rem;
    border-radius: 8px;
}

.landingv2-nav-link:hover[b-lhah5qi39q] {
    color: var(--text-primary, #f3f6fb);
    background: rgba(255, 255, 255, 0.06);
}

.landingv2-nav-btn[b-lhah5qi39q] {
    color: #fff;
    background: var(--brand, #1d4ed8);
    text-decoration: none;
    font-size: 0.88rem;
    font-weight: 700;
    padding: 0.48rem 0.95rem;
    border-radius: 8px;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.18);
}

.landingv2-nav-btn:hover[b-lhah5qi39q] {
    background: var(--brand-hover, #2563eb);
    color: #fff;
}

.landingv2-main[b-lhah5qi39q] {
    max-width: 1180px;
    margin: 0 auto;
    padding: 1.8rem 1.1rem 4.4rem;
}

.landingv2-hero[b-lhah5qi39q] {
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 0.95fr);
    gap: 1.35rem;
    align-items: stretch;
    padding: 2.1rem 0 1.25rem;
}

.landingv2-hero-copy[b-lhah5qi39q] {
    padding: 1.2rem 0.18rem;
}

.landingv2-eyebrow[b-lhah5qi39q] {
    margin: 0 0 0.5rem;
    text-transform: uppercase;
    letter-spacing: 0.09em;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-secondary, #c2cfdf);
}

.landingv2-title[b-lhah5qi39q] {
    margin: 0;
    font-size: clamp(2.28rem, 5.2vw, 3.9rem);
    letter-spacing: -0.04em;
    line-height: 1.01;
    font-weight: 780;
    color: #f8fbff;
    max-width: 15ch;
}

.landingv2-aspire[b-lhah5qi39q] {
    margin: 0.72rem 0 0;
    font-size: 1.12rem;
    line-height: 1.45;
    color: #eaf2fb;
    font-weight: 620;
}

.landingv2-sub[b-lhah5qi39q] {
    margin: 0.55rem 0 0;
    max-width: 50ch;
    font-size: 0.98rem;
    line-height: 1.56;
    color: var(--text-helper, #b3c0d2);
}

.landingv2-cta-row[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.58rem;
    margin-top: 1.15rem;
}

.landingv2-cta-primary[b-lhah5qi39q],
.landingv2-cta-secondary[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* Was 46px — two short, on the button this entire page exists to get pressed. X03. */
    min-height: var(--touch-target-min);
    border-radius: 10px;
    text-decoration: none;
    font-size: 0.92rem;
    font-weight: 700;
    padding: 0.62rem 1.1rem;
}

.landingv2-cta-primary[b-lhah5qi39q] {
    color: #fff;
    background: linear-gradient(140deg, #1d4ed8 0%, #2563eb 100%);
    box-shadow: 0 8px 18px rgba(29, 78, 216, 0.28);
}

.landingv2-cta-primary:hover[b-lhah5qi39q] {
    color: #fff;
    background: linear-gradient(140deg, #1e40af 0%, #1d4ed8 100%);
}

/* Hero variant: larger primary, clearly subordinate secondary */
.landingv2-cta-primary--hero[b-lhah5qi39q] {
    min-height: 52px;
    font-size: 1rem;
    padding: 0.75rem 1.5rem;
    box-shadow: 0 10px 24px rgba(29, 78, 216, 0.36);
}

.landingv2-cta-secondary--hero[b-lhah5qi39q] {
    min-height: 44px;
    font-size: var(--font-size-sm);
    opacity: 0.82;
}

.landingv2-cta-secondary--hero:hover[b-lhah5qi39q] {
    opacity: 1;
}

.landingv2-cta-secondary[b-lhah5qi39q] {
    color: var(--text-primary, #f3f6fb);
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid rgba(255, 255, 255, 0.18);
}

.landingv2-cta-secondary:hover[b-lhah5qi39q] {
    color: var(--text-primary, #f3f6fb);
    background: rgba(255, 255, 255, 0.08);
}

.landingv2-signal-row[b-lhah5qi39q] {
    margin-top: 1rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.landingv2-signal[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.12);
    background: rgba(255, 255, 255, 0.03);
    color: var(--text-secondary, #c2cfdf);
    padding: 0.2rem 0.66rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.landingv2-hero-visual[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 16px;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.92) 0%, rgba(15, 23, 42, 0.8) 100%);
    box-shadow: 0 20px 38px rgba(0, 0, 0, 0.34), inset 0 1px 0 rgba(255, 255, 255, 0.05);
    padding: 0.84rem;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

/* ── Workflow steps (P3 hero visual) ────────────────────────── */
.landingv2-workflow[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    gap: 0;
}

.landingv2-workflow-step[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.72rem 0.62rem;
    border-bottom: 1px solid rgba(255, 255, 255, 0.07);
}

.landingv2-workflow-step:first-child[b-lhah5qi39q] { border-top: none; }

.landingv2-workflow-step--final[b-lhah5qi39q] { border-bottom: none; }

.landingv2-workflow-num[b-lhah5qi39q] {
    flex-shrink: 0;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: rgba(29, 78, 216, 0.18);
    border: 1px solid rgba(59, 130, 246, 0.32);
    color: #bfdbfe;
    font-size: var(--font-size-chip);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
}

.landingv2-workflow-body[b-lhah5qi39q] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.landingv2-workflow-body strong[b-lhah5qi39q] {
    display: block;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: #ecf3fc;
    line-height: 1.2;
}

.landingv2-workflow-body span[b-lhah5qi39q] {
    display: block;
    font-size: var(--font-size-sm);
    color: #8fa5be;
    line-height: 1.3;
}

.landingv2-workflow-badge[b-lhah5qi39q] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    min-height: 20px;
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid rgba(255, 255, 255, 0.12);
    color: #9fb0c4;
}

.landingv2-workflow-badge--live[b-lhah5qi39q] {
    background: rgba(34, 197, 94, 0.12);
    border-color: rgba(34, 197, 94, 0.34);
    color: #86efac;
}

.landingv2-workflow-badge--done[b-lhah5qi39q] {
    background: rgba(29, 78, 216, 0.14);
    border-color: rgba(59, 130, 246, 0.34);
    color: #bfdbfe;
}

.landingv2-ui-panel[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 12px;
    padding: 0.62rem 0.68rem;
    background: rgba(2, 6, 23, 0.52);
}

.landingv2-ui-panel header[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.35rem;
    margin-bottom: 0.34rem;
    color: #ecf3fc;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.landingv2-ui-panel header strong[b-lhah5qi39q] {
    color: #9fb0c4;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.landingv2-ui-row[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: var(--font-size-sm);
    color: #c8d5e6;
    padding: 0.18rem 0;
    border-top: 1px solid rgba(255, 255, 255, 0.06);
}

.landingv2-ui-row:first-of-type[b-lhah5qi39q] {
    border-top: none;
}

.landingv2-chip-row[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
}

.landingv2-chip-row span[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0.09rem 0.38rem;
    border-radius: 999px;
    background: rgba(29, 78, 216, 0.16);
    border: 1px solid rgba(29, 78, 216, 0.34);
    color: #bfdbfe;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.landingv2-ui-foot[b-lhah5qi39q] {
    color: #adc0d8;
    font-size: var(--font-size-sm);
    line-height: 1.42;
}

.landingv2-trust[b-lhah5qi39q] {
    margin-top: 1.2rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.68rem;
}

.landingv2-trust-item[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    padding: 0.72rem 0.78rem;
    background: rgba(15, 23, 42, 0.52);
}

.landingv2-trust-item strong[b-lhah5qi39q] {
    display: block;
    color: #f1f6fe;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.landingv2-trust-item span[b-lhah5qi39q] {
    display: block;
    margin-top: 0.16rem;
    color: #b3c0d2;
    font-size: var(--font-size-sm);
}

.landingv2-act[b-lhah5qi39q] {
    margin-top: 1.25rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 16px;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.84) 0%, rgba(15, 23, 42, 0.62) 100%);
    box-shadow: 0 14px 30px rgba(0, 0, 0, 0.26);
    padding: 1.05rem;
}

.landingv2-act:target[b-lhah5qi39q],
.landingv2-act.tour-arrived[b-lhah5qi39q] {
    border-color: rgba(37, 99, 235, 0.45);
    box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.18), 0 14px 30px rgba(0, 0, 0, 0.26);
}

.landingv2-act-head[b-lhah5qi39q] {
    max-width: 72ch;
}

.landingv2-act-head h2[b-lhah5qi39q] {
    margin: 0;
    color: #f8fbff;
    font-size: clamp(1.38rem, 2.9vw, 2rem);
    letter-spacing: -0.02em;
    line-height: 1.12;
    font-weight: 760;
}

.landingv2-act-head p[b-lhah5qi39q] {
    margin: 0.34rem 0 0;
    color: #b3c0d2;
    font-size: 0.9rem;
    line-height: 1.52;
}

.landingv2-split-grid[b-lhah5qi39q] {
    margin-top: 0.86rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.68rem;
}

.landingv2-split-card[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    padding: 0.88rem;
    background: rgba(255, 255, 255, 0.02);
}

.landingv2-split-card h3[b-lhah5qi39q] {
    margin: 0;
    font-size: 1rem;
    font-weight: 720;
    color: #f3f8ff;
}

.landingv2-split-card p[b-lhah5qi39q] {
    margin: 0.38rem 0 0;
    font-size: var(--font-size-sm);
    line-height: 1.5;
    color: #c3d0e1;
}

.landingv2-split-card ul[b-lhah5qi39q] {
    margin: 0.54rem 0 0;
    padding-left: 1rem;
    display: grid;
    gap: 0.3rem;
}

.landingv2-split-card li[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    line-height: 1.42;
    color: #d3e0ef;
}

.landingv2-split-ops[b-lhah5qi39q] {
    border-color: rgba(59, 130, 246, 0.34);
}

.landingv2-split-player[b-lhah5qi39q] {
    border-color: rgba(34, 197, 94, 0.3);
}

.landingv2-flow-track[b-lhah5qi39q] {
    margin: 0.85rem 0 0;
    padding: 0;
    list-style: none;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.52rem;
}

.landingv2-flow-track li[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.02);
    padding: 0.64rem 0.7rem 0.72rem;
    min-height: 132px;
}

.landingv2-flow-track h3[b-lhah5qi39q] {
    margin: 0.22rem 0 0;
    color: #f1f6fe;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.landingv2-flow-track p[b-lhah5qi39q] {
    margin: 0.25rem 0 0;
    color: #b3c0d2;
    font-size: var(--font-size-sm);
    line-height: 1.36;
}

.landingv2-flow-minute li[b-lhah5qi39q] {
    position: relative;
}

.landingv2-flow-minute[b-lhah5qi39q] {
    position: relative;
}

.landingv2-flow-minute[b-lhah5qi39q]::before {
    content: "";
    position: absolute;
    left: 1.1rem;
    right: 1.1rem;
    top: 0.38rem;
    height: 2px;
    border-radius: 2px;
    background: linear-gradient(90deg, rgba(29, 78, 216, 0.16) 0%, rgba(29, 78, 216, 0.58) 100%);
}

.landingv2-flow-minute li[b-lhah5qi39q]::before {
    content: "";
    position: absolute;
    left: 0.72rem;
    right: 0.72rem;
    top: 0.58rem;
    height: 2px;
    border-radius: 2px;
    background: linear-gradient(90deg, rgba(29, 78, 216, 0.08) 0%, rgba(29, 78, 216, 0.5) 100%);
}

.landingv2-flow-minute h3[b-lhah5qi39q],
.landingv2-flow-minute p[b-lhah5qi39q] {
    position: relative;
    z-index: 1;
}

.landingv2-flow-time[b-lhah5qi39q] {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0.05rem 0.38rem;
    border-radius: 999px;
    border: 1px solid rgba(147, 197, 253, 0.36);
    background: rgba(30, 64, 175, 0.18);
    color: #bfdbfe;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.03em;
}

.landingv2-moat-grid[b-lhah5qi39q] {
    margin-top: 0.82rem;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.56rem;
}

.landingv2-moat-card[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.11);
    border-radius: 11px;
    background: rgba(255, 255, 255, 0.02);
    padding: 0.74rem 0.7rem;
}

.landingv2-moat-card h3[b-lhah5qi39q] {
    margin: 0;
    font-size: var(--font-size-sm);
    color: #ecf4fd;
    font-weight: 690;
}

.landingv2-moat-card p[b-lhah5qi39q] {
    margin: 0.32rem 0 0;
    font-size: var(--font-size-sm);
    line-height: 1.42;
    color: #b6c4d6;
}

.landingv2-compare-grid[b-lhah5qi39q] {
    margin-top: 0.86rem;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.58rem;
}

.landingv2-compare-col[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    padding: 0.74rem 0.82rem;
    background: rgba(255, 255, 255, 0.02);
}

.landingv2-compare-col h3[b-lhah5qi39q] {
    margin: 0;
    font-size: 0.92rem;
    font-weight: 700;
}

.landingv2-compare-col ul[b-lhah5qi39q] {
    margin: 0.46rem 0 0;
    padding-left: 1rem;
    display: grid;
    gap: 0.32rem;
}

.landingv2-compare-col li[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: #c4d1e1;
    line-height: 1.4;
}

.landingv2-compare-col.legacy h3[b-lhah5qi39q] {
    color: #fca5a5;
}

.landingv2-compare-col.modern h3[b-lhah5qi39q] {
    color: #86efac;
}

.landingv2-proof-grid[b-lhah5qi39q] {
    margin-top: 0.86rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.58rem;
}

.landingv2-proof-card[b-lhah5qi39q] {
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.02);
    padding: 0.74rem 0.78rem;
}

.landingv2-proof-card h3[b-lhah5qi39q] {
    margin: 0;
    font-size: 0.92rem;
    color: #f1f6fe;
    font-weight: 700;
}

.landingv2-proof-card p[b-lhah5qi39q],
.landingv2-proof-card li[b-lhah5qi39q] {
    margin: 0.36rem 0 0;
    color: #b8c5d7;
    font-size: var(--font-size-sm);
    line-height: 1.44;
}

.landingv2-proof-card ul[b-lhah5qi39q] {
    margin: 0.36rem 0 0;
    padding-left: 1rem;
}

.landingv2-final-cta[b-lhah5qi39q] {
    margin-top: 0.96rem;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(29, 78, 216, 0.12) 0%, rgba(15, 23, 42, 0.44) 100%);
    padding: 0.9rem 0.94rem;
}

.landingv2-final-cta h3[b-lhah5qi39q] {
    margin: 0;
    color: #f8fbff;
    font-size: 1.1rem;
    font-weight: 740;
}

.landingv2-final-cta p[b-lhah5qi39q] {
    margin: 0.32rem 0 0;
    color: #bfccdd;
    font-size: var(--font-size-sm);
    line-height: 1.5;
}

.landingv2-subtle-link[b-lhah5qi39q] {
    display: inline-flex;
    margin-top: 0.48rem;
    color: #bcd0e7;
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 600;
    border-bottom: 1px solid rgba(188, 208, 231, 0.42);
}

.landingv2-subtle-link:hover[b-lhah5qi39q] {
    color: #d9e8fa;
    border-bottom-color: rgba(217, 232, 250, 0.72);
}

.landingv2 a:focus-visible[b-lhah5qi39q] {
    outline: none;
    box-shadow: 0 0 0 3px rgba(29, 78, 216, 0.34);
}

@media (max-width: 1000px) {
    .landingv2-hero[b-lhah5qi39q] {
        grid-template-columns: 1fr;
    }

    .landingv2-title[b-lhah5qi39q] {
        max-width: 20ch;
    }

    .landingv2-split-grid[b-lhah5qi39q],
    .landingv2-flow-track[b-lhah5qi39q],
    .landingv2-trust[b-lhah5qi39q],
    .landingv2-proof-grid[b-lhah5qi39q],
    .landingv2-compare-grid[b-lhah5qi39q],
    .landingv2-moat-grid[b-lhah5qi39q] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 680px) {
    .landingv2-nav[b-lhah5qi39q] {
        height: auto;
        padding-top: 0.68rem;
        padding-bottom: 0.68rem;
        flex-wrap: wrap;
        gap: 0.52rem;
    }

    .landingv2-main[b-lhah5qi39q] {
        padding-top: 0.84rem;
    }

    .landingv2-flow-track[b-lhah5qi39q],
    .landingv2-trust[b-lhah5qi39q],
    .landingv2-proof-grid[b-lhah5qi39q],
    .landingv2-compare-grid[b-lhah5qi39q],
    .landingv2-split-grid[b-lhah5qi39q],
    .landingv2-moat-grid[b-lhah5qi39q] {
        grid-template-columns: 1fr;
    }

    .landingv2-hero-visual[b-lhah5qi39q] {
        grid-template-columns: 1fr;
    }

    .landingv2-title[b-lhah5qi39q] {
        font-size: clamp(1.92rem, 9vw, 2.6rem);
    }

    .landingv2-aspire[b-lhah5qi39q] {
        font-size: 1rem;
    }

    .landingv2-sub[b-lhah5qi39q] {
        font-size: 0.9rem;
    }

    .landingv2-flow-minute[b-lhah5qi39q]::before {
        display: none;
    }

    .landingv2-foot-top[b-lhah5qi39q] {
        flex-direction: column;
        gap: 0.9rem;
    }
}

/* ── Landing footer (self-contained) ─────────────────────── */
.landingv2-foot[b-lhah5qi39q] {
    max-width: 1180px;
    margin: 0 auto;
    padding: 1.5rem 1.1rem 2rem;
}

.landingv2-foot-top[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 1.4rem;
    padding-top: 1.3rem;
    border-top: 1px solid rgba(255, 255, 255, 0.1);
}

.landingv2-foot-brand[b-lhah5qi39q] {
    max-width: 46ch;
}

.landingv2-foot-brand p[b-lhah5qi39q] {
    margin: 0.55rem 0 0;
    color: #b3c0d2;
    font-size: var(--font-size-sm);
    line-height: 1.5;
}

.landingv2-foot-plans[b-lhah5qi39q] {
    color: #d8e4f3;
    font-weight: 600;
}

.landingv2-foot-links[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    align-content: flex-start;
    gap: 0.5rem 1.2rem;
}

.landingv2-foot-links a[b-lhah5qi39q] {
    color: #bcd0e7;
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.landingv2-foot-links a:hover[b-lhah5qi39q] {
    color: #e8f1fb;
}

.landingv2-foot-bottom[b-lhah5qi39q] {
    max-width: 1180px;
    margin: 1.2rem auto 0;
    padding-top: 0.85rem;
    border-top: 1px solid rgba(255, 255, 255, 0.07);
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 0.4rem;
    color: #8b99ad;
    font-size: var(--font-size-sm);
}

.landingv2-foot-bottom a[b-lhah5qi39q] {
    color: #bcd0e7;
    text-decoration: none;
    font-weight: 600;
}

.landingv2-foot-bottom a:hover[b-lhah5qi39q] {
    color: #e8f1fb;
}


/* ═══════════════════════════════════════════════════════════
   LOADING / ONBOARDING
═══════════════════════════════════════════════════════════ */
.dash-loading[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    padding: 4rem 1.5rem;
    color: var(--b9-text-muted);
    font-size: 0.875rem;
}

.dash-loading-copy[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    gap: 0.14rem;
    max-width: 32rem;
}

.dash-loading-title[b-lhah5qi39q] {
    color: var(--b9-text);
    font-weight: 600;
}

.dash-loading-sub[b-lhah5qi39q] {
    color: var(--b9-text-soft);
}

.dash-error[b-lhah5qi39q] {
    display: flex;
    justify-content: center;
    align-items: center;
    padding: 4rem 1.5rem;
}

.dash-error-card[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.5rem;
    max-width: 28rem;
}

.dash-error-icon[b-lhah5qi39q] {
    font-size: 2.5rem;
    margin-bottom: 0.5rem;
}

.dash-error-title[b-lhah5qi39q] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-primary);
}

.dash-error-sub[b-lhah5qi39q] {
    font-size: 0.875rem;
    color: var(--text-muted);
}

.dash-onboard[b-lhah5qi39q] {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    min-height: calc(100vh - 8rem);
    padding: 3rem 1.5rem;
}

.dash-onboard-card[b-lhah5qi39q] {
    background:
        radial-gradient(120% 90% at 8% 0%, color-mix(in srgb, var(--brand, #1d4ed8) 12%, transparent), transparent 68%),
        var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: var(--b9-card-radius);
    box-shadow: var(--b9-card-shadow-md);
    padding: 2.5rem 2rem;
    max-width: 560px;
    width: 100%;
}

.dash-onboard-header[b-lhah5qi39q] {
    text-align: center;
    margin-bottom: 2rem;
}

.dash-onboard-badge[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: color-mix(in srgb, var(--brand, #1d4ed8) 16%, var(--b9-card-bg));
    color: var(--text-primary, #f3f6fb);
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: 0.3rem 0.8rem;
    border-radius: 20px;
    margin-bottom: 1rem;
    letter-spacing: 0.02em;
    border: 1px solid color-mix(in srgb, var(--brand, #1d4ed8) 38%, transparent);
}

.dash-onboard-title[b-lhah5qi39q] {
    font-size: 1.35rem;
    font-weight: 800;
    color: var(--b9-text);
    margin-bottom: 0.4rem;
    line-height: 1.3;
}

.dash-onboard-sub[b-lhah5qi39q] {
    font-size: 0.875rem;
    color: var(--b9-text-muted);
    line-height: 1.6;
    margin: 0;
}

/* ── Onboarding step list ── */
.dash-onboard-steps[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.dash-onboard-step[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.9rem 1rem;
    border-radius: 10px;
    border: 1.5px solid var(--b9-card-border);
    background: var(--b9-card-bg);
    transition: box-shadow 0.15s;
}

.dash-step--active[b-lhah5qi39q] {
    border-color: color-mix(in srgb, var(--brand, #1d4ed8) 46%, var(--b9-card-border));
    background: color-mix(in srgb, var(--bg-elevated, #111827) 78%, var(--brand, #1d4ed8) 22%);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand, #1d4ed8) 24%, transparent);
}

.dash-step--pending[b-lhah5qi39q] {
    opacity: 0.84;
    background: color-mix(in srgb, var(--b9-card-bg) 92%, #0f172a 8%);
}

.dash-step-num[b-lhah5qi39q] {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--brand, #1d4ed8);
    color: #eaf2ff;
    font-size: var(--font-size-chip);
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.dash-step--pending .dash-step-num[b-lhah5qi39q] {
    background: color-mix(in srgb, var(--b9-card-bg) 72%, #334155 28%);
    color: #cbd5e1;
}

.dash-step-body[b-lhah5qi39q] {
    flex: 1;
    min-width: 0;
}

.dash-step-title[b-lhah5qi39q] {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--text-primary, #f3f6fb);
    margin-bottom: 0.15rem;
}

.dash-step-desc[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #c2cfdf);
    line-height: 1.4;
}

.dash-step--active .dash-step-title[b-lhah5qi39q] {
    color: #f8fbff;
}

.dash-step--active .dash-step-desc[b-lhah5qi39q] {
    color: #dbe9fa;
}

.dash-step--pending .dash-step-title[b-lhah5qi39q] {
    color: var(--b9-text);
}

.dash-step--pending .dash-step-desc[b-lhah5qi39q] {
    color: var(--b9-text-muted);
}

.dash-step-action[b-lhah5qi39q] {
    flex-shrink: 0;
    white-space: nowrap;
    font-weight: 700;
    box-shadow: 0 10px 20px rgba(29, 78, 216, 0.28);
    border-color: color-mix(in srgb, var(--brand, #1d4ed8) 55%, #ffffff 45%);
}

.dash-step-badge[b-lhah5qi39q] {
    flex-shrink: 0;
    font-size: var(--font-size-sm);
    color: #cbd5e1;
    font-weight: 600;
    white-space: nowrap;
}

.dash-onboard-footer[b-lhah5qi39q] {
    text-align: center;
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted);
    margin: 0;
}

/* legacy (keep for safety) */
.dash-onboard-icon[b-lhah5qi39q] {
    font-size: 2.25rem;
    color: var(--b9-primary-text);
    display: block;
    margin-bottom: 1rem;
}

.dash-onboard-text[b-lhah5qi39q] {
    font-size: 0.875rem;
    color: var(--b9-text-muted);
    margin-bottom: 1.5rem;
    line-height: 1.6;
}


/* ═══════════════════════════════════════════════════════════
   NEW-ORG SETUP GUIDE
   Shown inside the dashboard when the org has no data yet
═══════════════════════════════════════════════════════════ */
.dash-setup-guide[b-lhah5qi39q] {
    background: color-mix(in srgb, var(--brand, #1d4ed8) 8%, var(--b9-card-bg));
    border: 1px solid color-mix(in srgb, var(--brand, #1d4ed8) 28%, transparent);
    border-radius: 12px;
    padding: 1rem 1.25rem 1.25rem;
    margin-bottom: 1.5rem;
}

.dash-setup-header[b-lhah5qi39q] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.dash-setup-icon[b-lhah5qi39q] {
    font-size: 1.25rem;
    color: var(--b9-primary-text);
    flex-shrink: 0;
    margin-top: 1px;
}

.dash-setup-title[b-lhah5qi39q] {
    font-size: 0.96rem;
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.3;
}

.dash-setup-sub[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    margin-top: 0.15rem;
    line-height: 1.4;
}

.dash-setup-steps[b-lhah5qi39q] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.75rem;
}

/* Individual step card */
.dash-setup-step[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: var(--b9-card-bg);
    border: 1.5px solid var(--b9-card-border);
    border-radius: 10px;
    padding: 0.75rem 0.875rem;
    text-decoration: none;
    color: inherit;
    transition: box-shadow 0.15s, border-color 0.15s;
}

a.dash-setup-step--active[b-lhah5qi39q] {
    border-color: color-mix(in srgb, var(--brand, #1d4ed8) 48%, transparent);
    background: color-mix(in srgb, var(--brand, #1d4ed8) 10%, var(--b9-card-bg));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand, #1d4ed8) 20%, transparent);
}

a.dash-setup-step--active:hover[b-lhah5qi39q] {
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--brand, #1d4ed8) 32%, transparent);
    text-decoration: none;
    color: inherit;
}

.dash-setup-step--pending[b-lhah5qi39q] {
    opacity: 0.75;
    cursor: default;
}

.dash-setup-step-num[b-lhah5qi39q] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--brand, #1d4ed8);
    color: #eaf2ff;
    font-size: var(--font-size-chip);
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.dash-setup-step--pending .dash-setup-step-num[b-lhah5qi39q] {
    background: color-mix(in srgb, var(--b9-card-bg) 65%, #334155 35%);
    color: #94a3b8;
}

.dash-setup-step-body[b-lhah5qi39q] {
    flex: 1;
    min-width: 0;
}

.dash-setup-step-title[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-primary);
    line-height: 1.25;
    margin-bottom: 0.1rem;
}

.dash-setup-step-desc[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    line-height: 1.35;
}

.dash-setup-step-arrow[b-lhah5qi39q] {
    color: var(--b9-primary-text);
    flex-shrink: 0;
    font-size: var(--font-size-chip);
}

.dash-setup-step-badge[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted);
    flex-shrink: 0;
    white-space: nowrap;
}

/* Collapse to single column on small screens */
@media (max-width: 640px) {
    .dash-setup-steps[b-lhah5qi39q] {
        grid-template-columns: 1fr;
    }
}


/* ═══════════════════════════════════════════════════════════
   DASHBOARD SHELL
═══════════════════════════════════════════════════════════ */
.dash-page[b-lhah5qi39q] {
    padding: 1.5rem 1.75rem 3rem;
    max-width: 1320px;
}


/* ── Header ─────────────────────────────────────────────── */
.dash-header[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.dash-header-left[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

/* .dash-title is gone with the duplicate H1 it styled — the shell header carries the
   page title now. Scoped CSS for a class this component no longer renders is dead
   weight, so it is deleted rather than left to look load-bearing. */

.dash-org-pill[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--b9-text-soft);
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 20px;
    padding: 0.2rem 0.65rem;
    line-height: 1.5;
}

.dash-header-actions[b-lhah5qi39q] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-shrink: 0;
}


/* ═══════════════════════════════════════════════════════════
   WHAT IS NEXT (O04 / X09 / rethink R4)

   Five stat tiles used to be here — happening now, players, courses,
   leagues, upcoming — and on a 390px phone they were the whole first
   screen, so the commissioner met "how many things exist" when the
   question was "what do I do now". What sits here instead is the work:
   what is LIVE, then what is NEXT with its unfinished setup as one
   sentence, then what needs attention. The counts moved to .ops-stats
   at the very bottom of the page, and only when they say something.
═══════════════════════════════════════════════════════════ */
.dash-next[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-left: 4px solid var(--b9-primary);
    border-radius: 12px;
    padding: 0.9rem 1.05rem;
    margin-bottom: 1.25rem;
}

.dash-next-kicker[b-lhah5qi39q] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--b9-text-soft);
}

.dash-next-name[b-lhah5qi39q] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--b9-text);
}

.dash-next-when[b-lhah5qi39q] {
    margin: 0;
    font-size: 0.875rem;
    color: var(--b9-text-muted);
}

/* The one sentence. Full body size, because this is the line that decides
   what happens next and it has to survive being read at arm's length. */
.dash-next-todo[b-lhah5qi39q] {
    margin: 0.15rem 0 0.35rem;
    font-size: 1rem;
    line-height: 1.4;
    color: var(--b9-text);
}

.dash-next-todo--ready[b-lhah5qi39q] {
    color: var(--b9-success-text);
}

/* Secondary by design: this page's one brand fill is "New Event" in the header. */
.dash-next-action[b-lhah5qi39q] {
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0.5rem 1rem;
    border: 1px solid var(--b9-border-strong);
    border-radius: 10px;
    background: var(--b9-surface-raised);
    color: var(--b9-text);
    font-weight: 600;
    text-decoration: none;
}

.dash-next-action:hover[b-lhah5qi39q] {
    background: var(--b9-surface-alt);
    color: var(--b9-text);
    text-decoration: none;
}




/* ═══════════════════════════════════════════════════════════
   ATTENTION-NEEDED ROW
═══════════════════════════════════════════════════════════ */
/* No container box — the items float directly on the page background so the
   alerts read as crisp signals rather than a muddy panel. Stacked on a phone:
   each one is a full-width row a thumb cannot miss. */
.dash-attention-row[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0.5rem;
    padding: 0;
    background: transparent;
    border: none;
    margin-bottom: 1.25rem;
}

.dash-attention-label[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--b9-text-soft);
    white-space: nowrap;
    flex-shrink: 0;
}

/* A NEEDS-ATTENTION SIGNAL, NOT A BUTTON.
   The tint carries the status; the message stays in ordinary reading ink so it is
   legible in both themes; the status colour appears only on the icon and on the line
   that names the destination. 48px minimum, because this is something a person taps. */
.dash-attention-item[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    min-height: 48px;
    padding: 0.5rem 0.85rem;
    border-radius: 12px;
    border: 1px solid var(--b9-border);
    color: var(--b9-text);
    text-decoration: none;
    transition: border-color 0.15s;
}

.dash-attention-item:hover[b-lhah5qi39q] { border-color: var(--b9-border-strong); }

.dash-attention-item__icon[b-lhah5qi39q] {
    font-size: 1rem;
    line-height: 1;
    flex-shrink: 0;
}

.dash-attention-item__body[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    min-width: 0;
}

.dash-attention-item__text[b-lhah5qi39q] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--b9-text);
}

/* Where the tap goes, said out loud. */
.dash-attention-item__go[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.dash-attention-item__chev[b-lhah5qi39q] {
    margin-left: auto;
    flex-shrink: 0;
    color: var(--b9-text-soft);
    font-size: 0.9rem;
    line-height: 1;
}

/* Soft status tints — the -soft/-text token pairs, which both themes define.
   Never the solid --b9-danger / --b9-warning fill: a filled red control is this
   product's word for "destructive", and none of these delete anything. */
.dash-attention-item--warning[b-lhah5qi39q] { background: var(--b9-warning-soft); }
.dash-attention-item--warning .dash-attention-item__icon[b-lhah5qi39q],
.dash-attention-item--warning .dash-attention-item__go[b-lhah5qi39q] { color: var(--b9-warning-text); }

.dash-attention-item--danger[b-lhah5qi39q] { background: var(--b9-danger-soft); }
.dash-attention-item--danger .dash-attention-item__icon[b-lhah5qi39q],
.dash-attention-item--danger .dash-attention-item__go[b-lhah5qi39q] { color: var(--b9-danger-text); }

/* Draft events are information, not a warning — a quiet neutral surface. */
.dash-attention-item--muted[b-lhah5qi39q] { background: var(--b9-surface-muted); }
.dash-attention-item--muted .dash-attention-item__icon[b-lhah5qi39q],
.dash-attention-item--muted .dash-attention-item__go[b-lhah5qi39q] { color: var(--b9-text-muted); }

/* On a wide screen they sit side by side again; the 48px height stays. */
@media (min-width: 900px) {
    .dash-attention-row[b-lhah5qi39q] {
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
    }

    .dash-attention-item[b-lhah5qi39q] { flex: 0 1 auto; }
    .dash-attention-item__chev[b-lhah5qi39q] { margin-left: 0.35rem; }
}

/* ═══════════════════════════════════════════════════════════
   TWO-COLUMN LAYOUT
═══════════════════════════════════════════════════════════ */
.dash-body[b-lhah5qi39q] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 288px;
    gap: 1.25rem;
    align-items: start;
}

.dash-main[b-lhah5qi39q] {
    min-width: 0;
}

.dash-aside[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    position: sticky;
    top: 1.25rem;
    min-width: 0;
}


/* ═══════════════════════════════════════════════════════════
   SHARED CARD
═══════════════════════════════════════════════════════════ */
.dash-card[b-lhah5qi39q] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: 12px;
    box-shadow: var(--b9-card-shadow);
    overflow: hidden;
    min-width: 0;
}

.dash-card-header[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--b9-border);
}

.dash-card-title[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--b9-text-muted);
    /* The long card name is what gives, not the two-word link beside it. */
    min-width: 0;
}

/* "All events" is one phrase to a person, so it has to be one phrase to the line breaker too.
   In a space-between card header on a 390px phone the long card title took the room and squeezed
   this link to 75px, which broke it as "All" / "events" — two lines of a two-word link beside a
   heading. Held whole, and allowed to keep its width, it simply sits at the end of the row. */
.dash-see-all[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-link, var(--b9-primary));
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    white-space: nowrap;
    flex: 0 0 auto;
    transition: color 0.12s;
}

.dash-see-all:hover[b-lhah5qi39q] {
    color: var(--b9-primary-text);
    text-decoration: underline;
}


/* ═══════════════════════════════════════════════════════════
   LIVE ALERT BAR
═══════════════════════════════════════════════════════════ */
/* ═══════════════════════════════════════════════════════════
   LIVE EVENT COMMAND CARDS
═══════════════════════════════════════════════════════════ */

.live-events-section[b-lhah5qi39q] {
    margin-bottom: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    /* Offset so the "Happening Now" tile's #live-now jump doesn't tuck the
       section header under the top bar. */
    scroll-margin-top: 5rem;
}

.live-section-label[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-danger, #DC2626);
}

.live-command-card[b-lhah5qi39q] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    background: var(--bg-elevated);
    border: 1.5px solid var(--danger-soft);
    border-left: 4px solid var(--b9-danger, #DC2626);
    border-radius: 10px;
    padding: 0.875rem 1rem;
    box-shadow: 0 2px 8px rgba(220,38,38,0.12);
}

.live-cmd-left[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    flex: 2 1 22rem;
    min-width: 0;
}

/* The flex item that holds the name and its meta line. Without min-width:0 it refuses to
   shrink below its content, so a long event name pushed the whole dashboard sideways on a
   320px phone — the ellipsis on .live-cmd-name could never engage because its PARENT was
   the one that would not give. */
.live-cmd-text[b-lhah5qi39q] {
    min-width: 0;
}

.live-cmd-badge[b-lhah5qi39q] {
    flex-shrink: 0;
    background: var(--b9-danger, #DC2626);
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.1em;
    padding: 3px 7px;
    border-radius: 4px;
    animation: pulse-badge-b-lhah5qi39q 1.6s infinite;
}

@keyframes pulse-badge-b-lhah5qi39q {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.7; }
}

.live-cmd-name[b-lhah5qi39q] {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.live-cmd-meta[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-top: 2px;
    /* The course name and player count wrap rather than widen the card. */
    overflow-wrap: anywhere;
}

/* Neutral chip distinguishing an Event from a League round in the mixed live zone. */
.live-cmd-type[b-lhah5qi39q] {
    display: inline-block;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 1px 6px;
    border-radius: 4px;
    background: var(--bg-raised);
    color: var(--text-secondary, var(--text-muted));
    vertical-align: 1px;
}

.live-cmd-actions[b-lhah5qi39q] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    justify-content: flex-end;
    flex: 1 1 16rem;
    min-width: 0;
    max-width: 100%;
}

.live-cmd-actions .btn[b-lhah5qi39q] {
    white-space: nowrap;
}

/* X04/X05 (UX audit 2026-09-06): "Enter Scores" on a live card is the page's main action, so it
   is the brand blue like "New Event" — white on the old green measured 3.3:1, on blue 6.7:1. */
.live-cmd-btn-score[b-lhah5qi39q] {
    background: var(--b9-primary);
    color: var(--player-text-inverse);
    border: none;
    font-weight: 600;
}
.live-cmd-btn-score:hover[b-lhah5qi39q] { background: var(--b9-primary-hover); color: var(--player-text-inverse); }

.live-cmd-btn-lb[b-lhah5qi39q] {
    background: transparent;
    color: var(--warning-text);
    border: 1.5px solid rgba(251,191,36,0.45);
    font-weight: 600;
}
.live-cmd-btn-lb:hover[b-lhah5qi39q] { background: var(--warning-soft); }

.live-cmd-btn-manage[b-lhah5qi39q] {
    background: transparent;
    color: var(--text-muted);
    border: 1.5px solid var(--border-default);
    font-weight: 600;
}
.live-cmd-btn-manage:hover[b-lhah5qi39q] { background: var(--bg-raised); }

/* Keep the dot animation available for live-section-label */
.live-dot[b-lhah5qi39q] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--b9-danger, #DC2626);
    flex-shrink: 0;
    animation: pulse-live-b-lhah5qi39q 1.6s infinite;
}

@keyframes pulse-live-b-lhah5qi39q {
    0%   { box-shadow: 0 0 0 0   rgba(220,38,38,0.5); }
    70%  { box-shadow: 0 0 0 6px rgba(220,38,38,0); }
    100% { box-shadow: 0 0 0 0   rgba(220,38,38,0); }
}


/* ═══════════════════════════════════════════════════════════
   EVENTS TABLE
═══════════════════════════════════════════════════════════ */
.etable-wrap[b-lhah5qi39q] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.etable[b-lhah5qi39q] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
    table-layout: fixed;
    /* 🔴 `.etable-wrap` has declared `overflow-x: auto` since it was written, and it never once
       engaged: a `table-layout: fixed` table at `width: 100%` shrinks to its container instead of
       overflowing it, so the percentage columns collapsed rather than scrolling. At 390px that gave
       the 13% Status column 55px for a header needing 77px — an uppercase, letter-spaced "Status"
       cut to "Statu" with no ellipsis and nothing to hover. A min-width is what lets the wrapper do
       the job it was built for; the table then scrolls sideways inside its own box, which is the one
       exception the no-horizontal-overflow rule grants. Desktop is untouched — 100% is wider than
       this everywhere the ops shell runs. */
    min-width: 720px;
}

.etable thead th[b-lhah5qi39q] {
    padding: 0.55rem 1rem;
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--b9-text-muted);
    /* No dark header strip — sits on the card surface for a lighter, more
       readable header. */
    background: transparent;
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
}

.etable thead th:last-child[b-lhah5qi39q] {
    text-align: right;
}

.etable th:nth-child(1)[b-lhah5qi39q],
.etable td:nth-child(1)[b-lhah5qi39q] { width: 35%; }

.etable th:nth-child(2)[b-lhah5qi39q],
.etable td:nth-child(2)[b-lhah5qi39q] { width: 16%; }

.etable th:nth-child(3)[b-lhah5qi39q],
.etable td:nth-child(3)[b-lhah5qi39q] { width: 12%; }

.etable th:nth-child(4)[b-lhah5qi39q],
.etable td:nth-child(4)[b-lhah5qi39q] { width: 13%; }

.etable th:nth-child(5)[b-lhah5qi39q],
.etable td:nth-child(5)[b-lhah5qi39q] { width: 24%; }

.etable tbody tr[b-lhah5qi39q] {
    /* Barely-there divider — rows are separated by whitespace, not hard lines. */
    border-bottom: 1px solid rgba(255, 255, 255, 0.04);
    transition: background 0.1s;
}

.etable tbody tr:last-child[b-lhah5qi39q] {
    border-bottom: none;
}

.etable tbody tr:hover[b-lhah5qi39q] {
    background: var(--b9-surface-muted);
}

/* Live row: left accent + faint tint */
.erow-live[b-lhah5qi39q] {
    border-left: 3px solid var(--b9-danger);
    background: rgba(220, 38, 38, 0.03);
}

.etable td[b-lhah5qi39q] {
    padding: 0.75rem 1rem;
    color: var(--b9-text);
    vertical-align: middle;
}

/* Name + course stacked */
.etd-name[b-lhah5qi39q] {
    min-width: 180px;
}

.etd-name-link[b-lhah5qi39q] {
    display: block;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--b9-text);
    text-decoration: none;
    line-height: 1.3;
    transition: color 0.1s;
}

.etd-name-link:hover[b-lhah5qi39q] {
    color: var(--b9-primary-text);
    text-decoration: none;
}

/* Live row: name anchors the scan */
.erow-live .etd-name-link[b-lhah5qi39q] {
    font-weight: 700;
}

.etd-course[b-lhah5qi39q] {
    display: block;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-top: 0.1rem;
    line-height: 1.2;
}

.etd-date[b-lhah5qi39q] {
    white-space: nowrap;
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    overflow: hidden;
    text-overflow: ellipsis;
}

.etd-players[b-lhah5qi39q] {
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    overflow: hidden;
    text-overflow: ellipsis;
}

.etd-status-cell[b-lhah5qi39q] {
    white-space: nowrap;
}

.etd-actions[b-lhah5qi39q] {
    min-width: 0;
}

.etd-primary-action[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    padding: 0.45rem 0.75rem;
    min-height: 34px;
    border-radius: 8px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-primary-text);
    text-decoration: none;
    background: var(--b9-primary-soft);
    border: 1px solid transparent;
    transition: background 0.1s, color 0.1s, border-color 0.1s;
    white-space: nowrap;
    line-height: 1.2;
    box-shadow: inset 0 0 0 1px rgba(22, 163, 74, 0.08);
}

.etd-primary-action:hover[b-lhah5qi39q] {
    background: var(--success-soft);
    color: var(--b9-primary-text);
    text-decoration: none;
}

.etd-primary-action-live[b-lhah5qi39q] {
    background: var(--b9-primary);
    color: var(--player-text-inverse);
    box-shadow: none;
}

.etd-primary-action-live:hover[b-lhah5qi39q] {
    background: var(--b9-primary-hover);
    color: var(--player-text-inverse);
    text-decoration: none;
}

.etd-secondary-actions[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 0;
    margin-top: 0.4rem;
}

/* Quiet text links (dot-separated) rather than repeated bordered pills. */
.etd-secondary-action[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0;
    border: none;
    background: transparent;
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
    font-weight: 500;
    line-height: 1.15;
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.12s;
}

.etd-secondary-action:not(:first-child)[b-lhah5qi39q]::before {
    content: "·";
    margin: 0 0.45rem;
    color: var(--b9-text-soft);
    opacity: 0.5;
}

.etd-secondary-action:hover[b-lhah5qi39q] {
    background: transparent;
    color: var(--b9-text);
    text-decoration: none;
}

.etd-secondary-action-lb:hover[b-lhah5qi39q] {
    background: transparent;
    color: var(--b9-warning-text);
}

/* Calm (non-live) row actions — quiet, dot-separated text links. */
.etd-calm-actions[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    align-items: center;
    gap: 0;
}

.etd-calm-action[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    padding: 0.1rem 0;
    border: none;
    background: transparent;
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
    font-weight: 500;
    line-height: 1.15;
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.12s;
}

.etd-calm-action:not(:first-child)[b-lhah5qi39q]::before {
    content: "·";
    margin: 0 0.45rem;
    color: var(--b9-text-soft);
    opacity: 0.5;
}

.etd-calm-action:hover[b-lhah5qi39q] {
    background: transparent;
    color: var(--b9-text);
    text-decoration: none;
}

/* Table footer */
.etable-footer[b-lhah5qi39q] {
    padding: 0.625rem 1rem;
    border-top: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    text-align: right;
}


/* ── Status badges ──────────────────────────────────────── */
.estatus[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-sm);
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 20px;
    white-space: nowrap;
    letter-spacing: 0.02em;
}

.estatus-active[b-lhah5qi39q]    { background: var(--b9-danger-soft);      color: var(--b9-danger-text); }
.estatus-open[b-lhah5qi39q]      { background: var(--b9-success-soft);     color: var(--b9-success-text); }
.estatus-draft[b-lhah5qi39q]     { background: var(--b9-surface-muted);    color: var(--b9-text-soft); border: 1px solid var(--b9-border); }
.estatus-closed[b-lhah5qi39q]    { background: var(--b9-info-soft);        color: var(--b9-info-text); }
.estatus-cancelled[b-lhah5qi39q] { background: var(--b9-surface-muted);    color: var(--b9-text-soft); }
/* X14 — the day has been and gone and nobody started, moved or closed it. Amber, not red. */
.estatus-passed[b-lhah5qi39q]    { background: var(--b9-warning-soft);     color: var(--b9-warning-text); }

/* Live badge: pulsing dot prefix */
.estatus-active[b-lhah5qi39q]::before {
    content: '';
    display: inline-block;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: currentColor;
    margin-right: 5px;
    animation: pulse-live-b-lhah5qi39q 1.6s infinite;
}


/* ═══════════════════════════════════════════════════════════
   EMPTY STATE
═══════════════════════════════════════════════════════════ */
.dash-empty[b-lhah5qi39q] {
    text-align: center;
    padding: 2.5rem 1.5rem;
}

.dash-empty-icon[b-lhah5qi39q] {
    font-size: 2rem;
    color: var(--b9-text-soft);
    display: block;
    margin-bottom: 0.625rem;
}

.dash-empty-title[b-lhah5qi39q] {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--b9-text);
    margin-bottom: 0.25rem;
}

.dash-empty-text[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted);
    margin-bottom: 0;
}


/* ═══════════════════════════════════════════════════════════
   ASIDE: QUICK ACTIONS
═══════════════════════════════════════════════════════════ */
/* 2×2 grid of flat square buttons — icon centered above the label. Saves
   vertical space and reads as a modern action launcher. */
.qa-list[b-lhah5qi39q] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
    padding: 0.625rem;
}

.qa-item[b-lhah5qi39q] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    gap: 0.4rem;
    padding: 0.85rem 0.5rem;
    min-height: 78px;
    border-radius: 10px;
    border: 1px solid var(--b9-card-border);
    background: var(--b9-surface-muted);
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--b9-text);
    transition: background 0.1s, color 0.1s, border-color 0.1s;
    line-height: 1.25;
}

.qa-item:hover[b-lhah5qi39q] {
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    border-color: var(--b9-primary);
    text-decoration: none;
}

.qa-item-icon[b-lhah5qi39q] {
    font-size: 1.15rem;
    width: auto;
    text-align: center;
    flex-shrink: 0;
    opacity: 0.85;
}

/* Onboarding primary CTA: spans the full width as a horizontal accent button. */
.qa-item--primary[b-lhah5qi39q],
.qa-item-primary[b-lhah5qi39q] {
    grid-column: 1 / -1;
    flex-direction: row;
    gap: 0.5rem;
    min-height: 0;
    padding: 0.65rem 0.75rem;
    background: var(--b9-primary);
    color: #fff !important;
    font-weight: 600;
    border-color: transparent;
}

.qa-item--primary:hover[b-lhah5qi39q],
.qa-item-primary:hover[b-lhah5qi39q] {
    background: var(--b9-primary-hover) !important;
    color: #fff !important;
    border-color: transparent;
}

.qa-item--primary .qa-item-icon[b-lhah5qi39q],
.qa-item-primary .qa-item-icon[b-lhah5qi39q] {
    opacity: 1;
}

/* Hint text inside Quick Action items (e.g. "← Start here") */
.qa-item-hint[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 500;
    opacity: 0.75;
    margin-left: 0.25rem;
}

/* ═══════════════════════════════════════════════════════════
   ASIDE: TONIGHT COMMAND CARD
═══════════════════════════════════════════════════════════ */
.tonight-body[b-lhah5qi39q] {
    padding: 0.85rem 1rem 1rem;
    display: grid;
    gap: 0.55rem;
}

.tonight-empty[b-lhah5qi39q] {
    padding: 1rem;
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
}

.tonight-league[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.tonight-round[b-lhah5qi39q] {
    font-size: 0.96rem;
    font-weight: 700;
    color: var(--b9-text);
}

.tonight-date[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted);
}

.tonight-status-row[b-lhah5qi39q] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
}

.tonight-chip[b-lhah5qi39q] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: 2px 7px;
    border-radius: 999px;
    border: 1px solid var(--b9-border);
}

.tonight-chip-ok[b-lhah5qi39q] {
    background: var(--b9-success-soft);
    color: var(--b9-success-text);
}

.tonight-chip-warn[b-lhah5qi39q] {
    background: var(--b9-warning-soft);
    color: var(--b9-warning-text);
}

.tonight-chip-neutral[b-lhah5qi39q] {
    background: var(--b9-surface-muted);
    color: var(--b9-text-soft);
}

.tonight-cta[b-lhah5qi39q] {
    margin-top: 0.15rem;
    /* Subtle vertical gradient (lighter top → deep primary) so the full-width
       blue button has depth instead of reading as one flat, vibrating block. */
    background: linear-gradient(180deg, var(--b9-primary-hover) 0%, var(--b9-primary) 100%);
    border: 1px solid var(--b9-primary);
}

.tonight-cta:hover[b-lhah5qi39q] {
    background: linear-gradient(180deg, var(--b9-primary-hover) 0%, var(--b9-primary-hover) 100%);
    border-color: var(--b9-primary-hover);
}


/* ═══════════════════════════════════════════════════════════
   ASIDE: NEXT UP WIDGET
═══════════════════════════════════════════════════════════ */
.nextup-card[b-lhah5qi39q] {
    /* Widen the aside just enough for the widget to breathe */
}

/* ── Event rows ─────────────────────────────────────────── */
.nextup-list[b-lhah5qi39q] {
    padding: 0.25rem 0;
}

.nextup-row[b-lhah5qi39q] {
    padding: 0.875rem 1rem;
}

.nextup-divider[b-lhah5qi39q] {
    height: 1px;
    background: var(--b9-border);
    margin: 0 1rem;
}

/* ── Top: name + countdown ──────────────────────────────── */
.nextup-top[b-lhah5qi39q] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

.nextup-name-wrap[b-lhah5qi39q] {
    min-width: 0;
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.nextup-name[b-lhah5qi39q] {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--b9-text);
    text-decoration: none;
    line-height: 1.3;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.12s;
}

.nextup-name:hover[b-lhah5qi39q] {
    color: var(--b9-primary-text);
    text-decoration: none;
}

.nextup-fmt[b-lhah5qi39q] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--b9-info-text);
    background: var(--b9-info-soft);
    border-radius: 4px;
    padding: 1px 5px;
    display: inline-block;
    width: fit-content;
}

/* ── Countdown badge ────────────────────────────────────── */
.nextup-countdown[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 800;
    border-radius: 5px;
    padding: 2px 7px;
    white-space: nowrap;
    flex-shrink: 0;
    letter-spacing: 0.03em;
    line-height: 1.5;
}

.cd-today[b-lhah5qi39q]  { background: var(--b9-danger-soft);   color: var(--b9-danger-text);  }
.cd-soon[b-lhah5qi39q]   { background: var(--b9-warning-soft);  color: var(--b9-warning-text); }
.cd-far[b-lhah5qi39q]    { background: var(--b9-surface-muted); color: var(--b9-text-muted);   border: 1px solid var(--b9-border); }
.cd-past[b-lhah5qi39q]   { background: var(--b9-surface-muted); color: var(--b9-text-soft);    }

/* ── Meta line ──────────────────────────────────────────── */
.nextup-meta[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-bottom: 0.625rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ── Registration progress ──────────────────────────────── */
.nextup-reg[b-lhah5qi39q] {
    margin-bottom: 0.625rem;
}

.nextup-reg-header[b-lhah5qi39q] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 4px;
}

.nextup-reg-label[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted);
    display: flex;
    align-items: center;
    gap: 4px;
}

.nextup-reg-pct[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-text-soft);
}

.nextup-reg-pct-full[b-lhah5qi39q] {
    color: var(--b9-danger-text);
}

.nextup-full-badge[b-lhah5qi39q] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
    border-radius: 4px;
    padding: 1px 5px;
}

/* Progress bar track */
.nextup-progress[b-lhah5qi39q] {
    height: 5px;
    background: var(--b9-border);
    border-radius: 99px;
    overflow: hidden;
}

/* Progress bar fill */
.nextup-progress-fill[b-lhah5qi39q] {
    height: 100%;
    background: var(--b9-primary);
    border-radius: 99px;
    transition: width 0.4s ease;
    min-width: 2px;
}

.nextup-progress-warn[b-lhah5qi39q] { background: var(--b9-warning); }
.nextup-progress-full[b-lhah5qi39q] { background: var(--b9-danger);  }

/* Simple count (no max) */
.nextup-reg-simple[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-bottom: 0.5rem;
}

/* ── Action links ───────────────────────────────────────── */
.nextup-actions[b-lhah5qi39q] {
    display: flex;
    gap: 0.3rem;
    flex-wrap: wrap;
    margin-top: 0.125rem;
}

.nextup-btn[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-sm);
    font-weight: 600;
    padding: 3px 9px;
    border-radius: 5px;
    text-decoration: none;
    transition: background 0.12s, color 0.12s;
    line-height: 1.5;
    white-space: nowrap;
}

.nextup-btn-primary[b-lhah5qi39q] {
    background: var(--b9-primary);
    color: #fff;
}

.nextup-btn-primary:hover[b-lhah5qi39q] {
    background: var(--b9-primary-hover);
    color: #fff;
    text-decoration: none;
}

.nextup-btn-ghost[b-lhah5qi39q] {
    background: var(--b9-surface-muted);
    color: var(--b9-text-muted);
    border: 1px solid var(--b9-border);
}

.nextup-btn-ghost:hover[b-lhah5qi39q] {
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    border-color: transparent;
    text-decoration: none;
}

/* ── Empty state ────────────────────────────────────────── */
.nextup-empty[b-lhah5qi39q] {
    text-align: center;
    padding: 1.75rem 1rem;
    color: var(--b9-text-muted);
}

.nextup-empty .bi[b-lhah5qi39q] {
    font-size: 1.625rem;
    display: block;
    margin-bottom: 0.5rem;
    opacity: 0.35;
}

.nextup-empty p[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    margin: 0;
}

/* ── Footer: compact status chips ───────────────────────── */
.nextup-footer[b-lhah5qi39q] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 1rem 0.625rem;
    border-top: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
}

.nuf-chip[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--b9-text-muted);
}

.nuf-dot[b-lhah5qi39q] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}

.nuf-dot-draft[b-lhah5qi39q] { background: var(--b9-border-strong); }
.nuf-dot-open[b-lhah5qi39q]  { background: var(--b9-success); }

.nuf-link[b-lhah5qi39q] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    /* Contrast-safe link token (see .auth-forgot-link note). */
    color: var(--b9-link);
    text-decoration: none;
    margin-left: auto;
}

.nuf-link:hover[b-lhah5qi39q] { text-decoration: underline; }


/* ═══════════════════════════════════════════════════════════
   RESPONSIVE
═══════════════════════════════════════════════════════════ */
@media (max-width: 1100px) {
    .dash-body[b-lhah5qi39q] {
        grid-template-columns: 1fr;
    }

    .dash-aside[b-lhah5qi39q] {
        position: static;
        display: grid;
        grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
        gap: 1rem;
    }
}

@media (max-width: 1360px) {
    .live-cmd-actions[b-lhah5qi39q] {
        width: 100%;
        justify-content: flex-start;
    }

    .etable th:nth-child(2)[b-lhah5qi39q],
    .etable td:nth-child(2)[b-lhah5qi39q],
    .etable th:nth-child(3)[b-lhah5qi39q],
    .etable td:nth-child(3)[b-lhah5qi39q] {
        display: none;
    }

    .etable th:nth-child(1)[b-lhah5qi39q],
    .etable td:nth-child(1)[b-lhah5qi39q] { width: 44%; }

    .etable th:nth-child(4)[b-lhah5qi39q],
    .etable td:nth-child(4)[b-lhah5qi39q] { width: 18%; }

    .etable th:nth-child(5)[b-lhah5qi39q],
    .etable td:nth-child(5)[b-lhah5qi39q] { width: 38%; }
}

@media (max-width: 767px) {
    .dash-page[b-lhah5qi39q] {
        padding: 1rem 1rem 2rem;
    }

    /* X14 — every other status on this table is ONE word. "Date passed" is two, and these
       columns cannot widen for it: measured at 390px the nowrap pill ran 88px out of a 47px
       slot and sat on top of the "View Details" link beside it. It stacks onto two lines here
       instead, which brings it back to the width the one-word pills occupy. Full size — a pill
       nobody can read is not a fix. */
    .estatus-passed[b-lhah5qi39q] {
        white-space: normal;
        max-width: 4.6rem;
        text-align: center;
        line-height: 1.12;
    }

    .etd-date[b-lhah5qi39q],
    .etd-format[b-lhah5qi39q],
    .etd-players[b-lhah5qi39q] {
        display: none;
    }

    .dash-aside[b-lhah5qi39q] {
        grid-template-columns: 1fr;
    }

    .dash-onboard[b-lhah5qi39q] {
        padding: 1.25rem 0.8rem;
        min-height: auto;
    }

    .dash-onboard-card[b-lhah5qi39q] {
        padding: 1.3rem 1rem;
    }

    .dash-onboard-step[b-lhah5qi39q] {
        flex-wrap: wrap;
        align-items: flex-start;
        gap: 0.7rem;
    }

    .dash-step-action[b-lhah5qi39q],
    .dash-step-badge[b-lhah5qi39q] {
        width: 100%;
    }

    .dash-step-action[b-lhah5qi39q] {
        justify-content: center;
    }
}


/* Spectator door on the operator landing: one quiet line under the CTAs, not a third button. */
.landingv2-spectator-link[b-lhah5qi39q] {
    display: inline-flex;
    align-items: center;
    min-height: var(--touch-target-min, 48px);
    margin-top: 0.35rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    text-decoration: none;
}

.landingv2-spectator-link-cta[b-lhah5qi39q] {
    margin-left: 0.35rem;
    font-weight: 700;
    color: var(--b9-primary-text);
}

.landingv2-spectator-link:hover .landingv2-spectator-link-cta[b-lhah5qi39q] {
    text-decoration: underline;
}
/* /Components/Pages/JoinInvitation.razor.rz.scp.css */
/* Extracted inline styles (Blazor audit Batch G). */
.ji-error-box[b-qnt4vxhp9s] { border-left-color: var(--b9-danger); }
.ji-emoji[b-qnt4vxhp9s] { font-size: 2.5rem; margin-bottom: 0.5rem; }
/* /Components/Pages/Leagues/AttendanceStatusCard.razor.rz.scp.css */
.wrd-mini-card[b-dflgjx8ut6] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1, .25rem);
}

.wrd-mini-label[b-dflgjx8ut6] {
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
}

.wrd-mini-value[b-dflgjx8ut6] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary);
}

.wrd-mini-link[b-dflgjx8ut6],
.wrd-mini-sub[b-dflgjx8ut6] {
    font-size: .78rem;
    color: var(--text-secondary);
}
/* /Components/Pages/Leagues/CommissionerCommandCenter.razor.rz.scp.css */
/* ============================================================
   CommissionerCommandCenter.razor.css
   Commissioner Command Center — State+Action-first layout.
   Uses b9 design tokens. Dense but readable.
   ============================================================ */

/* ── Page shell ── */
.ccc-page[b-g3mity3656] {
    max-width: 900px;
    margin: 0 auto;
    padding: var(--space-4) var(--space-3) var(--space-8);
    display: flex;
    flex-direction: column;
    gap: var(--space-5);
}

.ccc-loading[b-g3mity3656],
.ccc-error[b-g3mity3656] {
    text-align: center;
    padding: var(--space-10) var(--space-4);
    color: var(--b9-text-secondary);
}

.ccc-loading-spinner[b-g3mity3656] {
    width: 36px;
    height: 36px;
    margin: 0 auto var(--space-3);
    border: 3px solid var(--b9-border);
    border-top-color: var(--b9-accent);
    border-radius: 50%;
    animation: spin-b-g3mity3656 0.7s linear infinite;
}

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

/* ── Breadcrumb ── */
.ccc-breadcrumb[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
}

.ccc-back-link[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    color: var(--b9-text-secondary);
    text-decoration: none;
    transition: color 140ms;
}

.ccc-back-link:hover[b-g3mity3656] { color: var(--b9-text); }

/* 🔴 --b9-border-strong is a BACKGROUND/EDGE tint, not an ink. In dark it resolves through
   --border-default to rgba(255,255,255,0.10), so the "/" between the breadcrumbs measured
   1.23:1 on the shipped default theme and 1.41:1 in light. A separator is text and is held
   to 4.5:1; --b9-text-soft is the quietest token that is actually meant to be read.

   BackgroundTintTokensAreNotUsedAsTextGuardTests exists to catch exactly this and did not,
   because its token reader stops at the first literal and does not follow var() chains —
   --b9-border-strong's dark value is `var(--border-default)`, not an rgba() it could see.
   That hole is fixed in the same commit as this line; the guard now names this site. */
.ccc-breadcrumb-sep[b-g3mity3656] { color: var(--b9-text-soft); }

.ccc-breadcrumb-current[b-g3mity3656] {
    color: var(--b9-text);
    font-weight: 600;
}

/* Compact round-state chip inline with the breadcrumb */
.ccc-breadcrumb-status[b-g3mity3656] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.15rem 0.6rem;
    border-radius: 100px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.03em;
    white-space: nowrap;
    border-width: 1px;
    border-style: solid;
    margin-left: var(--space-2);
    /* colour tokens are inherited from .ccc-state-* siblings */
}

/* ── Alert banner ── */
.ccc-alert[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-md);
    font-size: 0.9rem;
    border-left: 4px solid transparent;
}

.ccc-alert--success[b-g3mity3656] {
    background: var(--color-success-subtle);
    border-left-color: var(--color-success);
    color: var(--b9-text);
}

.ccc-alert--danger[b-g3mity3656] {
    background: var(--color-danger-subtle);
    border-left-color: var(--color-danger);
    color: var(--b9-text);
}

.ccc-alert--info[b-g3mity3656] {
    background: var(--b9-surface-raised);
    border-left-color: var(--b9-accent);
    color: var(--b9-text);
}

.ccc-alert--warning[b-g3mity3656] {
    background: var(--color-warn-subtle);
    border-left-color: var(--color-warn);
    color: var(--b9-text);
}

.ccc-mp-steps[b-g3mity3656] {
    margin: 0;
    padding-left: 1.25rem;
    display: grid;
    gap: var(--space-2);
}

.ccc-mp-step[b-g3mity3656] {
    color: var(--b9-text);
}

.ccc-mp-step__title[b-g3mity3656] {
    display: block;
    font-weight: 700;
}

.ccc-mp-step__state[b-g3mity3656] {
    display: block;
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
}

.ccc-alert-dismiss[b-g3mity3656] {
    margin-left: auto;
    background: none;
    border: none;
    color: var(--b9-text-secondary);
    cursor: pointer;
    padding: 0 var(--space-1);
    font-size: 1.1rem;
    line-height: 1;
    opacity: 0.7;
    transition: opacity 140ms;
}

.ccc-alert-dismiss:hover[b-g3mity3656] { opacity: 1; }

/* ── Hero banner ── */
.ccc-hero[b-g3mity3656] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-4);
    background: var(--b9-surface-raised);
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-lg);
    padding: var(--space-5) var(--space-5);
    flex-wrap: wrap;
}

.ccc-hero-kicker[b-g3mity3656] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-text-secondary);
    margin-bottom: var(--space-1);
}

.ccc-hero-title[b-g3mity3656] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--b9-text);
    margin: 0 0 var(--space-2);
    line-height: 1.2;
}

.ccc-hero-meta[b-g3mity3656] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-3);
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
}

.ccc-meta-item[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
}

.ccc-hero-right[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: var(--space-2);
    min-width: 160px;
}

/* ── Week state badge ── */
.ccc-state-badge[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-2) var(--space-4);
    border-radius: 100px;
    font-size: 0.9rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.ccc-state-notready[b-g3mity3656]  { background: var(--color-danger-subtle);   color: var(--color-danger);  border: 1px solid var(--color-danger); }
.ccc-state-ready[b-g3mity3656]     { background: var(--color-success-subtle);  color: var(--color-success); border: 1px solid var(--color-success); }
.ccc-state-progress[b-g3mity3656]  { background: var(--b9-surface-raised);     color: var(--b9-primary-text);     border: 1px solid var(--b9-accent); }
.ccc-state-live[b-g3mity3656]      { background: var(--color-success-subtle);  color: var(--color-success); border: 1px solid var(--color-success); animation: pulse-live-b-g3mity3656 2s ease-in-out infinite; }
.ccc-state-finalize[b-g3mity3656]  { background: var(--color-warn-subtle);     color: var(--color-warn);    border: 1px solid var(--color-warn); }
.ccc-state-final[b-g3mity3656]     { background: var(--b9-surface-raised);     color: var(--b9-text-secondary); border: 1px solid var(--b9-border-strong); }

@keyframes pulse-live-b-g3mity3656 {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.75; }
}

.ccc-state-guidance[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    text-align: right;
    max-width: 220px;
    line-height: 1.4;
    margin: 0;
}

/* ── Sections ── */
.ccc-section[b-g3mity3656] {
    background: var(--b9-surface-raised);
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-lg);
    padding: var(--space-4) var(--space-5);
}

/* ── Four-card summary strip ── */
.ccc-summary-strip[b-g3mity3656] {
    padding: var(--space-3) var(--space-4);
}

.ccc-summary-grid[b-g3mity3656] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-2);
}

.ccc-summary-card[b-g3mity3656] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-md);
    padding: var(--space-3);
    min-width: 0;
}

.ccc-summary-title[b-g3mity3656] {
    font-size: var(--font-size-chip);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--b9-text-secondary);
    margin: 0 0 var(--space-1);
}

.ccc-summary-headline[b-g3mity3656] {
    font-size: 0.92rem;
    line-height: 1.3;
    font-weight: 700;
    color: var(--b9-text);
    margin: 0 0 4px;
}

.ccc-summary-detail[b-g3mity3656] {
    font-size: var(--font-size-sm);
    line-height: 1.35;
    color: var(--b9-text-secondary);
    margin: 0;
}

.ccc-summary-hint[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    margin: var(--space-2) 0 0;
}

.ccc-section-head[b-g3mity3656] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-4);
    flex-wrap: wrap;
    gap: var(--space-2);
}

.ccc-section-title[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    font-size: 1rem;
    font-weight: 700;
    color: var(--b9-text);
    margin: 0 0 var(--space-4);
}

.ccc-section-head .ccc-section-title[b-g3mity3656] {
    margin: 0;
}

.ccc-checklist-score[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    background: var(--b9-surface);
    padding: var(--space-1) var(--space-3);
    border-radius: 100px;
    border: 1px solid var(--b9-border);
}

.ccc-checklist-intro[b-g3mity3656] {
    margin: 0 0 var(--space-3);
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    line-height: 1.35;
}

/* ── Readiness checklist ── */
.ccc-checklist[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.ccc-checklist-item[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    border-radius: var(--radius-md);
    border: 1px solid var(--b9-border);
    background: var(--b9-surface);
    transition: border-color 160ms;
    flex-wrap: wrap;
}

.ccc-check--pass[b-g3mity3656]    { border-left: 3px solid var(--color-success); }
.ccc-check--fail[b-g3mity3656]    { border-left: 3px solid var(--color-danger);  background: var(--color-danger-subtle); }
.ccc-check--neutral[b-g3mity3656] { border-left: 3px solid var(--b9-border-strong); }
.ccc-check--progress[b-g3mity3656] { border-left: 3px solid var(--b9-accent); }

.ccc-check-icon[b-g3mity3656] {
    font-size: 1.1rem;
    flex-shrink: 0;
    line-height: 1;
}

.ccc-check--pass    .ccc-check-icon[b-g3mity3656] { color: var(--color-success); }
.ccc-check--fail    .ccc-check-icon[b-g3mity3656] { color: var(--color-danger); }
.ccc-check--neutral .ccc-check-icon[b-g3mity3656] { color: var(--b9-text-secondary); }
.ccc-check--progress .ccc-check-icon[b-g3mity3656] { color: var(--b9-primary-text); }

.ccc-check-body[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}

.ccc-check-label[b-g3mity3656] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--b9-text);
}

.ccc-check-detail[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
}

.ccc-check-action[b-g3mity3656] {
    flex-shrink: 0;
    white-space: nowrap;
}

/* ── Primary Action Grid ── */
.ccc-actions-grid[b-g3mity3656] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: var(--space-3);
    margin-bottom: var(--space-4);
}

.ccc-action-intro[b-g3mity3656] {
    margin: 0 0 var(--space-3);
    font-size: var(--font-size-sm);
    color: color-mix(in srgb, var(--b9-text) 72%, var(--b9-text-secondary) 28%);
    line-height: 1.35;
}

.ccc-action-btn[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    gap: var(--space-2);
    padding: var(--space-4) var(--space-3);
    border-radius: var(--radius-lg);
    border: 2px solid transparent;
    cursor: pointer;
    text-align: center;
    transition: transform 120ms, box-shadow 140ms, border-color 140ms;
    background: var(--b9-surface);
    font-family: inherit;
    min-height: 110px;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.03);
}

.ccc-action-state[b-g3mity3656] {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 3px var(--space-2);
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    border: 1px solid transparent;
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.05);
}

.ccc-action-state--ready[b-g3mity3656] {
    color: color-mix(in srgb, white 18%, var(--color-success) 82%);
    background: color-mix(in srgb, var(--color-success) 18%, var(--b9-surface));
    border-color: color-mix(in srgb, var(--color-success) 62%, transparent);
}

.ccc-action-state--blocked[b-g3mity3656] {
    color: color-mix(in srgb, var(--b9-text) 82%, var(--b9-text-secondary) 18%);
    background: color-mix(in srgb, var(--b9-border-strong) 16%, var(--b9-surface-raised));
    border-color: color-mix(in srgb, var(--b9-border-strong) 68%, transparent);
}

.ccc-action-btn--recommended[b-g3mity3656] {
    border-color: color-mix(in srgb, var(--b9-accent) 70%, transparent);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--b9-accent) 34%, transparent), inset 0 1px 0 rgba(255,255,255,0.04);
}

.ccc-action-btn:not(:disabled):hover[b-g3mity3656] {
    transform: translateY(-2px);
    box-shadow: 0 4px 16px rgba(0,0,0,0.3);
}

.ccc-action-btn .bi[b-g3mity3656] {
    font-size: 1.7rem;
    line-height: 1;
    filter: drop-shadow(0 1px 0 rgba(0,0,0,0.35));
}

.ccc-action-label[b-g3mity3656] {
    font-size: 0.9rem;
    font-weight: 700;
    color: var(--b9-text);
    line-height: 1.2;
}

.ccc-action-hint[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: color-mix(in srgb, var(--b9-text) 70%, var(--b9-text-secondary) 30%);
    line-height: 1.3;
}

.ccc-action-btn--primary[b-g3mity3656] {
    border-color: var(--b9-accent);
    background: color-mix(in srgb, var(--b9-accent) 10%, var(--b9-surface));
}

.ccc-action-btn--primary .bi[b-g3mity3656] { color: var(--b9-primary-text); }

.ccc-action-btn--success[b-g3mity3656] {
    border-color: var(--color-success);
    background: var(--color-success-subtle);
}

.ccc-action-btn--success .bi[b-g3mity3656] { color: color-mix(in srgb, white 12%, var(--color-success) 88%); }

.ccc-action-btn--warning[b-g3mity3656] {
    border-color: var(--color-warn);
    background: var(--color-warn-subtle);
}

.ccc-action-btn--warning .bi[b-g3mity3656] { color: color-mix(in srgb, white 10%, var(--color-warn) 90%); }

.ccc-action-btn--danger[b-g3mity3656] {
    border-color: var(--color-danger);
    background: var(--color-danger-subtle);
}

.ccc-action-btn--danger .bi[b-g3mity3656] { color: color-mix(in srgb, white 10%, var(--color-danger) 90%); }

.ccc-action-btn--info[b-g3mity3656] {
    border-color: var(--b9-border-strong);
    background: color-mix(in srgb, var(--b9-surface-raised) 78%, var(--b9-surface) 22%);
}

.ccc-action-btn--complete[b-g3mity3656] {
    border-color: var(--color-success);
    background: var(--color-success-subtle);
    cursor: default;
}

.ccc-action-btn--complete .bi[b-g3mity3656] { color: var(--color-success); }

.ccc-action-btn--disabled[b-g3mity3656],
.ccc-action-btn:disabled[b-g3mity3656] {
    border-color: color-mix(in srgb, var(--b9-border-strong) 72%, transparent);
    background: color-mix(in srgb, var(--b9-surface-raised) 68%, var(--b9-surface) 32%);
    opacity: 0.88;
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--b9-border-strong) 78%, transparent);
    cursor: not-allowed;
}

.ccc-action-btn--disabled .bi[b-g3mity3656],
.ccc-action-btn:disabled .bi[b-g3mity3656] {
    color: color-mix(in srgb, var(--b9-text) 48%, var(--b9-text-secondary) 52%);
}

.ccc-action-btn--disabled .ccc-action-label[b-g3mity3656],
.ccc-action-btn:disabled .ccc-action-label[b-g3mity3656] {
    color: color-mix(in srgb, var(--b9-text) 88%, var(--b9-text-secondary) 12%);
}

.ccc-action-btn--disabled .ccc-action-hint[b-g3mity3656],
.ccc-action-btn:disabled .ccc-action-hint[b-g3mity3656] {
    color: color-mix(in srgb, var(--b9-text) 58%, var(--b9-text-secondary) 42%);
}

.ccc-secondary-actions-intro[b-g3mity3656] {
    margin: 0 0 var(--space-2);
    font-size: var(--font-size-sm);
    color: color-mix(in srgb, var(--b9-text) 68%, var(--b9-text-secondary) 32%);
}

.ccc-secondary-actions[b-g3mity3656] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2);
    padding-top: var(--space-3);
    border-top: 1px solid var(--b9-border);
}

/* ── Live Scoring Visibility ── */
.ccc-live-indicator[b-g3mity3656] {
    display: inline-block;
    margin-left: var(--space-2);
    padding: 2px var(--space-2);
    background: var(--color-success);
    color: var(--bg-app);
    border-radius: 3px;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.08em;
    vertical-align: middle;
    animation: pulse-live-b-g3mity3656 2s ease-in-out infinite;
}

.ccc-visibility-empty[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-6);
    color: var(--b9-text-secondary);
    font-size: 0.9rem;
    text-align: center;
}

.ccc-visibility-empty .bi[b-g3mity3656] {
    font-size: 2rem;
    opacity: 0.4;
}

.ccc-progress-block[b-g3mity3656] {
    margin-bottom: var(--space-4);
}

.ccc-progress-bar[b-g3mity3656] {
    height: 10px;
    background: var(--b9-surface);
    border-radius: 100px;
    overflow: hidden;
    border: 1px solid var(--b9-border);
    margin-bottom: var(--space-2);
}

.ccc-progress-fill[b-g3mity3656] {
    height: 100%;
    border-radius: 100px;
    background: var(--b9-accent);
    transition: width 500ms ease;
}

.ccc-progress-fill--live[b-g3mity3656]     { background: var(--color-success); }
.ccc-progress-fill--complete[b-g3mity3656]  { background: var(--color-success); }

.ccc-progress-labels[b-g3mity3656] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: var(--font-size-sm);
}

.ccc-progress-stat[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
}

/* --color-success / --color-warn are compat aliases for the FILLS (--b9-success, --b9-warning).
   As the writing on the light section ground the green measured 1.85:1. The -text twins are
   the same hues said the other way, and they move with the theme. */
.ccc-stat--success[b-g3mity3656] { color: var(--b9-success-text); }
.ccc-stat--warning[b-g3mity3656] { color: var(--b9-warning-text); }
.ccc-stat--muted[b-g3mity3656]   { color: var(--b9-text-secondary); }

.ccc-progress-pct[b-g3mity3656] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--b9-text);
}

.ccc-missing-head[b-g3mity3656] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-secondary);
    margin-bottom: var(--space-2);
}

.ccc-groups-list[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2);
}

.ccc-group-row[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-2) var(--space-3);
    background: var(--b9-surface);
    border-radius: var(--radius-sm);
    border: 1px solid var(--b9-border);
    flex-wrap: wrap;
}

.ccc-group-info[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    flex: 1;
}

.ccc-group-num[b-g3mity3656] {
    font-weight: 600;
    font-size: var(--font-size-sm);
    color: var(--b9-text);
}

.ccc-group-meta[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
}

.ccc-group-badge[b-g3mity3656] {
    padding: 2px var(--space-2);
    border-radius: 100px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    white-space: nowrap;
}

.ccc-badge--missing[b-g3mity3656] { background: var(--color-danger-subtle); color: var(--color-danger); }
.ccc-badge--partial[b-g3mity3656] { background: var(--color-warn-subtle);   color: var(--color-warn); }
.ccc-badge--dns[b-g3mity3656]     { background: var(--bg-elevated, rgba(255,255,255,.06)); color: var(--text-muted); font-style: italic; }

/* Per-group roster: show WHO is in each pending group (teams or players),
   each with a scored (✓) / needs-score (○) marker. */
.ccc-group-info[b-g3mity3656] { flex-wrap: wrap; }

.ccc-group-units[b-g3mity3656] {
    flex-basis: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: 2px var(--space-3);
    margin-top: 2px;
}

.ccc-unit[b-g3mity3656] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: var(--font-size-sm);
    line-height: 1.5;
    color: var(--b9-text);
}

.ccc-unit .bi[b-g3mity3656] { font-size: 0.72rem; }
.ccc-unit-label[b-g3mity3656] { white-space: nowrap; }

.ccc-unit--done[b-g3mity3656] { color: var(--b9-text-secondary); }
.ccc-unit--done .bi[b-g3mity3656] { color: var(--color-success, #3fb950); }
.ccc-unit--pending .bi[b-g3mity3656] { color: var(--color-warn, #d29922); }

.ccc-all-submitted[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    background: var(--color-success-subtle);
    border-radius: var(--radius-md);
    font-size: 0.9rem;
    color: var(--b9-text);
    border: 1px solid var(--color-success);
    flex-wrap: wrap;
}

.ccc-all-submitted .bi[b-g3mity3656] { color: var(--color-success); font-size: 1.1rem; }

.ccc-makeup-banner[b-g3mity3656] {
    display: flex;
    align-items: flex-start;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    background: var(--brand-soft, rgba(29,78,216,.08));
    border: 1px solid var(--brand, rgba(29,78,216,.35));
    border-radius: var(--radius-md);
    font-size: 0.875rem;
    color: var(--text-primary);
    margin-bottom: var(--space-3);
}

.ccc-makeup-banner .bi[b-g3mity3656] {
    color: var(--b9-primary-text);
    font-size: 1rem;
    flex-shrink: 0;
    margin-top: 2px;
}

/* ── Communications Hub ── */
.ccc-comms-grid[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.ccc-comms-card[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-md);
    flex-wrap: wrap;
}

.ccc-comms-icon[b-g3mity3656] {
    font-size: 1.4rem;
    color: var(--b9-text-secondary);
    flex-shrink: 0;
    width: 36px;
    text-align: center;
}

.ccc-comms-body[b-g3mity3656] {
    flex: 1;
    min-width: 0;
}

.ccc-comms-title[b-g3mity3656] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--b9-text);
    margin-bottom: 2px;
}

.ccc-comms-desc[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    line-height: 1.4;
}

/* ── Recovery grid ── */
.ccc-recovery-grid[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    gap: var(--space-3);
}

.ccc-recovery-card[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    padding: var(--space-3) var(--space-4);
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: var(--radius-md);
    flex-wrap: wrap;
}

.ccc-recovery-card > .bi[b-g3mity3656] {
    font-size: 1.2rem;
    color: var(--b9-text-secondary);
    flex-shrink: 0;
    width: 24px;
    text-align: center;
}

.ccc-recovery-body[b-g3mity3656] {
    flex: 1;
    min-width: 0;
}

.ccc-recovery-title[b-g3mity3656] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--b9-text);
    margin-bottom: 2px;
}

.ccc-recovery-desc[b-g3mity3656] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    line-height: 1.4;
}

/* ── Safety modal ── */
.ccc-modal-backdrop[b-g3mity3656] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 1000;
    padding: var(--space-4);
}

.ccc-modal[b-g3mity3656] {
    background: var(--b9-surface-raised);
    border: 1px solid var(--b9-border-strong);
    border-radius: var(--radius-xl);
    padding: var(--space-6) var(--space-6);
    max-width: 440px;
    width: 100%;
    box-shadow: 0 24px 64px rgba(0,0,0,0.6);
    display: flex;
    flex-direction: column;
    gap: var(--space-4);
}

.ccc-modal-icon[b-g3mity3656] {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.4rem;
    margin: 0 auto;
}

.ccc-modal-icon--warning[b-g3mity3656] { background: var(--color-warn-subtle);  color: var(--color-warn);   border: 2px solid var(--color-warn); }
.ccc-modal-icon--danger[b-g3mity3656]  { background: var(--color-danger-subtle); color: var(--color-danger); border: 2px solid var(--color-danger); }

.ccc-modal-title[b-g3mity3656] {
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--b9-text);
    text-align: center;
    margin: 0;
}

.ccc-modal-body[b-g3mity3656] {
    font-size: 0.9rem;
    color: var(--b9-text-secondary);
    line-height: 1.6;
    margin: 0;
    text-align: center;
}

.ccc-modal-warning[b-g3mity3656] {
    color: var(--color-danger);
    font-weight: 600;
}

.ccc-modal-list[b-g3mity3656] {
    font-size: 0.9rem;
    color: var(--b9-text-secondary);
    line-height: 1.8;
    padding-left: var(--space-5);
    margin: 0;
    text-align: left;
}

.ccc-modal-email-toggle[b-g3mity3656] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-2);
    padding: var(--space-2) 0 var(--space-1);
    font-size: var(--font-size-sm, 0.9rem);
    color: var(--b9-text-secondary, #94a3b8);
    cursor: pointer;
    user-select: none;
}

.ccc-modal-email-toggle input[b-g3mity3656] {
    width: 18px;
    height: 18px;
    cursor: pointer;
    accent-color: var(--color-primary, #2563eb);
}

.ccc-modal-actions[b-g3mity3656] {
    display: flex;
    gap: var(--space-3);
    justify-content: center;
    flex-wrap: wrap;
    padding-top: var(--space-2);
}

/* ── Footer links ── */
.ccc-footer-links[b-g3mity3656] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-4);
    padding: var(--space-3) 0;
    border-top: 1px solid var(--b9-border);
}

.ccc-footer-link[b-g3mity3656] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    font-size: var(--font-size-sm);
    color: var(--b9-text-secondary);
    text-decoration: none;
    transition: color 140ms;
}

.ccc-footer-link:hover[b-g3mity3656] { color: var(--b9-text); }

/* ── ui-btn danger variant ── */
.ui-btn--danger[b-g3mity3656] {
    background: var(--color-danger);
    color: #fff;
    border-color: var(--color-danger);
}

.ui-btn--danger:hover:not(:disabled)[b-g3mity3656] {
    background: color-mix(in srgb, var(--color-danger) 85%, #000);
}

.ui-btn--warning[b-g3mity3656] {
    background: var(--color-warn);
    color: var(--bg-app);
    border-color: var(--color-warn);
}

/* ── Responsive ── */
@media (max-width: 600px) {
    .ccc-page[b-g3mity3656] { padding: var(--space-3) var(--space-2) var(--space-6); }
    .ccc-hero[b-g3mity3656]  { flex-direction: column; }
    .ccc-hero-right[b-g3mity3656] { align-items: flex-start; }
    .ccc-state-guidance[b-g3mity3656] { text-align: left; max-width: 100%; }
    .ccc-summary-grid[b-g3mity3656] { grid-template-columns: 1fr; }
    .ccc-actions-grid[b-g3mity3656] { grid-template-columns: repeat(2, 1fr); }

    /* 🔴 At 390px these cards collapsed into a one-word-per-line ribbon: the body was a flex item
       with no basis, so the button (121-168px of shipped label) took the line and left the sentence
       a 22px column. "Notify all players that they can enter their score" rendered 46px of text in
       a 22px box with NO ellipsis — cut with nothing signalling the loss, which is worse than an
       ellipsis and which no title attribute can rescue.
       Giving the body a real basis makes the line genuinely overflow, so the button wraps to its
       own row and the sentence gets the card's full width. Scoped to the existing <=600px query:
       the desktop layout these cards were designed for is untouched. */
    .ccc-comms-card[b-g3mity3656],
    .ccc-recovery-card[b-g3mity3656] { align-items: flex-start; }

    .ccc-comms-body[b-g3mity3656],
    .ccc-recovery-body[b-g3mity3656] { flex-basis: 60%; }

    .ccc-comms-card > .ui-btn[b-g3mity3656],
    .ccc-recovery-card > .ui-btn[b-g3mity3656] { flex: 1 0 100%; }
}

@media (max-width: 1100px) {
    .ccc-summary-grid[b-g3mity3656] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* FIX 2 (Pass 2): Finalize confirmation modal — insufficient-scores warning. */
.ccc-modal-warning-banner[b-g3mity3656] {
    background: var(--b9-warning-surface, rgba(255, 193, 7, 0.15));
    border-left: 3px solid var(--b9-warning, #ffc107);
    border-radius: var(--b9-radius-sm, 4px);
    padding: 0.75rem 1rem;
    margin-bottom: 1rem;
    font-size: 0.875rem;
    color: var(--b9-text, inherit);
}

/* ── Commissioner round notes ── */
.ccc-round-notes[b-g3mity3656] {
    margin: calc(var(--space-5) * -0.5) 0 0;
}

.ccc-notes-display[b-g3mity3656] {
    display: flex;
    align-items: flex-start;
    gap: 0.45rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
    border: 1px solid rgba(148,163,184,0.18);
    border-radius: 8px;
    padding: 0.55rem 0.75rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #cbd5e1);
}

.ccc-notes-icon[b-g3mity3656] {
    color: var(--b9-text-soft, #64748b);
    flex-shrink: 0;
    margin-top: 0.05rem;
}

.ccc-notes-text[b-g3mity3656] {
    flex: 1;
    line-height: 1.45;
}

.ccc-notes-edit-link[b-g3mity3656] {
    background: none;
    border: none;
    padding: 0.1rem 0.25rem;
    cursor: pointer;
    color: var(--b9-text-soft, #64748b);
    border-radius: 4px;
    font-size: var(--font-size-sm);
    flex-shrink: 0;
    transition: color .15s;
}
.ccc-notes-edit-link:hover[b-g3mity3656] { color: var(--b9-text, #f1f5f9); }

.ccc-notes-add-link[b-g3mity3656] {
    background: none;
    border: none;
    padding: 0.35rem 0.5rem;
    cursor: pointer;
    /* --b9-text-dim is not a token, so this was #64748b in both themes: 4.24:1 on the dark
       page ground, under AA on the shipped default theme. */
    color: var(--b9-text-soft, #64748b);
    font-size: var(--font-size-sm);
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    border-radius: 6px;
    transition: color .15s, background .15s;
}
.ccc-notes-add-link:hover[b-g3mity3656] {
    color: var(--b9-text, #94a3b8);
    background: var(--b9-surface-muted, rgba(148,163,184,0.08));
}

.ccc-notes-edit-row[b-g3mity3656] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}

.ccc-notes-textarea[b-g3mity3656] {
    width: 100%;
    background: var(--b9-surface, rgba(15,23,42,0.6));
    border: 1px solid rgba(148,163,184,0.3);
    border-radius: 8px;
    padding: 0.55rem 0.75rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text, #f1f5f9);
    resize: vertical;
    outline: none;
    box-sizing: border-box;
}
.ccc-notes-textarea:focus[b-g3mity3656] {
    border-color: rgba(99,102,241,0.5);
    box-shadow: 0 0 0 2px rgba(99,102,241,0.15);
}

.ccc-notes-edit-actions[b-g3mity3656] {
    display: flex;
    gap: 0.4rem;
    align-items: center;
}

.ccc-notes-save-btn[b-g3mity3656] {
    padding: 0.28rem 0.8rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    border-radius: 6px;
    border: none;
    background: var(--brand-soft, rgba(99,102,241,0.18));
    color: var(--brand-text, #a5b4fc);
    cursor: pointer;
    transition: opacity .15s;
    display: inline-flex;
    align-items: center;
}
.ccc-notes-save-btn:disabled[b-g3mity3656] { opacity: 0.6; cursor: not-allowed; }
.ccc-notes-save-btn:not(:disabled):hover[b-g3mity3656] { opacity: 0.8; }

.ccc-notes-cancel-btn[b-g3mity3656] {
    padding: 0.28rem 0.65rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    border-radius: 6px;
    border: none;
    background: none;
    color: var(--b9-text-soft, #64748b);
    cursor: pointer;
    transition: color .15s;
}
.ccc-notes-cancel-btn:hover[b-g3mity3656] { color: var(--b9-text-soft, #94a3b8); }

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.ccc-spinner-xs[b-g3mity3656] { width: .75rem; height: .75rem; margin-right: .3rem; }
/* /Components/Pages/Leagues/ContestSummaryCard.razor.rz.scp.css */
.wrd-section-head[b-47x0nw0rc6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-section-head h3[b-47x0nw0rc6] {
    margin: 0;
    font-size: 1rem;
}

.wrd-list[b-47x0nw0rc6] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}

.wrd-contest-row[b-47x0nw0rc6] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    background: var(--bg-elevated);
    padding: .5rem .625rem;
    display: flex;
    justify-content: space-between;
    gap: var(--space-2, .5rem);
    align-items: center;
}

.wrd-contest-row div[b-47x0nw0rc6] {
    display: flex;
    flex-direction: column;
}

.wrd-contest-row span[b-47x0nw0rc6] {
    font-size: .8rem;
    color: var(--text-secondary);
}

.wrd-muted[b-47x0nw0rc6] {
    margin: 0;
    color: var(--text-secondary);
}
/* /Components/Pages/Leagues/Create.razor.rz.scp.css */
/* ── League Create / Edit page ────────────────────────────────────────── */

.lc-page[b-cryy9d6th1] {
    --lc-footer-clearance: clamp(5.25rem, 12svh, 8rem);
    max-width: 920px;
    margin: 0 auto;
    padding: 1.5rem 1.25rem calc(var(--lc-footer-clearance) + env(safe-area-inset-bottom));
}

.lc-form-shell[b-cryy9d6th1] {
    display: block;
}

.lc-header[b-cryy9d6th1] {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.lc-back[b-cryy9d6th1] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 0.85rem;
    color: var(--b9-text-soft);
    text-decoration: none;
    transition: background .15s, color .15s, border-color .15s;
    font-size: 1rem;
    flex-shrink: 0;
    border: 1px solid color-mix(in srgb, var(--b9-border, #2d3748) 70%, transparent);
    background: color-mix(in srgb, var(--bg-surface, #111827) 88%, transparent);
}

.lc-back:hover[b-cryy9d6th1] {
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 90%, transparent);
    color: var(--b9-text);
}

.lc-title[b-cryy9d6th1] {
    font-size: clamp(1.5rem, 2.2vw, 2rem);
    font-weight: 700;
    color: var(--b9-text);
    margin: 0;
}

.lc-subtitle[b-cryy9d6th1] {
    color: var(--b9-text-soft);
    margin-top: 0.375rem;
    max-width: 42rem;
    line-height: 1.5;
}

.lc-loading[b-cryy9d6th1] {
    padding: 3rem 0;
    text-align: center;
    color: var(--b9-text-soft);
}

.lc-card[b-cryy9d6th1] {
    background: linear-gradient(180deg, color-mix(in srgb, var(--bg-surface, #111827) 96%, #1f2937 4%), color-mix(in srgb, var(--bg-surface, #111827) 98%, black 2%));
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 78%, transparent);
    border-radius: 1.25rem;
    padding: 1.5rem;
    box-shadow: var(--b9-card-shadow, 0 20px 45px rgba(0, 0, 0, 0.22));
}

.lc-page-note[b-cryy9d6th1] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem 1rem;
    align-items: flex-start;
    justify-content: space-between;
    padding: 0.9rem 1rem;
    margin-bottom: 1rem;
    border-radius: 1rem;
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 72%, transparent);
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 84%, transparent);
}

.lc-page-note-copy[b-cryy9d6th1] {
    flex: 1 1 18rem;
}

.lc-page-note-title[b-cryy9d6th1] {
    font-weight: 700;
    color: var(--b9-text);
}

.lc-page-note-text[b-cryy9d6th1] {
    color: var(--b9-text-soft);
}

.lc-status-list[b-cryy9d6th1] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
    justify-content: flex-end;
    flex: 0 1 30rem;
}

.lc-status-pill[b-cryy9d6th1] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.35rem 0.65rem;
    border-radius: 999px;
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 76%, transparent);
    background: color-mix(in srgb, var(--bg-surface, #111827) 80%, transparent);
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
    font-weight: 600;
    white-space: nowrap;
}

.lc-status-pill-complete[b-cryy9d6th1] {
    color: color-mix(in srgb, var(--b9-success, #22c55e) 82%, white 18%);
    border-color: color-mix(in srgb, var(--b9-success, #22c55e) 28%, transparent);
    background: color-mix(in srgb, var(--b9-success, #22c55e) 10%, transparent);
}

/* An incomplete required group — the pills report real state now, so they need a
   not-done look that isn't alarming (nothing is broken, it just isn't filled in). */
.lc-status-pill-todo[b-cryy9d6th1] {
    color: color-mix(in srgb, var(--b9-warning, #f59e0b) 86%, white 14%);
    border-color: color-mix(in srgb, var(--b9-warning, #f59e0b) 32%, transparent);
    background: color-mix(in srgb, var(--b9-warning, #f59e0b) 10%, transparent);
}

.lc-status-pill-group[b-cryy9d6th1] {
    color: var(--b9-text);
    border-color: color-mix(in srgb, var(--border-subtle, #334155) 82%, transparent);
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 92%, transparent);
}

.lc-status-pill-optional[b-cryy9d6th1] {
    color: var(--b9-text-soft);
}

.lc-section-stack[b-cryy9d6th1] {
    display: grid;
    gap: 1rem;
}

.lc-section-card[b-cryy9d6th1],
.lc-disclosure[b-cryy9d6th1] {
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 72%, transparent);
    border-radius: 1rem;
    background: color-mix(in srgb, var(--bg-surface, #111827) 88%, transparent);
}

.lc-section-card[b-cryy9d6th1] {
    padding: 1.25rem;
}

.lc-section-heading[b-cryy9d6th1] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.lc-section-title[b-cryy9d6th1] {
    margin: 0;
    font-size: 1.125rem;
    color: var(--b9-text);
}

.lc-section-copy[b-cryy9d6th1] {
    margin: 0.35rem 0 0;
    color: var(--b9-text-soft);
    line-height: 1.5;
}

.lc-section-chip[b-cryy9d6th1] {
    align-self: flex-start;
    padding: 0.3rem 0.6rem;
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.02em;
    color: var(--b9-text);
    background: color-mix(in srgb, var(--b9-primary, #2563eb) 22%, transparent);
    border: 1px solid color-mix(in srgb, var(--b9-primary, #2563eb) 38%, transparent);
}

.lc-field[b-cryy9d6th1] {
    margin-bottom: 1.125rem;
}

.lc-label[b-cryy9d6th1] {
    display: block;
    font-size: 0.93rem;
    font-weight: 600;
    color: var(--b9-text);
    margin-bottom: 0.45rem;
}

.lc-required[b-cryy9d6th1] {
    color: var(--b9-danger);
}

.lc-card[b-cryy9d6th1]  .lc-input.form-control,
.lc-card[b-cryy9d6th1]  .lc-input.form-select,
.lc-card textarea.lc-input[b-cryy9d6th1],
.lc-card input.lc-input[b-cryy9d6th1],
.lc-card select.lc-input[b-cryy9d6th1] {
    font-size: 0.96rem;
    min-height: 2.85rem;
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--b9-primary, #2563eb) 14%, var(--border-subtle, #334155) 86%);
    color: var(--b9-text);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
    pointer-events: auto;
    opacity: 1;
}

.lc-card[b-cryy9d6th1]  .lc-input.form-control:hover:not(:disabled):not([readonly]),
.lc-card[b-cryy9d6th1]  .lc-input.form-select:hover:not(:disabled):not([readonly]),
.lc-card textarea.lc-input:hover:not(:disabled):not([readonly])[b-cryy9d6th1],
.lc-card input.lc-input:hover:not(:disabled):not([readonly])[b-cryy9d6th1],
.lc-card select.lc-input:hover:not(:disabled):not([readonly])[b-cryy9d6th1] {
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 94%, #0f172a 6%);
    border-color: color-mix(in srgb, var(--b9-primary, #2563eb) 34%, white 8%);
}

.lc-card[b-cryy9d6th1]  .lc-input.form-control:focus,
.lc-card[b-cryy9d6th1]  .lc-input.form-control:focus-visible,
.lc-card[b-cryy9d6th1]  .lc-input.form-select:focus,
.lc-card[b-cryy9d6th1]  .lc-input.form-select:focus-visible,
.lc-card textarea.lc-input:focus[b-cryy9d6th1],
.lc-card textarea.lc-input:focus-visible[b-cryy9d6th1],
.lc-card input.lc-input:focus[b-cryy9d6th1],
.lc-card input.lc-input:focus-visible[b-cryy9d6th1],
.lc-card select.lc-input:focus[b-cryy9d6th1],
.lc-card select.lc-input:focus-visible[b-cryy9d6th1] {
    border-color: color-mix(in srgb, var(--b9-primary, #2563eb) 65%, white 10%);
    box-shadow: 0 0 0 0.18rem color-mix(in srgb, var(--b9-primary, #2563eb) 22%, transparent);
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 96%, #0f172a 4%);
}

.lc-card[b-cryy9d6th1]  .lc-input.form-control:disabled,
.lc-card[b-cryy9d6th1]  .lc-input.form-select:disabled,
.lc-card textarea.lc-input:disabled[b-cryy9d6th1],
.lc-card input.lc-input:disabled[b-cryy9d6th1],
.lc-card select.lc-input:disabled[b-cryy9d6th1],
.lc-card[b-cryy9d6th1]  .lc-input.form-control[readonly],
.lc-card[b-cryy9d6th1]  .lc-input.form-select[readonly],
.lc-card textarea.lc-input[readonly][b-cryy9d6th1],
.lc-card input.lc-input[readonly][b-cryy9d6th1],
.lc-card select.lc-input[readonly][b-cryy9d6th1] {
    pointer-events: none;
}

.lc-hint[b-cryy9d6th1] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-top: 0.35rem;
    line-height: 1.45;
}

.lc-validation[b-cryy9d6th1] {
    display: block;
    font-size: var(--font-size-sm);
    color: var(--b9-danger);
    margin-top: 0.35rem;
}

.lc-row-2[b-cryy9d6th1] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    margin-bottom: 1.125rem;
}

.lc-row-2 .lc-field[b-cryy9d6th1] {
    margin-bottom: 0;
}

.lc-row-tight[b-cryy9d6th1] {
    margin-bottom: 0.85rem;
}

.lc-field-tight[b-cryy9d6th1] {
    margin-top: 0.75rem;
}

.lc-check[b-cryy9d6th1] {
    color: var(--b9-text);
}

.lc-check-block[b-cryy9d6th1] {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    margin-bottom: 0.85rem;
    padding: 0.95rem 1rem;
    padding-left: 1rem;
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 72%, transparent);
    border-radius: 0.9rem;
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 72%, transparent);
}

.lc-check-block .form-check-input[b-cryy9d6th1] {
    position: static;
    margin: 0.2rem 0 0;
    flex: 0 0 auto;
}

.lc-check-block .form-check-label[b-cryy9d6th1] {
    display: flex;
    flex-direction: column;
    gap: 0.22rem;
    margin: 0;
    font-weight: 600;
    line-height: 1.45;
}

.lc-check-title[b-cryy9d6th1] {
    color: var(--b9-text);
}

.lc-check-helper[b-cryy9d6th1] {
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--b9-text-soft);
}

.lc-readonly-card[b-cryy9d6th1] {
    padding: 1rem;
    border-radius: 0.95rem;
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 72%, transparent);
    background: color-mix(in srgb, var(--bg-surface-2, #1f2937) 78%, transparent);
}

.lc-readonly-head[b-cryy9d6th1] {
    margin-bottom: 0.75rem;
}

.lc-subsection-title[b-cryy9d6th1] {
    margin: 0;
    font-size: 1rem;
    color: var(--b9-text);
}

.lc-subsection-copy[b-cryy9d6th1] {
    margin: 0.3rem 0 0;
    color: var(--b9-text-soft);
    line-height: 1.45;
}

.lc-readonly-list[b-cryy9d6th1] {
    display: grid;
    gap: 0.65rem;
    margin-top: 0.85rem;
}

.lc-readonly-row[b-cryy9d6th1] {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: center;
    padding: 0.8rem 0.9rem;
    border-radius: 0.8rem;
    background: color-mix(in srgb, var(--bg-surface, #111827) 88%, transparent);
    border: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 68%, transparent);
    color: var(--b9-text);
}

.lc-readonly-row strong[b-cryy9d6th1] {
    font-size: 0.95rem;
}

.lc-inline-note[b-cryy9d6th1] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.85rem 1rem;
    border-radius: 0.9rem;
    color: var(--b9-text);
    background: color-mix(in srgb, var(--b9-success, #16a34a) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--b9-success, #16a34a) 30%, transparent);
    line-height: 1.5;
}

.lc-inline-note-info[b-cryy9d6th1] {
    margin-top: 0.75rem;
    background: color-mix(in srgb, var(--b9-primary, #2563eb) 10%, transparent);
    border-color: color-mix(in srgb, var(--b9-primary, #2563eb) 28%, transparent);
}

.lc-lock-note[b-cryy9d6th1] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    margin-top: 0.85rem;
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
}

.lc-disclosure[b-cryy9d6th1] {
    overflow: hidden;
}

.lc-disclosure:hover[b-cryy9d6th1] {
    border-color: color-mix(in srgb, var(--b9-primary, #2563eb) 30%, var(--border-subtle, #334155) 70%);
}

.lc-disclosure-summary[b-cryy9d6th1] {
    list-style: none;
    cursor: pointer;
    display: block;
    width: 100%;
    padding: 0.95rem 1.1rem;
}

.lc-disclosure-summary[b-cryy9d6th1]::-webkit-details-marker {
    display: none;
}

.lc-disclosure-summary-row[b-cryy9d6th1] {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: start;
    gap: 0.55rem;
}

.lc-disclosure-summary-content[b-cryy9d6th1] {
    min-width: 0;
}

.lc-disclosure-chevron[b-cryy9d6th1] {
    margin-top: 0.18rem;
    color: var(--b9-text-soft);
    font-size: 0.88rem;
    transition: transform .16s ease, color .16s ease;
}

.lc-disclosure-summary:hover .lc-disclosure-chevron[b-cryy9d6th1],
.lc-disclosure-summary:hover .lc-disclosure-title[b-cryy9d6th1],
.lc-disclosure-summary:focus-visible .lc-disclosure-chevron[b-cryy9d6th1],
.lc-disclosure-summary:focus-visible .lc-disclosure-title[b-cryy9d6th1] {
    color: var(--b9-text);
}

.lc-disclosure[open] .lc-disclosure-chevron[b-cryy9d6th1] {
    transform: rotate(90deg);
    color: var(--b9-text);
}

.lc-disclosure-title[b-cryy9d6th1] {
    display: block;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--b9-text);
}

.lc-disclosure-copy[b-cryy9d6th1] {
    display: block;
    margin-top: 0.35rem;
    color: var(--b9-text-soft);
    line-height: 1.45;
    max-width: 44rem;
}

.lc-disclosure-body[b-cryy9d6th1] {
    padding: 0 1.25rem 1.25rem;
    border-top: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 70%, transparent);
}

.lc-sticky-actions[b-cryy9d6th1] {
    position: static;
    z-index: 10;
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    margin-top: 1rem;
    min-height: 52px;
    max-height: 64px;
    padding: 0.5rem 0.85rem;
    border-top: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 74%, transparent);
    border-left: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 48%, transparent);
    border-right: 1px solid color-mix(in srgb, var(--border-subtle, #334155) 48%, transparent);
    border-radius: 0.95rem 0.95rem 0 0;
    background: color-mix(in srgb, var(--bg-surface, #111827) 80%, rgba(0, 0, 0, 0.55) 20%);
    box-shadow: 0 -8px 18px rgba(0, 0, 0, 0.18);
    backdrop-filter: blur(10px);
}

.lc-sticky-actions .btn[b-cryy9d6th1] {
    min-width: 9rem;
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
}

@media (max-width: 767px) {
    .lc-page[b-cryy9d6th1] {
        --lc-footer-clearance: clamp(5rem, 14svh, 8rem);
        padding: 1rem 0.9rem calc(var(--lc-footer-clearance) + env(safe-area-inset-bottom));
    }

    .lc-card[b-cryy9d6th1] {
        padding: 1rem;
    }

    .lc-row-2[b-cryy9d6th1] {
        grid-template-columns: 1fr;
    }

    .lc-section-heading[b-cryy9d6th1] {
        flex-direction: column;
    }

    .lc-status-list[b-cryy9d6th1] {
        justify-content: flex-start;
    }

    .lc-sticky-actions[b-cryy9d6th1] {
        position: static;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        max-height: 64px;
        min-height: 52px;
        padding: 0.5rem 0.75rem;
    }

    .lc-sticky-actions .btn[b-cryy9d6th1] {
        width: auto;
        min-width: 0;
        flex: 0 1 auto;
    }

    .lc-readonly-row[b-cryy9d6th1] {
        flex-direction: column;
        align-items: flex-start;
    }
}
/* /Components/Pages/Leagues/Detail.razor.rz.scp.css */
/* ── League Detail page ───────────────────────────────────────────────── */

.ld-page[b-nxuebmc50j] {
    max-width: 1100px;
    margin: 0 auto;
    padding: 1.5rem 1.25rem 3rem;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* ── Header ── */

.ld-header[b-nxuebmc50j] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
    min-width: 0;
}

.ld-header-left[b-nxuebmc50j] {
    display: flex;
    align-items: flex-start;
    gap: .875rem;
    min-width: 0;
}

.ld-back[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    color: var(--b9-text-soft);
    text-decoration: none;
    transition: background .15s, color .15s;
    font-size: 1rem;
    flex-shrink: 0;
    margin-top: .25rem;
}

.ld-back:hover[b-nxuebmc50j] {
    background: var(--b9-surface-muted);
    color: var(--b9-text);
}

.ld-title-row[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    gap: .625rem;
    flex-wrap: wrap;
}

.ld-title[b-nxuebmc50j] {
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--b9-text);
    margin: 0;
    line-height: 1.2;
}

.ld-meta[b-nxuebmc50j] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-top: .375rem;
    line-height: 1.4;
}

.ld-header-actions[b-nxuebmc50j] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    flex-shrink: 0;
    min-width: 0;
    align-items: center;
    overflow: visible;
}

.ld-safe-actions[b-nxuebmc50j] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
}

.ld-more-actions[b-nxuebmc50j] {
    position: relative;
    overflow: visible;
}

.ld-more-actions-toggle[b-nxuebmc50j] {
    min-width: 48px;
    min-height: 48px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}

.ld-more-actions-toggle:focus-visible[b-nxuebmc50j] {
    outline: 2px solid #2563eb;
    outline-style: solid;
    outline-width: 2px;
    outline-offset: 2px;
    box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.22);
}

/* dark is default — override outline to a lighter blue that's visible on dark */
.ld-more-actions-toggle:focus-visible[b-nxuebmc50j] {
    outline-color: #93c5fd;
    box-shadow: 0 0 0 2px rgba(147, 197, 253, 0.3);
}

html[data-theme="light"] .ld-more-actions-toggle:focus-visible[b-nxuebmc50j] {
    outline-color: #2563eb;
    box-shadow: 0 0 0 2px rgba(37, 99, 235, 0.22);
}

.ld-more-actions-menu[b-nxuebmc50j] {
    z-index: 1080;
    min-width: 13.5rem;
    list-style: none;
    margin: .35rem 0 0;
    padding: .4rem;
    position: absolute;
    right: 0;
    top: calc(100% + 2px);
    border-radius: 10px;
    border: 1px solid var(--b9-border);
    background: var(--b9-surface-elevated, var(--b9-surface));
    box-shadow: 0 10px 24px rgba(2, 8, 23, 0.22);
}

.ld-action-item[b-nxuebmc50j] {
    width: 100%;
    border: 0;
    text-align: left;
    border-radius: 8px;
    background: transparent;
    padding: .5rem .625rem;
    display: inline-flex;
    align-items: center;
    color: var(--text-secondary);
    font-weight: 500;
}

.ld-action-item:hover[b-nxuebmc50j],
.ld-action-item:focus-visible[b-nxuebmc50j] {
    background: var(--bg-raised);
    color: var(--text-primary);
}

.ld-action-danger[b-nxuebmc50j] {
    width: 100%;
    border: 0;
    text-align: left;
    border-radius: 8px;
    background: transparent;
    padding: .5rem .625rem;
    display: inline-flex;
    align-items: center;
    color: #b91c1c !important;
    font-weight: 600;
}

.ld-action-danger:hover[b-nxuebmc50j],
.ld-action-danger:focus-visible[b-nxuebmc50j] {
    color: #ffffff !important;
    background-color: #b91c1c !important;
}

/* dark is default — danger action uses lighter red so it's visible on dark bg */
.ld-action-danger[b-nxuebmc50j] {
    color: #fecaca !important;
}

.ld-action-danger:hover[b-nxuebmc50j],
.ld-action-danger:focus-visible[b-nxuebmc50j] {
    color: #ffffff !important;
    background-color: #dc2626 !important;
}

html[data-theme="light"] .ld-action-danger[b-nxuebmc50j] {
    color: #b91c1c !important;
}

html[data-theme="light"] .ld-action-danger:hover[b-nxuebmc50j],
html[data-theme="light"] .ld-action-danger:focus-visible[b-nxuebmc50j] {
    color: #ffffff !important;
    background-color: #b91c1c !important;
}

/* ── Alerts ── */

.ld-loading[b-nxuebmc50j] {
    padding: 3rem 0;
    text-align: left;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .6rem;
    color: var(--b9-text-soft);
    font-size: .9375rem;
}

.ld-loading-copy[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    gap: .15rem;
    max-width: 34rem;
}

.ld-loading-title[b-nxuebmc50j] {
    color: var(--b9-text);
    font-weight: 600;
}

.ld-loading-sub[b-nxuebmc50j] {
    color: var(--b9-text-soft);
}

.ld-alert[b-nxuebmc50j] {
    padding: .75rem 1rem;
    border-radius: 8px;
    font-size: .875rem;
    margin-bottom: 1rem;
}

.ld-alert-success[b-nxuebmc50j] {
    background: var(--success-soft, rgba(34,197,94,0.12));
    color: var(--success-text, #4ade80);
    border: 1px solid var(--success-border, rgba(34,197,94,0.3));
}

.ld-alert-danger[b-nxuebmc50j] {
    background: var(--danger-soft, rgba(239,68,68,0.12));
    color: var(--danger-text, #f87171);
    border: 1px solid var(--danger-border, rgba(239,68,68,0.3));
}

.ld-confirm-banner[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .875rem 1.125rem;
    background: var(--warning-soft, rgba(251,191,36,0.12));
    border: 1px solid var(--warning-border, rgba(251,191,36,0.3));
    border-radius: 10px;
    font-size: .9rem;
    color: var(--b9-text);
    margin-bottom: 1rem;
    flex-wrap: wrap;
}

.ld-confirm-btns[b-nxuebmc50j] {
    display: flex;
    gap: .5rem;
    flex-shrink: 0;
}

/* ── Tabs ── */

.ld-tabs[b-nxuebmc50j] {
    display: flex;
    gap: .25rem;
    border-bottom: 2px solid var(--b9-border);
    margin-bottom: 1.25rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;    /* Firefox */
    -ms-overflow-style: none; /* IE/Edge */
}

.ld-tabs[b-nxuebmc50j]::-webkit-scrollbar {
    display: none; /* Chrome/Safari/WebKit — hides the scrollbar without disabling scroll */
}

.ld-tab[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    padding: .625rem 1rem;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    font-size: 1rem;
    font-weight: 600;
    color: var(--b9-text-soft);
    cursor: pointer;
    transition: color .15s;
    border-radius: 6px 6px 0 0;
    flex: 0 0 auto;
}

.ld-tab:hover[b-nxuebmc50j] { color: var(--b9-text); }

/* dark is default */
.ld-tab-active[b-nxuebmc50j] {
    color: #93C5FD;
    border-bottom-color: #60A5FA;
    font-weight: 600;
}

html[data-theme="light"] .ld-tab-active[b-nxuebmc50j] {
    color: var(--b9-primary-text);
    border-bottom-color: var(--b9-primary);
}

.ld-tab-badge[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    padding: 0 .375rem;
    background: var(--b9-surface-muted);
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-text-soft);
}

.ld-tab-active .ld-tab-badge[b-nxuebmc50j] {
    background: var(--brand-soft, rgba(139,92,246,0.18));
    color: var(--b9-violet-text, #a78bfa);
}

/* ── Cards ── */

.ld-card[b-nxuebmc50j] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    overflow: hidden;
}

.ld-card-header[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .875rem 1.25rem;
    border-bottom: 1px solid var(--b9-border);
    background: var(--b9-surface);
}

.ld-card-title[b-nxuebmc50j] {
    font-weight: 600;
    font-size: .9375rem;
    color: var(--b9-text);
    line-height: 1.3;
}

.ld-card-hint[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    line-height: 1.4;
}

/* ── Add bar ── */

.ld-add-bar[b-nxuebmc50j] {
    padding: .875rem 1.25rem;
    border-bottom: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
}

.ld-add-label[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: .03em;
    margin-bottom: .5rem;
}

.ld-add-row[b-nxuebmc50j] {
    display: flex;
    gap: .625rem;
    align-items: center;
    flex-wrap: wrap;
}

/* ── Player search picker ── */

.ld-search-wrap[b-nxuebmc50j] {
    position: relative;
    flex: 1 1 260px;
    max-width: 460px;
}

.ld-search-input-wrap[b-nxuebmc50j] {
    position: relative;
    display: flex;
    align-items: center;
}

.ld-search-icon[b-nxuebmc50j] {
    position: absolute;
    left: .75rem;
    color: var(--b9-text-soft);
    pointer-events: none;
    font-size: .9rem;
}

.ld-search-input[b-nxuebmc50j] {
    width: 100%;
    padding-left: 2.1rem;
    padding-right: 2.25rem;
    font-size: .9rem;
    background: var(--bg-elevated, var(--b9-surface-muted));
    border-color: var(--border-default, var(--b9-border));
    color: var(--text-primary);
}

.ld-search-input:focus[b-nxuebmc50j] {
    border-color: var(--brand-accent, #3b82f6);
    box-shadow: 0 0 0 3px rgba(59,130,246,.18);
}

.ld-search-clear-btn[b-nxuebmc50j] {
    position: absolute;
    right: .55rem;
    background: none;
    border: none;
    color: var(--b9-text-soft);
    cursor: pointer;
    font-size: 1.1rem;
    line-height: 1;
    padding: 0 .2rem;
    opacity: .7;
}
.ld-search-clear-btn:hover[b-nxuebmc50j] { opacity: 1; color: var(--text-primary); }

/* Transparent full-screen backdrop — clicking outside closes dropdown */
.ld-search-backdrop[b-nxuebmc50j] {
    position: fixed;
    inset: 0;
    z-index: 199;
    background: transparent;
}

/* Floating suggestion list */
.ld-search-dropdown[b-nxuebmc50j] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    right: 0;
    min-width: 100%;
    background: var(--bg-elevated, #1e2736);
    border: 1px solid var(--border-default, rgba(255,255,255,.12));
    border-radius: 10px;
    box-shadow: 0 12px 32px rgba(0,0,0,.45);
    z-index: 200;
    overflow: hidden;
    max-height: 300px;
    overflow-y: auto;
}

.ld-search-result[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: .65rem .9rem;
    background: none;
    border: none;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,.06));
    text-align: left;
    cursor: pointer;
    color: var(--text-primary);
    transition: background .1s;
    min-height: 48px; /* thumb-friendly tap target */
}

.ld-search-result:last-child[b-nxuebmc50j] { border-bottom: none; }
.ld-search-result:hover[b-nxuebmc50j], .ld-search-result:focus[b-nxuebmc50j] { background: var(--bg-raised, rgba(255,255,255,.06)); outline: none; }

.ld-search-result-name[b-nxuebmc50j] {
    font-size: .9rem;
    font-weight: 500;
}

.ld-search-hcp[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    background: var(--bg-raised, rgba(255,255,255,.07));
    padding: 2px 9px;
    border-radius: 12px;
    flex-shrink: 0;
    margin-left: .5rem;
}

.ld-search-no-results[b-nxuebmc50j] {
    padding: .85rem .9rem;
    color: var(--text-muted);
    font-size: .875rem;
}

/* Selected state — chip */
.ld-search-chip[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
    padding: .45rem .85rem;
    background: var(--brand-soft, rgba(59,130,246,.1));
    border: 1.5px solid var(--brand-muted, rgba(59,130,246,.35));
    border-radius: 22px;
    font-size: .9rem;
    color: var(--text-primary);
    font-weight: 500;
    min-height: 38px;
    max-width: 100%;
}

.ld-search-chip-clear[b-nxuebmc50j] {
    background: none;
    border: none;
    color: var(--text-muted);
    cursor: pointer;
    padding: 0 .15rem;
    font-size: 1.1rem;
    line-height: 1;
    margin-left: .2rem;
    flex-shrink: 0;
}
.ld-search-chip-clear:hover[b-nxuebmc50j] { color: var(--text-primary); }

/* Enroll button — slightly larger than the old sm button for grab-ability */
.ld-enroll-btn[b-nxuebmc50j] {
    font-size: .9rem;
    padding: .45rem 1.1rem;
    white-space: nowrap;
    flex-shrink: 0;
}

.ld-inline-error[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--b9-danger);
    margin-top: .375rem;
}

.ld-team-grid[b-nxuebmc50j] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    padding: 1rem 1.25rem 1.25rem;
}

.ld-team-card[b-nxuebmc50j] {
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    background: var(--b9-surface-muted);
    padding: 0.9rem;
}

.ld-team-head[b-nxuebmc50j] {
    display: flex;
    gap: 0.6rem;
    align-items: center;
    margin-bottom: 0.55rem;
}

.ld-team-help[b-nxuebmc50j] {
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
    margin-bottom: 0.75rem;
}

.ld-team-members[b-nxuebmc50j] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.75rem;
}

.ld-team-slot[b-nxuebmc50j] {
    min-width: 0;
}

/* ── Empty state ── */

.ld-empty[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .75rem;
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--b9-text-soft);
    font-size: .9rem;
}

/* 🔴 --b9-border is 6% white in dark. An empty-state icon drawn in it is a 1.13:1 smudge —
   the picture that is supposed to tell a commissioner the section is empty rather than
   broken. It is meaningful non-text and is held to 3:1; --b9-text-soft is the same token
   the caption under it already uses, so the icon and its sentence read as one thing.

   The same line, the same token, exists at Events/Scoring.razor.css:246 (.sc-state-icon).
   That file belongs to another package and is reported, not touched. */
.ld-empty-icon[b-nxuebmc50j] {
    font-size: 2.5rem;
    color: var(--b9-text-soft);
}

.ld-empty p[b-nxuebmc50j] { margin: 0; max-width: 360px; }

/* ── Storytelling standings (Phase 1) ── */

.ls-week-strip[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .9rem;
    border: 1px solid var(--brand-ring);
    background: var(--bg-elevated);
    border-radius: 10px;
    padding: .85rem 1rem;
    margin: 0 .75rem .75rem;
    flex-wrap: wrap;
}

.ls-week-strip-main[b-nxuebmc50j] {
    min-width: 200px;
}

.ls-week-strip-label[b-nxuebmc50j] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--brand-text);
    font-weight: 700;
}

.ls-week-strip-title[b-nxuebmc50j] {
    font-size: .93rem;
    font-weight: 700;
    color: var(--b9-text);
}

.ls-week-strip-meta[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
}

.ls-week-strip-matchups[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text);
    flex: 1 1 260px;
}

.ls-mover-card[b-nxuebmc50j] {
    border: 1px solid rgba(245, 158, 11, 0.30);
    background: var(--warning-soft);
    border-radius: 10px;
    padding: .75rem 1rem;
}

.ls-mover-label[b-nxuebmc50j] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--warning-text);
    font-weight: 700;
}

.ls-mover-team[b-nxuebmc50j] {
    font-size: .95rem;
    font-weight: 700;
    color: var(--b9-text);
}

.ls-mover-meta[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: var(--font-size-sm);
    color: var(--warning-text);
}

.ls-standings-list[b-nxuebmc50j] {
    display: grid;
    gap: .75rem;
}

.ls-standings-card[b-nxuebmc50j] {
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    background: var(--bg-elevated);
    padding: .85rem .95rem;
}

.ls-standings-head[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: .6rem;
}

.ls-standings-rank[b-nxuebmc50j] {
    width: 1.85rem;
    height: 1.85rem;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--brand-text);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-chip);
    font-weight: 700;
    flex-shrink: 0;
}

.ls-standings-team[b-nxuebmc50j] {
    min-width: 0;
    flex: 1;
}

.ls-standings-team-name[b-nxuebmc50j] {
    font-size: .92rem;
    font-weight: 700;
    color: var(--b9-text);
    line-height: 1.2;
}

.ls-standings-pool[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
}

/* Admin pool picker */
.ls-pool-picker-wrap[b-nxuebmc50j] {
    position: relative;
}

.ls-pool-badge-btn[b-nxuebmc50j] {
    background: none;
    border: none;
    padding: 0;
    font-size: var(--font-size-sm);
    color: var(--b9-primary-text);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: .2rem;
}

.ls-pool-badge-btn:hover[b-nxuebmc50j] {
    text-decoration: underline;
}

/* ── Pool picker sheet — centered overlay so it is never clipped by .ld-card{overflow:hidden}. ── */
.ls-pool-sheet-overlay[b-nxuebmc50j] {
    position: fixed;
    inset: 0;
    z-index: 1090;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(2, 6, 23, .72);
    backdrop-filter: blur(6px);
}

.ls-pool-sheet[b-nxuebmc50j] {
    width: min(340px, 100%);
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    box-shadow: 0 20px 60px rgba(0, 0, 0, .5);
    color: var(--text-primary);
    overflow: hidden;
}

.ls-pool-sheet-head[b-nxuebmc50j] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: .9rem 1rem;
    border-bottom: 1px solid var(--border-subtle);
}

.ls-pool-sheet-kicker[b-nxuebmc50j] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin-bottom: .15rem;
}

.ls-pool-sheet-title[b-nxuebmc50j] {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary);
    word-break: break-word;
}

.ls-pool-sheet-close[b-nxuebmc50j] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 999px;
    border: 1px solid var(--border-subtle);
    background: var(--bg-raised);
    color: var(--text-muted);
    cursor: pointer;
}

.ls-pool-sheet-close:hover[b-nxuebmc50j] { color: var(--text-primary); }

.ls-pool-sheet-body[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    padding: .5rem;
}

.ls-pool-sheet-opt[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 48px;
    padding: .6rem .75rem;
    border: none;
    border-radius: 10px;
    background: transparent;
    color: var(--text-primary);
    font-size: .92rem;
    font-weight: 500;
    text-align: left;
    cursor: pointer;
    transition: background .1s;
}

.ls-pool-sheet-opt:hover[b-nxuebmc50j],
.ls-pool-sheet-opt:focus-visible[b-nxuebmc50j] {
    background: var(--bg-raised);
}

.ls-pool-sheet-opt--muted[b-nxuebmc50j] {
    color: var(--text-muted);
    font-size: var(--font-size-sm);
    margin-top: .15rem;
    border-top: 1px solid var(--border-subtle);
    border-radius: 0 0 10px 10px;
}

.ls-standings-trend[b-nxuebmc50j] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    border-radius: 999px;
    padding: .22rem .5rem;
    white-space: nowrap;
}

.ls-trend-up[b-nxuebmc50j] {
    background: var(--success-soft);
    color: var(--success-text);
}

.ls-trend-down[b-nxuebmc50j] {
    background: var(--danger-soft);
    color: var(--danger-text);
}

.ls-trend-flat[b-nxuebmc50j] {
    background: var(--bg-raised);
    color: var(--text-muted);
}

.ls-standings-metrics[b-nxuebmc50j] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .5rem;
}

.ls-standings-metrics--4[b-nxuebmc50j] {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.ls-metric-chip[b-nxuebmc50j] {
    background: var(--b9-surface-muted);
    border-radius: 8px;
    padding: .45rem .55rem;
    display: flex;
    flex-direction: column;
    gap: .2rem;
}

.ls-metric-chip--hcp[b-nxuebmc50j] {
    border: 1px solid var(--brand-soft, rgba(99,102,241,.18));
}

.ls-metric-label[b-nxuebmc50j] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--text-muted);
    font-weight: 700;
}

.ls-metric-value[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--b9-text);
    font-weight: 700;
}

/* ── Table ── */

.etable-wrap[b-nxuebmc50j] {
    max-width: 100%;
    overflow-x: auto;
}

.etable[b-nxuebmc50j] {
    width: 100%;
    border-collapse: collapse;
    font-size: .875rem;
}

.etable thead th[b-nxuebmc50j] {
    padding: .625rem 1rem;
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: .03em;
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
    background: var(--b9-surface-muted);
    line-height: 1.3;
}

.etable tbody tr[b-nxuebmc50j] {
    border-bottom: 1px solid var(--b9-border-light, var(--b9-border));
    transition: background .12s;
}

.etable tbody tr:last-child[b-nxuebmc50j] { border-bottom: none; }
.etable tbody tr:hover[b-nxuebmc50j] { background: var(--b9-surface-muted); }
.etable tbody tr.tr-withdrawn[b-nxuebmc50j] { opacity: .55; }

.etable tbody td[b-nxuebmc50j] {
    padding: .75rem 1rem;
    vertical-align: middle;
    color: var(--b9-text);
    line-height: 1.45;
    overflow-wrap: anywhere;
}

.td-player[b-nxuebmc50j]  { font-weight: 500; }
.td-soft[b-nxuebmc50j]    { color: var(--b9-text-soft); white-space: nowrap; }
.td-center[b-nxuebmc50j]  { text-align: center; }
.td-link[b-nxuebmc50j]    { color: var(--b9-primary-text); text-decoration: none; font-weight: 500; }
.td-link:hover[b-nxuebmc50j] { text-decoration: underline; }

/* Rank medals */
.rank-medal[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    font-size: var(--font-size-chip);
    font-weight: 700;
}

.rank-1[b-nxuebmc50j] { background: rgba(253,224,71,0.22);  color: #fde047; } /* gold   */
.rank-2[b-nxuebmc50j] { background: rgba(148,163,184,0.18); color: #94a3b8; } /* silver */
.rank-3[b-nxuebmc50j] { background: rgba(217,119,6,0.18);   color: #d97706; } /* bronze */

/* Action buttons */
.etd-actions[b-nxuebmc50j] { text-align: right; white-space: nowrap; }

.etd-action-btn[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 6px;
    color: var(--b9-text-soft);
    background: none;
    border: none;
    cursor: pointer;
    transition: background .15s, color .15s;
    font-size: .9375rem;
}

.etd-action-btn:hover[b-nxuebmc50j] { background: var(--b9-surface-muted); color: var(--b9-text); }

.etd-action-remove:hover[b-nxuebmc50j] { background: var(--danger-soft, rgba(239,68,68,0.14)); color: var(--danger-text, #FCA5A5); }

/* Status badges */
.estatus[b-nxuebmc50j] {
    display: inline-block;
    padding: .2rem .6rem;
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    white-space: nowrap;
}

.estatus-active[b-nxuebmc50j]    { background: var(--success-soft, rgba(34,197,94,0.14));  color: var(--success-text, #86EFAC); }
.estatus-open[b-nxuebmc50j]      { background: var(--info-soft,    rgba(56,189,248,0.12)); color: var(--info-text,    #7DD3FC); }
.estatus-draft[b-nxuebmc50j]     { background: var(--b9-surface-muted, rgba(148,163,184,0.1)); color: var(--b9-text-soft, #94a3b8); }
.estatus-closed[b-nxuebmc50j]    { background: var(--brand-soft,   rgba(99,102,241,0.12)); color: var(--brand-text,   #a5b4fc); }
.estatus-cancelled[b-nxuebmc50j] { background: var(--danger-soft,  rgba(239,68,68,0.14)); color: var(--danger-text,  #FCA5A5); }

/* Payment chips — clickable pill buttons on the roster */
.etd-pay-chip[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.18rem 0.55rem;
    border-radius: 100px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.03em;
    border: 1px solid transparent;
    background: none;
    cursor: pointer;
    transition: opacity .15s;
    white-space: nowrap;
    line-height: 1.4;
}
.etd-pay-chip:hover[b-nxuebmc50j] { opacity: 0.75; }

.etd-pay-paid[b-nxuebmc50j] {
    background: var(--success-soft, rgba(34,197,94,0.14));
    color: var(--success-text, #86EFAC);
    border-color: rgba(34,197,94,0.28);
}
.etd-pay-unpaid[b-nxuebmc50j] {
    background: var(--warning-soft, rgba(245,158,11,0.14));
    color: var(--warning-text, #FCD34D);
    border-color: rgba(245,158,11,0.28);
}
.etd-pay-waived[b-nxuebmc50j] {
    background: var(--b9-surface-muted, rgba(148,163,184,0.1));
    color: var(--b9-text-soft, #94a3b8);
    border-color: rgba(148,163,184,0.22);
}

/* Payment summary strip above roster table */
.ld-pay-summary[b-nxuebmc50j] {
    display: flex;
    gap: 0.85rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft, #94a3b8);
    padding: 0.1rem 0 0.65rem;
    flex-wrap: wrap;
    align-items: center;
}
.ld-pay-summary-item[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
}
.ld-pay-dot[b-nxuebmc50j] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}
.ld-pay-dot-paid[b-nxuebmc50j]   { background: var(--success-text, #86EFAC); }
.ld-pay-dot-unpaid[b-nxuebmc50j] { background: var(--warning-text, #FCD34D); }
.ld-pay-dot-waived[b-nxuebmc50j] { background: var(--b9-text-soft, #94a3b8); }

/* Column widths */
.col-rank[b-nxuebmc50j]    { width: 50px;  }
.col-rounds[b-nxuebmc50j]  { width: 80px;  text-align: center; }
.col-strokes[b-nxuebmc50j] { width: 110px; text-align: center; }
.col-avg[b-nxuebmc50j]     { width: 80px;  text-align: center; }
.col-hcp[b-nxuebmc50j]     { width: 90px;  }
.col-enrolled[b-nxuebmc50j] { width: 130px; }
.col-round[b-nxuebmc50j]   { width: 70px;  text-align: center; }
.col-course[b-nxuebmc50j]  { width: 160px; }
.col-date[b-nxuebmc50j]    { width: 130px; }
.col-status[b-nxuebmc50j]  { width: 110px; }
.col-actions[b-nxuebmc50j] { width: 60px;  }

/* Responsive */
@media (max-width: 900px) {
    .ld-header[b-nxuebmc50j] { flex-direction: column; }
    .ld-header-actions[b-nxuebmc50j] { width: 100%; }
    .ld-header-actions .btn[b-nxuebmc50j] { white-space: normal; }
    .ld-safe-actions[b-nxuebmc50j] {
        width: 100%;
        flex-direction: column;
        align-items: stretch;
    }
    .ld-more-actions[b-nxuebmc50j] {
        margin-left: auto;
    }
    .ld-safe-actions .btn[b-nxuebmc50j] { white-space: normal; }
    .col-course[b-nxuebmc50j], .col-enrolled[b-nxuebmc50j] { display: none; }

    .ld-card-header[b-nxuebmc50j] {
        flex-wrap: wrap;
        gap: .45rem;
    }
}

@media (max-width: 720px) {
    .ld-team-grid[b-nxuebmc50j],
    .ld-team-members[b-nxuebmc50j] {
        grid-template-columns: 1fr;
    }

    .ld-team-head[b-nxuebmc50j] {
        flex-direction: column;
        align-items: stretch;
    }
}

@media (max-width: 575px) {
    .col-hcp[b-nxuebmc50j], .col-date[b-nxuebmc50j], .col-avg[b-nxuebmc50j] { display: none; }
    .ld-tabs[b-nxuebmc50j] { overflow-x: auto; }
    .ld-tab[b-nxuebmc50j]  { white-space: nowrap; }

    .ls-week-strip[b-nxuebmc50j] {
        margin: 0 0 .75rem;
    }

    .ls-standings-metrics[b-nxuebmc50j] {
        grid-template-columns: 1fr;
    }

    .ls-standings-metrics--4[b-nxuebmc50j] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .ld-card-header[b-nxuebmc50j] {
        padding: .75rem .9rem;
    }

    .etable thead th[b-nxuebmc50j],
    .etable tbody td[b-nxuebmc50j] {
        padding-left: .65rem;
        padding-right: .65rem;
    }

    .td-soft[b-nxuebmc50j] {
        white-space: normal;
    }
}

/* Round reorder cell */
.ld-round-cell[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.ld-round-arrows[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.ld-arrow-btn[b-nxuebmc50j] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 18px;
    padding: 0;
    background: none;
    border: 1px solid var(--b9-border, #e2e8f0);
    border-radius: 4px;
    color: var(--b9-text-soft, #64748b);
    font-size: var(--font-size-chip);
    cursor: pointer;
    transition: background .1s, color .1s;
    line-height: 1;
}
.ld-arrow-btn:hover:not(:disabled)[b-nxuebmc50j] {
    background: var(--b9-surface-muted, #f1f5f9);
    color: var(--b9-text, #0f172a);
}
.ld-arrow-btn:disabled[b-nxuebmc50j] {
    opacity: .3;
    cursor: default;
}

.ld-round-status[b-nxuebmc50j] {
    display: inline-block;
    font-size: var(--font-size-chip);
    font-weight: 700;
    border-radius: 999px;
    padding: 0.12rem 0.5rem;
    letter-spacing: 0.02em;
}

.ld-rs-draft[b-nxuebmc50j]     { background: rgba(148,163,184,0.15); color: var(--text-secondary, #94a3b8); }
.ld-rs-open[b-nxuebmc50j]      { background: rgba(59,130,246,0.18);  color: #93c5fd; }
.ld-rs-active[b-nxuebmc50j]    { background: rgba(34,197,94,0.18);   color: #4ade80; }
.ld-rs-final[b-nxuebmc50j]     { background: rgba(139,92,246,0.18);  color: #c4b5fd; }
.ld-rs-cancelled[b-nxuebmc50j] { background: rgba(239,68,68,0.15);   color: #fca5a5; }

/* ════════════════════════════════════════════════════════════════════════
   LEAGUE OPERATIONS CENTER — Schedule tab wrappers (lops-*)
   Card, badge, button, and progress styles are in the scoped component
   CSS files (LeagueRoundCard.razor.css, etc.). Only page-level layout
   lives here.
   ════════════════════════════════════════════════════════════════════════ */

/* ── Toolbar: season meta + bulk action buttons ── */
.lops-toolbar[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-4, 1rem);
    padding: var(--space-3, .75rem) 0 var(--space-4, 1rem);
    flex-wrap: wrap;
    border-bottom: 1px solid var(--border-subtle);
    margin-bottom: var(--space-5, 1.25rem);
}

.lops-toolbar-meta[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    gap: var(--space-2, .5rem);
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    flex-wrap: wrap;
}

.lops-toolbar-actions[b-nxuebmc50j] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
    flex-shrink: 0;
}

/* ── Inline add-round form ── */
.lops-add-form[b-nxuebmc50j] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-lg, 12px);
    padding: var(--space-5, 1.25rem) var(--space-6, 1.5rem);
    margin-bottom: var(--space-5, 1.25rem);
}

.lops-add-form-inner[b-nxuebmc50j] {
    display: flex;
    gap: var(--space-4, 1rem);
    align-items: flex-end;
    flex-wrap: wrap;
}

.lops-add-field[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1, .25rem);
    min-width: 140px;
}

.lops-add-field--wide[b-nxuebmc50j] { flex: 1 1 200px; }

.lops-add-label[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
}

.lops-add-hint[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: var(--text-muted);
    opacity: .7;
}

.lops-add-actions[b-nxuebmc50j] {
    display: flex;
    gap: var(--space-2, .5rem);
    align-items: center;
    flex-shrink: 0;
}

/* ── Round card list container ── */
.lops-round-list[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    gap: var(--space-4, 1rem);
}

/* ── Responsive ── */
@media (max-width: 720px) {
    .lops-toolbar[b-nxuebmc50j] { flex-direction: column; align-items: stretch; }
    .lops-toolbar-actions[b-nxuebmc50j] { flex-wrap: wrap; }
}

@media (max-width: 480px) {
    .lops-add-form-inner[b-nxuebmc50j] { flex-direction: column; }
    .lops-add-actions[b-nxuebmc50j] { width: 100%; }
}

/* ── Registration lock bar ── */
.ld-reg-lock-bar[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.6rem 0.9rem;
    background: var(--warning-soft, rgba(245,158,11,0.12));
    border-bottom: 1px solid var(--border-subtle, #334155);
    border-radius: 0.5rem 0.5rem 0 0;
    flex-wrap: wrap;
}

.ld-reg-lock-info[b-nxuebmc50j] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #cbd5e1);
    flex: 1 1 200px;
}

.ld-reg-lock-btn[b-nxuebmc50j] { white-space: nowrap; }

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.ld-icon-warning[b-nxuebmc50j] { color: var(--warning); }

.ls-pool-badge-btn .bi-chevron-down[b-nxuebmc50j] { font-size: 0.65rem; }

.ld-pay-count-paid[b-nxuebmc50j] { color: var(--success-text); }
.ld-pay-count-unpaid[b-nxuebmc50j] { color: var(--warning-text); }

/* Notes toggle button + invite-sent check (was hardcoded #15803d,
   unreadable on dark surfaces — now theme-aware) */
.ld-notes-btn[b-nxuebmc50j],
.ld-notes-btn .bi[b-nxuebmc50j] { font-size: var(--font-size-sm); }
.ld-invite-sent[b-nxuebmc50j] { color: var(--success-text); font-size: var(--font-size-sm); }

.ld-spinner-xs[b-nxuebmc50j] { width: .7rem; height: .7rem; }

.ld-notes-row[b-nxuebmc50j] { background: var(--bg-raised); }

.ld-empty--tight[b-nxuebmc50j] { padding: 1.5rem 0; }
.ld-empty--tight .ld-empty-icon[b-nxuebmc50j] { font-size: 1.5rem; }

.ld-points-input[b-nxuebmc50j] { max-width: 100px; }

.ld-flyer-actions[b-nxuebmc50j] { max-width: 400px; }

/* ── Shared confirm modal (reuses .ls-pool-sheet-overlay / .ls-pool-sheet for the frame) ── */
.ld-confirm-modal[b-nxuebmc50j] { width: min(420px, 100%); }

.ld-confirm-modal-body[b-nxuebmc50j] {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: 1.1rem 1.15rem .5rem;
}

.ld-confirm-modal-icon[b-nxuebmc50j] {
    flex-shrink: 0;
    font-size: 1.25rem;
    color: var(--danger, #ef4444);
    margin-top: .1rem;
}

.ld-confirm-modal-text[b-nxuebmc50j] {
    margin: 0;
    font-size: .95rem;
    line-height: 1.4;
    color: var(--text-primary);
}

.ld-confirm-modal-btns[b-nxuebmc50j] {
    justify-content: flex-end;
    padding: .5rem 1.15rem 1.1rem;
}

/* ── "Weeks outside the season" reconciliation banner ── */
.lops-stray-banner[b-nxuebmc50j] {
    margin: .75rem 0 1rem;
    padding: .85rem 1rem;
    border: 1px solid var(--warning-border, rgba(245, 158, 11, .35));
    background: var(--warning-bg, rgba(245, 158, 11, .08));
    border-radius: 12px;
}

.lops-stray-head[b-nxuebmc50j] {
    display: flex;
    align-items: flex-start;
    gap: .55rem;
    font-size: .9rem;
    color: var(--text-primary);
}

.lops-stray-head i[b-nxuebmc50j] { color: var(--warning, #f59e0b); margin-top: .1rem; }

.lops-stray-list[b-nxuebmc50j] {
    display: flex;
    flex-direction: column;
    gap: .4rem;
    margin-top: .7rem;
}

.lops-stray-row[b-nxuebmc50j] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    flex-wrap: wrap;
}

.lops-stray-week[b-nxuebmc50j] {
    font-size: .88rem;
    font-weight: 600;
    color: var(--text-primary);
}

/* ── Season matchup schedule (ops list) ───────────────────────── */
.lops-segment-header[b-nxuebmc50j] {
    padding: 0.6rem 0.25rem 0.25rem;
    font-weight: 600;
    color: var(--text-muted);
    letter-spacing: 0.02em;
    border-bottom: 1px solid var(--border-subtle);
    margin-bottom: 0.5rem;
}

.lops-inline-note[b-nxuebmc50j] {
    margin: 0.5rem 0;
    padding: 0.5rem 0.75rem;
    border-radius: 8px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    color: var(--text-primary);
    font-size: 0.9rem;
}

.lops-bubble-panel[b-nxuebmc50j] { display: flex; flex-direction: column; gap: 0.25rem; }
.lops-bubble-sub[b-nxuebmc50j] { color: var(--text-muted); font-size: var(--font-size-sm); }
.lops-bubble-list[b-nxuebmc50j] { margin: 0.25rem 0 0; padding-left: 1.1rem; }
.lops-bubble-list li[b-nxuebmc50j] { margin: 0.15rem 0; }
/* /Components/Pages/Leagues/DiagnosticsDrawer.razor.rz.scp.css */
.ddx[b-7d5rlmmh2a] {
    padding: .7rem .8rem;
}

.ddx-summary[b-7d5rlmmh2a] {
    list-style: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
}

.ddx-summary[b-7d5rlmmh2a]::-webkit-details-marker {
    display: none;
}

.ddx-left[b-7d5rlmmh2a] {
    display: flex;
    align-items: center;
    gap: .45rem;
    font-weight: 600;
}

.ddx-hint[b-7d5rlmmh2a] {
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}

.ddx-body[b-7d5rlmmh2a] {
    margin-top: .6rem;
    display: flex;
    flex-direction: column;
    gap: .6rem;
}
/* /Components/Pages/Leagues/FinishWeekPanel.razor.rz.scp.css */
/* Per-group roster (teams or players) with scored / needs-score markers,
   shown under each pending group on the Finish Week panel. */
.fwp-units[b-v2uft56csq] {
    display: flex;
    flex-wrap: wrap;
    gap: .15rem .75rem;
    margin-top: .25rem;
}

.fwp-unit[b-v2uft56csq] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: var(--font-size-sm);
    color: var(--text-primary, inherit);
}

.fwp-unit .bi[b-v2uft56csq] { font-size: .72rem; }
.fwp-unit--done[b-v2uft56csq] { color: var(--text-muted, inherit); }
.fwp-unit--done .bi[b-v2uft56csq] { color: var(--success-text, #3fb950); }
.fwp-unit--pending .bi[b-v2uft56csq] { color: var(--warning-text, #d29922); }

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.fwp-mt-3[b-v2uft56csq] { margin-top: var(--space-3); }
.fwp-mt-4[b-v2uft56csq] { margin-top: var(--space-4); }
.fwp-btn-compact[b-v2uft56csq] { padding: .25rem .75rem; font-size: var(--font-size-sm); }
.fwp-choice[b-v2uft56csq] { cursor: pointer; }
/* /Components/Pages/Leagues/Flyer.razor.rz.scp.css */
/*
   Leagues/Flyer.razor.css
   All shared .flyer-* styles (including .flyer-eyebrow) are in
   wwwroot/flyer.css, loaded via <HeadContent> in FlyerLayout.razor.
   Add league-specific style overrides here only if needed.
*/
/* /Components/Pages/Leagues/Generation/GenerationFailureCallout.razor.rz.scp.css */
.gen-failure[b-xvcs50y6nb] {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
}
.gen-failure-body[b-xvcs50y6nb] { display: flex; gap: .75rem; align-items: flex-start; }
.gen-failure-icon[b-xvcs50y6nb] { font-size: 1.35rem; color: #b91c1c; margin-top: .1rem; }
.gen-failure-reason[b-xvcs50y6nb] { margin-top: .25rem; font-size: var(--font-size-sm); }
.gen-failure-meta[b-xvcs50y6nb] { margin-top: .4rem; font-size: var(--font-size-sm); color: var(--text-muted); }
/* /Components/Pages/Leagues/Generation/GenerationStateBadge.razor.rz.scp.css */
@keyframes gen-spin-b-bzv03c4sj5 { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.gen-badge-spin[b-bzv03c4sj5] { animation: gen-spin-b-bzv03c4sj5 1.1s linear infinite; display: inline-block; }
/* /Components/Pages/Leagues/Generation/GenerationStatusCard.razor.rz.scp.css */
.gen-status-card[b-3pkwaetfa4] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
    padding: 1rem;
    border-radius: 12px;
    border: 1px solid var(--border-subtle);
    background: var(--surface-2, var(--surface-card));
}

.gen-status-top[b-3pkwaetfa4] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.gen-status-title[b-3pkwaetfa4] { margin: 0; }

.gen-status-sub[b-3pkwaetfa4] {
    margin-top: .15rem;
    font-size: var(--font-size-sm);
}

.gen-status-running[b-3pkwaetfa4] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
}

.gen-status-meta[b-3pkwaetfa4] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.gen-status-body[b-3pkwaetfa4] { margin-top: .25rem; }
/* /Components/Pages/Leagues/Generation/StaleStateAlert.razor.rz.scp.css */
.gen-stale[b-zqto1frysj] {
    display: flex;
    gap: 1rem;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
}
.gen-stale-body[b-zqto1frysj] { display: flex; gap: .75rem; align-items: flex-start; }
.gen-stale-icon[b-zqto1frysj] { font-size: 1.35rem; color: #ca8a04; margin-top: .1rem; }
.gen-stale-reason[b-zqto1frysj] { margin-top: .25rem; font-size: .85rem; }
/* /Components/Pages/Leagues/GenerationAttemptHistoryDrawer.razor.rz.scp.css */
.ui-attempts__head[b-efyj2x4lnx] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.75rem;
}

.ui-attempts__list[b-efyj2x4lnx] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.ui-attempts__item[b-efyj2x4lnx] {
    padding: 0.55rem 0.7rem;
    border-radius: 6px;
    border: 1px solid var(--border-default);
    background: var(--bg-elevated);
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.ui-attempts__item--ok[b-efyj2x4lnx]   { border-left: 3px solid var(--success); }
.ui-attempts__item--err[b-efyj2x4lnx]  { border-left: 3px solid var(--danger); }
.ui-attempts__item--warn[b-efyj2x4lnx] { border-left: 3px solid var(--warning); }
.ui-attempts__item--run[b-efyj2x4lnx]  { border-left: 3px solid var(--brand); }
.ui-attempts__item--idle[b-efyj2x4lnx] { border-left: 3px solid var(--border-strong); }

.ui-attempts__line1[b-efyj2x4lnx] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    align-items: center;
    font-size: 0.88rem;
}

.ui-attempts__kind[b-efyj2x4lnx],
.ui-attempts__outcome[b-efyj2x4lnx] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-weight: 600;
}

.ui-attempts__reason[b-efyj2x4lnx] {
    font-size: 0.9rem;
    color: var(--text-primary);
}
/* /Components/Pages/Leagues/Index.razor.rz.scp.css */
/* ── Leagues Index page ───────────────────────────────────────────────── */

.lg-page[b-7yrqtxo9x6] {
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
    max-width: var(--admin-list-page-max-width, 1120px);
    margin: 0 auto;
    padding: 1.1rem 0 2.75rem;
    overflow-x: hidden;
}

@media (max-width: 1280px) {
    .lg-header[b-7yrqtxo9x6] {
        justify-content: flex-start;
        align-items: flex-start;
    }

    .lg-header-left[b-7yrqtxo9x6] {
        flex-basis: 100%;
    }

    .lg-header-actions[b-7yrqtxo9x6] {
        margin-left: 0;
        width: 100%;
        justify-content: flex-start;
    }

    .lg-header-actions .btn[b-7yrqtxo9x6] {
        width: auto;
    }
}

.lg-header[b-7yrqtxo9x6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
    gap: 1rem;
    flex-wrap: wrap;
}

.lg-header-left[b-7yrqtxo9x6] {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    flex: 1 1 420px;
    min-width: 0;
}

.lg-header-copy[b-7yrqtxo9x6] {
    display: flex;
    flex-direction: column;
    gap: 0.18rem;
    min-width: 0;
}

.lg-title[b-7yrqtxo9x6] {
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--b9-text);
    margin: 0;
}

.lg-subtitle[b-7yrqtxo9x6] {
    font-size: 0.91rem;
    color: var(--b9-text-soft);
    max-width: min(42rem, 100%);
    line-height: 1.3;
}

.lg-header-actions[b-7yrqtxo9x6] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    flex: 0 0 auto;
    margin-left: auto;
}

.lg-header-actions .btn[b-7yrqtxo9x6] {
    white-space: nowrap;
    min-width: 146px;
}

.lg-header-action-btn[b-7yrqtxo9x6] {
    min-height: 2.5rem;
}

/* State cards */
.lg-loading[b-7yrqtxo9x6] {
    padding: 3rem 0;
    text-align: center;
    color: var(--b9-text-soft);
    font-size: .9375rem;
}

.lg-empty[b-7yrqtxo9x6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 2.75rem 1rem;
    text-align: center;
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    background: var(--b9-surface);
}

.lg-empty-icon[b-7yrqtxo9x6] {
    font-size: 2.5rem;
    color: var(--b9-text-soft);
}

.lg-empty-title[b-7yrqtxo9x6] {
    font-weight: 700;
    color: var(--b9-text);
}

.lg-empty-text[b-7yrqtxo9x6] {
    color: var(--b9-text-soft);
    font-size: .95rem;
    max-width: 420px;
    margin: 0;
}

/* Count badge */
.lg-count[b-7yrqtxo9x6] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
}

/* The four lg-ops cards that used to stand between an admin and their leagues were removed by
   the UX audit (O04 / X09). Their counts now render through Components/Shared/OpsStatLine.razor
   at the foot of the page. */

/* ── Table reuse (same namespace as Home.razor.css) ──────────────────── */

.dash-card[b-7yrqtxo9x6] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 12px;
    overflow: hidden;
}

.dash-card-header[b-7yrqtxo9x6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: .72rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    gap: .62rem;
}

.dash-card-heading[b-7yrqtxo9x6] {
    display: flex;
    flex-direction: column;
    gap: .14rem;
    min-width: 0;
}

.dash-card-title[b-7yrqtxo9x6] {
    font-weight: 700;
    font-size: .95rem;
    color: var(--b9-text);
}

.dash-card-subtitle[b-7yrqtxo9x6] {
    font-size: var(--font-size-sm);
    line-height: 1.2;
    color: var(--b9-text-soft);
}

.lg-filter-bar[b-7yrqtxo9x6] {
    display: flex;
    align-items: center;
    gap: .45rem;
    flex-wrap: wrap;
    padding: .62rem 1rem;
    border-bottom: 1px solid var(--b9-border);
    background: color-mix(in srgb, var(--b9-surface-muted) 55%, transparent);
}

.lg-filter-pill[b-7yrqtxo9x6] {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    border: 1px solid var(--b9-border);
    border-radius: 999px;
    background: transparent;
    color: var(--b9-text-soft);
    padding: .34rem .72rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.lg-filter-pill.is-active[b-7yrqtxo9x6] {
    color: var(--b9-text);
    border-color: color-mix(in srgb, var(--b9-primary) 34%, var(--b9-border));
    background: color-mix(in srgb, var(--b9-primary) 10%, transparent);
}

.lg-filter-pill-count[b-7yrqtxo9x6] {
    display: inline-flex;
    min-width: 1.35rem;
    min-height: 1.35rem;
    align-items: center;
    justify-content: center;
    padding: 0 .32rem;
    border-radius: 999px;
    background: color-mix(in srgb, var(--b9-surface-muted) 85%, transparent);
    color: inherit;
    font-size: var(--font-size-chip);
}

.lg-filter-empty[b-7yrqtxo9x6] {
    padding: 1.25rem;
    color: var(--b9-text-soft);
    font-size: .9rem;
}

.etable-wrap[b-7yrqtxo9x6] {
    overflow-x: auto;
    container-type: inline-size;
}

.etable[b-7yrqtxo9x6] {
    width: 100%;
    border-collapse: collapse;
    table-layout: auto;
    font-size: .875rem;
}

.etable thead th[b-7yrqtxo9x6] {
    padding: .56rem .8rem;
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-soft);
    text-transform: uppercase;
    letter-spacing: .03em;
    border-bottom: 1px solid var(--b9-border);
    white-space: nowrap;
    background: var(--b9-surface-muted);
}

.etable tbody tr[b-7yrqtxo9x6] {
    border-bottom: 1px solid var(--b9-border-light, var(--b9-border));
    transition: background .12s, box-shadow .12s;
}

.etable tbody tr:last-child[b-7yrqtxo9x6] { border-bottom: none; }
.etable tbody tr:hover[b-7yrqtxo9x6] {
    background: color-mix(in srgb, var(--b9-surface-muted) 82%, transparent);
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--b9-primary) 20%, transparent);
}

.etable tbody td[b-7yrqtxo9x6] {
    padding: .68rem .8rem;
    vertical-align: middle;
    color: var(--b9-text);
}

.etable thead th:last-child[b-7yrqtxo9x6],
.etable tbody td:last-child[b-7yrqtxo9x6] {
    padding-right: 1rem;
}

.etd-name-stack[b-7yrqtxo9x6] {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}

.etd-name-link[b-7yrqtxo9x6] {
    display: block;
    max-width: none;
    overflow: visible;
    text-overflow: clip;
    white-space: normal;
    word-break: normal;
    overflow-wrap: anywhere;
    hyphens: auto;
    font-size: .93rem;
    font-weight: 700;
    color: var(--b9-text);
    line-height: 1.25;
    text-decoration: none;
}

.lgtd-inline-meta[b-7yrqtxo9x6] {
    display: none;
    flex-wrap: wrap;
    gap: .35rem .65rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    line-height: 1.3;
}

.lgtd-inline-meta span[b-7yrqtxo9x6] {
    position: relative;
}

.lgtd-inline-meta span + span[b-7yrqtxo9x6]::before {
    content: "·";
    margin-right: .45rem;
    color: color-mix(in srgb, var(--b9-text-soft) 70%, transparent);
}

.etd-name[b-7yrqtxo9x6] {
    min-width: 200px;
}

.etd-name-link:hover[b-7yrqtxo9x6] {
    text-decoration: underline;
    color: var(--b9-primary-text);
}

.etd-format[b-7yrqtxo9x6], .etd-date[b-7yrqtxo9x6], .etd-players[b-7yrqtxo9x6], .etd-rounds[b-7yrqtxo9x6] {
    color: var(--b9-text-soft);
    font-size: var(--font-size-sm);
    line-height: 1.2;
}

.etd-date[b-7yrqtxo9x6] {
    white-space: nowrap;
}

.etd-actions[b-7yrqtxo9x6] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    gap: .35rem;
    flex-wrap: nowrap;
    white-space: nowrap;
    min-width: 0;
}

.lgtd-action-stack[b-7yrqtxo9x6] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .32rem;
}

.etd-row-action[b-7yrqtxo9x6] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2.1rem;
    padding: .38rem .82rem;
    border-radius: 999px;
    border: 1px solid var(--b9-border);
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: .02em;
    white-space: nowrap;
    color: var(--b9-text-soft);
    background: transparent;
    text-decoration: none;
}

.etd-row-action:hover[b-7yrqtxo9x6] {
    background: var(--b9-surface-muted);
    color: var(--b9-text);
}

.etd-row-action-primary[b-7yrqtxo9x6] {
    color: var(--b9-text);
    border-color: var(--b9-border-strong, var(--b9-border));
    font-weight: 600;
    background: color-mix(in srgb, var(--b9-primary) 10%, transparent);
    min-height: 2.5rem;
    padding: .5rem 1rem;
}

.etd-row-action-secondary[b-7yrqtxo9x6] {
    color: var(--b9-text-soft);
    font-weight: 400;
}

.lgtd-secondary-actions[b-7yrqtxo9x6] {
    display: flex;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: .2rem .55rem;
}

.lgtd-secondary-action[b-7yrqtxo9x6] {
    border: none;
    background: transparent;
    padding: .22rem .08rem;
    min-height: 1.5rem;
    font-size: var(--font-size-sm);
    line-height: 1.1;
    color: var(--b9-text-soft);
    opacity: .82;
    text-decoration: none;
}

.lgtd-secondary-action:hover[b-7yrqtxo9x6] {
    color: var(--b9-text);
    opacity: 1;
    text-decoration: underline;
}

/* Status badges */
.estatus[b-7yrqtxo9x6] {
    display: inline-flex;
    align-items: center;
    padding: .16rem .48rem;
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 500;
    white-space: nowrap;
    letter-spacing: .02em;
    border: 1px solid transparent;
}

.estatus-active[b-7yrqtxo9x6] {
    background: color-mix(in srgb, var(--b9-success) 8%, transparent);
    color: color-mix(in srgb, var(--b9-success) 70%, var(--b9-text));
    border-color: color-mix(in srgb, var(--b9-success) 36%, var(--b9-border));
}

.estatus-draft[b-7yrqtxo9x6] {
    background: var(--b9-surface-muted, rgba(148, 163, 184, 0.18));
    color: var(--b9-text-soft, #cbd5e1);
    border-color: var(--b9-border, rgba(148, 163, 184, 0.35));
}

.estatus-closed[b-7yrqtxo9x6] {
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    border-color: color-mix(in srgb, var(--b9-primary) 42%, transparent);
}

.estatus-cancelled[b-7yrqtxo9x6] {
    background: var(--b9-danger-soft, rgba(239, 68, 68, 0.16));
    color: var(--b9-danger-text, #fca5a5);
    border-color: var(--b9-danger, rgba(239, 68, 68, 0.45));
}

/* Column widths — Status and Actions are protected; never hidden */
.col-format[b-7yrqtxo9x6]  { width: 84px; }
.col-date[b-7yrqtxo9x6]    { width: 104px; }
.col-players[b-7yrqtxo9x6] { width: 56px; text-align: center; }
.col-rounds[b-7yrqtxo9x6]  { width: 56px; text-align: center; }
.col-status[b-7yrqtxo9x6]  { width: 92px; white-space: nowrap; }
.col-actions[b-7yrqtxo9x6] { width: 168px; white-space: nowrap; }

.col-status[b-7yrqtxo9x6],
td.col-status[b-7yrqtxo9x6] {
    text-align: left;
}

.col-players[b-7yrqtxo9x6],
.col-rounds[b-7yrqtxo9x6],
td.col-players[b-7yrqtxo9x6],
td.col-rounds[b-7yrqtxo9x6] {
    text-align: center;
}

/* Container queries — hide lower-priority columns when the table container
   is too narrow. Based on actual container width (not viewport), so the
   sidebar width is accounted for automatically.
   Order: Rounds → Players → Format → Start Date.
   Status and Actions are NEVER hidden.
   
   Column totals (fixed cols):
     All 6:  Format(84)+Date(104)+Ply(56)+Rnd(56)+Status(92)+Actions(156) = 548px
     -Rounds: 492px  → hide Rounds when container ≤ Name(200)+492 = 692px (use 700)
     -Players: 436px → hide Players when container ≤ Name(200)+436 = 636px (use 650)
     -Format: 352px  → hide Format when container ≤ Name(200)+352 = 552px (use 570)
     -Date: 248px    → hide Date when container ≤ Name(200)+248 = 448px (use 460)
*/
@container (max-width: 750px) {
    .col-rounds[b-7yrqtxo9x6] { display: none; }
}

@container (max-width: 695px) {
    .col-players[b-7yrqtxo9x6] { display: none; }
    .lgtd-inline-meta[b-7yrqtxo9x6] { display: flex; }
}

@container (max-width: 590px) {
    .col-format[b-7yrqtxo9x6] { display: none; }
    .etd-name[b-7yrqtxo9x6] { min-width: 180px; }
}

@container (max-width: 480px) {
    .col-date[b-7yrqtxo9x6] { display: none; }
    .etd-name[b-7yrqtxo9x6] { min-width: 0; }
    .etd-name-link[b-7yrqtxo9x6] {
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
        max-width: none;
    }
}

@media (max-width: 980px) {
    .lg-header[b-7yrqtxo9x6] {
        align-items: flex-start;
        gap: .75rem;
    }

    .lg-header-left[b-7yrqtxo9x6] {
        flex-basis: 100%;
    }

    .lg-header-actions[b-7yrqtxo9x6] {
        width: 100%;
        margin-left: 0;
    }

    .lg-header-actions .btn[b-7yrqtxo9x6] {
        width: 100%;
        justify-content: center;
    }
}

@media (max-width: 620px) {
    .etd-name-link[b-7yrqtxo9x6] {
        font-size: .9rem;
    }

    .etd-row-action[b-7yrqtxo9x6] {
        font-size: var(--font-size-sm);
        padding: .25rem .62rem;
    }
}

@container (max-width: 860px) {
    .etable thead[b-7yrqtxo9x6] {
        display: none;
    }

    .etable-wrap[b-7yrqtxo9x6] {
        overflow-x: hidden;
    }

    .etable[b-7yrqtxo9x6],
    .etable tbody[b-7yrqtxo9x6],
    .etable tr[b-7yrqtxo9x6],
    .etable td[b-7yrqtxo9x6] {
        display: block;
        width: 100%;
    }

    .etable tbody tr[b-7yrqtxo9x6] {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto fit-content(47%);
        column-gap: .42rem;
        row-gap: .22rem;
        align-items: start;
        padding: .56rem .74rem;
        margin: .38rem 0;
        border: 1px solid color-mix(in srgb, var(--b9-border) 84%, var(--b9-primary) 16%);
        border-radius: 10px;
        background: linear-gradient(
            180deg,
            color-mix(in srgb, var(--b9-surface) 95%, black 5%) 0%,
            color-mix(in srgb, var(--b9-surface) 89%, black 11%) 100%
        );
        box-shadow: 0 1px 0 rgba(15, 23, 42, .18), inset 0 0 0 1px color-mix(in srgb, var(--b9-surface-muted) 28%, transparent);
    }

    .etable tbody td[b-7yrqtxo9x6] {
        padding: 0;
        border: 0;
    }

    .etable tbody td.col-format[b-7yrqtxo9x6],
    .etable tbody td.col-date[b-7yrqtxo9x6],
    .etable tbody td.col-players[b-7yrqtxo9x6],
    .etable tbody td.col-rounds[b-7yrqtxo9x6] {
        display: none !important;
    }

    .lgtd-inline-meta[b-7yrqtxo9x6] {
        display: flex;
        gap: .24rem .5rem;
    }

    .etable tbody td.col-status[b-7yrqtxo9x6],
    .etable tbody td.col-actions[b-7yrqtxo9x6] {
        display: block !important;
    }

    .etable tbody td.etd-name[b-7yrqtxo9x6] {
        display: contents !important;
        min-width: 0;
    }

    .etable tbody td.col-status[b-7yrqtxo9x6] {
        display: contents !important;
    }

    .etable tbody td.col-actions[b-7yrqtxo9x6] {
        display: contents !important;
        min-width: 0;
    }

    .etd-name-stack[b-7yrqtxo9x6],
    .lgtd-action-stack[b-7yrqtxo9x6] {
        display: contents;
    }

    .etd-name-link[b-7yrqtxo9x6] {
        grid-column: 1;
        grid-row: 1;
        align-self: center;
        min-width: 0;
        font-size: .91rem;
        line-height: 1.18;
    }

    .estatus[b-7yrqtxo9x6] {
        grid-column: 2;
        grid-row: 1;
        justify-self: start;
        align-self: center;
    }

    .col-status[b-7yrqtxo9x6] {
        margin-top: 0;
        white-space: nowrap;
    }

    .etd-actions[b-7yrqtxo9x6] {
        margin-top: 0;
        white-space: normal;
    }

    .lgtd-action-stack[b-7yrqtxo9x6],
    .lgtd-secondary-actions[b-7yrqtxo9x6] {
        align-items: flex-end;
        justify-content: flex-end;
    }

    .lgtd-action-stack[b-7yrqtxo9x6] {
        gap: .12rem;
    }

    .etd-row-action[b-7yrqtxo9x6] {
        min-width: 0;
        width: auto;
        max-width: 100%;
    }

    .etd-row-action-primary[b-7yrqtxo9x6] {
        grid-column: 3;
        grid-row: 1;
        justify-self: end;
        align-self: center;
        min-height: 2.18rem;
        min-width: 8.75rem;
        max-width: 100%;
        padding: .34rem .76rem;
        margin-right: .08rem;
        border-radius: 10px;
        border-color: color-mix(in srgb, var(--b9-border) 82%, var(--b9-primary) 18%);
        background: color-mix(in srgb, var(--b9-primary) 5%, transparent);
        box-shadow: inset 0 1px 0 color-mix(in srgb, white 24%, transparent);
    }

    .lgtd-secondary-actions[b-7yrqtxo9x6] {
        grid-column: 3;
        grid-row: 2;
        justify-self: end;
        align-self: start;
        max-width: 100%;
        padding-right: .08rem;
        margin-top: 0;
        gap: .08rem .34rem;
    }

    .lgtd-secondary-action[b-7yrqtxo9x6] {
        display: inline-flex;
        align-items: center;
        min-height: 1.52rem;
        padding: .08rem .12rem;
        border-radius: 5px;
        font-size: var(--font-size-sm);
        line-height: 1;
        opacity: .74;
    }

    .lgtd-inline-meta[b-7yrqtxo9x6] {
        grid-column: 1 / span 2;
        grid-row: 2;
        display: inline-flex;
        align-self: start;
        justify-self: start;
        gap: .2rem .46rem;
        line-height: 1.15;
        white-space: normal;
    }
}
/* /Components/Pages/Leagues/LeagueOnCourseGamesEditor.razor.rz.scp.css */
.games[b-8gtizcogm1] {
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.muted[b-8gtizcogm1] {
    color: var(--text-muted, #9aa4b2);
    font-size: .85rem;
    margin: 0;
}

.list[b-8gtizcogm1] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .375rem;
}

.row-item[b-8gtizcogm1] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .5rem .625rem;
    border-radius: .5rem;
    background: var(--surface-2, rgba(255, 255, 255, .04));
    border: 1px solid var(--border, rgba(255, 255, 255, .08));
}

.icon[b-8gtizcogm1] { color: var(--b9-primary-text, #4ea1ff); }
.name[b-8gtizcogm1] { font-weight: 600; }

.hole[b-8gtizcogm1] {
    color: var(--text-muted, #9aa4b2);
    font-size: .85rem;
}

.prize[b-8gtizcogm1] {
    color: var(--text-muted, #9aa4b2);
    font-size: .8rem;
    margin-left: auto;
}

.remove[b-8gtizcogm1] {
    margin-left: auto;
    background: transparent;
    border: none;
    color: var(--text-muted, #9aa4b2);
    cursor: pointer;
    line-height: 1;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: .375rem;
    flex: 0 0 auto;
}

/* When a prize is shown it owns the right-push; the remove button sits just after it. */
.prize + .remove[b-8gtizcogm1] { margin-left: .25rem; }

.remove:hover[b-8gtizcogm1] {
    color: #ff6b6b;
    background: rgba(255, 107, 107, .12);
}

.add[b-8gtizcogm1] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    align-items: center;
}

.add .form-select[b-8gtizcogm1],
.add .form-control[b-8gtizcogm1] {
    width: auto;
    min-width: 8.5rem;
}

.err[b-8gtizcogm1] {
    color: #ff6b6b;
    font-size: .8rem;
    margin: .25rem 0 0;
}
/* /Components/Pages/Leagues/LeagueOpsAttentionPanel.razor.rz.scp.css */
/* ============================================================
   LeagueOpsAttentionPanel — scoped styles
   ============================================================ */

/* ── Panel wrapper ── */
.lap[b-3wm4jeejam] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: var(--b9-card-radius);
    overflow: hidden;
    margin-bottom: var(--space-5);
}

/* ── Header bar ── */
.lap-header[b-3wm4jeejam] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-6);
    background: rgba(245,158,11,0.08);
    border-bottom: 1px solid rgba(245,158,11,0.18);
}

.lap-header-icon[b-3wm4jeejam] {
    font-size: var(--font-size-chip);
    color: var(--b9-warning-text);
    flex-shrink: 0;
}

.lap-header-text[b-3wm4jeejam] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-warning-text);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    flex: 1;
}

.lap-count[b-3wm4jeejam] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    background: var(--b9-warning-soft);
    border-radius: var(--radius-full);
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--b9-warning-text);
}

/* ── Item list ── */
.lap-list[b-3wm4jeejam] {
    display: flex;
    flex-direction: column;
}

/* ── Individual item ── */
.lap-item[b-3wm4jeejam] {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-4) var(--space-6);
    border-bottom: 1px solid var(--border-subtle);
    transition: background var(--t-fast);
}

.lap-item:last-child[b-3wm4jeejam] { border-bottom: none; }

.lap-item:hover[b-3wm4jeejam] { background: var(--bg-raised); }

/* Severity left accents */
.lap-item--high[b-3wm4jeejam]   { border-left: 3px solid var(--b9-success); }
.lap-item--medium[b-3wm4jeejam] { border-left: 3px solid var(--b9-primary); }
.lap-item--low[b-3wm4jeejam]    { border-left: 3px solid var(--border-default); }

.lap-item-icon[b-3wm4jeejam] {
    font-size: 1rem;
    flex-shrink: 0;
}

.lap-item--high   .lap-item-icon[b-3wm4jeejam] { color: var(--b9-success-text); }
.lap-item--medium .lap-item-icon[b-3wm4jeejam] { color: var(--b9-primary-text); }
.lap-item--low    .lap-item-icon[b-3wm4jeejam] { color: var(--text-muted); }

.lap-item-body[b-3wm4jeejam] {
    flex: 1;
    min-width: 0;
}

.lap-item-text[b-3wm4jeejam] {
    font-size: 0.875rem;
    color: var(--text-primary);
    line-height: 1.45;
}

.lap-item-action[b-3wm4jeejam] {
    flex-shrink: 0;
    white-space: nowrap;
}

/* ── Responsive ── */
@media (max-width: 600px) {
    .lap-item[b-3wm4jeejam] {
        flex-wrap: wrap;
        padding: var(--space-3) var(--space-4);
    }

    .lap-item-action[b-3wm4jeejam] {
        width: 100%;
        justify-content: center;
    }

    .lap-header[b-3wm4jeejam] {
        padding: var(--space-3) var(--space-4);
    }
}
/* /Components/Pages/Leagues/LeagueOpsSummaryBar.razor.rz.scp.css */
/* ============================================================
   LeagueOpsSummaryBar — scoped styles
   ============================================================ */

.losb[b-vusb1tzmha] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-4);
    margin-bottom: var(--space-5);
}

/* Five tiles when a week has been cancelled.
   🔴 Sized off the CONTAINER, not the viewport. A width media query cannot see the
   ~338px operations sidebar, so `repeat(5, 1fr)` guarded by `min-width: 900px` still
   handed each tile ~104px on a 920px-wide laptop — under the ~84px label box the four
   tiles get today — and `.ui-stat { overflow: hidden }` then CLIPPED every label.
   Measured, not assumed. auto-fit drops to 3 (then 2) columns as the bar narrows, so
   a tile never falls below the width that already renders cleanly. */
.losb--with-cancelled[b-vusb1tzmha] {
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
}

/* Tile overrides — ensure consistent height */
.losb-tile[b-vusb1tzmha] {
    min-height: 80px;
}

/* Phones stack to two columns either way — named explicitly, and placed after the rule
   above, so the auto-fit track list cannot win on a narrow screen. */
@media (max-width: 720px) {
    .losb[b-vusb1tzmha],
    .losb--with-cancelled[b-vusb1tzmha] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 400px) {
    .losb[b-vusb1tzmha],
    .losb--with-cancelled[b-vusb1tzmha] {
        grid-template-columns: 1fr 1fr;
        gap: var(--space-3);
    }
}
/* /Components/Pages/Leagues/LeagueRoundCard.razor.rz.scp.css */
/* ============================================================
   LeagueRoundCard — scoped styles.
   Uses design system tokens exclusively. No hardcoded colors.
   Global ui-* classes (ui-btn, ui-badge, StatusBadge) are defined
   in components.css and need no re-declaration here.
   ============================================================ */

/* ── Card shell ── */
.rc[b-yjdiggode1] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: var(--b9-card-radius);
    box-shadow: var(--b9-card-shadow);
    overflow: hidden;
    transition: box-shadow var(--t-base) var(--t-ease),
                border-color var(--t-base) var(--t-ease);
}

.rc:hover[b-yjdiggode1] {
    box-shadow: var(--b9-card-shadow-hover);
    border-color: var(--border-default);
}

/* Active round — green left accent bar */
.rc--active[b-yjdiggode1] {
    border-left: 3px solid var(--b9-success);
}

/* Completed round — slightly faded, right-tinted */
.rc--final[b-yjdiggode1] {
    opacity: 0.78;
}

.rc--final:hover[b-yjdiggode1] {
    opacity: 1;
}

/* Cancelled round — clearly subdued */
.rc--cancelled[b-yjdiggode1] {
    opacity: 0.5;
    border-style: dashed;
}

.rc--cancelled:hover[b-yjdiggode1] {
    opacity: 0.72;
}

/* ── Header ── */
.rc-header[b-yjdiggode1] {
    display: flex;
    align-items: center;
    gap: var(--space-4);
    padding: var(--space-5) var(--space-6);
    flex-wrap: wrap;
}

/* ── Week identity ── */
.rc-identity[b-yjdiggode1] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 0 0 auto;
    min-width: 72px;
}

.rc-weeknum[b-yjdiggode1] {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--text-primary);
    white-space: nowrap;
    line-height: 1.2;
}

.rc-customname[b-yjdiggode1] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    font-style: italic;
}

.rc-makeup-tag[b-yjdiggode1] {
    display: inline-block;
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: 1px 6px;
    border-radius: var(--radius-full);
    background: var(--b9-warning-soft);
    color: var(--b9-warning-text);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    width: fit-content;
}

/* ── Date / time display ── */
.rc-datetime[b-yjdiggode1] {
    display: flex;
    align-items: center;
    gap: var(--space-3);
    flex: 1;
    min-width: 0;
    flex-wrap: wrap;
}

.rc-datetime--editing[b-yjdiggode1] {
    gap: var(--space-2);
}

.rc-date-val[b-yjdiggode1] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--text-primary);
    white-space: nowrap;
}

.rc-time-val[b-yjdiggode1] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    background: var(--bg-elevated);
    padding: 2px 8px;
    border-radius: var(--radius-sm);
    white-space: nowrap;
}

.rc-input-date[b-yjdiggode1] { max-width: 148px; }
.rc-input-time[b-yjdiggode1] { max-width: 118px; }

/* ── Badges row ── */
.rc-badges[b-yjdiggode1] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    flex-wrap: wrap;
    flex-shrink: 0;
}

/* Smaller indicator badges (pairings/scorecards/QR) */
.rc-sm-badge[b-yjdiggode1] {
    font-size: 0.67rem !important;
    padding: 2px 6px !important;
    gap: 3px;
}

.rc-sm-badge .bi[b-yjdiggode1] {
    font-size: 0.65rem;
}

/* ── Overflow / edit menu ── */
.rc-menu[b-yjdiggode1] {
    display: flex;
    align-items: center;
    gap: var(--space-1);
    flex-shrink: 0;
    margin-left: auto;
}

.rc-save-btn[b-yjdiggode1] {
    white-space: nowrap;
}

/* Icon-only ghost buttons in the menu */
.rc-icon-btn[b-yjdiggode1] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: var(--radius-md);
    border: 1px solid transparent;
    background: none;
    color: var(--text-muted);
    font-size: 0.875rem;
    cursor: pointer;
    transition: background var(--t-fast), color var(--t-fast), border-color var(--t-fast);
}

.rc-icon-btn:hover[b-yjdiggode1] {
    background: var(--bg-elevated);
    color: var(--text-primary);
    border-color: var(--border-subtle);
}

.rc-icon-btn--danger:hover[b-yjdiggode1] {
    background: var(--b9-danger-soft);
    color: var(--b9-danger-text);
    border-color: rgba(239,68,68,0.25);
}

/* ── Guidance strip ── */
.rc-guidance[b-yjdiggode1] {
    display: flex;
    align-items: flex-start;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-6);
    font-size: var(--font-size-sm);
    font-weight: 500;
    border-top: 1px solid var(--border-subtle);
    line-height: 1.45;
}

.rc-guidance--action[b-yjdiggode1] {
    background: rgba(245, 158, 11, 0.07);
    color: var(--b9-warning-text);
    border-top-color: rgba(245,158,11,0.20);
}

.rc-guidance--done[b-yjdiggode1] {
    background: var(--b9-success-soft);
    color: var(--b9-success-text);
    border-top-color: rgba(34,197,94,0.20);
}

.rc-guidance-icon[b-yjdiggode1] {
    font-size: 0.875rem;
    flex-shrink: 0;
    margin-top: 1px;
}

/* ── Action bar ── */
.rc-actions[b-yjdiggode1] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-4) var(--space-6);
    border-top: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
    flex-wrap: wrap;
}

/* Green "Open Scoring" button — unique to this context */
/* Dark ink, not white. White on --b9-success (#22C55E) measures 2.28:1 — it LOOKS fine, which
   is why a mid-saturation fill is the dangerous kind, and it is nowhere near the 4.5:1 this
   needs: the label is real running text at .ui-btn--sm's 14px/600, not large text.
   #052e16 gives 6.54:1 at rest and 4.52:1 on the darker hover green.

   The product had already made this exact call for this exact green — EventRegistration.razor.css
   paints .ereg-primary-btn--positive #052e16 on #22c55e. The registration button was right and
   the league week's primary action was still white: closed on the half you look at, open on the
   half you read. */
.rc-btn-open-scoring[b-yjdiggode1] {
    background: var(--b9-success);
    color: #052e16;
    border-color: transparent;
}

.rc-btn-open-scoring:hover:not(:disabled)[b-yjdiggode1] {
    background: var(--b9-accent-green-hover);
    color: #052e16;
}

/* "Full Ops" link — lower visual priority, pushed to the right */
.rc-manage-link[b-yjdiggode1] {
    margin-left: auto;
    color: var(--text-muted);
    font-size: var(--font-size-sm);
}

.rc-manage-link:hover[b-yjdiggode1] {
    color: var(--text-secondary);
}

/* ── Responsive ── */
@media (max-width: 720px) {
    .rc-header[b-yjdiggode1] {
        padding: var(--space-4) var(--space-4);
        gap: var(--space-3);
    }

    .rc-menu[b-yjdiggode1] {
        margin-left: 0;
        width: 100%;
        padding-top: var(--space-2);
        border-top: 1px solid var(--border-subtle);
        justify-content: flex-end;
    }

    .rc-actions[b-yjdiggode1] {
        padding: var(--space-3) var(--space-4);
        gap: var(--space-2);
    }

    .rc-guidance[b-yjdiggode1] {
        padding: var(--space-3) var(--space-4);
    }

    .rc-manage-link[b-yjdiggode1] {
        margin-left: 0;
    }
}

@media (max-width: 480px) {
    .rc-datetime[b-yjdiggode1] {
        flex-direction: column;
        align-items: flex-start;
        gap: var(--space-1);
    }

    .rc-badges[b-yjdiggode1] {
        flex-wrap: wrap;
        gap: var(--space-1);
    }

    .rc-identity[b-yjdiggode1] {
        min-width: 60px;
    }
}

/* ── Posted season matchups line (Zone 1b) ────────────────────── */
.rc-matchup-line[b-yjdiggode1] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    padding: 0.35rem 1rem 0;
    color: var(--text-muted);
    font-size: var(--font-size-sm);
}

/* Week-kind select in edit mode sits beside the date/time inputs */
.rc-input-kind[b-yjdiggode1] { max-width: 21rem; }
/* /Components/Pages/Leagues/LeagueRoundNextStepBanner.razor.rz.scp.css */
.lrnsb[b-fqpdjtc6cg] {
    border-left: 3px solid var(--brand);
}

.lrnsb-title[b-fqpdjtc6cg] {
    font-size: .76rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-muted);
    font-weight: 700;
    margin-bottom: var(--space-1, .25rem);
}

.lrnsb-body[b-fqpdjtc6cg] {
    color: var(--text-primary);
    font-size: 1rem;
    font-weight: 600;
}
/* /Components/Pages/Leagues/LeagueSetupSteps.razor.rz.scp.css */
/* Draft-league readiness strip (UX-030). Same visual grammar as the event page's setup spine
   (Components/UI/EventSetupSteps.razor.css) so one product reads one way — tokens only. */

.ld-setup[b-oo2xlmtv92] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: .6rem;
    padding: .65rem .75rem .5rem;
    margin-bottom: 1rem;
}

.ld-setup-head[b-oo2xlmtv92] {
    display: flex;
    align-items: baseline;
    flex-wrap: wrap;
    gap: .5rem;
    padding: 0 .2rem .35rem;
}

.ld-setup-title[b-oo2xlmtv92] {
    font-size: .92rem;
    font-weight: 700;
    color: var(--text-primary);
}

.ld-setup-sub[b-oo2xlmtv92] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
}

.ld-setup-steps[b-oo2xlmtv92] {
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    gap: .25rem;
}

.ld-setup-step[b-oo2xlmtv92] {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .4rem .7rem;
    border: none;
    background: none;
    border-radius: .5rem;
    text-align: left;
    text-decoration: none;
    color: var(--text-muted);
    min-height: 48px;          /* comfortable touch target */
    cursor: pointer;
    transition: background .12s ease, color .12s ease;
}

.ld-setup-step:hover[b-oo2xlmtv92] {
    background: var(--bg-raised);
    color: var(--text-primary);
}

.ld-setup-mark[b-oo2xlmtv92] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    font-size: var(--font-size-chip);
    font-weight: 700;
    background: var(--bg-raised);
    color: var(--text-muted);
    border: 1px solid var(--border-default);
}

.ld-setup-text[b-oo2xlmtv92] {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.ld-setup-step-title[b-oo2xlmtv92] {
    font-weight: 600;
    font-size: .9rem;
    color: inherit;
}

.ld-setup-count[b-oo2xlmtv92] {
    font-weight: 700;
    color: var(--text-muted);
    margin-left: .3rem;
}

/* Ready */
.ld-setup-step.is-done .ld-setup-mark[b-oo2xlmtv92] {
    background: var(--success-soft);
    color: var(--success);
    border-color: var(--success);
}

.ld-setup-step.is-done .ld-setup-step-title[b-oo2xlmtv92],
.ld-setup-step.is-done .ld-setup-count[b-oo2xlmtv92] {
    color: var(--text-primary);
}

/* "Why isn't this ticked?" — --warning-text, NOT --warning: the plain amber fails AA at this
   size on --bg-elevated. Matches the event strip's hint exactly. */
.ld-setup-hint[b-oo2xlmtv92] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--warning-text);
    margin-top: 1px;
}

@media (max-width: 575.98px) {
    .ld-setup-sub[b-oo2xlmtv92] { display: none; }
}
/* /Components/Pages/Leagues/MyLeague.razor.rz.scp.css */
.mlg-shell[b-w7fysojhby] {
    margin: 1rem 1.25rem;
}

.mlg-hero[b-w7fysojhby] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: flex-start;
    margin-bottom: 0.9rem;
}

.mlg-kicker[b-w7fysojhby] {
    font-size: var(--font-size-chip);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #93c5fd;
    font-weight: 700;
}

.mlg-heading[b-w7fysojhby] {
    margin: 0.1rem 0;
    font-size: 1.35rem;
    color: #f8fafc;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-subline[b-w7fysojhby] {
    color: #cbd5e1;
    font-size: 0.92rem;
    margin: 0;
}

.mlg-badge[b-w7fysojhby] {
    border-radius: 999px;
    padding: 0.24rem 0.72rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border: 1px solid rgba(148, 163, 184, 0.4);
    color: #cbd5e1;
}

.mlg-badge-active[b-w7fysojhby] {
    border-color: rgba(34, 197, 94, 0.6);
    color: #86efac;
}

.mlg-badge-closed[b-w7fysojhby] {
    border-color: rgba(245, 158, 11, 0.6);
    color: #fcd34d;
}

.mlg-standing-row[b-w7fysojhby] {
    display: flex;
    align-items: center;
    gap: 0;
    margin-top: 1.05rem;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 12px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.12);
}

.mlg-standing-block[b-w7fysojhby] {
    flex: 1;
    text-align: center;
    padding: 0.9rem 0.55rem;
}

.mlg-standing-divider[b-w7fysojhby] {
    width: 1px;
    align-self: stretch;
    background: rgba(255, 255, 255, 0.15);
}

.mlg-standing-rank[b-w7fysojhby] {
    font-size: 1.6rem;
    font-weight: 800;
    color: #fff;
    line-height: 1;
}

.mlg-standing-score[b-w7fysojhby] {
    font-size: 1.35rem;
}

.mlg-standing-label[b-w7fysojhby] {
    font-size: var(--font-size-sm);
    color: rgba(255, 255, 255, 0.62);
    margin-top: 0.24rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.mlg-anchor-nav[b-w7fysojhby] {
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
    padding: 0.75rem 0;
    margin-top: 0.85rem;
}

.mlg-anchor-link[b-w7fysojhby] {
    display: inline-flex;
    align-items: center;
    min-height: 40px;
    padding: 0.25rem 0.75rem;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.35);
    color: #cbd5e1;
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.mlg-anchor-link:hover[b-w7fysojhby] {
    border-color: rgba(56, 189, 248, 0.7);
    color: #e0f2fe;
}

.mlg-anchor-target[b-w7fysojhby] {
    scroll-margin-top: 5rem;
}

.mlg-panel[b-w7fysojhby] {
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 12px;
    padding: 0.9rem;
    background: rgba(15, 23, 42, 0.42);
}

.mlg-panel-title[b-w7fysojhby] {
    margin: 0 0 0.55rem;
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 800;
}

.mlg-week-card[b-w7fysojhby] {
    margin-top: 0.75rem;
}

.mlg-text[b-w7fysojhby] {
    margin: 0 0 0.35rem;
    color: #e2e8f0;
    font-size: 0.9rem;
}

.mlg-text-muted[b-w7fysojhby] {
    margin: 0;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
}

.mlg-cta-row[b-w7fysojhby] {
    margin-top: 0.65rem;
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.mlg-round-list[b-w7fysojhby] {
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
}

.mlg-round-row[b-w7fysojhby] {
    display: flex;
    justify-content: space-between;
    gap: 0.6rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.14);
    padding-bottom: 0.42rem;
}

.mlg-round-state[b-w7fysojhby] {
    color: #bae6fd;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.mlg-my-row[b-w7fysojhby] {
    background: rgba(34, 197, 94, 0.18) !important;
    font-weight: 700;
}

/* ── Waitlist state panel ── */
.mlg-panel--waitlist[b-w7fysojhby] {
    border-color: var(--color-warn, rgba(234,179,8,.4));
    background: var(--color-warn-subtle, rgba(234,179,8,.08));
    text-align: center;
    padding: 2rem 1.25rem;
}

.mlg-waitlist-badge[b-w7fysojhby] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--color-warn-subtle, rgba(234,179,8,.15));
    border: 1px solid var(--color-warn, rgba(234,179,8,.5));
    border-radius: 100px;
    color: var(--color-warn, #eab308);
    font-size: 1.5rem;
    font-weight: 900;
    padding: 0.3rem 1rem;
    margin-bottom: 1rem;
}
/* /Components/Pages/Leagues/Overview/HandicapDetailsDrawer.razor.rz.scp.css */
.hdd-drawer[b-x5sone92rx] {
    border: 1px solid var(--border-subtle, rgba(255,255,255,.08));
    border-radius: 10px;
    background: var(--surface-2, rgba(255,255,255,.03));
    padding: 1rem 1.15rem;
    margin: 0 0 1rem 0;
}

.hdd-header[b-x5sone92rx] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .75rem;
}

.hdd-title[b-x5sone92rx] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-primary, #e5e7eb);
    margin: 0;
}

.hdd-sub[b-x5sone92rx] {
    margin: .15rem 0 0 0;
    font-size: .85rem;
    color: var(--text-muted, #94a3b8);
}

.hdd-meta[b-x5sone92rx] {
    display: flex;
    gap: 1.25rem;
    flex-wrap: wrap;
    align-items: center;
    padding: .65rem .8rem;
    border-radius: 8px;
    background: rgba(255,255,255,.02);
    margin-bottom: .85rem;
    font-size: .8rem;
}

.hdd-meta-label[b-x5sone92rx] {
    color: var(--text-muted, #94a3b8);
    margin-right: .4rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    font-size: .7rem;
    font-weight: 600;
}

.hdd-meta-value[b-x5sone92rx] {
    color: var(--text-primary, #e5e7eb);
    font-weight: 600;
}

.hdd-empty[b-x5sone92rx] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: 1rem 0 0 0;
    color: var(--text-muted, #94a3b8);
    font-size: .85rem;
}

.hdd-table[b-x5sone92rx] { font-size: .85rem; }
/* /Components/Pages/Leagues/Overview/LeagueCoreMetricsRow.razor.rz.scp.css */
.lcm-row[b-1cnrcmwrdn] {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    margin: .25rem 0 1rem 0;
}
/* /Components/Pages/Leagues/Overview/LeagueHandicapSummaryStrip.razor.rz.scp.css */
.lhss-strip[b-v6fmtps4do] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem 1rem;
    border-radius: 10px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,.08));
    background: var(--surface-2, rgba(255,255,255,.03));
    margin: 0 0 1rem 0;
    flex-wrap: wrap;
}

.lhss-facts[b-v6fmtps4do] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    min-width: 0;
    flex: 1 1 auto;
}

.lhss-fact[b-v6fmtps4do] { min-width: 0; }

.lhss-fact-label[b-v6fmtps4do] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted, #94a3b8);
    font-weight: 600;
    margin-bottom: .1rem;
}

.lhss-fact-value[b-v6fmtps4do] {
    font-size: .9rem;
    font-weight: 600;
    color: var(--text-primary, #e5e7eb);
    max-width: 16rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.lhss-divider[b-v6fmtps4do] {
    width: 1px;
    height: 1.75rem;
    background: var(--border-subtle, rgba(255,255,255,.1));
}

.lhss-actions[b-v6fmtps4do] {
    display: inline-flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
}

.lhss-avg[b-v6fmtps4do] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
}
.lhss-avg strong[b-v6fmtps4do] {
    color: var(--text-primary, #e5e7eb);
    margin-left: .25rem;
}

@media (max-width: 720px) {
    .lhss-divider[b-v6fmtps4do] { display: none; }
}
/* /Components/Pages/Leagues/Overview/LeagueNextRoundCard.razor.rz.scp.css */
.lnrc-card[b-ft5ddjrgyn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .85rem 1rem;
    border-radius: 10px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,.08));
    background: linear-gradient(180deg, rgba(74,222,128,.06), rgba(74,222,128,0));
    text-decoration: none;
    color: inherit;
    margin: 0 0 1rem 0;
    transition: border-color .15s, transform .15s;
}
.lnrc-card:hover[b-ft5ddjrgyn] {
    border-color: var(--b9-accent-green-text, #4ade80);
    transform: translateY(-1px);
}

.lnrc-label[b-ft5ddjrgyn] {
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--b9-accent-green-text, #4ade80);
    font-weight: 700;
}

.lnrc-title[b-ft5ddjrgyn] {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--text-primary, #e5e7eb);
    margin-top: .1rem;
}

.lnrc-meta[b-ft5ddjrgyn] {
    font-size: .85rem;
    color: var(--text-muted, #94a3b8);
    margin-top: .1rem;
}

.lnrc-right[b-ft5ddjrgyn] {
    display: inline-flex;
    align-items: center;
    gap: .75rem;
}

.lnrc-status[b-ft5ddjrgyn] {
    padding: .2rem .55rem;
    border-radius: 999px;
    font-size: .75rem;
    font-weight: 600;
    border: 1px solid transparent;
}
.lnrc-status--neutral[b-ft5ddjrgyn] { background: rgba(148,163,184,.15); color: #cbd5e1; border-color: rgba(148,163,184,.25); }
.lnrc-status--info[b-ft5ddjrgyn]    { background: rgba(59,130,246,.15);  color: #93c5fd; border-color: rgba(59,130,246,.3); }
.lnrc-status--success[b-ft5ddjrgyn] { background: rgba(74,222,128,.15);  color: #86efac; border-color: rgba(74,222,128,.3); }
.lnrc-status--muted[b-ft5ddjrgyn]   { background: rgba(148,163,184,.08); color: #94a3b8; border-color: rgba(148,163,184,.15); }

.lnrc-arrow[b-ft5ddjrgyn] { color: var(--text-muted, #94a3b8); font-size: 1.15rem; }
/* /Components/Pages/Leagues/Overview/MetricChip.razor.rz.scp.css */
.mc-chip[b-oqao4c8ts8] {
    display: inline-flex;
    align-items: center;
    gap: .6rem;
    padding: .5rem .85rem;
    border-radius: 10px;
    background: var(--surface-2, rgba(255,255,255,.04));
    border: 1px solid var(--border-subtle, rgba(255,255,255,.08));
    min-height: 2.75rem;
}

.mc-icon[b-oqao4c8ts8] {
    font-size: 1.05rem;
    color: var(--b9-accent-green-text, #4ade80);
    opacity: .9;
}

.mc-body[b-oqao4c8ts8] { display: flex; flex-direction: column; line-height: 1.1; }

.mc-label[b-oqao4c8ts8] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted, #94a3b8);
    font-weight: 600;
}

/* --text-strong is not a token — nothing declares it — so #e5e7eb was this chip's colour in
   both themes, and on the light league page that is 1.18:1: the format, the tee, the handicap
   basis, all of the chip VALUES on /leagues/{id}, invisible. --text-primary is the name that
   means what the fallback was reaching for, and it resolves to #F3F6FB in dark — near enough
   to #e5e7eb that dark keeps the look it had. Same one-word fix in LeagueHandicapSummaryStrip,
   LeagueNextRoundCard and HandicapDetailsDrawer, which copied the same line. */
.mc-value[b-oqao4c8ts8] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-primary, #e5e7eb);
    margin-top: .1rem;
}
/* /Components/Pages/Leagues/PairingGroupCard.razor.rz.scp.css */
.pgc-card[b-wsmx9uf6mf] {
    padding: 16px;
    border-radius: 12px;
}

.pgc-head[b-wsmx9uf6mf] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}

.pgc-team[b-wsmx9uf6mf] {
    margin-top: 8px;
}

.pgc-player[b-wsmx9uf6mf] {
    margin-top: 4px;
}
/* /Components/Pages/Leagues/PairingsBoard.razor.rz.scp.css */
.wrd-pairings-grid[b-nuamybvjko] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3, .75rem);
}

.wrd-pairing-head[b-nuamybvjko] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-pairing-title[b-nuamybvjko] {
    font-weight: 700;
}

.wrd-pairing-sub[b-nuamybvjko] {
    display: flex;
    gap: var(--space-2, .5rem);
    color: var(--text-secondary);
    font-size: .78rem;
}

.wrd-pairing-teams[b-nuamybvjko] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}

.wrd-pairing-teams li[b-nuamybvjko] {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    padding: .5rem .625rem;
    background: var(--bg-elevated);
}

.wrd-pairing-teams span[b-nuamybvjko] {
    color: var(--text-secondary);
    font-size: .8rem;
}

@media (max-width: 900px) {
    .wrd-pairings-grid[b-nuamybvjko] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Leagues/PlayerLeagueClubhouse.razor.rz.scp.css */
.pdb-loading[b-gysr573gch] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 40vh;
    color: #94a3b8;
}

.mlg-featured-shell[b-gysr573gch] {
    margin: 1rem 1.25rem;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 18px;
    background: linear-gradient(160deg, rgba(15, 23, 42, 0.92) 0%, rgba(2, 6, 23, 0.98) 100%);
    padding: 1.1rem 1.15rem 1rem;
    overflow: hidden;
    width: auto;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.mlg-featured-hero[b-gysr573gch] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: flex-start;
    margin-bottom: 0.9rem;
}

.mlg-kicker[b-gysr573gch] {
    font-size: var(--font-size-chip);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #93c5fd;
    font-weight: 700;
}

.mlg-title[b-gysr573gch] {
    margin: 0.1rem 0;
    font-size: 1.3rem;
    color: #f8fafc;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-sub[b-gysr573gch] {
    color: #cbd5e1;
    font-size: 0.9rem;
}

.mlg-status-chip[b-gysr573gch] {
    border-radius: 999px;
    padding: 0.22rem 0.65rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border: 1px solid rgba(148, 163, 184, 0.4);
    color: #cbd5e1;
}

.mlg-status-chip.is-active[b-gysr573gch] {
    border-color: rgba(34, 197, 94, 0.6);
    color: #86efac;
}

.mlg-status-chip.is-closed[b-gysr573gch] {
    border-color: rgba(245, 158, 11, 0.6);
    color: #fcd34d;
}

.mlg-context-bar[b-gysr573gch] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-bottom: 0.65rem;
    padding-bottom: 0.65rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
    flex-wrap: wrap;
}

.mlg-context-main[b-gysr573gch] {
    min-width: 0;
    flex: 1;
}

.mlg-context-league[b-gysr573gch] {
    margin: 0;
    color: #f8fafc;
    font-size: 1.03rem;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-context-course[b-gysr573gch] {
    margin: 0.16rem 0 0;
    color: var(--player-text-secondary, var(--b9-text-muted));
    font-size: 0.875rem; /* 14px floor — this line was 13.1px */
    line-height: 1.35;
    overflow-wrap: anywhere;
}

/* "Plays at" / "Run by". Same size as the name it introduces, so naming the fact costs no
   legibility — the point is that the golfer can tell WHICH club fact they are reading. */
.mlg-context-course__label[b-gysr573gch] {
    font-weight: 700;
    opacity: 0.85;
}

.mlg-context-meta[b-gysr573gch] {
    display: flex;
    align-items: center;
    gap: 0.38rem;
    flex-wrap: wrap;
}

.mlg-context-pill[b-gysr573gch] {
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.04rem;
    min-height: 40px;
    padding: 0.3rem 0.6rem;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.28);
    background: rgba(15, 23, 42, 0.46);
    color: #cbd5e1;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    white-space: nowrap;
}

.mlg-context-pill--status[b-gysr573gch] {
    border-color: rgba(56, 189, 248, 0.4);
    color: #bae6fd;
    background: rgba(8, 47, 73, 0.5);
}

.mlg-context-pill__label[b-gysr573gch] {
    display: block;
    font-size: var(--font-size-chip);
    font-weight: 600;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: rgba(148, 163, 184, 0.65);
    line-height: 1.1;
}

.mlg-context-pill--status .mlg-context-pill__label[b-gysr573gch] {
    color: rgba(186, 230, 253, 0.55);
}

.mlg-stats-grid[b-gysr573gch] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem;
    margin-bottom: 0.9rem;
}

.mlg-stat[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 10px;
    padding: 0.58rem;
    background: rgba(15, 23, 42, 0.48);
}

.mlg-stat-label[b-gysr573gch] {
    display: block;
    color: #94a3b8;
    font-size: var(--font-size-chip);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 700;
    line-height: 1.25;
}

.mlg-stat-value[b-gysr573gch] {
    display: block;
    margin-top: 0.25rem;
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 700;
    line-height: 1.3;
    overflow-wrap: anywhere;
}

.mlg-next-round-card[b-gysr573gch] {
    border: 1px solid rgba(56, 189, 248, 0.35);
    border-radius: 12px;
    padding: 0.75rem;
    background: rgba(14, 116, 144, 0.15);
    margin-bottom: 0.95rem;
}

.mlg-next-round-card h3[b-gysr573gch] {
    margin: 0 0 0.4rem;
    color: #e0f2fe;
    font-size: 1rem;
    font-weight: 800;
}

.mlg-next-round-card p[b-gysr573gch] {
    color: #dbeafe;
    font-size: var(--font-size-sm);
}

.mlg-cta-row[b-gysr573gch] {
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.mlg-split-grid[b-gysr573gch] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.7rem;
}

.mlg-panel[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 12px;
    padding: 0.85rem;
    background: rgba(15, 23, 42, 0.42);
    scroll-margin-top: 5rem;
}

.mlg-panel h3[b-gysr573gch] {
    margin: 0 0 0.55rem;
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 800;
}

.mlg-moment-list[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.mlg-moment-item[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 10px;
    padding: 0.7rem 0.65rem;
    background: rgba(15, 23, 42, 0.35);
}

.mlg-moment-title[b-gysr573gch] {
    color: #f8fafc;
    font-size: 0.93rem;
    font-weight: 700;
    line-height: 1.3;
}

.mlg-moment-sub[b-gysr573gch] {
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    margin-top: 0.1rem;
    line-height: 1.45;
}

.mlg-inline-link[b-gysr573gch] {
    margin-top: 0.5rem;
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    min-height: 40px;
    padding: 0.2rem 0.35rem;
    color: #7dd3fc;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-decoration: none;
    border-radius: 6px;
}

.mlg-inline-link:hover[b-gysr573gch] {
    color: #bae6fd;
}

.mlg-mini-table[b-gysr573gch] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}

.mlg-mini-table th[b-gysr573gch],
.mlg-mini-table td[b-gysr573gch] {
    padding: 0.35rem 0.4rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
    color: #dbeafe;
}

.mlg-mini-table th[b-gysr573gch] {
    color: #93c5fd;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.mlg-row-me td[b-gysr573gch] {
    background: rgba(34, 197, 94, 0.16);
    color: #dcfce7;
    font-weight: 700;
}

.mlg-round-list[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.mlg-round-row[b-gysr573gch] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    color: #dbeafe;
    font-size: var(--font-size-sm);
    border-bottom: 1px solid rgba(148, 163, 184, 0.14);
    padding-bottom: 0.32rem;
    line-height: 1.4;
}

.mlg-card-grid[b-gysr573gch] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.7rem;
}

.mlg-league-card[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 12px;
    padding: 0.8rem;
    background: rgba(15, 23, 42, 0.58);
}

.mlg-league-head[b-gysr573gch] {
    display: flex;
    justify-content: space-between;
    gap: 0.7rem;
    margin-bottom: 0.45rem;
}

.mlg-league-head h3[b-gysr573gch] {
    margin: 0;
    color: #f8fafc;
    font-size: 0.97rem;
    font-weight: 800;
}

.mlg-league-head p[b-gysr573gch] {
    margin: 0.15rem 0 0;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
}

.mlg-league-meta[b-gysr573gch] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.35rem;
    margin-bottom: 0.6rem;
}

.mlg-league-meta span[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 999px;
    padding: 0.18rem 0.5rem;
    font-size: var(--font-size-sm);
    color: #dbeafe;
    background: rgba(15, 23, 42, 0.42);
}

.mlg-league-actions[b-gysr573gch] {
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}

@media (min-width: 992px) {
    .mlg-featured-shell[b-gysr573gch] {
        margin: 1.2rem 1.25rem;
        padding: 1.15rem 1.2rem 1.05rem;
    }

    .mlg-stats-grid[b-gysr573gch] {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .mlg-split-grid[b-gysr573gch] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .mlg-card-grid[b-gysr573gch] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .mlg-featured-shell[b-gysr573gch] {
        margin-bottom: calc(10rem + env(safe-area-inset-bottom, 0px));
    }

    .mlg-context-bar[b-gysr573gch] {
        gap: 0.45rem;
    }

    .mlg-context-meta[b-gysr573gch] {
        width: 100%;
    }

    .mlg-context-pill[b-gysr573gch] {
        font-size: var(--font-size-chip);
    }

    .mlg-context-meta[b-gysr573gch] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 0.35rem;
    }

    .mlg-context-pill[b-gysr573gch] {
        min-height: 44px;
        white-space: normal;
    }

    .mlg-context-pill__label[b-gysr573gch] {
        white-space: nowrap;
    }
}

/* ═══════════════════════════════════════════════════════════════
   RANK HERO  — premium standing display
   ═══════════════════════════════════════════════════════════════ */
.mlg-rank-hero[b-gysr573gch] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.85rem;
    padding: 0.85rem 1rem;
    border: 1px solid rgba(250, 204, 21, 0.35);
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(120, 53, 15, 0.35) 0%, rgba(30, 27, 75, 0.5) 100%);
}

.mlg-rank-badge[b-gysr573gch] {
    display: flex;
    align-items: baseline;
    gap: 0.1rem;
    flex-shrink: 0;
    min-width: 3.5rem;
    justify-content: center;
}

.mlg-rank-num[b-gysr573gch] {
    font-size: 2.6rem;
    font-weight: 900;
    color: #fde68a;
    line-height: 1;
    letter-spacing: -0.02em;
}

.mlg-rank-ord[b-gysr573gch] {
    font-size: 1rem;
    font-weight: 800;
    color: #fcd34d;
    align-self: flex-start;
    margin-top: 0.35rem;
}

.mlg-rank-detail[b-gysr573gch] {
    flex: 1;
    min-width: 0;
}

.mlg-rank-status[b-gysr573gch] {
    color: #fef3c7;
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-rank-sub[b-gysr573gch] {
    color: #d1d5db;
    font-size: var(--font-size-sm);
    margin-top: 0.2rem;
}

/* ═══════════════════════════════════════════════════════════════
   SECTION NAV TABS
   ═══════════════════════════════════════════════════════════════ */
.mlg-section-nav[b-gysr573gch] {
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
    margin-bottom: 0.85rem;
    padding: 0.6rem 0;
    border-top: 1px solid rgba(148, 163, 184, 0.16);
    border-bottom: 1px solid rgba(148, 163, 184, 0.16);
}





/* ═══════════════════════════════════════════════════════════════
   TODAY IN LEAGUE card variant
   ═══════════════════════════════════════════════════════════════ */
.mlg-next-round-card--today[b-gysr573gch] {
    border-color: rgba(34, 197, 94, 0.55);
    background: rgba(20, 83, 45, 0.25);
}

.mlg-next-round-card--today h3[b-gysr573gch] {
    color: #bbf7d0;
}

/* ═══════════════════════════════════════════════════════════════
   MOMENT ITEM — header row with icon
   ═══════════════════════════════════════════════════════════════ */
.mlg-moment-header[b-gysr573gch] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.2rem;
}

.mlg-moment-icon[b-gysr573gch] {
    font-size: 1rem;
    color: #93c5fd;
    flex-shrink: 0;
    margin-top: 0.1rem;
}

.mlg-moment-sub[b-gysr573gch] {
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    margin-top: 0;
    padding-left: 1.5rem;
}

/* ═══════════════════════════════════════════════════════════════
   COMMAND BANNER — round context + primary action
   ═══════════════════════════════════════════════════════════════ */
.mlg-command-banner[b-gysr573gch] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    background: linear-gradient(135deg, rgba(2, 44, 80, 0.72) 0%, rgba(5, 25, 55, 0.85) 100%);
    border: 1px solid rgba(56, 189, 248, 0.32);
    border-radius: 14px;
    padding: 0.85rem 1rem;
    margin-bottom: 0.85rem;
    flex-wrap: wrap;
}

.mlg-command-banner__context[b-gysr573gch] {
    flex: 1;
    min-width: 0;
}

.mlg-command-banner > .mlg-cta-btn[b-gysr573gch] {
    max-width: 100%;
}

.mlg-command-banner__week[b-gysr573gch] {
    color: #e0f2fe;
    font-size: 0.96rem;
    font-weight: 800;
    line-height: 1.25;
}

.mlg-command-banner__status[b-gysr573gch] {
    color: #93c5fd;
    font-size: var(--font-size-sm);
    margin-top: 0.2rem;
}

/* When scores open, banner gets green emphasis */
.mlg-command-banner:has(.mlg-cta-btn--scores)[b-gysr573gch] {
    border-color: rgba(34, 197, 94, 0.45);
    background: linear-gradient(135deg, rgba(5, 46, 22, 0.72) 0%, rgba(2, 30, 15, 0.88) 100%);
}

/* ═══════════════════════════════════════════════════════════════
   CTA BUTTONS
   ═══════════════════════════════════════════════════════════════ */
/* X03: 44px is the WCAG minimum, not this project's. "View Pairings", "Week Details" and
   "View Full Standings" all sat 4px under the 48 the same buttons get elsewhere; the
   --scores variant below was already at 48, which is what made the difference visible. */
.mlg-cta-btn[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min, 48px);
    padding: 0.5rem 1.25rem;
    border-radius: 10px;
    border: 1px solid rgba(148, 163, 184, 0.42);
    background: rgba(30, 41, 59, 0.7);
    color: #e2e8f0;
    font-size: 0.9rem;
    font-weight: 800;
    text-decoration: none;
    cursor: pointer;
    appearance: none;
    transition: background 0.15s, border-color 0.15s, color 0.15s;
    white-space: normal;
    text-align: center;
}

.mlg-cta-btn:hover[b-gysr573gch],
.mlg-cta-btn:focus-visible[b-gysr573gch] {
    background: rgba(56, 189, 248, 0.12);
    border-color: rgba(56, 189, 248, 0.6);
    color: #e0f2fe;
    outline: none;
}

/* The RSVP's chosen answer is a SELECTION, not the page's action — and once Enter Scores became
   brand blue, "I'm in" wearing the same solid fill gave this page TWO blue primaries, which is the
   exact thing X05 forbids. Applying the rule is what exposed it.
   
   A tint with brand ink says "this is the one you picked" without competing with the thing you
   came here to do. Scoped to the RSVP's own testids rather than to .ui-btn--primary, which is a
   shared ops class on surfaces this change has no business repainting. */
.mlg-round-detail__val[b-gysr573gch]  [data-testid="player-rsvp-in"].ui-btn--primary,
[data-testid="player-rsvp-in"].ui-btn--primary[b-gysr573gch] {
    background: var(--brand-soft);
    color: var(--brand-text, #93c5fd);
    border: 1.5px solid var(--brand-text, #93c5fd);
}

/* X05 — one blue primary per player page, and green is never a button fill. This was the last
   green primary on a player surface: the X05 package repainted the player home, the leagues hub
   and the My Event hub, and did not reach the clubhouse, which is in no list anything checks. No
   guard pinned the green; the only comment on it predates X05. A scoped fix read as a complete
   one, which is the shape the audit's own re-audit found eight times.

   The banner keeps its green tint — that is a surface, not a button fill, and it is what tells a
   golfer at a glance that tonight is live. Only the button moves. */
.mlg-cta-btn--scores[b-gysr573gch] {
    background: var(--b9-primary);
    border-color: var(--b9-primary);
    color: var(--player-text-inverse, #ffffff);
    font-size: 1rem;
    padding: 0.6rem 1.6rem;
    min-height: 48px;
}

.mlg-cta-btn--scores:hover[b-gysr573gch],
.mlg-cta-btn--scores:focus-visible[b-gysr573gch] {
    background: rgba(22, 163, 74, 0.9);
    border-color: rgba(74, 222, 128, 0.7);
    color: #f0fdf4;
}



.mlg-cta-btn--ghost[b-gysr573gch] {
    background: transparent;
    border-color: rgba(148, 163, 184, 0.28);
    color: #94a3b8;
    font-size: var(--font-size-sm);
}

.mlg-cta-btn--ghost:hover[b-gysr573gch],
.mlg-cta-btn--ghost:focus-visible[b-gysr573gch] {
    background: rgba(148, 163, 184, 0.08);
    border-color: rgba(148, 163, 184, 0.5);
    color: #cbd5e1;
}

.mlg-cta-btn--muted[b-gysr573gch] {
    border-color: rgba(148, 163, 184, 0.22);
    color: #94a3b8;
}

/* ═══════════════════════════════════════════════════════════════
   COMMAND CARDS — always-visible stacked sections
   ═══════════════════════════════════════════════════════════════ */
.mlg-command-card[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 14px;
    padding: 0.9rem 1rem;
    background: rgba(15, 23, 42, 0.48);
    margin-bottom: 0.75rem;
}

.mlg-command-card__hd[b-gysr573gch] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.65rem;
    flex-wrap: wrap;
}

.mlg-command-card__label[b-gysr573gch] {
    color: #f8fafc;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.07em;
    text-transform: uppercase;
}

.mlg-command-card__purpose[b-gysr573gch] {
    margin: 0.22rem 0 0;
    color: #93c5fd;
    font-size: var(--font-size-sm);
    font-weight: 600;
    line-height: 1.35;
}

.mlg-command-card__purpose--inline[b-gysr573gch] {
    display: block;
    margin-top: 0.18rem;
}

.mlg-command-card__meta[b-gysr573gch] {
    color: #64748b;
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.mlg-command-card__empty[b-gysr573gch] {
    color: #64748b;
    font-size: var(--font-size-sm);
    margin: 0;
}

.mlg-command-card__actions[b-gysr573gch] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-top: 0.75rem;
}

.mlg-text-btn[b-gysr573gch] {
    appearance: none;
    background: transparent;
    border: none;
    color: #93c5fd;
    font-size: var(--font-size-sm);
    font-weight: 700;
    padding: 0;
    cursor: pointer;
}

.mlg-text-btn:hover[b-gysr573gch],
.mlg-text-btn:focus-visible[b-gysr573gch] {
    color: #e0f2fe;
    outline: none;
}

.mlg-inline-pairings-panel[b-gysr573gch] {
    margin-top: 0.85rem;
    padding-top: 0.85rem;
    border-top: 1px solid rgba(148, 163, 184, 0.16);
}

.mlg-inline-pairings-panel__hd[b-gysr573gch] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.65rem;
}

.mlg-standings-summary[b-gysr573gch] {
    margin: 0 0 0.7rem;
    color: #dbeafe;
    font-size: 0.94rem;
    font-weight: 700;
    line-height: 1.4;
}

/* Reduced-weight standings card */
.mlg-command-card--standings[b-gysr573gch] {
    padding: 0.75rem 0.85rem;
    background: rgba(15, 23, 42, 0.36);
    border-color: rgba(148, 163, 184, 0.15);
}

/* Plain-text status standings */
.mlg-standings-status[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.28rem;
}

.mlg-standings-status__primary[b-gysr573gch] {
    margin: 0;
    color: #e2e8f0;
    font-size: 0.92rem;
    font-weight: 700;
    line-height: 1.35;
}

.mlg-standings-status__line[b-gysr573gch] {
    margin: 0;
    color: #94a3b8;
    font-size: var(--font-size-sm);
    font-weight: 500;
    line-height: 1.35;
}

.mlg-standings-preview-wrap[b-gysr573gch] {
    margin-top: 0.65rem;
    overflow-x: auto;
}

.mlg-standings-preview-table[b-gysr573gch] {
    min-width: 100%;
}

.mlg-standings-preview-table td:first-child[b-gysr573gch],
.mlg-standings-preview-table th:first-child[b-gysr573gch] {
    width: 4.5rem;
    white-space: nowrap;
}

.mlg-standings-preview-table td:last-child[b-gysr573gch],
.mlg-standings-preview-table th:last-child[b-gysr573gch] {
    text-align: right;
    white-space: nowrap;
}

.mlg-standings-preview-name[b-gysr573gch] {
    color: #e2e8f0;
    font-weight: 700;
}

.mlg-standings-you-chip[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    margin-left: 0.35rem;
    padding: 0.08rem 0.35rem;
    border-radius: 999px;
    border: 1px solid rgba(56, 189, 248, 0.35);
    color: #bae6fd;
    background: rgba(8, 47, 73, 0.55);
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    vertical-align: middle;
}

@media (max-width: 767.98px) {
    .mlg-standings-preview-table[b-gysr573gch] {
        font-size: var(--font-size-sm);
    }

    .mlg-standings-preview-table th[b-gysr573gch],
    .mlg-standings-preview-table td[b-gysr573gch] {
        padding: 0.33rem 0.32rem;
    }
}

/* Collapse variant (Schedule accordion) */
.mlg-command-card--collapse[b-gysr573gch] {
    padding: 0;
    overflow: hidden;
}

.mlg-collapse-toggle[b-gysr573gch] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding: 0.9rem 1rem;
    background: transparent;
    border: none;
    cursor: pointer;
    appearance: none;
    color: inherit;
}

.mlg-collapse-toggle:hover[b-gysr573gch] {
    background: rgba(148, 163, 184, 0.06);
}

.mlg-command-card--collapse .mlg-round-list[b-gysr573gch],
.mlg-command-card--collapse .mlg-command-card__empty[b-gysr573gch] {
    padding: 0 1rem 0.9rem;
}

.mlg-collapse-icon[b-gysr573gch] {
    color: #64748b;
    flex-shrink: 0;
    transition: transform 0.2s;
}

.mlg-collapse-icon.is-open[b-gysr573gch] {
    transform: rotate(180deg);
}

/* ═══════════════════════════════════════════════════════════════
   ROUND DETAIL ROWS — tee time / players / group
   ═══════════════════════════════════════════════════════════════ */
.mlg-round-detail[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-bottom: 0.1rem;
}

.mlg-round-detail__row[b-gysr573gch] {
    display: flex;
    gap: 0.75rem;
    padding: 0.45rem 0.55rem;
    border-radius: 8px;
    background: rgba(15, 23, 42, 0.32);
    flex-wrap: wrap;
}

.mlg-round-detail__row--me[b-gysr573gch] {
    background: rgba(14, 116, 144, 0.14);
    border: 1px solid rgba(56, 189, 248, 0.22);
}

.mlg-round-detail__lbl[b-gysr573gch] {
    color: #64748b;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
    min-width: 5.5rem;
    flex-shrink: 0;
    align-self: center;
}

.mlg-round-detail__val[b-gysr573gch] {
    color: #e2e8f0;
    font-size: 0.88rem;
    font-weight: 600;
    /* Was flex:1, i.e. a 0 basis — the value took whatever was left beside the 5.5rem label,
       about 176px. Since X03 made the RSVP controls 48px tall, "I'm in" and "I'm out this
       week" no longer fit side by side in that, so they stacked and the centre-aligned label
       floated against a 96px block. A real basis makes a value that needs the room wrap onto
       its own full-width line (the row is already flex-wrap: wrap); short values still sit
       beside the label exactly as before. */
    flex: 1 1 14rem;
    align-self: center;
    min-width: 0;
    overflow-wrap: anywhere;
    word-break: break-word;
}

/* ═══════════════════════════════════════════════════════════════
   PAIRING GROUPS — team-based pairings display
   ═══════════════════════════════════════════════════════════════ */
.mlg-pairing-group[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 10px;
    padding: 0.8rem 0.85rem;
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.58) 0%, rgba(15, 23, 42, 0.38) 100%);
    margin-bottom: 0.5rem;
}

.mlg-pairing-group--me[b-gysr573gch] {
    border-color: rgba(56, 189, 248, 0.36);
    background: linear-gradient(180deg, rgba(8, 47, 73, 0.62) 0%, rgba(15, 23, 42, 0.44) 100%);
    box-shadow: inset 0 1px 0 rgba(125, 211, 252, 0.12);
}

.mlg-pairing-group__hd[b-gysr573gch] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.7rem;
    color: #dbeafe;
    font-size: var(--font-size-sm);
    flex-wrap: wrap;
}

.mlg-pairing-group__title-block[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.12rem;
}

.mlg-pairing-group__hd strong[b-gysr573gch] {
    color: #f8fafc;
    font-size: 0.98rem;
}

.mlg-pairing-group__sub[b-gysr573gch] {
    color: #93c5fd;
    font-size: var(--font-size-sm);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 700;
}

.mlg-pairing-group__facts[b-gysr573gch] {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.mlg-pairing-group__fact[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 0.22rem 0.55rem;
    border-radius: 999px;
    background: rgba(15, 23, 42, 0.5);
    border: 1px solid rgba(148, 163, 184, 0.18);
    color: #e0f2fe;
    font-size: var(--font-size-sm);
    font-weight: 700;
}

.mlg-pairing-group__team[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.18rem;
    padding: 0.55rem 0;
    border-top: 1px solid rgba(148, 163, 184, 0.12);
}

.mlg-pairing-group__team--me[b-gysr573gch] {
    background: rgba(30, 41, 59, 0.75);
    border-top-color: rgba(56, 189, 248, 0.2);
    border-radius: 10px;
    padding: 0.55rem 0.65rem;
    margin: 0;
}

.mlg-pairing-group__team-topline[b-gysr573gch] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.4rem;
    flex-wrap: wrap;
}

.mlg-pairing-group__name[b-gysr573gch] {
    color: #f1f5f9;
    font-size: 0.92rem;
    font-weight: 700;
}

.mlg-pairing-group__players[b-gysr573gch] {
    color: #94a3b8;
    font-size: var(--font-size-sm);
}

.mlg-inline-badge[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: 0.18rem 0.52rem;
    border-radius: 999px;
    background: rgba(8, 47, 73, 0.78);
    border: 1px solid rgba(56, 189, 248, 0.32);
    color: #bae6fd;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.03em;
    text-transform: uppercase;
}

/* ═══════════════════════════════════════════════════════════════
   LEADERBOARD — polished standings preview
   ═══════════════════════════════════════════════════════════════ */
.mlg-leaderboard-hero[b-gysr573gch] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 0.8rem;
    align-items: center;
    padding: 0.95rem 1rem;
    border-radius: 14px;
    border: 1px solid rgba(56, 189, 248, 0.22);
    background: linear-gradient(135deg, rgba(8, 47, 73, 0.6) 0%, rgba(15, 23, 42, 0.7) 100%);
    margin-bottom: 0.8rem;
}

.mlg-leaderboard-hero--mine[b-gysr573gch] {
    box-shadow: inset 0 1px 0 rgba(186, 230, 253, 0.14);
}

.mlg-leaderboard-hero__rank[b-gysr573gch] {
    display: flex;
    align-items: flex-start;
    gap: 0.08rem;
    min-width: 3.25rem;
}

.mlg-leaderboard-hero__rank-num[b-gysr573gch] {
    color: #f8fafc;
    font-size: 2.2rem;
    line-height: 1;
    font-weight: 900;
    letter-spacing: -0.03em;
}

.mlg-leaderboard-hero__rank-ord[b-gysr573gch] {
    color: #93c5fd;
    font-size: 0.92rem;
    font-weight: 800;
    margin-top: 0.28rem;
}

.mlg-leaderboard-hero__body[b-gysr573gch] {
    min-width: 0;
}

.mlg-leaderboard-hero__title[b-gysr573gch] {
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-leaderboard-hero__sub[b-gysr573gch] {
    margin-top: 0.16rem;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

.mlg-leaderboard-hero__score[b-gysr573gch] {
    text-align: right;
}

.mlg-leaderboard-hero__score-value[b-gysr573gch] {
    display: block;
    color: #e0f2fe;
    font-size: 1.2rem;
    font-weight: 900;
    line-height: 1.1;
}

.mlg-leaderboard-hero__score-label[b-gysr573gch] {
    display: block;
    margin-top: 0.12rem;
    color: #94a3b8;
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.mlg-leaderboard-list[b-gysr573gch] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.mlg-leaderboard-list:empty[b-gysr573gch] {
    display: none;
}

.mlg-leaderboard-item[b-gysr573gch] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    gap: 0.75rem;
    align-items: center;
    padding: 0.75rem 0.85rem;
    border-radius: 12px;
    border: 1px solid rgba(148, 163, 184, 0.18);
    background: rgba(15, 23, 42, 0.48);
}

.mlg-leaderboard-item--mine[b-gysr573gch] {
    border-color: rgba(56, 189, 248, 0.32);
    background: linear-gradient(135deg, rgba(8, 47, 73, 0.46) 0%, rgba(15, 23, 42, 0.58) 100%);
}

.mlg-leaderboard-item__rank[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 3rem;
    min-height: 2.2rem;
    padding: 0.2rem 0.5rem;
    border-radius: 999px;
    background: rgba(30, 41, 59, 0.9);
    color: #e2e8f0;
    font-size: var(--font-size-sm);
    font-weight: 800;
}

.mlg-leaderboard-item__body[b-gysr573gch] {
    min-width: 0;
}

.mlg-leaderboard-item__title-row[b-gysr573gch] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.mlg-leaderboard-item__title[b-gysr573gch] {
    color: #f8fafc;
    font-size: 0.92rem;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-leaderboard-item__sub[b-gysr573gch] {
    margin-top: 0.18rem;
    color: #94a3b8;
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

.mlg-leaderboard-item__metric[b-gysr573gch] {
    text-align: right;
}

.mlg-leaderboard-item__metric-value[b-gysr573gch] {
    display: block;
    color: #e0f2fe;
    font-size: 1rem;
    font-weight: 900;
    line-height: 1.1;
}

.mlg-leaderboard-item__metric-label[b-gysr573gch] {
    display: block;
    margin-top: 0.12rem;
    color: #64748b;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

@media (max-width: 767.98px) {
    .mlg-featured-shell[b-gysr573gch] {
        margin-left: 0.75rem;
        margin-right: 0.75rem;
    }

    .mlg-leaderboard-hero[b-gysr573gch],
    .mlg-leaderboard-item[b-gysr573gch] {
        grid-template-columns: 1fr;
        gap: 0.55rem;
    }

    .mlg-leaderboard-hero__score[b-gysr573gch],
    .mlg-leaderboard-item__metric[b-gysr573gch] {
        text-align: left;
    }

    .mlg-leaderboard-item__rank[b-gysr573gch] {
        width: fit-content;
    }

    .mlg-pairing-group__facts[b-gysr573gch] {
        width: 100%;
    }
}

/* ═══════════════════════════════════════════════════════════════
   FINALIZED ROUND SUMMARY — supporting context below command banner
   ═══════════════════════════════════════════════════════════════ */
.mlg-finalized-summary[b-gysr573gch] {
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 12px;
    padding: 0.7rem 0.9rem;
    background: rgba(15, 23, 42, 0.32);
    margin-bottom: 0.75rem;
}

.mlg-finalized-summary__hd[b-gysr573gch] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
}

.mlg-finalized-summary__badge[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    min-height: 22px;
    padding: 0.1rem 0.45rem;
    border-radius: 999px;
    border: 1px solid rgba(148, 163, 184, 0.35);
    background: rgba(30, 41, 59, 0.65);
    color: #94a3b8;
    font-size: var(--font-size-chip);
    font-weight: 800;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    flex-shrink: 0;
}

.mlg-finalized-summary__title[b-gysr573gch] {
    color: #cbd5e1;
    font-size: 0.88rem;
    font-weight: 700;
}

.mlg-finalized-summary__note[b-gysr573gch] {
    color: #64748b;
    font-size: var(--font-size-sm);
}

.mlg-finalized-summary__actions[b-gysr573gch] {
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}

@media (max-width: 479.98px) {
    .mlg-command-banner[b-gysr573gch],
    .mlg-command-card__actions[b-gysr573gch],
    .mlg-finalized-summary__actions[b-gysr573gch] {
        flex-direction: column;
        align-items: stretch;
    }

    .mlg-command-banner > .mlg-cta-btn[b-gysr573gch],
    .mlg-command-card__actions > .mlg-cta-btn[b-gysr573gch],
    .mlg-finalized-summary__actions > .mlg-cta-btn[b-gysr573gch] {
        width: 100%;
    }
}

/* ── Small ghost button modifier ── */
/* X03: "small" is about how much of the page a button claims, not about how hard it is to hit.
   This modifier is on "View Scorecard", "View Standings", "View Results" — and on an "Enter
   Scores" — so at 36px the week rows on /leagues/{id}/my handed a golfer the smallest taps on
   the page for the things she came to press. The lighter font and tighter padding still read
   small; the tap area does not. */
.mlg-cta-btn--sm[b-gysr573gch] {
    min-height: var(--touch-target-min, 48px);
    padding: 0.3rem 0.85rem;
    font-size: var(--font-size-sm);
}

@media (max-width: 767.98px) {
    .mlg-finalized-summary__hd[b-gysr573gch] {
        gap: 0.35rem;
    }
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.mlg-moment-sub--flush[b-gysr573gch] { padding-left: 0; }
.mlg-glance-sub[b-gysr573gch] { padding-left: 0; margin-top: 0.35rem; margin-bottom: 0.25rem; }
.mlg-round-sub[b-gysr573gch] { padding-left: 0; margin-bottom: 0.45rem; }

.mlg-round-list--spaced[b-gysr573gch] { margin-top: 0.65rem; }

/* Pool-stretch headers in the season schedule ("Weeks 3–8 · Pool A & Pool B matchups") */
.mlg-segment-header[b-gysr573gch] {
    padding: 0.5rem 0 0.2rem;
    font-weight: 600;
    color: var(--text-muted);
    letter-spacing: 0.02em;
    border-bottom: 1px solid var(--border-subtle);
    margin-bottom: 0.4rem;
}

/* Was a conditional inline style; the class already toggled with it */
.mlg-round-row--active[b-gysr573gch] {
    border-left: 3px solid var(--b9-accent, var(--b9-primary, #2f7a3a));
    padding-left: 0.5rem;
}

.mlg-scorecard-cta-gap[b-gysr573gch] { margin-right: 0.35rem; }
.mlg-badge-gap[b-gysr573gch] { margin-right: 0.4rem; }
.mlg-badge-cancelled[b-gysr573gch] { background: var(--bg-elevated); }   /* --b9-surface-3 is phantom: brand-tokens.css has no surface-3 tier, so this reset the fill to transparent */
.mlg-command-card__empty--spaced[b-gysr573gch] { margin-top: 0.5rem; }

/* ── "Follow me": share the league's public board so friends and family can watch ──
   Mirrors the event hub's mev-follow-btn in behaviour and copy, restyled to this
   surface's idiom (the event button sits on a coloured hero; this one sits on the
   dark clubhouse panel, so it borrows the mlg-cta-btn palette instead of white-on-
   translucent, which would be invisible here). 48px min target per the touch rule. */
.mlg-follow-row[b-gysr573gch] {
    display: flex;
    justify-content: flex-start;
    margin: 0 0 0.75rem;
}

.mlg-follow-btn[b-gysr573gch] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    min-height: 48px;
    padding: 0.55rem 1.15rem;
    border-radius: 999px;
    border: 1px solid rgba(56, 189, 248, 0.55);
    background: rgba(8, 47, 73, 0.55);
    color: #e0f2fe;
    font-size: 0.9rem;
    font-weight: 700;
    cursor: pointer;
    appearance: none;
    transition: transform 0.08s ease, background 0.15s ease, border-color 0.15s ease;
}

.mlg-follow-btn:hover[b-gysr573gch],
.mlg-follow-btn:focus-visible[b-gysr573gch] {
    background: rgba(14, 116, 144, 0.7);
    border-color: rgba(125, 211, 252, 0.75);
    outline: none;
}

.mlg-follow-btn:active[b-gysr573gch] { transform: scale(0.97); }

.mlg-follow-btn i[b-gysr573gch] { font-size: 1rem; }
/* /Components/Pages/Leagues/PlayerLeaguesHub.razor.rz.scp.css */
.mlg-featured-shell[b-5fbndl8ovw] {
    margin: 1rem 1.25rem;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 18px;
    background: linear-gradient(160deg, rgba(15, 23, 42, 0.92) 0%, rgba(2, 6, 23, 0.98) 100%);
    padding: 1.1rem 1.15rem 1rem;
    overflow: hidden;
}

.mlg-featured-hero[b-5fbndl8ovw] {
    display: flex;
    justify-content: space-between;
    gap: 0.75rem;
    align-items: flex-start;
    margin-bottom: 0.9rem;
}

.mlg-kicker[b-5fbndl8ovw] {
    font-size: var(--font-size-chip);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #93c5fd;
    font-weight: 700;
}

.mlg-title[b-5fbndl8ovw] {
    margin: 0.1rem 0;
    font-size: 1.3rem;
    /* Dark-only literal: 1.01:1 on the light page -- the page title was invisible. */
    color: var(--player-text-primary, var(--b9-text));
    font-weight: 800;
    line-height: 1.2;
}

.mlg-sub[b-5fbndl8ovw] {
    /* Dark-only literal: 1.41:1 on the light page. */
    color: var(--player-text-secondary, var(--b9-text-muted));
    font-size: 0.9rem;
}

.mlg-status-chip[b-5fbndl8ovw] {
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.6rem;
    padding: 0.2rem 0.62rem;
    font-size: var(--font-size-chip);
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    border: 1px solid var(--player-border, var(--b9-border));
    color: var(--player-text-secondary, var(--b9-text-muted));
    background: var(--player-surface-elev, var(--b9-surface-muted));
    white-space: nowrap;
}

.mlg-status-chip.is-active[b-5fbndl8ovw] {
    border-color: var(--b9-success);
    color: var(--b9-success-text);
}

.mlg-status-chip.is-closed[b-5fbndl8ovw] {
    border-color: var(--b9-warning);
    color: var(--b9-warning-text);
}

/* Meaningful player-facing status variants */
.mlg-status-chip.is-scoring-live[b-5fbndl8ovw] {
    border-color: var(--b9-success);
    color: var(--b9-success-text);
    animation: pulse-green-b-5fbndl8ovw 2s ease-in-out infinite;
}

@keyframes pulse-green-b-5fbndl8ovw {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.6; }
}

.mlg-status-chip.is-today[b-5fbndl8ovw] {
    border-color: var(--player-link, var(--b9-link));
    color: var(--player-link, var(--b9-link));
}

.mlg-status-chip.is-scores-open[b-5fbndl8ovw] {
    border-color: var(--b9-success);
    color: var(--b9-success-text);
    background: color-mix(in srgb, var(--b9-success) 14%, var(--player-surface-elev, var(--b9-surface-muted)) 86%);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--b9-success) 32%, transparent);
    font-weight: 700;
}

.mlg-status-chip.is-pairings-posted[b-5fbndl8ovw] {
    border-color: color-mix(in srgb, var(--player-link, var(--b9-link)) 75%, var(--player-border, var(--b9-border)));
    color: var(--player-link, var(--b9-link));
}

.mlg-status-chip.is-upcoming[b-5fbndl8ovw] {
    border-color: var(--player-border, var(--b9-border));
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mlg-status-chip.is-in-season[b-5fbndl8ovw] {
    border-color: var(--player-border, var(--b9-border));
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mlg-status-chip.is-finalized[b-5fbndl8ovw] {
    border-color: var(--player-border, var(--b9-border));
    color: var(--player-text-secondary, var(--b9-text-muted));
    opacity: 0.78;
}

.mlg-stats-grid[b-5fbndl8ovw] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem;
    margin-bottom: 0.9rem;
}

.mlg-stat[b-5fbndl8ovw] {
    border: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 10px;
    padding: 0.58rem;
    background: rgba(15, 23, 42, 0.48);
}

.mlg-stat-label[b-5fbndl8ovw] {
    display: block;
    color: #94a3b8;
    font-size: var(--font-size-sm);
    letter-spacing: 0.06em;
    text-transform: uppercase;
    font-weight: 700;
}

.mlg-stat-value[b-5fbndl8ovw] {
    display: block;
    margin-top: 0.25rem;
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 700;
}

.mlg-next-round-card[b-5fbndl8ovw] {
    border: 1px solid rgba(56, 189, 248, 0.35);
    border-radius: 12px;
    padding: 0.75rem;
    background: rgba(14, 116, 144, 0.15);
    margin-bottom: 0.95rem;
}

.mlg-next-round-card h3[b-5fbndl8ovw] {
    margin: 0 0 0.4rem;
    color: #e0f2fe;
    font-size: 1rem;
    font-weight: 800;
}

.mlg-next-round-card p[b-5fbndl8ovw] {
    color: #dbeafe;
    font-size: var(--font-size-sm);
}

.mlg-cta-row[b-5fbndl8ovw] {
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}

.mlg-split-grid[b-5fbndl8ovw] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.7rem;
}

.mlg-panel[b-5fbndl8ovw] {
    border: 1px solid rgba(148, 163, 184, 0.22);
    border-radius: 12px;
    padding: 0.85rem;
    background: rgba(15, 23, 42, 0.42);
    scroll-margin-top: 5rem;
}

.mlg-panel h3[b-5fbndl8ovw] {
    margin: 0 0 0.55rem;
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 800;
}

.mlg-moment-list[b-5fbndl8ovw] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.mlg-moment-item[b-5fbndl8ovw] {
    border: 1px solid rgba(148, 163, 184, 0.18);
    border-radius: 10px;
    padding: 0.7rem 0.65rem;
    background: rgba(15, 23, 42, 0.35);
}

.mlg-moment-title[b-5fbndl8ovw] {
    color: #f8fafc;
    font-size: 0.93rem;
    font-weight: 700;
    line-height: 1.3;
}

.mlg-moment-sub[b-5fbndl8ovw] {
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    margin-top: 0.1rem;
}

.mlg-inline-link[b-5fbndl8ovw] {
    margin-top: 0.5rem;
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    min-height: 40px;
    padding: 0.2rem 0.35rem;
    color: #7dd3fc;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-decoration: none;
    border-radius: 6px;
}

.mlg-inline-link:hover[b-5fbndl8ovw] {
    color: #bae6fd;
}

.mlg-mini-table[b-5fbndl8ovw] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}

.mlg-mini-table th[b-5fbndl8ovw],
.mlg-mini-table td[b-5fbndl8ovw] {
    padding: 0.35rem 0.4rem;
    border-bottom: 1px solid rgba(148, 163, 184, 0.18);
    color: #dbeafe;
}

.mlg-mini-table th[b-5fbndl8ovw] {
    color: #93c5fd;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.mlg-row-me td[b-5fbndl8ovw] {
    background: rgba(34, 197, 94, 0.16);
    color: #dcfce7;
    font-weight: 700;
}

.mlg-round-list[b-5fbndl8ovw] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.mlg-round-row[b-5fbndl8ovw] {
    display: flex;
    justify-content: space-between;
    gap: 0.5rem;
    color: #dbeafe;
    font-size: var(--font-size-sm);
    border-bottom: 1px solid rgba(148, 163, 184, 0.14);
    padding-bottom: 0.32rem;
}

.mlg-card-grid[b-5fbndl8ovw] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0.85rem;
}

.mlg-league-card[b-5fbndl8ovw] {
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 14px;
    padding: 0.92rem 0.95rem;
    background: var(--player-surface-card, var(--b9-surface-alt));
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}

.mlg-league-head[b-5fbndl8ovw] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 0.35rem;
}

.mlg-league-head h3[b-5fbndl8ovw] {
    margin: 0;
    color: var(--player-text-primary, var(--b9-text));
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.28;
}

.mlg-league-head p[b-5fbndl8ovw] {
    margin: 0.15rem 0 0;
    color: var(--player-text-secondary, var(--b9-text-muted));
    font-size: 0.875rem; /* 14px floor — this line was 13.1px */
}

/* "Plays at" / "Run by" — the card and /leagues/{id}/my now show the SAME club fact, and say
   which one it is. Same size as the name, so the label costs nothing to read. */
.mlg-league-venue__label[b-5fbndl8ovw] {
    font-weight: 700;
    opacity: 0.85;
}

.mlg-league-meta[b-5fbndl8ovw] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.42rem;
    margin-bottom: 0.55rem;
}

.mlg-league-meta span[b-5fbndl8ovw] {
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 999px;
    padding: 0.2rem 0.52rem;
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
    background: var(--player-surface-elev, var(--b9-surface-muted));
}

.mlg-league-meta span:first-child[b-5fbndl8ovw] {
    color: var(--player-text-primary, var(--b9-text));
    font-weight: 600;
}

.mlg-league-actions[b-5fbndl8ovw] {
    display: flex;
    align-items: center;
    gap: 0.62rem;
    flex-wrap: wrap;
    margin-top: auto;
}

/* X03: this card's "Enter Scores" measured 318×42 while the identical "Enter Scores" on /my
   measured 48. The same tap, two sizes, one of them under the floor. The floor is the token, and
   padding still decides how the button looks. */
.mlg-card-cta[b-5fbndl8ovw] {
    min-height: var(--touch-target-min, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.46rem 0.88rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.015em;
    border-radius: 10px;
}

.mlg-card-cta-primary[b-5fbndl8ovw] {
    border: 1px solid var(--player-link, var(--b9-link));
    color: var(--player-link, var(--b9-link));
    background: color-mix(in srgb, var(--player-link, var(--b9-link)) 10%, var(--player-surface-card, var(--b9-surface-alt)) 90%);
}

.mlg-card-cta-primary:hover[b-5fbndl8ovw],
.mlg-card-cta-primary:focus-visible[b-5fbndl8ovw] {
    border-color: var(--player-link, var(--b9-link));
    color: var(--player-text-inverse, var(--b9-surface));
    background: var(--player-link, var(--b9-link));
}

/* X04/X05 (UX audit 2026-09-06): the card's one solid button is the brand blue. White on the
   green status fill measured 2.28:1; white on --b9-primary measures 6.7:1 in both themes.
   Green stays a STATUS colour (the chip above the card), never a button fill. */
.mlg-card-cta-primary.is-enter-scores[b-5fbndl8ovw] {
    border-color: var(--b9-primary);
    color: var(--player-text-inverse);
    background: var(--b9-primary);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--b9-primary) 28%, transparent);
}

.mlg-card-cta-primary.is-enter-scores:hover[b-5fbndl8ovw],
.mlg-card-cta-primary.is-enter-scores:focus-visible[b-5fbndl8ovw] {
    border-color: var(--b9-primary-hover);
    color: var(--player-text-inverse);
    background: var(--b9-primary-hover);
}

/* "League Home" is a text link, but it is a link a person taps on a phone, so it gets the same
   floor as the button above it. It measured 32px tall. */
.mlg-card-cta-secondary[b-5fbndl8ovw] {
    min-height: var(--touch-target-min, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.25rem 0.35rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-decoration: none;
}

.mlg-card-cta-secondary:hover[b-5fbndl8ovw],
.mlg-card-cta-secondary:focus-visible[b-5fbndl8ovw] {
    color: var(--player-link, var(--b9-link));
    text-decoration: underline;
}

@media (max-width: 520px) {
    .mlg-league-head[b-5fbndl8ovw] {
        flex-direction: column;
        gap: 0.45rem;
    }

    .mlg-league-actions[b-5fbndl8ovw] {
        flex-direction: column;
        align-items: stretch;
        gap: 0.35rem;
    }

    .mlg-card-cta[b-5fbndl8ovw] {
        width: 100%;
        justify-content: center;
    }

    .mlg-card-cta-secondary[b-5fbndl8ovw] {
        width: 100%;
        justify-content: center;
        /* This override is what actually shipped on a 390px phone: it cut the link back to 32px
           under the base rule above. The phone is where the floor matters most. */
        min-height: var(--touch-target-min, 48px);
    }
}

@media (max-width: 430px) {
    .mlg-featured-shell[b-5fbndl8ovw] {
        margin: 0.8rem;
        padding: 0.9rem;
    }

    .mlg-stats-grid[b-5fbndl8ovw] {
        grid-template-columns: 1fr;
    }

    .mlg-rank-hero[b-5fbndl8ovw] {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.55rem;
    }
}

@media (min-width: 992px) {
    .mlg-featured-shell[b-5fbndl8ovw] {
        margin: 1.2rem 1.25rem;
        padding: 1.15rem 1.2rem 1.05rem;
    }

    .mlg-stats-grid[b-5fbndl8ovw] {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .mlg-split-grid[b-5fbndl8ovw] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .mlg-card-grid[b-5fbndl8ovw] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

/* ═══════════════════════════════════════════════════════════════
   RANK HERO  — premium standing display
   ═══════════════════════════════════════════════════════════════ */
.mlg-rank-hero[b-5fbndl8ovw] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 0.85rem;
    padding: 0.85rem 1rem;
    border: 1px solid rgba(250, 204, 21, 0.35);
    border-radius: 14px;
    background: linear-gradient(135deg, rgba(120, 53, 15, 0.35) 0%, rgba(30, 27, 75, 0.5) 100%);
}

.mlg-rank-badge[b-5fbndl8ovw] {
    display: flex;
    align-items: baseline;
    gap: 0.1rem;
    flex-shrink: 0;
    min-width: 3.5rem;
    justify-content: center;
}

.mlg-rank-num[b-5fbndl8ovw] {
    font-size: 2.6rem;
    font-weight: 900;
    color: #fde68a;
    line-height: 1;
    letter-spacing: -0.02em;
}

.mlg-rank-ord[b-5fbndl8ovw] {
    font-size: 1rem;
    font-weight: 800;
    color: #fcd34d;
    align-self: flex-start;
    margin-top: 0.35rem;
}

.mlg-rank-detail[b-5fbndl8ovw] {
    flex: 1;
    min-width: 0;
}

.mlg-rank-status[b-5fbndl8ovw] {
    color: #fef3c7;
    font-size: 1.05rem;
    font-weight: 800;
    line-height: 1.2;
}

.mlg-rank-sub[b-5fbndl8ovw] {
    color: #d1d5db;
    font-size: var(--font-size-sm);
    margin-top: 0.2rem;
}

/* ═══════════════════════════════════════════════════════════════
   SECTION NAV TABS
   ═══════════════════════════════════════════════════════════════ */
.mlg-section-nav[b-5fbndl8ovw] {
    display: flex;
    gap: 0.35rem;
    flex-wrap: wrap;
    margin-bottom: 0.85rem;
    padding: 0.6rem 0;
    border-top: 1px solid rgba(148, 163, 184, 0.16);
    border-bottom: 1px solid rgba(148, 163, 184, 0.16);
}





/* ═══════════════════════════════════════════════════════════════
   TODAY IN LEAGUE card variant
   ═══════════════════════════════════════════════════════════════ */
.mlg-next-round-card--today[b-5fbndl8ovw] {
    border-color: rgba(34, 197, 94, 0.55);
    background: rgba(20, 83, 45, 0.25);
}

.mlg-next-round-card--today h3[b-5fbndl8ovw] {
    color: #bbf7d0;
}

/* ═══════════════════════════════════════════════════════════════
   MOMENT ITEM — header row with icon
   ═══════════════════════════════════════════════════════════════ */
.mlg-moment-header[b-5fbndl8ovw] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.2rem;
}

.mlg-moment-icon[b-5fbndl8ovw] {
    font-size: 1rem;
    color: #93c5fd;
    flex-shrink: 0;
    margin-top: 0.1rem;
}

.mlg-moment-sub[b-5fbndl8ovw] {
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    margin-top: 0;
    padding-left: 1.5rem;
}


/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.plh-section[b-5fbndl8ovw] { margin: 1rem 1.25rem; }
.plh-subtitle[b-5fbndl8ovw] { font-size: 1.05rem; }
/* /Components/Pages/Leagues/PublicStandings.razor.rz.scp.css */
/* ================================================================
   PUBLIC STANDINGS PAGE — dark-first scoped styles
   Shared layout (cards, hero, org band) is in wwwroot/public-page.css
================================================================ */

/* ── Standings table ── */
.etable-wrap[b-nc73mw4wjz] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.etable[b-nc73mw4wjz] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.875rem;
}

.etable thead th[b-nc73mw4wjz] {
    padding: 0.55rem 0.9rem;
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #94a3b8);
    background: rgba(255,255,255,0.04);
    border-bottom: 1.5px solid var(--border-subtle, rgba(255,255,255,0.1));
    white-space: nowrap;
}

.etable tbody tr[b-nc73mw4wjz] {
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    transition: background 0.1s;
}

.etable tbody tr:last-child[b-nc73mw4wjz] { border-bottom: none; }

.etable tbody tr:hover[b-nc73mw4wjz] {
    background: rgba(255,255,255,0.04);
}

.etable tbody td[b-nc73mw4wjz] {
    padding: 0.65rem 0.9rem;
    color: var(--text-primary, #f1f5f9);
}

.col-rank[b-nc73mw4wjz]    { width: 40px; text-align: center; }
.col-rounds[b-nc73mw4wjz]  { width: 60px; }
.col-strokes[b-nc73mw4wjz] { width: 72px; }
.col-avg[b-nc73mw4wjz]     { width: 62px; }

.td-rank[b-nc73mw4wjz]   { text-align: center; font-weight: 700; font-size: var(--font-size-sm); color: var(--text-muted, #64748b); }
.td-player[b-nc73mw4wjz] { font-weight: 600; color: var(--text-primary, #f1f5f9); }
.td-center[b-nc73mw4wjz] { text-align: center; }

/* Team name + members sub-line */
.pub-team-name-cell[b-nc73mw4wjz] {
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    font-size: 0.88rem;
    line-height: 1.3;
}

.pub-team-members-sub[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    font-weight: 400;
    margin-top: 1px;
    line-height: 1.35;
}

/* Points cell highlight.
   #60A5FA is the dark theme's readable blue and measures 2.54:1 on the light theme's white
   card. --b9-primary-text is the same intent with a light twin: 7.02→9.90:1 on the dark card,
   8.72:1 on the white one. This file already reached for that token in .pub-icon-blue; the
   five other blues here were hand-typed, and every one of them broke in light. */
.pub-pts-cell[b-nc73mw4wjz] {
    font-weight: 700;
    color: var(--b9-primary-text);
}

/* ── Rank medals ── */
.rank-medal[b-nc73mw4wjz] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: var(--font-size-chip);
    font-weight: 800;
    /* The numeral was white on gold, silver and bronze: 2.15:1, 2.56:1 and 3.45:1 — in BOTH
       themes, so this was never a light-mode bug, only one nobody had measured. A single
       character is still text and still owes 4.5:1. Dark lettering is what a real medal is
       engraved with, and it is the token that already answers "what can be written ON a bright
       fill". Even pure black fails on the old dark ends of silver (4.41:1) and bronze (4.27:1),
       so those two ends lift one step; gold is untouched. Worst pairing now 5.22:1. */
    color: var(--b9-status-fill-ink, #04140A);
}

.rank-1[b-nc73mw4wjz] { background: linear-gradient(135deg, #f59e0b, #d97706); }
.rank-2[b-nc73mw4wjz] { background: linear-gradient(135deg, #94a3b8, #7c8aa0); }
.rank-3[b-nc73mw4wjz] { background: linear-gradient(135deg, #c2793b, #b8783e); }

/* ── Compact team chip grid ── */
.pub-team-grid[b-nc73mw4wjz] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.4rem;
    padding: 0.85rem 1rem;
}

@media (max-width: 900px) { .pub-team-grid[b-nc73mw4wjz] { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 600px) { .pub-team-grid[b-nc73mw4wjz] { grid-template-columns: repeat(2, 1fr); } }

.pub-team-chip[b-nc73mw4wjz] {
    background: rgba(255,255,255,0.05);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 8px;
    padding: 0.5rem 0.65rem;
}

/* A team's NAME, and below it the two people on it. The X02 sweep sized both as furniture
   because the class is called "chip" — the same name-matching mistake as .pg-card-count, and
   a worse one: these are the people playing. Nothing here is decoration. */
.pub-team-chip-name[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    line-height: 1.3;
}

.pub-team-chip-members[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    margin-top: 2px;
    line-height: 1.3;
}

/* standings count badge */
.pub-standings-count[b-nc73mw4wjz] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.08);
    border-radius: 1rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--text-muted, #94a3b8);
    padding: 1px 8px;
    margin-left: 0.4rem;
    vertical-align: middle;
}

/* ── Compact pairings table ── */
.pub-pairings-wrap[b-nc73mw4wjz] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}

.pub-pairings-table[b-nc73mw4wjz] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
}

.pub-pairings-table thead th[b-nc73mw4wjz] {
    padding: 0.5rem 0.8rem;
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #64748b);
    background: rgba(255,255,255,0.04);
    border-bottom: 1.5px solid var(--border-subtle, rgba(255,255,255,0.1));
    white-space: nowrap;
}

.pub-pairings-table tbody tr[b-nc73mw4wjz] {
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    transition: background 0.1s;
}

.pub-pairings-table tbody tr:last-child[b-nc73mw4wjz] { border-bottom: none; }
.pub-pairings-table tbody tr:hover[b-nc73mw4wjz] { background: rgba(255,255,255,0.04); }

.pub-pairings-table tbody td[b-nc73mw4wjz] {
    padding: 0.5rem 0.8rem;
    vertical-align: middle;
    color: var(--text-primary, #f1f5f9);
}

.pub-pair-th-group[b-nc73mw4wjz] { width: 52px; }
.pub-pair-th-hole[b-nc73mw4wjz]  { width: 52px; }
.pub-pair-th-time[b-nc73mw4wjz]  { width: 88px; }

.pub-pair-group[b-nc73mw4wjz] { font-weight: 800; color: var(--text-primary, #f1f5f9); text-align: center; }
.pub-pair-hole[b-nc73mw4wjz]  { font-weight: 700; color: var(--b9-primary-text); text-align: center; }
.pub-pair-time[b-nc73mw4wjz]  { font-size: var(--font-size-sm); color: var(--text-secondary, #cbd5e1); white-space: nowrap; }

.pub-pair-teams[b-nc73mw4wjz] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem 0.75rem;
}

/* One side of a group: its team chip, then who is on it. Wraps as a unit on a phone. */
.pub-pair-side[b-nc73mw4wjz] {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.3rem;
    min-width: 0;
}

.pub-pair-people[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #cbd5e1);
    overflow-wrap: break-word;
}

.pub-pair-team[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
    background: rgba(255,255,255,0.07);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.1));
    border-radius: 4px;
    padding: 2px 8px;
    /* A long team name wraps inside its chip. Kept on one line it pushed the table past a phone's
       width, and the people beside it were cut off at the card's edge. */
    overflow-wrap: break-word;
}

@media (max-width: 480px) {
    .pub-pairings-table thead th[b-nc73mw4wjz],
    .pub-pairings-table tbody td[b-nc73mw4wjz] { padding: 0.5rem 0.45rem; }
}

/* ── Pool filter tabs ── */
.pub-pool-tabs[b-nc73mw4wjz] {
    display: flex;
    gap: 0.25rem;
    padding: 0.75rem 1rem 0.5rem;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    overflow-x: auto;
    scrollbar-width: none;
}

.pub-pool-tabs[b-nc73mw4wjz]::-webkit-scrollbar { display: none; }

.pub-pool-tab[b-nc73mw4wjz] {
    flex-shrink: 0;
    background: none;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.1));
    border-radius: 1.5rem;
    padding: 0.3rem 1rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted, #94a3b8);
    cursor: pointer;
    transition: all 0.15s;
    white-space: nowrap;
}

.pub-pool-tab:hover[b-nc73mw4wjz] {
    background: rgba(255,255,255,0.06);
    color: var(--text-primary, #f1f5f9);
}

/* The active filter is the one thing on this page that says WHICH standings you are reading,
   and in light it was pale blue on its own pale blue tint: 2.06:1 for the label and 2.54:1 for
   the ring that marks it. The tint is unchanged; ink and edge take the token — 7.08:1 and
   8.72:1 in light, 7.72:1 and 9.90:1 in dark. */
.pub-pool-tab--active[b-nc73mw4wjz] {
    background: rgba(96,165,250,0.15);
    border-color: var(--b9-primary-text);
    color: var(--b9-primary-text);
}

/* ── Seeding-period notice ── */
.pub-seeding-notice[b-nc73mw4wjz] {
    background: rgba(96,165,250,0.06);
    border-left: 3px solid #60a5fa;
    padding: 0.6rem 0.9rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #cbd5e1);
    margin: 0.5rem 0.75rem 0.25rem;
    border-radius: 0 6px 6px 0;
}

.pub-seeding-notice i[b-nc73mw4wjz] { color: var(--b9-primary-text); margin-right: 0.3rem; }

/* ── Empty state ── */
.pub-empty-state[b-nc73mw4wjz] {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--text-muted, #64748b);
}

.pub-empty-icon[b-nc73mw4wjz]  { font-size: 2rem; display: block; margin-bottom: 0.6rem; }
.pub-empty-title[b-nc73mw4wjz] { font-size: 1rem; font-weight: 700; color: var(--text-secondary, #cbd5e1); margin: 0 0 0.25rem; }
.pub-empty-sub[b-nc73mw4wjz]   { font-size: var(--font-size-sm); margin: 0; }

/* ── Format note (inside standings card) ── */
.pub-format-note[b-nc73mw4wjz] {
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    background: rgba(255,255,255,0.03);
    color: var(--text-secondary, #cbd5e1);
    margin: 0.6rem 0.75rem;
    border-radius: 8px;
    padding: 0.55rem 0.8rem;
    font-size: var(--font-size-sm);
}

.pub-format-note i[b-nc73mw4wjz] { color: var(--b9-primary-text); }

/* ── Info callout ── */
.ps-info-callout[b-nc73mw4wjz] {
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.1));
    border-radius: 0.375rem;
    background: rgba(255,255,255,0.04);
    color: var(--text-primary, #f1f5f9);
    padding: 0.6rem 0.9rem;
}

/* ── Matchplay note inside standings ── */
.pub-matchplay-empty[b-nc73mw4wjz] { color: var(--text-muted, #64748b); }

/* ── Loading states ── */
.pub-state-page[b-nc73mw4wjz] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    text-align: center;
    padding: 2rem 1.5rem;
    color: var(--text-primary, #f1f5f9);
}

.pub-state-icon[b-nc73mw4wjz]  { font-size: 3.5rem; margin-bottom: 1.25rem; line-height: 1; }
.pub-state-title[b-nc73mw4wjz] { font-size: 1.4rem; font-weight: 800; margin: 0 0 0.5rem; }
.pub-state-sub[b-nc73mw4wjz]   { font-size: 0.9rem; color: var(--text-secondary, #94a3b8); max-width: 340px; line-height: 1.6; }

/* ── Season Highlights tiles ──
   A compact, glanceable row of fun-stat tiles beside the standings. Each tile: an icon +
   short label + bold team + one value line. Text wraps (never clips) so long team names stay
   readable for everyone. 3 across on desktop, 2 on tablet, 1 on phone. */
.pub-highlights-grid[b-nc73mw4wjz] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.6rem;
    padding: 0.9rem 1.1rem 1.1rem;
}

@media (max-width: 760px) { .pub-highlights-grid[b-nc73mw4wjz] { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 460px) { .pub-highlights-grid[b-nc73mw4wjz] { grid-template-columns: 1fr; } }

.pub-highlight-tile[b-nc73mw4wjz] {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    min-height: 64px;
    background: rgba(255, 255, 255, 0.04);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: 12px;
    padding: 0.7rem 0.85rem;
}

.pub-highlight-icon[b-nc73mw4wjz] {
    /* G03: Bootstrap icons, not emoji — they draw the same on every phone and never fall back to
       a tofu box. One colour keeps the row calm. */
    font-size: 1.5rem;
    line-height: 1;
    width: 2rem;
    text-align: center;
    flex-shrink: 0;
    color: var(--b9-warning-text);
}

.pub-highlight-body[b-nc73mw4wjz] { min-width: 0; }

.pub-highlight-label[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #94a3b8);
}

.pub-highlight-team[b-nc73mw4wjz] {
    font-size: 0.95rem;
    font-weight: 800;
    color: var(--text-primary, #f1f5f9);
    line-height: 1.25;
    margin-top: 1px;
}

.pub-highlight-value[b-nc73mw4wjz] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #cbd5e1);
    margin-top: 1px;
    line-height: 1.3;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
/* Section-header icon accents (page is dark-first; fallback form
   matches this file's existing convention) */
.pub-icon-gold[b-nc73mw4wjz]  { color: var(--warning, #f59e0b); }
.pub-icon-teal[b-nc73mw4wjz]  { color: #0f766e; }
.pub-icon-blue[b-nc73mw4wjz]  { color: var(--b9-primary-text); }
.pub-icon-amber[b-nc73mw4wjz] { color: #b45309; }

.pub-empty-note[b-nc73mw4wjz] { color: var(--text-muted, #94a3b8); }
.pub-empty-icon[b-nc73mw4wjz] { font-size: 2.5rem; display: block; margin-bottom: .75rem; }

.pub-result-gap[b-nc73mw4wjz] { margin-left: .4rem; }

/* ── Phones: the points have to be on the screen ─────────────
   At 390px the team standings table measured 412px inside a 361px card, so the Points column
   — the one number a standings board exists for — sat from 351 to 426 and was simply not there
   when the page loaded. .etable-wrap scrolls, so it was reachable by swiping sideways, but
   nothing on the row said "swipe": the golfer saw a rank, a team and a week count and no score.
   Two changes, both width-only: drop the lowest-value column (Weeks — the row still opens a
   week-by-week detail on tap) and pull the cell padding in from 0.9rem to 0.5rem. Desktop keeps
   every column. */
@media (max-width: 480px) {
    .pub-col-weeks[b-nc73mw4wjz] { display: none; }

    .etable thead th[b-nc73mw4wjz],
    .etable tbody td[b-nc73mw4wjz] {
        padding-left: 0.5rem;
        padding-right: 0.5rem;
    }
}


/* ── The week detail table, which `.etable tbody td` above was quietly overriding ─────────────
   The expanded team's week-by-week table is nested inside .etable's tbody, so `.etable tbody td`
   (line 42, specificity 0,2,2 once scoped) beats `.pub-team-detail-table td` in
   public-page.css:669 (0,1,1). Seven declarations in that file are dead as a result. Two of them
   mattered; the rest are annotated there.

   1. SIZE. The week row is a drill control into the hole-by-hole breakdown, and the lost padding
      left it at 44.88px measured — under the 48px floor at 540px, 768px and 1280px. (At 481px it
      starts wrapping and at 390px it is 85px, so a phone-only sweep reports it clean; that is
      why this row is measured at a desktop width.)

      Only the CLICKABLE row is raised. The note rows and the nested hole-by-hole table are not
      targets and gain nothing from being taller — a broader selector was measured adding
      110.33px to the detail table instead of 47.97px, because .pub-holes-table is a descendant
      of .pub-team-detail-table.

   2. COLOUR, and this is the one a golfer could see. public-page.css:682 sets the week NOTE rows
      to #94a3b8 — "Live — unofficial until the round is final", "Scores not posted yet",
      "Warm-up week — no points" were drawn as muted secondary text. That declaration is dead
      too, so they were rendering at rgb(243,246,251): the same colour and the same size as the
      score rows they annotate. The caveat was indistinguishable from the data. */
.etable tbody tr.pub-week-row > td[b-nc73mw4wjz] {
    padding-top: 0.8rem;
    padding-bottom: 0.8rem;
}

.etable tbody tr.pub-week-note-row > td[b-nc73mw4wjz] {
    color: var(--text-muted, #94a3b8);
    padding-top: 0;
}

/* /Components/Pages/Leagues/QrStatusPanel.razor.rz.scp.css */
.wrd-section-head[b-1e5a7ww2ky] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-section-head h3[b-1e5a7ww2ky] {
    margin: 0;
    font-size: 1rem;
}

.wrd-scorecard-summary[b-1e5a7ww2ky] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
    color: var(--text-secondary);
    font-size: .82rem;
}

.wrd-muted[b-1e5a7ww2ky] {
    margin: 0;
    color: var(--text-secondary);
}
/* /Components/Pages/Leagues/RoundAlertCallout.razor.rz.scp.css */
.wrd-alert[b-f5xuyufr2c] {
    border: 1px solid var(--border-subtle);
    border-left-width: 3px;
    border-radius: var(--radius-md, 10px);
    padding: var(--space-3, .75rem);
    background: var(--bg-elevated);
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}

.wrd-alert-head[b-f5xuyufr2c] {
    display: flex;
    align-items: center;
    gap: .4rem;
    font-size: .87rem;
    font-weight: 700;
}

.wrd-alert-body[b-f5xuyufr2c] {
    margin: 0;
    color: var(--text-secondary);
    font-size: .82rem;
}

.wrd-alert--danger[b-f5xuyufr2c] { border-left-color: var(--b9-danger, #EF4444); }
.wrd-alert--warning[b-f5xuyufr2c] { border-left-color: var(--b9-warning, #F59E0B); }
.wrd-alert--success[b-f5xuyufr2c] { border-left-color: var(--b9-success, #22C55E); }
.wrd-alert--info[b-f5xuyufr2c] { border-left-color: var(--b9-info, #38BDF8); }
/* /Components/Pages/Leagues/RoundDiagnosticsPanel.razor.rz.scp.css */
.round-diag[b-f54zsa14c1] { padding: 1rem 1.25rem; }
.round-diag__head[b-f54zsa14c1] { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }
.round-diag__list[b-f54zsa14c1] { list-style: none; padding: 0; margin: 0.75rem 0 0 0; }
.round-diag__item[b-f54zsa14c1] { display: flex; gap: 0.75rem; padding: 0.5rem 0; border-top: 1px solid var(--border-subtle, rgba(0,0,0,0.06)); }
.round-diag__item:first-child[b-f54zsa14c1] { border-top: none; }
.round-diag__item i[b-f54zsa14c1] { font-size: 1.1rem; line-height: 1.4; flex: 0 0 auto; }
.round-diag__label[b-f54zsa14c1] { font-weight: 600; }
.round-diag__msg[b-f54zsa14c1] { color: var(--text-muted, #6b7280); font-size: 0.925rem; }
.round-diag__item--ok i[b-f54zsa14c1] { color: var(--success, #16a34a); }
.round-diag__item--warning i[b-f54zsa14c1] { color: var(--warning, #d97706); }
.round-diag__item--error i[b-f54zsa14c1] { color: var(--danger, #dc2626); }
.round-diag__item--skipped i[b-f54zsa14c1] { color: var(--text-muted, #9ca3af); }
.round-diag__item--skipped .round-diag__label[b-f54zsa14c1] { color: var(--text-muted, #6b7280); }
/* /Components/Pages/Leagues/RoundPrimaryActionBar.razor.rz.scp.css */
.wrd-actions[b-3d8x2wu003] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
}
/* /Components/Pages/Leagues/RoundProgressStrip.razor.rz.scp.css */
/* ============================================================
   RoundProgressStrip — scoped styles
   Uses only design system tokens from brand-tokens.css
   ============================================================ */

/* ── Cancelled fallback ── */
.rps--cancelled[b-atevzjiac0] {
    display: flex;
    align-items: center;
    gap: var(--space-2);
    padding: var(--space-3) var(--space-6);
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    font-style: italic;
    border-top: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
}

/* ── Strip container ── */
.rps[b-atevzjiac0] {
    display: flex;
    align-items: flex-start;
    padding: var(--space-4) var(--space-6);
    background: var(--bg-elevated);
    border-top: 1px solid var(--border-subtle);
    overflow-x: auto;
    scrollbar-width: none;
    -webkit-overflow-scrolling: touch;
}

.rps[b-atevzjiac0]::-webkit-scrollbar { display: none; }

/* ── Individual step ── */
.rps-step[b-atevzjiac0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--space-1);
    flex: 1;
    min-width: 64px;
    position: relative;
}

/* ── Connector line between dots (on all steps except first) ── */
.rps-step:not(:first-child)[b-atevzjiac0]::before {
    content: '';
    position: absolute;
    top: 9px;           /* vertical center of 18px dot */
    left: -50%;
    right: 50%;
    height: 1px;
    background: var(--border-subtle);
    z-index: 0;
    transition: background var(--t-slow) var(--t-ease);
}

/* Color connectors after completed steps */
.rps-step--done + .rps-step--done[b-atevzjiac0]::before,
.rps-step--done + .rps-step--current[b-atevzjiac0]::before {
    background: var(--b9-success);
    opacity: 0.45;
}

/* ── Dot ── */
.rps-dot[b-atevzjiac0] {
    position: relative;
    z-index: 1;
    width: 18px;
    height: 18px;
    border-radius: var(--radius-full);
    border: 2px solid var(--border-subtle);
    background: var(--bg-elevated);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-size-chip);
    flex-shrink: 0;
    transition: background var(--t-base), border-color var(--t-base), box-shadow var(--t-base);
}

.rps-step--done .rps-dot[b-atevzjiac0] {
    background: var(--b9-success);
    border-color: var(--b9-success);
    color: #052e16;   /* #fff was 2.28:1 on this green; 6.54:1 */
}

.rps-step--current .rps-dot[b-atevzjiac0] {
    background: var(--brand);
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-ring);
    animation: rps-pulse-b-atevzjiac0 2.4s ease-in-out infinite;
}

.rps-step--pending .rps-dot[b-atevzjiac0] {
    background: transparent;
    border-color: var(--border-default);
}

/* ── Label ── */
.rps-label[b-atevzjiac0] {
    font-size: var(--font-size-chip);
    font-weight: 500;
    color: var(--text-muted);
    white-space: nowrap;
    text-align: center;
    letter-spacing: 0.01em;
}

.rps-step--done .rps-label[b-atevzjiac0]    { color: var(--b9-success-text); font-weight: 600; }
.rps-step--current .rps-label[b-atevzjiac0] { color: var(--b9-primary-text); font-weight: 700; }

/* ── Pulse animation for active step ── */
@keyframes rps-pulse-b-atevzjiac0 {
    0%, 100% { box-shadow: 0 0 0 3px var(--brand-ring); }
    50%       { box-shadow: 0 0 0 5px rgba(29,78,216,0.12); }
}

/* ── Responsive ── */
@media (max-width: 520px) {
    .rps[b-atevzjiac0]         { padding: var(--space-3) var(--space-4); }
    .rps-step[b-atevzjiac0]    { min-width: 52px; }
    .rps-label[b-atevzjiac0]   { font-size: var(--font-size-chip); }
}
/* /Components/Pages/Leagues/RoundResultsPanel.razor.rz.scp.css */
.wrd-section-head[b-yrmvhbgu1s] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-section-head h3[b-yrmvhbgu1s] {
    margin: 0;
    font-size: 1rem;
}

.wrd-scoring-grid[b-yrmvhbgu1s] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-2, .5rem);
}

.wrd-results-meta[b-yrmvhbgu1s] {
    margin-top: var(--space-2, .5rem);
    color: var(--text-secondary);
    font-size: .84rem;
}

.wrd-history[b-yrmvhbgu1s] {
    margin-top: var(--space-3, .75rem);
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}

.wrd-history-item[b-yrmvhbgu1s] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    background: var(--bg-elevated);
    padding: .55rem .7rem;
    display: flex;
    flex-direction: column;
    gap: .1rem;
}

.wrd-history-item span[b-yrmvhbgu1s],
.wrd-history-item p[b-yrmvhbgu1s] {
    margin: 0;
    color: var(--text-secondary);
    font-size: .82rem;
}

.wrd-muted[b-yrmvhbgu1s] {
    margin: 0;
    color: var(--text-secondary);
}

@media (max-width: 900px) {
    .wrd-scoring-grid[b-yrmvhbgu1s] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
/* /Components/Pages/Leagues/RoundSetupCompactCard.razor.rz.scp.css */
.rsc-card[b-mdxrt5lvuc] {
    padding: .7rem .8rem;
}

.rsc-head[b-mdxrt5lvuc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    margin-bottom: .4rem;
}

.rsc-actions[b-mdxrt5lvuc] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .4rem;
}

.rsc-grid[b-mdxrt5lvuc] {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem .9rem;
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}
/* /Components/Pages/Leagues/RoundSummaryStrip.razor.rz.scp.css */
.rss[b-kilctubbdb] {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: var(--space-2, .5rem);
}

@media (max-width: 1100px) {
    .rss[b-kilctubbdb] {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

@media (max-width: 700px) {
    .rss[b-kilctubbdb] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
/* /Components/Pages/Leagues/ScorecardPanel.razor.rz.scp.css */
.wrd-section-head[b-e20tjto8pj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-section-head h3[b-e20tjto8pj] {
    margin: 0;
    font-size: 1rem;
}

.wrd-scorecard-summary[b-e20tjto8pj] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
    color: var(--text-secondary);
    font-size: .82rem;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-list[b-e20tjto8pj] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: .25rem;
    color: var(--text-secondary);
    font-size: .84rem;
}

.wrd-muted[b-e20tjto8pj] {
    margin: 0;
    color: var(--text-secondary);
}
/* /Components/Pages/Leagues/ScoringProgressPanel.razor.rz.scp.css */
.wrd-section-head[b-3q3pb0emdf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-section-head h3[b-3q3pb0emdf] {
    margin: 0;
    font-size: 1rem;
}

.wrd-scoring-grid[b-3q3pb0emdf] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: var(--space-2, .5rem);
    margin-bottom: var(--space-2, .5rem);
}

@media (max-width: 900px) {
    .wrd-scoring-grid[b-3q3pb0emdf] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
/* /Components/Pages/Leagues/StartAssignmentBoard.razor.rz.scp.css */
.wrd-start-meta[b-569i060iq8] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
    margin-bottom: var(--space-2, .5rem);
}

.wrd-start-grid[b-569i060iq8] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-2, .5rem);
}

.wrd-start-item[b-569i060iq8] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    padding: .5rem .625rem;
    display: flex;
    flex-direction: column;
    gap: .125rem;
    background: var(--bg-elevated);
}

.wrd-start-item span[b-569i060iq8] {
    color: var(--text-secondary);
    font-size: .78rem;
}

.wrd-muted[b-569i060iq8] {
    margin: 0;
    color: var(--text-secondary);
}

@media (max-width: 800px) {
    .wrd-start-grid[b-569i060iq8] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}
/* /Components/Pages/Leagues/StartMethodCard.razor.rz.scp.css */
.start-method[b-68n7mlhils] { padding: 1rem 1.25rem; }
.start-method__head[b-68n7mlhils] { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; }

.start-method__form[b-68n7mlhils] { margin-top: 0.75rem; display: flex; flex-direction: column; gap: 1rem; }

.start-method__options[b-68n7mlhils] {
    border: none;
    padding: 0;
    margin: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
    gap: 0.5rem;
}
.start-method__options > legend[b-68n7mlhils] { margin-bottom: 0.35rem; }

.start-method__option[b-68n7mlhils] {
    display: flex;
    gap: 0.625rem;
    align-items: flex-start;
    border: 1px solid var(--border-subtle, rgba(0,0,0,0.12));
    border-radius: 0.5rem;
    padding: 0.625rem 0.75rem;
    cursor: pointer;
    transition: border-color 120ms ease, background-color 120ms ease;
}
.start-method__option:hover[b-68n7mlhils] { border-color: var(--accent, #2563eb); }
.start-method__option--active[b-68n7mlhils] {
    border-color: var(--accent, #2563eb);
    background-color: color-mix(in srgb, var(--accent, #2563eb) 6%, transparent);
}
.start-method__option input[type="radio"][b-68n7mlhils] { margin-top: 0.25rem; flex: 0 0 auto; }

.start-method__option-label[b-68n7mlhils] { display: flex; align-items: center; gap: 0.4rem; }
.start-method__option-desc[b-68n7mlhils] { color: var(--text-muted, #6b7280); font-size: 0.85rem; margin-top: 0.2rem; }

.start-method__time[b-68n7mlhils] { display: flex; flex-direction: column; gap: 0.35rem; max-width: 10rem; }

.start-method__actions[b-68n7mlhils] { display: flex; gap: 0.5rem; justify-content: flex-end; }

/* Disabled fieldset dims the radio group while parent is saving. */
.start-method__options[disabled][b-68n7mlhils] { opacity: 0.6; pointer-events: none; }
/* /Components/Pages/Leagues/Teams/AutoCreateTeamsModal.razor.rz.scp.css */
.auto-create-modal[b-uunle0py7h] { max-width: 520px; }

.auto-create-warning[b-uunle0py7h] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .55rem .75rem;
    background: var(--warning-soft, rgba(245,158,11,.12));
    border: 1px solid color-mix(in srgb, var(--warning, #F59E0B) 35%, transparent);
    border-radius: 8px;
    color: var(--warning-text, #ca8a04);
    font-size: .85rem;
    margin: 0 0 1rem;
}

.auto-create-options[b-uunle0py7h] {
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.auto-create-option[b-uunle0py7h] {
    position: relative;
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: .85rem 1rem;
    border-radius: 10px;
    border: 2px solid var(--border-subtle);
    background: transparent;
    cursor: pointer;
    text-align: left;
    transition: border-color .15s ease, background .15s ease, transform .15s ease;
    color: var(--text-primary);
}

.auto-create-option:hover:not(.auto-create-option--disabled)[b-uunle0py7h] {
    border-color: var(--brand, #1d4ed8);
    background: var(--brand-soft, rgba(29,78,216,.08));
    transform: translateY(-1px);
}

.auto-create-option--selected[b-uunle0py7h] {
    border-color: var(--brand, #1d4ed8);
    background: var(--brand-soft, rgba(29,78,216,.08));
    box-shadow: 0 0 0 1px var(--brand, #1d4ed8);
}

.auto-create-option--disabled[b-uunle0py7h] {
    opacity: .55;
    cursor: not-allowed;
}

.auto-create-option-icon[b-uunle0py7h] {
    font-size: 1.4rem;
    color: var(--b9-primary-text);
    width: 2.25rem;
    text-align: center;
}

.auto-create-option-body[b-uunle0py7h] { flex: 1; }
.auto-create-option-title[b-uunle0py7h] { font-weight: 600; font-size: .95rem; }
.auto-create-option-desc[b-uunle0py7h] { font-size: .8rem; color: var(--text-muted); margin-top: .15rem; }

.auto-create-option-check[b-uunle0py7h] {
    color: var(--b9-primary-text);
    font-size: 1.15rem;
}
/* /Components/Pages/Leagues/Teams/PlayerSlot.razor.rz.scp.css */
.player-slot[b-fergo0pr2m] {
    display: flex;
    flex-direction: column;
    gap: .25rem;
}

.player-slot-label[b-fergo0pr2m] {
    font-size: .72rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
    font-weight: 600;
}

.player-slot-meta[b-fergo0pr2m] {
    margin-left: .35rem;
    font-weight: 500;
    letter-spacing: 0;
    text-transform: none;
}
/* /Components/Pages/Leagues/Teams/TeamCard.razor.rz.scp.css */
/* TeamCard — focused single-team editor */

.team-card[b-h0mu6t6cei] {
    display: flex;
    flex-direction: column;
    gap: .9rem;
    padding: 1rem;
    border-radius: 16px;
    border: 1px solid var(--border-subtle);
    /* .ui-card already supplies the correct tokenised background. Both --surface-2 and
       --surface-card are phantom in this app, so this declaration was invalid-at-computed-value
       and reset the card to transparent. Deleting it restores the design system's own fill. */
    transition: border-color .15s ease, box-shadow .15s ease;
    min-width: 0;
    width: 100%;
    max-width: 100%;
    /* This card is also .ui-card, which globally sets overflow:hidden. Override so the
       floating player picker + "More" menu can open downward without being clipped:
       clip the x-axis (keeps horizontal-blowout protection) but keep the y-axis visible.
       clip+visible is a valid pair — unlike hidden+visible, which the browser forces back
       to auto/hidden (and clip+hidden is forced back to hidden/hidden, defeating the fix). */
    overflow-x: clip;
    overflow-y: visible;
}

.team-card--complete[b-h0mu6t6cei] {
    border-color: rgba(16,185,129,.45);
}

.team-card--incomplete[b-h0mu6t6cei] {
    border-color: rgba(234,179,8,.40);
    background: linear-gradient(0deg, rgba(234,179,8,.03), rgba(234,179,8,.03)), var(--surface-2, var(--surface-card));
}

.team-card-head[b-h0mu6t6cei] {
    display: none;
}

.team-card-top-row[b-h0mu6t6cei] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: .75rem;
    min-width: 0;
}

.team-card-title-wrap[b-h0mu6t6cei] {
    min-width: 0;
    flex: 1;
}

.team-card-title[b-h0mu6t6cei] {
    margin: 0;
    font-size: 1.02rem;
    overflow-wrap: anywhere;
}

.team-card-subtitle[b-h0mu6t6cei] {
    margin-top: .2rem;
    font-size: .85rem;
    color: var(--text-muted);
    font-weight: 600;
}

.team-card-more[b-h0mu6t6cei] {
    position: relative;
}

.team-card-more summary[b-h0mu6t6cei] {
    list-style: none;
}

.team-card-more summary[b-h0mu6t6cei]::-webkit-details-marker {
    display: none;
}

.team-card-more-menu[b-h0mu6t6cei] {
    position: absolute;
    right: 0;
    top: calc(100% + .25rem);
    z-index: 10;
    min-width: 10rem;
    max-width: min(18rem, 90vw);
    display: flex;
    flex-direction: column;
    gap: .25rem;
    padding: .4rem;
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    background: var(--surface-2, var(--surface-card));
    box-shadow: 0 10px 28px rgba(2, 6, 23, .15);
}

.team-card-more-menu :global(.ui-btn)[b-h0mu6t6cei] {
    justify-content: flex-start;
}

.team-card-remove-btn[b-h0mu6t6cei] {
    color: var(--danger, #ef4444);
}

.team-card-remove-btn:hover:not(:disabled)[b-h0mu6t6cei] {
    color: var(--danger, #ef4444);
    background: rgba(239, 68, 68, .08);
}

.team-card-roster[b-h0mu6t6cei] {
    display: flex;
    flex-direction: column;
    gap: .4rem;
    min-width: 0;
}

.team-card-role-row[b-h0mu6t6cei] {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    padding: .35rem 0;
    border-bottom: 1px solid var(--border-subtle);
    min-width: 0;
}

.team-card-role-row:last-child[b-h0mu6t6cei] {
    border-bottom: 0;
}

.team-card-role[b-h0mu6t6cei] {
    font-size: .8rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--text-muted);
    font-weight: 700;
}

.team-card-player[b-h0mu6t6cei] {
    text-align: right;
    font-weight: 600;
    min-width: 0;
    max-width: 100%;
    overflow-wrap: anywhere;
}

.team-card-actions-row[b-h0mu6t6cei] {
    display: flex;
    justify-content: flex-start;
}

.team-card-player--empty[b-h0mu6t6cei] {
    color: var(--text-muted);
    font-style: italic;
    font-weight: 400;
}

.team-card-editor[b-h0mu6t6cei] {
    display: flex;
    flex-direction: column;
    gap: .8rem;
    min-width: 0;
}

.team-card-field-group[b-h0mu6t6cei] {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}

.team-card-slot-group[b-h0mu6t6cei] {
    display: flex;
    flex-direction: column;
    gap: .35rem;
}

.team-card-slot-row[b-h0mu6t6cei] {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}

.team-card-editor-label[b-h0mu6t6cei] {
    font-size: .74rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
    font-weight: 700;
}

.team-card-field-hint[b-h0mu6t6cei] {
    font-size: .78rem;
    color: var(--text-muted);
    line-height: 1.4;
}

.team-card-editor-actions[b-h0mu6t6cei] {
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
    flex-wrap: wrap;
}

.team-card-actions-bottom[b-h0mu6t6cei] {
    display: flex;
    justify-content: flex-end;
    min-width: 0;
}

@media (max-width: 640px) {
    .team-card-top-row[b-h0mu6t6cei] {
        flex-direction: column;
        align-items: stretch;
    }

    .team-card-role-row[b-h0mu6t6cei] {
        flex-direction: column;
        gap: .2rem;
    }

    .team-card-player[b-h0mu6t6cei] {
        text-align: left;
    }

    .team-card-editor-actions .ui-btn[b-h0mu6t6cei] {
        flex: 1;
    }
}
/* /Components/Pages/Leagues/Teams/TeamHandicapBadge.razor.rz.scp.css */
.team-hcp[b-6xbldip35u] {
    display: inline-flex;
    align-items: center;
    gap: .4rem;
}

.team-hcp-pill[b-6xbldip35u] { white-space: nowrap; }

.team-hcp-help[b-6xbldip35u] {
    background: transparent;
    border: 0;
    padding: 0;
    color: var(--b9-link, #60a5fa);
    text-decoration: underline;
    font-size: .75rem;
    cursor: pointer;
}
.team-hcp-help:hover[b-6xbldip35u] { opacity: .85; }
/* /Components/Pages/Leagues/Teams/TeamPlayerPicker.razor.rz.scp.css */
/* TeamPlayerPicker — pill-based player picker with search */

/* ── Container ─────────────────────────────────────────────── */

.tpp[b-5j38ene0mt] {
    position: relative;
    width: 100%;
    min-width: 0;
}

/* ── Empty / Tap-to-pick button ─────────────────────────────── */

.tpp-empty-btn[b-5j38ene0mt] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .7rem .875rem;
    border: 2px dashed var(--border-subtle);
    border-radius: 10px;
    background: transparent;
    color: var(--text-muted);
    font-size: .92rem;
    cursor: pointer;
    transition: border-color .15s, background .15s, color .15s;
    text-align: left;
    min-height: 48px;
}

.tpp-empty-btn:hover:not(:disabled)[b-5j38ene0mt] {
    border-color: var(--brand, #6366f1);
    color: var(--b9-primary-text);
    background: var(--brand-soft, rgba(99,102,241,.08));
}

.tpp-empty-btn:disabled[b-5j38ene0mt],
.tpp--disabled .tpp-empty-btn[b-5j38ene0mt] {
    opacity: .45;
    cursor: not-allowed;
}

/* ── Selected chip ─────────────────────────────────────────── */

.tpp-chip[b-5j38ene0mt] {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .4rem .65rem .4rem .4rem;
    border: 1px solid rgba(34, 197, 94, .45);
    border-radius: 999px;
    background: rgba(34, 197, 94, .07);
    min-width: 0;
    max-width: 100%;
}

.tpp-chip-initials[b-5j38ene0mt] {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--brand-soft, rgba(99,102,241,.12));
    color: var(--b9-primary-text);
    font-size: .7rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: .02em;
}
.tpp-chip-photo[b-5j38ene0mt] {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    object-fit: cover;
}

.tpp-chip-name[b-5j38ene0mt] {
    flex: 1;
    font-weight: 600;
    font-size: .93rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--text-primary);
}

.tpp-chip-remove[b-5j38ene0mt] {
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    padding: 3px 5px;
    border-radius: 4px;
    font-size: .7rem;
    line-height: 1;
    transition: color .12s, background .12s;
}

.tpp-chip-remove:hover[b-5j38ene0mt] {
    color: var(--danger, #ef4444);
    background: rgba(239, 68, 68, .08);
}

/* ── Search panel (floating) ───────────────────────────────── */

.tpp-panel[b-5j38ene0mt] {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    right: 0;
    z-index: 200;
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    background: var(--bg-elevated, #1e293b);
    box-shadow: 0 16px 40px rgba(2, 6, 23, .28);
    overflow: hidden;
    min-width: 200px;
}

.tpp-search-row[b-5j38ene0mt] {
    display: flex;
    align-items: center;
    gap: .375rem;
    padding: .55rem .7rem;
    border-bottom: 1px solid var(--border-subtle);
}

.tpp-search-icon[b-5j38ene0mt] {
    color: var(--text-muted);
    font-size: .85rem;
    flex-shrink: 0;
}

.tpp-search-input[b-5j38ene0mt] {
    flex: 1;
    border: none;
    background: transparent;
    color: var(--text-primary);
    font-size: .93rem;
    outline: none;
    min-width: 0;
    padding: 0;
}

.tpp-search-input[b-5j38ene0mt]::placeholder {
    color: var(--text-muted);
}

.tpp-cancel[b-5j38ene0mt] {
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    padding: 2px 4px;
    font-size: .875rem;
    border-radius: 4px;
    line-height: 1;
    transition: color .12s;
}

.tpp-cancel:hover[b-5j38ene0mt] {
    color: var(--text-primary);
}

/* ── Player list ───────────────────────────────────────────── */

.tpp-list[b-5j38ene0mt] {
    max-height: 230px;
    overflow-y: auto;
    padding: .3rem;
}

.tpp-list-item[b-5j38ene0mt] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .5rem .625rem;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: var(--text-primary);
    font-size: .93rem;
    cursor: pointer;
    text-align: left;
    transition: background .1s;
    min-height: 44px;
}

.tpp-list-item:hover[b-5j38ene0mt] {
    background: var(--bg-raised, rgba(255, 255, 255, .06));
}

.tpp-list-photo[b-5j38ene0mt] {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    object-fit: cover;
}
.tpp-list-initials[b-5j38ene0mt] {
    flex-shrink: 0;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: var(--bg-raised, rgba(255, 255, 255, .08));
    color: var(--text-secondary);
    font-size: .7rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    letter-spacing: .02em;
}

.tpp-list-name[b-5j38ene0mt] {
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tpp-no-match[b-5j38ene0mt] {
    padding: .875rem .625rem;
    color: var(--text-muted);
    font-size: .88rem;
    text-align: center;
}

/* ── Backdrop (click-outside to close) ─────────────────────── */

.tpp-backdrop[b-5j38ene0mt] {
    position: fixed;
    inset: 0;
    z-index: 199;
}

/* ── Light theme ───────────────────────────────────────────── */

html[data-theme="light"] .tpp-panel[b-5j38ene0mt] {
    background: #fff;
    box-shadow: 0 8px 24px rgba(0, 0, 0, .12);
}

html[data-theme="light"] .tpp-list-item:hover[b-5j38ene0mt] {
    background: rgba(0, 0, 0, .04);
}

html[data-theme="light"] .tpp-list-initials[b-5j38ene0mt] {
    background: rgba(0, 0, 0, .06);
    color: var(--text-secondary);
}
/* /Components/Pages/Leagues/Teams/TeamsGrid.razor.rz.scp.css */
.teams-grid[b-3z3uc7jzhf] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1.5rem;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    /* clip (not hidden) so it never forces overflow-y:auto and clips a card's open menu. */
    overflow-x: clip;
}

@media (min-width: 1400px) {
    .teams-grid[b-3z3uc7jzhf] { grid-template-columns: repeat(3, 1fr); }
}

@media (max-width: 1024px) {
    .teams-grid[b-3z3uc7jzhf] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 760px) {
    .teams-grid[b-3z3uc7jzhf] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Leagues/Teams/TeamsHeader.razor.rz.scp.css */
.teams-header[b-zu63ag3gsd] {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: flex-start;
    justify-content: space-between;
    padding: .85rem 1rem;
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    background: var(--surface-2, var(--surface-card));
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: hidden;
    max-height: 220px;
}

.teams-header-titles[b-zu63ag3gsd] {
    display: flex;
    flex-direction: column;
    gap: .2rem;
    min-width: 0;
    max-width: 100%;
    flex: 1;
}

.teams-header-helper[b-zu63ag3gsd] {
    margin: 0;
}

.teams-header-availability[b-zu63ag3gsd] {
    margin: 0;
    font-size: .9rem;
    color: var(--text-muted);
    font-weight: 600;
}

.teams-header-actions[b-zu63ag3gsd] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    min-width: 0;
    max-width: 100%;
}

@media (max-width: 540px) {
    .teams-header[b-zu63ag3gsd] {
        padding: .85rem;
        max-height: none;
        gap: .75rem;
    }

    .teams-header-actions[b-zu63ag3gsd] { width: 100%; }
    .teams-header-actions .ui-btn[b-zu63ag3gsd] { flex: 1; min-width: 0; }
}
/* /Components/Pages/Leagues/Teams/TeamsPage.razor.rz.scp.css */
.teams-page[b-1k89tfup4w] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    width: 100%;
    max-width: 1200px;
    margin-inline: auto;
    min-width: 0;
    /* clip (not hidden) so it never forces overflow-y:auto and clips an open menu. */
    overflow-x: clip;
}

.teams-page > *[b-1k89tfup4w] {
    max-width: 100%;
    min-width: 0;
}

.teams-page-status[b-1k89tfup4w] { margin: 0; }

.teams-scorer-note[b-1k89tfup4w] {
    margin: -.25rem 0 0;
    color: var(--text-muted);
    font-size: .88rem;
}

.teams-next-step[b-1k89tfup4w] {
    margin: 0;
}

.teams-empty[b-1k89tfup4w] {
    padding: 1.5rem 1rem;
    text-align: center;
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.teams-sticky-actions[b-1k89tfup4w] {
    position: sticky;
    bottom: .75rem;
    z-index: 8;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .8rem 1rem;
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    background: var(--surface-2, var(--surface-card));
    box-shadow: 0 10px 26px rgba(2, 6, 23, .12);
}

.teams-sticky-copy[b-1k89tfup4w] {
    display: flex;
    flex-direction: column;
    gap: .1rem;
    font-weight: 700;
}

.teams-sticky-count[b-1k89tfup4w] {
    font-size: .8rem;
    font-weight: 400;
    color: var(--text-muted);
}

.teams-sticky-buttons[b-1k89tfup4w] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
    min-width: 0;
}

@media (max-width: 680px) {
    .teams-page[b-1k89tfup4w] {
        gap: 1rem;
        max-width: 100%;
    }

    .teams-sticky-actions[b-1k89tfup4w] {
        position: static;
        bottom: auto;
        box-shadow: none;
        flex-direction: column;
        align-items: stretch;
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    .teams-sticky-buttons[b-1k89tfup4w] {
        width: 100%;
    }

    .teams-sticky-buttons .ui-btn[b-1k89tfup4w] {
        flex: 1;
        min-height: 2.6rem;
    }

    .teams-page .ui-btn[b-1k89tfup4w] {
        min-height: 44px;
    }
}
/* /Components/Pages/Leagues/Teams/TeamsSummaryBar.razor.rz.scp.css */
.teams-summary-grid[b-boy57frskb] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 1rem;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    grid-auto-rows: 1fr;
}

.teams-summary-card[b-boy57frskb] {
    display: flex;
    flex-direction: column;
    gap: .4rem;
    padding: 1rem;
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    background: var(--surface-2, var(--surface-card));
    min-width: 0;
    min-height: 110px;
    justify-content: center;
    text-align: center;
}

.teams-summary-card--warning[b-boy57frskb] {
    border-color: rgba(234,179,8,.45);
    background: linear-gradient(0deg, rgba(234,179,8,.04), rgba(234,179,8,.04)), var(--surface-2, var(--surface-card));
}

.teams-summary-card--ok[b-boy57frskb] {
    border-color: rgba(16,185,129,.45);
}

.teams-summary-card-title[b-boy57frskb] {
    font-size: .8rem;
    color: var(--text-muted);
    font-weight: 600;
}

.teams-summary-card-value[b-boy57frskb] {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1;
    color: var(--text-primary);
}

.teams-summary-card-suffix[b-boy57frskb] {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-muted);
    margin-left: .2rem;
}

.teams-summary-plain-warning[b-boy57frskb] {
    margin: .6rem 0 0;
    font-size: .96rem;
    color: #f2c94c;
    font-weight: 600;
}

@media (max-width: 940px) {
    .teams-summary-grid[b-boy57frskb] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .teams-summary-grid[b-boy57frskb] {
        grid-template-columns: 1fr;
    }

    .teams-summary-card[b-boy57frskb] {
        min-height: 88px;
    }
}
/* /Components/Pages/Leagues/Teams/UnassignedPlayersPanel.razor.rz.scp.css */
.unassigned-panel[b-w2f2qyf6pv] {
    padding: 1rem;
    border-radius: 16px;
    border: 1px solid var(--border-subtle);
    background: var(--surface-2, var(--surface-card));
    display: flex;
    flex-direction: column;
    gap: .6rem;
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: hidden;
}

.unassigned-panel-title[b-w2f2qyf6pv] {
    display: block;
    font-size: 1rem;
    font-weight: 600;
    margin: 0;
    color: var(--text-primary);
}

.unassigned-panel-summary[b-w2f2qyf6pv] {
    margin: 0;
    color: var(--text-muted);
    font-weight: 600;
}

.unassigned-list[b-w2f2qyf6pv] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .45rem;
    width: 100%;
    max-width: 100%;
    min-width: 0;
}

.unassigned-list-item[b-w2f2qyf6pv] {
    height: auto;
    padding: 1rem;
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    background: var(--surface-base, var(--surface-card));
    font-size: .9rem;
    min-width: 0;
    overflow-wrap: anywhere;
}

@media (max-width: 980px) {
    .unassigned-list[b-w2f2qyf6pv] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 640px) {
    .unassigned-list[b-w2f2qyf6pv] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Leagues/WeeklyRoundActionBar.razor.rz.scp.css */
.wrail[b-k04zb1rjks] {
    padding: 16px;
    border-radius: 12px;
}

.wrail-head[b-k04zb1rjks] {
    margin-bottom: 0.75rem;
}

.wrail-title[b-k04zb1rjks] {
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
}

.wrail-sub[b-k04zb1rjks] {
    margin: 0.25rem 0 0;
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
}

.wrail-list[b-k04zb1rjks] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 0.55rem;
}

.wrail-step[b-k04zb1rjks] {
    display: grid;
    grid-template-columns: 32px 1fr;
    gap: 0.65rem;
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    padding: 0.65rem;
    background: var(--b9-surface);
}

.wrail-step--current[b-k04zb1rjks] {
    border-color: var(--b9-primary);
    box-shadow: 0 0 0 2px rgba(22, 163, 74, 0.1);
}

.wrail-step--locked[b-k04zb1rjks] {
    opacity: 0.88;
}

.wrail-step--complete[b-k04zb1rjks] {
    padding-top: 0.45rem;
    padding-bottom: 0.45rem;
}

.wrail-step-num[b-k04zb1rjks] {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: var(--font-size-chip);
    background: var(--b9-surface-muted);
    color: var(--b9-text-soft);
}

.wrail-step--current .wrail-step-num[b-k04zb1rjks] {
    background: var(--b9-primary);
    color: #fff;
}

.wrail-step--complete .wrail-step-num[b-k04zb1rjks] {
    background: var(--b9-success-soft);
    color: var(--b9-success-text);
}

.wrail-step-row[b-k04zb1rjks] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.wrail-step-title[b-k04zb1rjks] {
    font-weight: 700;
    font-size: var(--font-size-sm);
}

.wrail-step-state[b-k04zb1rjks] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--b9-text-muted);
}

.wrail-current-action[b-k04zb1rjks] {
    margin-top: 0.5rem;
    display: grid;
    gap: 0.45rem;
}

.wrail-step-help[b-k04zb1rjks] {
    margin: 0.42rem 0 0;
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

.wrail-step--complete .wrail-step-help[b-k04zb1rjks],
.wrail-step--complete .wrail-current-action[b-k04zb1rjks] {
    display: none;
}

.wrail-more[b-k04zb1rjks] {
    margin-top: 0.75rem;
    border-top: 1px solid var(--b9-border);
    padding-top: 0.5rem;
}

.wrail-more summary[b-k04zb1rjks] {
    cursor: pointer;
    color: var(--b9-text-muted);
    font-size: var(--font-size-sm);
    font-weight: 600;
}

.wrail-more-actions[b-k04zb1rjks] {
    margin-top: 0.55rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

@media (max-width: 760px) {
    .wrail-step[b-k04zb1rjks] {
        grid-template-columns: 28px 1fr;
    }

    .wrail-current-action :global(.ui-btn)[b-k04zb1rjks],
    .wrail-more-actions :global(.ui-btn)[b-k04zb1rjks] {
        width: 100%;
        justify-content: center;
    }
}
/* /Components/Pages/Leagues/WeeklyRoundAttentionPanel.razor.rz.scp.css */
.wrd-attention[b-da6pyvni3f] {
    border-left: 3px solid var(--b9-warning, #F59E0B);
}

.wrd-attention-head[b-da6pyvni3f] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    margin-bottom: var(--space-3, .75rem);
}

.wrd-attention-title[b-da6pyvni3f] {
    font-size: .98rem;
    font-weight: 700;
}

.wrd-attention-sub[b-da6pyvni3f] {
    color: var(--text-secondary);
    font-size: .82rem;
}

.wrd-attention-list[b-da6pyvni3f] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}
/* /Components/Pages/Leagues/WeeklyRoundDetailPage.razor.rz.scp.css */
.wrd-page[b-6sn3ptzeqj] {
    max-width: 1240px;
    margin: 0 auto;
    padding: 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

.wrd-page > *[b-6sn3ptzeqj] {
    min-width: 0;
}

.wrd-page .ui-btn[b-6sn3ptzeqj] {
    white-space: normal;
}

/* ── Admin Scoring Status Card ── */
.wrd-admin-scoring-card[b-6sn3ptzeqj] {
    border: 2px solid var(--success);
    border-radius: 12px;
    background: var(--success-soft);
    padding: 1rem 1.25rem;
}

.wrd-admin-scoring-head[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.wrd-admin-scoring-title[b-6sn3ptzeqj] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--success-text);
    margin: 0 0 .2rem 0;
}

.wrd-admin-scoring-sub[b-6sn3ptzeqj] {
    font-size: var(--font-size-sm);
    color: var(--success-text);
    margin: 0;
}

.wrd-admin-scoring-groups[b-6sn3ptzeqj] {
    margin-top: .75rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
    border-top: 1px solid rgba(34, 197, 94, 0.24);
    padding-top: .75rem;
}

.wrd-admin-scoring-group-row[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
}

.wrd-admin-scoring-group-label[b-6sn3ptzeqj] {
    flex: 1;
    font-size: .875rem;
    font-weight: 600;
    color: var(--success-text);
}

.wrd-admin-scoring-group-status[b-6sn3ptzeqj] {
    font-size: var(--font-size-sm);
    padding: .2rem .6rem;
    border-radius: 9999px;
    font-weight: 600;
}

.wrd-status-partial[b-6sn3ptzeqj] {
    background: var(--warning-soft);
    color: var(--warning-text);
}

.wrd-status-missing[b-6sn3ptzeqj] {
    background: var(--danger-soft);
    color: var(--danger-text);
}

/* Per-group roster (teams or players) with scored / needs-score markers. */
.wrd-admin-scoring-units[b-6sn3ptzeqj] {
    flex-basis: 100%;
    display: flex;
    flex-wrap: wrap;
    gap: .15rem .75rem;
    margin-top: .1rem;
}

.wrd-unit[b-6sn3ptzeqj] {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--text-primary, inherit);
}

.wrd-unit .bi[b-6sn3ptzeqj] { font-size: .72rem; }
.wrd-unit--done[b-6sn3ptzeqj] { color: var(--text-muted, inherit); }
.wrd-unit--done .bi[b-6sn3ptzeqj] { color: var(--success-text); }
.wrd-unit--pending .bi[b-6sn3ptzeqj] { color: var(--warning-text); }

.wrd-reopen-banner[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    border: 1px solid var(--warning);
    border-radius: 12px;
    background: var(--warning-soft);
    padding: .9rem 1.1rem;
}

.wrd-reopen-banner-body[b-6sn3ptzeqj] {
    font-size: .9rem;
    color: var(--warning-text);
}

/* Re-finalize banner — green, shown after corrections have been entered */
.wrd-refinalize-banner[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    border: 1px solid var(--success, #22c55e);
    border-radius: 12px;
    background: var(--success-soft, rgba(34,197,94,.10));
    padding: .9rem 1.1rem;
}

.wrd-refinalize-banner .wrd-reopen-banner-body[b-6sn3ptzeqj] {
    color: var(--success-text, var(--text-primary));
}

.ui-btn--xs[b-6sn3ptzeqj] {
    /* .78rem was 12.48px on a button label. Inherit .ui-btn's own size instead of shrinking it. */
    padding: .3rem .75rem;
}

.wrd-advanced-tools[b-6sn3ptzeqj] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    background: var(--bg-elevated);
    padding: 0.5rem 0.75rem;
}

.wrd-advanced-tools > summary[b-6sn3ptzeqj] {
    cursor: pointer;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    font-weight: 600;
}

.wrd-advanced-tools[open][b-6sn3ptzeqj] {
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}

.wrd-section[b-6sn3ptzeqj] {
    display: flex;
    flex-direction: column;
    gap: var(--space-4, 1rem);
}

.wrd-moments-strip[b-6sn3ptzeqj] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    background: var(--bg-elevated);
    padding: .75rem;
    display: flex;
    flex-direction: column;
    gap: .6rem;
}

.wrd-moments-head[b-6sn3ptzeqj] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: .75rem;
}

.wrd-moments-head h3[b-6sn3ptzeqj] {
    margin: 0;
    font-size: .95rem;
}

.wrd-moments-head a[b-6sn3ptzeqj] {
    font-size: var(--font-size-sm);
}

.wrd-moments-list[b-6sn3ptzeqj] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .55rem;
}

.wrd-moment-item[b-6sn3ptzeqj] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    padding: .55rem .65rem;
    background: var(--bg-surface);
    text-decoration: none;
    color: inherit;
    display: flex;
    flex-direction: column;
    gap: .2rem;
}

.wrd-moment-item strong[b-6sn3ptzeqj] {
    font-size: var(--font-size-sm);
}

.wrd-moment-item span[b-6sn3ptzeqj] {
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

/* --text-tertiary is not a token, so the date on every moment in the week's timeline was
   #6b7280 in both themes — 3.69:1 on the dark page, under AA on the shipped default. */
.wrd-moment-item em[b-6sn3ptzeqj] {
    font-style: normal;
    font-size: var(--font-size-sm);
    color: var(--text-muted, #6b7280);
}

.wrd-overview-grid[b-6sn3ptzeqj] {
    display: grid;
    grid-template-columns: 1.1fr .9fr;
    gap: var(--space-4, 1rem);
}

.wrd-overview-actions h3[b-6sn3ptzeqj],
.wrd-overview-grid h3[b-6sn3ptzeqj] {
    margin: 0 0 var(--space-2, .5rem);
    font-size: 1rem;
}

.wrd-muted[b-6sn3ptzeqj] {
    margin: 0;
    color: var(--text-secondary);
    font-size: .9rem;
    line-height: 1.45;
}

.wrd-section-head h2[b-6sn3ptzeqj],
.wrd-section-head h3[b-6sn3ptzeqj],
.wrd-row-head strong[b-6sn3ptzeqj],
.wrd-next-action strong[b-6sn3ptzeqj],
.wrd-group-sub-item strong[b-6sn3ptzeqj] {
    color: var(--text-primary);
    line-height: 1.3;
}

.wrd-next-action span[b-6sn3ptzeqj],
.wrd-group-sub-item span[b-6sn3ptzeqj],
.wrd-moment-item span[b-6sn3ptzeqj],
.wrd-form-field label[b-6sn3ptzeqj] {
    line-height: 1.4;
}

.wrd-list[b-6sn3ptzeqj] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}

.wrd-next-action[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    padding: var(--space-3, .75rem);
    background: var(--bg-elevated);
}

.wrd-next-action strong[b-6sn3ptzeqj],
.wrd-next-action span[b-6sn3ptzeqj] {
    display: block;
}

.wrd-next-action span[b-6sn3ptzeqj] {
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}

.wrd-action-row[b-6sn3ptzeqj] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
}

.wrd-card-list[b-6sn3ptzeqj] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--space-3, .75rem);
}

.wrd-row-head[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-2, .5rem);
    margin-bottom: var(--space-1, .25rem);
}

.wrd-inline-form[b-6sn3ptzeqj] {
    display: grid;
    grid-template-columns: minmax(150px, 1fr) minmax(180px, 1fr) auto;
    gap: var(--space-2, .5rem);
    margin-top: var(--space-2, .5rem);
}

.wrd-two-col[b-6sn3ptzeqj] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--space-4, 1rem);
}

.wrd-section-head[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
}

.wrd-section-head h2[b-6sn3ptzeqj],
.wrd-section-head h3[b-6sn3ptzeqj] {
    margin: 0;
    font-size: 1rem;
}

.wrd-group-sub-list[b-6sn3ptzeqj] {
    display: flex;
    flex-direction: column;
    gap: var(--space-2, .5rem);
}

.wrd-group-sub-item[b-6sn3ptzeqj] {
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md, 10px);
    padding: .55rem .7rem;
    background: var(--bg-elevated);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-2, .5rem);
}

.wrd-group-sub-item strong[b-6sn3ptzeqj],
.wrd-group-sub-item span[b-6sn3ptzeqj] {
    display: block;
}

.wrd-group-sub-item span[b-6sn3ptzeqj] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.wrd-group-sub-state[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    gap: var(--space-2, .5rem);
}

.wrd-overlay[b-6sn3ptzeqj] {
    position: fixed;
    inset: 0;
    background: rgba(2, 6, 23, .62);
    z-index: 70;
}

.wrd-drawer[b-6sn3ptzeqj] {
    position: fixed;
    top: 0;
    right: 0;
    height: 100vh;
    width: min(440px, 100vw);
    background: var(--bg-surface);
    border-left: 1px solid var(--border-default);
    z-index: 71;
    display: flex;
    flex-direction: column;
}

.wrd-drawer-head[b-6sn3ptzeqj] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: var(--space-4, 1rem);
    border-bottom: 1px solid var(--border-subtle);
}

.wrd-drawer-head h3[b-6sn3ptzeqj] {
    margin: 0;
    font-size: 1.05rem;
}

.wrd-drawer-close[b-6sn3ptzeqj] {
    border: 0;
    background: transparent;
    color: var(--text-secondary);
}

.wrd-drawer-body[b-6sn3ptzeqj] {
    padding: var(--space-4, 1rem);
    display: flex;
    flex-direction: column;
    gap: var(--space-3, .75rem);
    overflow-y: auto;
}

.wrd-form-field[b-6sn3ptzeqj] {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}

.wrd-form-field label[b-6sn3ptzeqj] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    font-weight: 600;
    letter-spacing: 0.01em;
}

.wrd-drawer-actions[b-6sn3ptzeqj] {
    margin-top: auto;
    padding: var(--space-4, 1rem);
    border-top: 1px solid var(--border-subtle);
    display: flex;
    justify-content: flex-end;
    gap: var(--space-2, .5rem);
}

.wrd-modal[b-6sn3ptzeqj] {
    position: fixed;
    z-index: 72;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: min(520px, calc(100vw - 2rem));
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-lg, 12px);
    padding: var(--space-5, 1.25rem);
}

.wrd-modal h3[b-6sn3ptzeqj] {
    margin: 0 0 var(--space-2, .5rem);
    font-size: 1.05rem;
}

.wrd-modal p[b-6sn3ptzeqj] {
    margin: 0;
    color: var(--text-secondary);
}

.wrd-modal-actions[b-6sn3ptzeqj] {
    margin-top: var(--space-4, 1rem);
    display: flex;
    justify-content: flex-end;
    gap: var(--space-2, .5rem);
}

.wrd-player-briefing[b-6sn3ptzeqj] {
    max-width: 980px;
}

.wrd-player-hero[b-6sn3ptzeqj],
.wrd-player-card[b-6sn3ptzeqj] {
    border: 1px solid rgba(148, 163, 184, 0.24);
    border-radius: 14px;
    padding: 1rem;
    background: linear-gradient(160deg, rgba(15, 23, 42, 0.92) 0%, rgba(2, 6, 23, 0.98) 100%);
    color: #e2e8f0;
}

.wrd-player-card[b-6sn3ptzeqj] {
    background: rgba(15, 23, 42, 0.68);
    border-color: rgba(148, 163, 184, 0.2);
}

/* Commissioner note callout — shown between hero and primary-action card */
.wrd-commissioner-note[b-6sn3ptzeqj] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    background: var(--b9-surface-muted, rgba(148,163,184,0.07));
    border: 1px solid rgba(148,163,184,0.22);
    border-left: 3px solid var(--brand-soft, rgba(99,102,241,0.5));
    border-radius: 8px;
    padding: 0.65rem 0.9rem;
    font-size: 0.875rem;
    color: var(--b9-text-soft, #cbd5e1);
}
.wrd-commissioner-note .bi[b-6sn3ptzeqj] {
    color: var(--b9-text-soft, #64748b);
    font-size: 0.95rem;
    flex-shrink: 0;
    margin-top: 0.05rem;
}
.wrd-commissioner-note-text[b-6sn3ptzeqj] {
    margin: 0;
    line-height: 1.5;
}

.wrd-player-hero-head[b-6sn3ptzeqj] {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    align-items: flex-start;
    margin-bottom: .85rem;
}

.wrd-player-kicker[b-6sn3ptzeqj] {
    font-size: var(--font-size-chip);
    letter-spacing: .08em;
    text-transform: uppercase;
    color: #93c5fd;
    font-weight: 700;
}

.wrd-player-title[b-6sn3ptzeqj] {
    margin: .12rem 0;
    font-size: 1.35rem;
    color: #f8fafc;
    font-weight: 800;
    line-height: 1.2;
}

.wrd-player-subtitle[b-6sn3ptzeqj] {
    margin: 0;
    color: #cbd5e1;
    font-size: .92rem;
}

.wrd-player-summary-line[b-6sn3ptzeqj] {
    margin: .45rem 0 0;
    color: #e0f2fe;
    font-size: .9rem;
    font-weight: 700;
    line-height: 1.4;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.wrd-player-status-chip[b-6sn3ptzeqj] {
    border-radius: 999px;
    padding: .25rem .65rem;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .05em;
    text-transform: uppercase;
    border: 1px solid rgba(34, 197, 94, 0.55);
    color: #86efac;
    background: rgba(20, 83, 45, 0.32);
    white-space: nowrap;
}

.wrd-player-meta-grid[b-6sn3ptzeqj],
.wrd-player-summary-grid[b-6sn3ptzeqj],
.wrd-player-group-grid[b-6sn3ptzeqj] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .6rem;
}

.wrd-player-meta-item[b-6sn3ptzeqj] {
    border: 1px solid rgba(148, 163, 184, 0.16);
    border-radius: 10px;
    padding: .52rem .6rem;
    background: rgba(15, 23, 42, 0.36);
}

.wrd-player-meta-label[b-6sn3ptzeqj] {
    display: block;
    color: #94a3b8;
    font-size: var(--font-size-chip);
    letter-spacing: .05em;
    text-transform: uppercase;
    font-weight: 700;
}

.wrd-player-meta-value[b-6sn3ptzeqj] {
    display: block;
    margin-top: .2rem;
    color: #f8fafc;
    font-size: .95rem;
    font-weight: 700;
    line-height: 1.3;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.wrd-player-card-title[b-6sn3ptzeqj] {
    margin: 0 0 .4rem;
    color: #f8fafc;
    font-size: 1.02rem;
    font-weight: 800;
}

.wrd-player-card-copy[b-6sn3ptzeqj] {
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    margin: 0;
}

.wrd-player-note[b-6sn3ptzeqj] {
    margin-top: .75rem;
    color: #fde68a;
    font-size: var(--font-size-sm);
}

.wrd-player-actions[b-6sn3ptzeqj] {
    margin-top: .65rem;
    display: flex;
    gap: .45rem;
    flex-wrap: wrap;
}

.wrd-player-actions-secondary .ui-btn[b-6sn3ptzeqj] {
    background: transparent;
}

.wrd-player-btn-disabled[b-6sn3ptzeqj] {
    opacity: .72;
    cursor: not-allowed;
}

.wrd-player-list-wrap[b-6sn3ptzeqj] {
    border: 1px solid rgba(148, 163, 184, 0.16);
    border-radius: 10px;
    padding: .65rem;
    background: rgba(15, 23, 42, 0.34);
    margin-top: .65rem;
}

.wrd-player-list-head[b-6sn3ptzeqj] {
    font-size: var(--font-size-chip);
    letter-spacing: .05em;
    text-transform: uppercase;
    color: #93c5fd;
    font-weight: 700;
    margin-bottom: .35rem;
}

.wrd-player-list-item[b-6sn3ptzeqj] {
    padding: .35rem 0;
    border-top: 1px solid rgba(148, 163, 184, 0.14);
    color: #e2e8f0;
    font-size: .9rem;
}

.wrd-player-team-name[b-6sn3ptzeqj] {
    display: block;
    color: #f8fafc;
    font-weight: 700;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.wrd-player-team-members[b-6sn3ptzeqj] {
    display: block;
    margin-top: .12rem;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
    line-height: 1.35;
}

.wrd-player-list-item:first-of-type[b-6sn3ptzeqj] {
    border-top: 0;
    padding-top: 0;
}

@media (max-width: 960px) {
    .wrd-page[b-6sn3ptzeqj] {
        padding: 16px;
        gap: 12px;
    }

    .wrd-player-hero-head[b-6sn3ptzeqj] {
        flex-direction: column;
        align-items: flex-start;
    }

    .wrd-player-meta-grid[b-6sn3ptzeqj],
    .wrd-player-summary-grid[b-6sn3ptzeqj],
    .wrd-player-group-grid[b-6sn3ptzeqj] {
        grid-template-columns: 1fr;
    }

    .wrd-player-title[b-6sn3ptzeqj] {
        font-size: 1.2rem;
    }

    .wrd-player-actions-primary .ui-btn[b-6sn3ptzeqj],
    .wrd-player-actions-secondary .ui-btn[b-6sn3ptzeqj] {
        min-height: 44px;
    }

    .wrd-player-actions-primary .ui-btn[b-6sn3ptzeqj] {
        width: 100%;
        justify-content: center;
    }

    .wrd-player-actions-secondary[b-6sn3ptzeqj] {
        gap: .35rem;
    }

    .wrd-player-actions-secondary .ui-btn[b-6sn3ptzeqj] {
        flex: 1 1 calc(50% - .35rem);
        justify-content: center;
    }

    .wrd-moments-list[b-6sn3ptzeqj] {
        grid-template-columns: 1fr;
    }

    .wrd-overview-grid[b-6sn3ptzeqj],
    .wrd-two-col[b-6sn3ptzeqj],
    .wrd-card-list[b-6sn3ptzeqj] {
        grid-template-columns: 1fr;
    }

    .wrd-inline-form[b-6sn3ptzeqj] {
        grid-template-columns: 1fr;
    }

    .wrd-group-sub-item[b-6sn3ptzeqj] {
        flex-direction: column;
        align-items: flex-start;
    }

    .wrd-next-action[b-6sn3ptzeqj] {
        align-items: flex-start;
    }
}
/* /Components/Pages/Leagues/WeeklyRoundHeader.razor.rz.scp.css */
.wrd-header[b-kbn02na9rl] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: var(--space-4, 1rem);
    align-items: start;
}

.wrd-kicker[b-kbn02na9rl] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-muted);
    margin-bottom: var(--space-1, .25rem);
}

.wrd-title[b-kbn02na9rl] {
    margin: 0 0 var(--space-2, .5rem);
    font-size: 1.55rem;
}

.wrd-meta-line[b-kbn02na9rl] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-2, .5rem);
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
    margin-bottom: var(--space-2, .5rem);
}

.wrd-meta-line span[b-kbn02na9rl] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
}

.wrd-header-actions[b-kbn02na9rl] {
    min-width: 280px;
}

@media (max-width: 980px) {
    .wrd-header[b-kbn02na9rl] {
        grid-template-columns: 1fr;
    }

    .wrd-header-actions[b-kbn02na9rl] {
        min-width: 0;
    }
}
/* /Components/Pages/Leagues/WeeklyRoundHeaderCompact.razor.rz.scp.css */
.wrhc[b-t2zutmvpeg] {
    padding: .9rem 1rem;
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    background: var(--bg-surface);
    box-shadow: var(--b9-card-shadow);
}

.wrhc-top[b-t2zutmvpeg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    flex-wrap: wrap;
}

.wrhc-title[b-t2zutmvpeg] {
    margin: 0;
    font-size: 1.15rem;
    line-height: 1.2;
}

.wrhc-sub[b-t2zutmvpeg] {
    margin-top: .35rem;
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
    line-height: 1.35;
}
/* /Components/Pages/Leagues/WeeklyRoundStatusChips.razor.rz.scp.css */
.wrs-chips[b-ehwo90w4ah] {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
}
/* /Components/Pages/Leagues/WeeklyRoundStatusStrip.razor.rz.scp.css */
.wrs-strip[b-9w9au1jkhg] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
/* /Components/Pages/Leagues/WeeklyRoundStatusSummary.razor.rz.scp.css */
.wrd-status-grid[b-mro21l5n0r] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--space-3, .75rem);
}

.wrd-mini-card[b-mro21l5n0r] {
    display: flex;
    flex-direction: column;
    gap: var(--space-1, .25rem);
}

.wrd-mini-label[b-mro21l5n0r] {
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
}

.wrd-mini-value[b-mro21l5n0r] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary);
}

.wrd-mini-link[b-mro21l5n0r],
.wrd-mini-sub[b-mro21l5n0r] {
    font-size: .78rem;
    color: var(--text-secondary);
}

@media (max-width: 900px) {
    .wrd-status-grid[b-mro21l5n0r] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 560px) {
    .wrd-status-grid[b-mro21l5n0r] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Leagues/WeeklyRoundTabNav.razor.rz.scp.css */
.wrd-tabs[b-y02aegg9cq] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
}

.wrd-tab[b-y02aegg9cq] {
    border: 1px solid var(--border-subtle);
    background: var(--bg-surface);
    color: var(--text-secondary);
    border-radius: var(--radius-md, 10px);
    padding: .5rem .75rem;
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    font-size: .82rem;
    font-weight: 600;
}

.wrd-tab--active[b-y02aegg9cq] {
    border-color: var(--brand);
    background: color-mix(in srgb, var(--brand) 18%, var(--bg-elevated));
    color: var(--text-primary);
}
/* /Components/Pages/Leagues/WeeklyScorecards.razor.rz.scp.css */
.spc-topbar[b-bc91uhphhy] {
    max-width: 1180px;
    margin: 0.9rem auto 0.25rem;
    padding: 0 1rem;
}

.spc-wrap[b-bc91uhphhy] {
    max-width: 1180px;
    margin: 0 auto;
    padding: 0.65rem 1rem 2rem;
}

.spc-header-card[b-bc91uhphhy] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 1rem;
    box-shadow: var(--b9-card-shadow);
}

.spc-header-row[b-bc91uhphhy] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.8rem;
}

.spc-header-row h1[b-bc91uhphhy] {
    margin: 0;
    font-size: 1.35rem;
    color: var(--text-primary);
}

.spc-header-row p[b-bc91uhphhy] {
    margin: 0.2rem 0 0;
    font-size: 0.9rem;
    color: var(--text-secondary);
}

.spc-ready-badge[b-bc91uhphhy] {
    font-size: var(--font-size-chip);
    padding: 0.45rem 0.6rem;
}

.spc-kpis[b-bc91uhphhy] {
    margin-top: 0.85rem;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.6rem;
}

.spc-kpi[b-bc91uhphhy] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 0.65rem 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.12rem;
}

.spc-kpi-label[b-bc91uhphhy] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--text-muted);
}

.spc-kpi-value[b-bc91uhphhy] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--text-primary);
}

.spc-metadata[b-bc91uhphhy] {
    margin-top: 0.45rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.spc-metadata--qr-on[b-bc91uhphhy] {
    color: var(--success, #22c55e);
}

.spc-metadata--qr-upgrade[b-bc91uhphhy] {
    margin-top: 0.75rem;
    background: var(--brand-soft, rgba(34,197,94,.08));
    border: 1px solid var(--brand-soft, rgba(34,197,94,.2));
    border-radius: 8px;
    padding: 0.6rem 0.9rem;
    color: var(--text-secondary, #cbd5e1);
    font-size: var(--font-size-sm);
    line-height: 1.5;
}

.spc-upgrade-link[b-bc91uhphhy] {
    display: inline-block;
    margin-top: 0.3rem;
    color: var(--b9-primary-text);
    font-weight: 600;
    text-decoration: none;
}

.spc-actions[b-bc91uhphhy] {
    margin-top: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.spc-hero-panel[b-bc91uhphhy] {
    margin-top: 0.9rem;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    padding: 0.85rem;
    box-shadow: var(--b9-card-shadow);
}

.spc-panel-head h3[b-bc91uhphhy] {
    margin: 0;
    color: var(--text-primary);
    font-size: 1rem;
}

.spc-panel-head p[b-bc91uhphhy] {
    margin: 0.15rem 0 0.6rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.spc-preview-frame[b-bc91uhphhy] {
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    overflow: hidden;
    background: var(--bg-surface);
    height: 620px;
}

.spc-preview-frame iframe[b-bc91uhphhy] {
    width: 100%;
    height: 100%;
    border: 0;
}

.spc-empty[b-bc91uhphhy] {
    min-height: 260px;
    border: 1px dashed var(--border-default);
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--text-secondary);
    font-size: 0.9rem;
}

.spc-admin-accordion[b-bc91uhphhy] {
    margin-top: 0.9rem;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    box-shadow: var(--b9-card-shadow);
}

.spc-admin-accordion summary[b-bc91uhphhy] {
    cursor: pointer;
    padding: 0.8rem 0.95rem;
    user-select: none;
    font-weight: 600;
    color: var(--text-primary);
}

.spc-admin-body[b-bc91uhphhy] {
    border-top: 1px solid var(--border-subtle);
    padding: 0.85rem 0.95rem 0.95rem;
}

.spc-admin-list[b-bc91uhphhy] {
    margin: 0;
    display: grid;
    gap: 0.55rem;
}

.spc-admin-list div[b-bc91uhphhy] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    padding: 0.5rem 0.65rem;
}

.spc-admin-list dt[b-bc91uhphhy] {
    margin: 0;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    color: var(--text-muted);
}

.spc-admin-list dd[b-bc91uhphhy] {
    margin: 0.15rem 0 0;
    font-size: 0.88rem;
    color: var(--text-primary);
    font-weight: 600;
}

.spc-empty-sm[b-bc91uhphhy] {
    border: 1px dashed var(--border-default);
    border-radius: 10px;
    padding: 0.75rem;
    text-align: center;
    color: var(--text-secondary);
    font-size: 0.88rem;
}

.spc-state[b-bc91uhphhy] {
    min-height: 42vh;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    color: var(--text-secondary);
}

.spc-overlay[b-bc91uhphhy] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    z-index: 1080;
}

.spc-confirm-card[b-bc91uhphhy] {
    width: min(32rem, 100%);
}

@media (max-width: 980px) {
    .spc-header-row[b-bc91uhphhy] {
        flex-direction: column;
        align-items: flex-start;
    }

    .spc-kpis[b-bc91uhphhy] {
        grid-template-columns: 1fr;
    }

    .spc-preview-frame[b-bc91uhphhy] {
        height: 440px;
    }
}

/* Transparent overlay that closes the "More" menu on an outside click.
   Sits just below Bootstrap's .dropdown-menu (z-index 1000) so the menu stays clickable. */
.spc-dropdown-backdrop[b-bc91uhphhy] {
    position: fixed;
    inset: 0;
    z-index: 999;
    background: transparent;
}

@media print {
    .no-print[b-bc91uhphhy] {
        display: none !important;
    }
}

/* ── "More" menu alignment without Bootstrap JS ────────────────────────
   The app ships Bootstrap CSS only; .dropdown-menu-end needs Popper's
   [data-bs-popper] attribute to apply right-alignment, so without it the
   menu opens LEFT-edge-aligned and runs past the right of narrow screens.
   Right-align it to its .dropdown parent and cap the width to the phone
   viewport. */
.dropdown .dropdown-menu.show[b-bc91uhphhy] {
    right: 0;
    left: auto;
    max-width: min(92vw, 320px);
}
/* /Components/Pages/Leagues/WeeklyWorkflowAccordion.razor.rz.scp.css */
.wwa[b-8v32pubbhw] {
    display: flex;
    flex-direction: column;
    gap: .7rem;
}
/* /Components/Pages/Leagues/WeeklyWorkflowStep.razor.rz.scp.css */
.wwstep[b-mh21rfbpxw] {
    padding: 16px;
    border-radius: 12px;
}

.wwstep-head[b-mh21rfbpxw] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    border: 0;
    background: transparent;
    color: inherit;
    padding: 0;
    text-align: left;
}

.wwstep-left[b-mh21rfbpxw] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    flex-wrap: wrap;
}

.wwstep-num[b-mh21rfbpxw] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-muted);
}

.wwstep-title[b-mh21rfbpxw] {
    font-size: 15px;
}

.wwstep-right[b-mh21rfbpxw] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.wwstep-summary[b-mh21rfbpxw] {
    margin-top: 8px;
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}

.wwstep-body[b-mh21rfbpxw] {
    margin-top: 12px;
}
/* /Components/Pages/Leagues/WeeklyWorkflowStepCard.razor.rz.scp.css */
.wwsc[b-djz5r600dc] {
    padding: .7rem .8rem;
}

.wwsc-head[b-djz5r600dc] {
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .6rem;
    border: 0;
    background: transparent;
    color: inherit;
    padding: 0;
    text-align: left;
}

.wwsc-left[b-djz5r600dc] {
    display: flex;
    align-items: baseline;
    gap: .5rem;
    flex-wrap: wrap;
}

.wwsc-step[b-djz5r600dc] {
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--text-muted);
}

.wwsc-title[b-djz5r600dc] {
    font-size: .96rem;
}

.wwsc-right[b-djz5r600dc] {
    display: flex;
    align-items: center;
    gap: .45rem;
}

.wwsc-summary[b-djz5r600dc] {
    margin-top: .45rem;
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}

.wwsc-body[b-djz5r600dc] {
    margin-top: .65rem;
}
/* /Components/Pages/Leagues/WorkflowStepCard.razor.rz.scp.css */
.wsc[b-gu8fx8h12z] {
    padding: var(--space-4, 1rem);
    display: flex;
    flex-direction: column;
    gap: var(--space-3, .75rem);
}

.wsc-head[b-gu8fx8h12z] {
    display: flex;
    justify-content: space-between;
    gap: var(--space-3, .75rem);
    flex-wrap: wrap;
}

.wsc-left[b-gu8fx8h12z] {
    display: flex;
    gap: var(--space-3, .75rem);
}

.wsc-step[b-gu8fx8h12z] {
    width: 32px;
    height: 32px;
    border-radius: 999px;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: .68rem;
    font-weight: 700;
    color: var(--text-secondary);
    flex-shrink: 0;
}

.wsc-title[b-gu8fx8h12z] {
    margin: 0;
    font-size: 1.05rem;
}

.wsc-desc[b-gu8fx8h12z] {
    margin: .15rem 0 0;
    color: var(--text-secondary);
    font-size: .84rem;
}

.wsc-right[b-gu8fx8h12z] {
    display: flex;
    gap: var(--space-2, .5rem);
    align-items: center;
}

.wsc-actions[b-gu8fx8h12z] {
    display: flex;
    gap: var(--space-2, .5rem);
    flex-wrap: wrap;
}

.wsc-body[b-gu8fx8h12z] {
    border-top: 1px solid var(--border-subtle);
    padding-top: var(--space-3, .75rem);
}
/* /Components/Pages/MyDashboard.razor.rz.scp.css */
/* ================================================================
   PLAYER DASHBOARD (/my)
   ================================================================ */

.pdb-loading[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 5rem 1rem;
    color: var(--text-muted, #64748b);
}

.pfeed-page[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1rem;
}

.pfeed-today[b-7m3d3vvvo2],
.pfeed-section[b-7m3d3vvvo2] {
    border: 1px solid rgba(148, 163, 184, 0.18);
    background: linear-gradient(180deg, rgba(15, 23, 42, 0.82) 0%, rgba(2, 6, 23, 0.92) 100%);
    border-radius: 14px;
    padding: 1rem;
}

.pfeed-today-head[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 0.85rem;
}

.pfeed-avatar[b-7m3d3vvvo2] {
    width: 42px;
    height: 42px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(145deg, #16a34a 0%, #15803d 100%);
    color: #f8fafc;
    font-weight: 800;
    letter-spacing: 0.02em;
    overflow: hidden;
    flex-shrink: 0;
}
.pfeed-avatar--photo[b-7m3d3vvvo2] {
    background: transparent;
}

.pfeed-title[b-7m3d3vvvo2] {
    margin: 0;
    font-size: 1.1rem;
    color: #f8fafc;
    font-weight: 800;
}

.pfeed-sub[b-7m3d3vvvo2] {
    margin: 0;
    color: #94a3b8;
    font-size: 0.92rem;
}

.pfeed-today-card[b-7m3d3vvvo2] {
    background: rgba(15, 118, 110, 0.16);
    border: 1px solid rgba(20, 184, 166, 0.35);
    border-radius: 12px;
    padding: 0.95rem;
}

.pfeed-today-meta[b-7m3d3vvvo2] {
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #5eead4;
    font-weight: 700;
    margin-bottom: 0.35rem;
}

.pfeed-today-title[b-7m3d3vvvo2] {
    margin: 0;
    font-size: 1.18rem;
    color: #f8fafc;
    font-weight: 800;
}

.pfeed-today-note[b-7m3d3vvvo2] {
    margin: 0.45rem 0 0;
    color: #cbd5e1;
    line-height: 1.5;
    font-size: 0.95rem;
}

.pfeed-today-chips[b-7m3d3vvvo2] {
    margin-top: 0.75rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.pfeed-chip[b-7m3d3vvvo2] {
    border: 1px solid rgba(94, 234, 212, 0.32);
    border-radius: 999px;
    padding: 0.3rem 0.55rem;
    color: #ccfbf1;
    font-size: var(--font-size-chip);
    background: rgba(15, 23, 42, 0.45);
}

.pfeed-today-actions[b-7m3d3vvvo2] {
    margin-top: 0.85rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.55rem;
}

.pfeed-btn-primary[b-7m3d3vvvo2],
.pfeed-btn-secondary[b-7m3d3vvvo2] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
    border-radius: 10px;
    padding: 0.55rem 0.9rem;
    min-height: 48px;
    font-weight: 700;
    font-size: var(--font-size-base, 1rem);
    line-height: 1.25;
}

/* X05 (UX audit 2026-09-06): the page's main action is the brand blue, the same colour the
   app and the ops shell use for theirs. Green is a status colour here, never a button fill. */
.pfeed-btn-primary[b-7m3d3vvvo2] {
    background: var(--b9-primary);
    color: var(--player-text-inverse);
    border: 1px solid var(--b9-primary-active);
}

.pfeed-btn-primary:hover[b-7m3d3vvvo2] {
    background: var(--b9-primary-hover);
    color: var(--player-text-inverse);
}

/* ================================================================
   The Today card in DAYLIGHT
   ----------------------------------------------------------------
   The Today/section cards are painted with a hardcoded near-opaque dark gradient and inked with
   dark-only literals (#f8fafc titles, #94a3b8 subs, #cbd5e1 notes, #5eead4 teal). Every one of
   those PASSES a contrast probe in light mode -- light text on a dark slab always does -- which is
   why the audit harness never flagged this card. It just looked wrong: a black hero stranded on a
   white page, directly above a correctly-light "Back9Ops app" card.

   Only the light half is restated here, so the shipped dark look is untouched by construction
   rather than by inspection. The teal stays: it is how the card says "this is live right now", and
   flattening it to grey would cost the page its one moment of urgency. Teal-300 (#5eead4) reads
   1.18:1 on the light tint, so daylight gets teal-800 (#115e59) -- 6.06:1 on the tint it sits on,
   7.58:1 on the card.
   ================================================================ */
html[data-theme="light"] .pfeed-today[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-section[b-7m3d3vvvo2] {
    background: var(--b9-card-bg);
    border-color: var(--b9-card-border);
}

html[data-theme="light"] .pfeed-title[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-today-title[b-7m3d3vvvo2] {
    color: var(--player-text-primary);
}

html[data-theme="light"] .pfeed-sub[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-today-note[b-7m3d3vvvo2] {
    color: var(--player-text-secondary);
}

html[data-theme="light"] .pfeed-today-meta[b-7m3d3vvvo2] {
    color: #115E59;
}

html[data-theme="light"] .pfeed-chip[b-7m3d3vvvo2] {
    background: rgba(15, 118, 110, 0.10);
    border-color: rgba(15, 118, 110, 0.30);
    color: #115E59;
}

/* The secondary action is a dark slate slab with a cyan edge -- correct on the dark hero, but on
   the light card it reads as a second, heavier button competing with the blue primary. In daylight
   it becomes what a secondary should be: the card's own surface, teal edge, teal ink (7.58:1). */
html[data-theme="light"] .pfeed-btn-secondary[b-7m3d3vvvo2] {
    background: var(--b9-card-bg);
    color: #115E59;
    border-color: rgba(15, 118, 110, 0.45);
}

html[data-theme="light"] .pfeed-btn-secondary:hover[b-7m3d3vvvo2] {
    background: rgba(15, 118, 110, 0.08);
    border-color: rgba(15, 118, 110, 0.70);
    color: #134E4A;
}

/* The rest of the feed. .pfeed-section is the same dark slab as .pfeed-today, and everything
   inside it -- the feed rows, the stat tiles, the upcoming card, the quick actions, the empty
   states -- is inked for that slab. Converting the shell without these turned the page white
   underneath grey-on-grey text: the harness went from 0 failures to 42 on this page alone, all of
   them here. Light needs the whole family or none of it. */
html[data-theme="light"] .pfeed-section-title[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-stat-label[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-empty[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-action-disabled[b-7m3d3vvvo2] {
    color: var(--player-text-secondary);
}

html[data-theme="light"] .pfeed-feed-item[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-stat-card[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-action[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-empty[b-7m3d3vvvo2] {
    background: var(--bg-elevated);
    border-color: var(--b9-card-border);
}

html[data-theme="light"] .pfeed-feed-item:hover[b-7m3d3vvvo2] {
    background: var(--bg-raised);
    border-color: rgba(15, 118, 110, 0.45);
}

html[data-theme="light"] .pfeed-feed-icon[b-7m3d3vvvo2] {
    background: var(--bg-raised);
    color: var(--player-text-secondary);
}

html[data-theme="light"] .pfeed-feed-title[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-stat-value[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-upcoming-name[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-action[b-7m3d3vvvo2] {
    color: var(--player-text-primary);
}

html[data-theme="light"] .pfeed-feed-text[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-upcoming-meta[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-empty-note[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-action-disabled small[b-7m3d3vvvo2] {
    color: var(--player-text-secondary);
}

/* The action links keep their "this is a link" blue; the dark theme's pale cyan is 1.53:1 once
   the row turns light. */
html[data-theme="light"] .pfeed-feed-link[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-inline-link[b-7m3d3vvvo2] {
    color: var(--b9-link);
    border-color: color-mix(in srgb, var(--b9-link) 45%, transparent);
}

html[data-theme="light"] .pfeed-feed-link:hover[b-7m3d3vvvo2],
html[data-theme="light"] .pfeed-inline-link:hover[b-7m3d3vvvo2] {
    color: var(--b9-link-hover);
}

html[data-theme="light"] .pfeed-stat-id[b-7m3d3vvvo2] {
    color: var(--b9-indigo-text);
}

html[data-theme="light"] .pfeed-upcoming-card[b-7m3d3vvvo2] {
    background: rgba(14, 116, 144, 0.10);
    border-color: rgba(14, 116, 144, 0.30);
}

html[data-theme="light"] .pfeed-action:hover[b-7m3d3vvvo2] {
    border-color: rgba(15, 118, 110, 0.60);
    color: var(--player-text-primary);
}

/* X13: the Player+ promo is an invitation, not a live event — plain surface, no hero tint, and
   its button is the page's secondary so the Today card keeps the one blue primary. */
.pfeed-promo-card[b-7m3d3vvvo2] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 0.95rem;
}

.pfeed-promo-card .pfeed-today-meta[b-7m3d3vvvo2] {
    color: var(--text-muted);
}

.pfeed-btn-secondary[b-7m3d3vvvo2] {
    background: rgba(15, 23, 42, 0.78);
    color: #f8fafc;
    border: 2px solid rgba(103, 232, 249, 0.72);
    font-weight: 600;
}

.pfeed-btn-secondary:hover[b-7m3d3vvvo2] {
    background: rgba(30, 41, 59, 0.9);
    border-color: rgba(125, 211, 252, 0.95);
    color: #ffffff;
}

.pfeed-btn-secondary:focus-visible[b-7m3d3vvvo2] {
    outline: 2px solid #7dd3fc;
    outline-offset: 2px;
    box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.28);
}

@media (max-width: 479.98px) {
    .pfeed-today-actions[b-7m3d3vvvo2] {
        flex-direction: column;
        align-items: stretch;
    }

    .pfeed-btn-primary[b-7m3d3vvvo2],
    .pfeed-btn-secondary[b-7m3d3vvvo2] {
        width: 100%;
        justify-content: center;
        white-space: normal;
        text-align: center;
    }
}

.pfeed-section-title[b-7m3d3vvvo2] {
    margin: 0;
    font-size: var(--font-size-sm);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: #94a3b8;
    font-weight: 700;
}

.pfeed-feed-list[b-7m3d3vvvo2] {
    margin-top: 0.7rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.pfeed-feed-item[b-7m3d3vvvo2] {
    display: flex;
    align-items: flex-start;
    gap: 0.65rem;
    border-radius: 10px;
    padding: 0.65rem 0.7rem;
    border: 1px solid rgba(148, 163, 184, 0.2);
    background: rgba(15, 23, 42, 0.4);
}

.pfeed-feed-item:hover[b-7m3d3vvvo2] {
    border-color: rgba(94, 234, 212, 0.4);
    background: rgba(15, 23, 42, 0.62);
}

.pfeed-tone-live[b-7m3d3vvvo2] { border-color: rgba(34, 197, 94, 0.45); }
.pfeed-tone-info[b-7m3d3vvvo2] { border-color: rgba(56, 189, 248, 0.45); }
.pfeed-tone-comm[b-7m3d3vvvo2] { border-color: rgba(168, 85, 247, 0.4); }
.pfeed-tone-up[b-7m3d3vvvo2] { border-color: rgba(245, 158, 11, 0.45); }
.pfeed-tone-result[b-7m3d3vvvo2] { border-color: rgba(250, 204, 21, 0.45); }

.pfeed-feed-icon[b-7m3d3vvvo2] {
    width: 30px;
    height: 30px;
    border-radius: 8px;
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: rgba(15, 23, 42, 0.75);
    color: #e2e8f0;
}

.pfeed-feed-body[b-7m3d3vvvo2] {
    min-width: 0;
    flex: 1;
}

.pfeed-feed-title[b-7m3d3vvvo2] {
    font-weight: 700;
    color: #f8fafc;
    font-size: 0.9rem;
    line-height: 1.35;
}

.pfeed-feed-text[b-7m3d3vvvo2] {
    color: #e2e8f0;
    font-size: 0.875rem;
    line-height: 1.45;
    margin-top: 0.1rem;
}

.pfeed-feed-link[b-7m3d3vvvo2],
.pfeed-inline-link[b-7m3d3vvvo2] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    min-width: 48px;
    padding: 0.55rem 0.9rem;
    border: 1px solid rgba(125, 211, 252, 0.5);
    border-radius: 8px;
    color: #7dd3fc;
    font-weight: 700;
    font-size: var(--font-size-base, 1rem);
    line-height: 1.25;
    text-decoration: none;
    white-space: nowrap;
}

.pfeed-feed-link:hover[b-7m3d3vvvo2],
.pfeed-inline-link:hover[b-7m3d3vvvo2] {
    color: #bae6fd;
}

.pfeed-stats-grid[b-7m3d3vvvo2] {
    margin-top: 0.7rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.55rem;
}

.pfeed-stat-card[b-7m3d3vvvo2] {
    border: 1px solid rgba(148, 163, 184, 0.2);
    border-radius: 10px;
    padding: 0.7rem;
    background: rgba(15, 23, 42, 0.45);
}

.pfeed-stat-label[b-7m3d3vvvo2] {
    color: #94a3b8;
    font-size: var(--font-size-chip);
    text-transform: uppercase;
    letter-spacing: 0.07em;
    font-weight: 700;
}

.pfeed-stat-value[b-7m3d3vvvo2] {
    margin-top: 0.3rem;
    color: #f8fafc;
    font-size: 1.05rem;
    font-weight: 800;
}

.pfeed-stat-id[b-7m3d3vvvo2] {
    font-family: "Courier New", monospace;
    font-size: var(--font-size-sm);
    letter-spacing: 0.04em;
    color: #a5b4fc;
}

.pfeed-section-row[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.pfeed-upcoming-card[b-7m3d3vvvo2] {
    margin-top: 0.7rem;
    border-radius: 10px;
    padding: 0.8rem;
    border: 1px solid rgba(56, 189, 248, 0.35);
    background: rgba(14, 116, 144, 0.15);
}

.pfeed-upcoming-name[b-7m3d3vvvo2] {
    color: #f8fafc;
    font-size: 1rem;
    font-weight: 800;
    line-height: 1.3;
}

.pfeed-upcoming-meta[b-7m3d3vvvo2] {
    margin-top: 0.25rem;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
}

.pfeed-actions-grid[b-7m3d3vvvo2] {
    margin-top: 0.7rem;
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
}

.pfeed-action[b-7m3d3vvvo2] {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 0.65rem 0.75rem;
    min-height: 56px;
    border-radius: 10px;
    text-decoration: none;
    border: 1px solid rgba(148, 163, 184, 0.28);
    color: #e2e8f0;
    background: rgba(15, 23, 42, 0.42);
    font-weight: 700;
    font-size: var(--font-size-lg, 18px);
    line-height: 1.2;
}

.pfeed-action:hover[b-7m3d3vvvo2] {
    border-color: rgba(22, 163, 74, 0.7);
    color: #f8fafc;
}

.pfeed-action-disabled[b-7m3d3vvvo2] {
    border-style: dashed;
    color: #94a3b8;
    background: rgba(15, 23, 42, 0.22);
    cursor: not-allowed;
}

.pfeed-action-disabled small[b-7m3d3vvvo2] {
    margin-top: 0.2rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: #64748b;
    text-align: center;
}

.pfeed-empty[b-7m3d3vvvo2] {
    margin-top: 0.65rem;
    border-radius: 10px;
    border: 1px dashed rgba(148, 163, 184, 0.35);
    background: rgba(15, 23, 42, 0.35);
    padding: 0.8rem;
    color: #94a3b8;
    font-size: 0.9rem;
}

.pfeed-empty p[b-7m3d3vvvo2] {
    margin: 0;
}

.pfeed-empty-actions[b-7m3d3vvvo2] {
    margin-top: 0.55rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem;
}

.pfeed-empty-note[b-7m3d3vvvo2] {
    margin-top: 0.55rem !important;
    color: #cbd5e1;
    font-size: var(--font-size-sm);
}

@media (min-width: 992px) {
    .pfeed-page[b-7m3d3vvvo2] {
        padding: 1.25rem;
        gap: 1.1rem;
    }

    .pfeed-today[b-7m3d3vvvo2],
    .pfeed-section[b-7m3d3vvvo2] {
        padding: 1.15rem;
    }

    .pfeed-stats-grid[b-7m3d3vvvo2],
    .pfeed-actions-grid[b-7m3d3vvvo2] {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* ── Tonight's Round / Active League Scoring Card ── */
.pdb-tonight-card[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    gap: 1rem;
    background: var(--success-soft);
    border: 2px solid rgba(34,197,94,0.45);
    border-radius: 12px;
    padding: 1rem 1.25rem;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
}

.pdb-tonight-bar[b-7m3d3vvvo2] {
    width: 4px;
    min-height: 48px;
    background: var(--success-text);
    border-radius: 2px;
    flex-shrink: 0;
}

.pdb-tonight-body[b-7m3d3vvvo2] {
    flex: 1;
    min-width: 0;
}

.pdb-tonight-label[b-7m3d3vvvo2] {
    margin-bottom: .25rem;
}

.pdb-tonight-title[b-7m3d3vvvo2] {
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: .2rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pdb-tonight-sub[b-7m3d3vvvo2] {
    font-size: var(--font-size-sm);
    color: var(--success-text);
}

.pdb-tonight-actions[b-7m3d3vvvo2] {
    display: flex;
    gap: .5rem;
    flex-shrink: 0;
    flex-wrap: wrap;
}

.pdb-tonight-btn-primary[b-7m3d3vvvo2] {
    display: inline-flex;
    align-items: center;
    padding: .6rem 1.25rem;
    background: #16a34a;
    color: #fff;
    border-radius: 8px;
    font-weight: 700;
    font-size: .9rem;
    text-decoration: none;
    white-space: nowrap;
    transition: background .15s;
}

.pdb-tonight-btn-primary:hover[b-7m3d3vvvo2] {
    background: #15803d;
    color: #fff;
}

.pdb-tonight-btn-secondary[b-7m3d3vvvo2] {
    display: inline-flex;
    align-items: center;
    padding: .6rem 1rem;
    background: transparent;
    color: var(--success-text);
    border: 1.5px solid rgba(34,197,94,0.45);
    border-radius: 8px;
    font-size: .875rem;
    text-decoration: none;
    white-space: nowrap;
}

.pdb-tonight-btn-secondary:hover[b-7m3d3vvvo2] {
    background: var(--success-soft);
    color: var(--success-text);
}

/* ── Unlinked state ── */
.pdb-unlinked[b-7m3d3vvvo2] {
    max-width: 480px;
    margin: 4rem auto;
    text-align: center;
    padding: 0 1.5rem;
}

/* F5 course suggestions under the not-on-a-roster help: same column, left-aligned like a card. */
.pdb-unlinked-course[b-7m3d3vvvo2] {
    max-width: 480px;
    margin: -2rem auto 3rem;
    padding: 0 1.5rem;
}

.pdb-unlinked-icon[b-7m3d3vvvo2] {
    font-size: 3.5rem;
    color: var(--text-muted, #64748b);
    margin-bottom: 1.25rem;
}

.pdb-unlinked-title[b-7m3d3vvvo2] {
    font-size: 1.375rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: 0.75rem;
}

.pdb-unlinked-sub[b-7m3d3vvvo2] {
    font-size: 0.9375rem;
    color: var(--text-secondary, #94a3b8);
    line-height: 1.6;
    margin-bottom: 1.5rem;
}

/* Pending join request banners */
.pdb-pending-requests[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 1.5rem;
    width: 100%;
    max-width: 460px;
}

.pdb-pending-request-item[b-7m3d3vvvo2] {
    display: flex;
    align-items: flex-start;
    gap: 0.375rem;
    font-size: 0.875rem;
    padding: 0.625rem 0.875rem;
    background: rgba(234, 179, 8, 0.1);
    border: 1px solid rgba(234, 179, 8, 0.25);
    border-radius: 8px;
    color: #fbbf24;
    line-height: 1.5;
    text-align: left;
}

.pdb-pending-request-item i[b-7m3d3vvvo2] {
    margin-top: 1px;
    flex-shrink: 0;
}

.pdb-unlinked-steps[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
    text-align: left;
    background: rgba(255,255,255,0.04);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.07));
    border-radius: 12px;
    padding: 1.25rem 1.25rem;
    margin-bottom: 1.25rem;
}

.pdb-unlinked-step[b-7m3d3vvvo2] {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
    font-size: 0.9rem;
    color: var(--text-secondary, #94a3b8);
    line-height: 1.5;
}

.pdb-unlinked-step-num[b-7m3d3vvvo2] {
    flex-shrink: 0;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-top: 1px;
}

.pdb-unlinked-hint[b-7m3d3vvvo2] {
    font-size: 0.875rem;
    color: var(--text-muted, #64748b);
}

.pdb-link[b-7m3d3vvvo2] {
    /* Contrast-safe link token, not brand-fill (see .auth-forgot-link note). */
    color: var(--b9-link);
    text-decoration: none;
}

.pdb-link:hover[b-7m3d3vvvo2] {
    text-decoration: underline;
}

/* ── Player header ── */
.pdb-header[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem 1.25rem 1rem;
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
}

.pdb-avatar[b-7m3d3vvvo2] {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-size: 1.25rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
    flex-shrink: 0;
    overflow: hidden;
}
.pdb-avatar--photo[b-7m3d3vvvo2] {
    background: transparent;
}

.pdb-header-info[b-7m3d3vvvo2] {
    flex: 1;
    min-width: 0;
}

.pdb-name[b-7m3d3vvvo2] {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin: 0 0 0.25rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.pdb-org[b-7m3d3vvvo2] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
}

.pdb-org-link[b-7m3d3vvvo2] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    text-decoration: none;
    border-radius: 5px;
    padding: 0.15rem 0.3rem;
    margin: -0.15rem -0.3rem;
    transition: background 0.15s, color 0.15s;
}

.pdb-org-link:hover[b-7m3d3vvvo2] {
    color: var(--b9-primary-text);
    background: rgba(22, 163, 74, 0.08);
}

.pdb-org-ext[b-7m3d3vvvo2] {
    font-size: var(--font-size-sm);
    opacity: 0.6;
}

.pdb-b9id-chip[b-7m3d3vvvo2] {
    display: inline-flex;
    align-items: center;
    margin-top: 0.35rem;
    font-size: var(--font-size-chip);
    font-weight: 600;
    font-family: 'Courier New', monospace;
    letter-spacing: 0.05em;
    padding: 0.15rem 0.55rem;
    background: rgba(99, 102, 241, 0.12);
    border: 1px solid rgba(99, 102, 241, 0.25);
    border-radius: 999px;
    color: #818cf8;
    cursor: default;
    user-select: all;
}

.pdb-hcp-chip[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0.5rem 0.875rem;
    background: rgba(22, 163, 74, 0.12);
    border: 1px solid rgba(22, 163, 74, 0.25);
    border-radius: 10px;
    flex-shrink: 0;
}

.pdb-hcp-label[b-7m3d3vvvo2] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--b9-primary-text);
}

.pdb-hcp-value[b-7m3d3vvvo2] {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    line-height: 1.2;
}

/* ── Sections ── */
.pdb-section[b-7m3d3vvvo2] {
    padding: 1.25rem 1.25rem 0.5rem;
}

.pdb-section-title[b-7m3d3vvvo2] {
    font-size: 0.875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--text-muted, #64748b);
    margin-bottom: 0.875rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.pdb-section-count[b-7m3d3vvvo2] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    background: rgba(255,255,255,0.08);
    padding: 0.1em 0.5em;
    border-radius: 999px;
    color: var(--text-secondary, #94a3b8);
}

/* ── Multi-org section cards ── */
.pdb-org-section-list[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.pdb-org-section-card[b-7m3d3vvvo2] {
    background: rgba(255,255,255,0.04);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.07));
    border-radius: 10px;
    padding: 0.875rem 1rem;
}

.pdb-osc-header[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.pdb-osc-name[b-7m3d3vvvo2] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--text-primary, #f1f5f9);
    text-decoration: none;
}
.pdb-osc-name:hover[b-7m3d3vvvo2] { color: var(--b9-primary-text); }

.pdb-osc-chips[b-7m3d3vvvo2] {
    display: flex;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.pdb-osc-chip[b-7m3d3vvvo2] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    padding: 0.15rem 0.5rem;
    background: rgba(255,255,255,0.07);
    border-radius: 999px;
    color: var(--text-secondary, #94a3b8);
}
.pdb-osc-chip-active[b-7m3d3vvvo2] {
    background: rgba(239,68,68,0.12);
    color: #f87171;
    display: flex;
    align-items: center;
}
.pdb-osc-chip-muted[b-7m3d3vvvo2] { opacity: .6; }

.pdb-osc-events[b-7m3d3vvvo2] {
    margin-top: 0.625rem;
    border-top: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    padding-top: 0.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.pdb-osc-event-row[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--font-size-sm);
}

.pdb-osc-event-dot[b-7m3d3vvvo2] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
    background: var(--text-muted, #64748b);
}
.pdb-bar--active.pdb-osc-event-dot[b-7m3d3vvvo2] { background: #f87171; }
.pdb-bar--open.pdb-osc-event-dot[b-7m3d3vvvo2]   { background: var(--b9-primary, #16a34a); }

.pdb-osc-event-name[b-7m3d3vvvo2] {
    color: var(--text-secondary, #94a3b8);
    text-decoration: none;
}
.pdb-osc-event-name:hover[b-7m3d3vvvo2] { color: var(--text-primary, #f1f5f9); }

/* ── Empty state ── */
.pdb-empty[b-7m3d3vvvo2] {
    text-align: center;
    padding: 2.5rem 1rem;
    background: rgba(255,255,255,0.03);
    border-radius: 12px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
}

.pdb-empty-icon[b-7m3d3vvvo2] {
    font-size: 2.5rem;
    color: var(--text-muted, #64748b);
    display: block;
    margin-bottom: 0.75rem;
}

.pdb-empty-msg[b-7m3d3vvvo2] {
    font-size: 0.9375rem;
    color: var(--text-secondary, #94a3b8);
    margin: 0;
}

/* ── Event list ── */
.pdb-event-list[b-7m3d3vvvo2] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.pdb-event-card[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.875rem 1rem;
    background: var(--bg-card, rgba(255,255,255,0.04));
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    border-radius: 10px;
    transition: background 0.15s;
}

.pdb-event-card:hover[b-7m3d3vvvo2] {
    background: rgba(255,255,255,0.06);
}

.pdb-ec-left[b-7m3d3vvvo2] {
    flex-shrink: 0;
    text-align: center;
    min-width: 44px;
}

.pdb-ec-date[b-7m3d3vvvo2] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--b9-primary-text);
}

.pdb-ec-body[b-7m3d3vvvo2] {
    flex: 1;
    min-width: 0;
}

.pdb-ec-name[b-7m3d3vvvo2] {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
    text-decoration: none;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-bottom: 0.3rem;
}

.pdb-ec-name:hover[b-7m3d3vvvo2] {
    text-decoration: underline;
}

.pdb-ec-meta[b-7m3d3vvvo2] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.pdb-ec-format[b-7m3d3vvvo2] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
}

.pdb-ec-actions[b-7m3d3vvvo2] {
    flex-shrink: 0;
}

/* ── Past events hint ── */
.pdb-past-hint[b-7m3d3vvvo2] {
    font-size: 0.9rem;
    color: var(--text-secondary, #94a3b8);
}

.pdb-link[b-7m3d3vvvo2] {
    /* Contrast-safe link token, not brand-fill (see .auth-forgot-link note). */
    color: var(--b9-link);
    text-decoration: none;
    font-weight: 500;
}

.pdb-link:hover[b-7m3d3vvvo2] {
    text-decoration: underline;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.pfeed-section-title--compact[b-7m3d3vvvo2] { font-size: 0.95rem; }
/* /Components/Pages/MyFriends.razor.rz.scp.css */
/* /my/friends — Social plan F0. Brand tokens only (both themes); every control ≥ the touch floor;
   everything wraps at 320px instead of widening the page. Mirrors MyInbox's tokens and shapes. */

.fr-page[b-52bl82hqmo]   { max-width:720px; margin:0 auto; padding:24px 16px 48px; }
.fr-title[b-52bl82hqmo]  { font-size:1.375rem; font-weight:700; color:var(--b9-text); margin:0 0 6px; }
.fr-intro[b-52bl82hqmo]  { font-size:var(--font-size-sm); color:var(--b9-text-muted); margin:0 0 16px; }
.fr-h2[b-52bl82hqmo]     { font-size:var(--font-size-base); font-weight:700; color:var(--b9-text); margin:20px 0 10px; }

/* ── Tabs ─────────────────────────────────────────────────────────── */
.fr-tabs[b-52bl82hqmo]   { display:flex; flex-wrap:wrap; margin-bottom:16px; border-bottom:1.5px solid var(--b9-border); }
.fr-tab[b-52bl82hqmo]    { display:inline-flex; align-items:center; gap:6px; padding:8px 16px; min-height:var(--touch-target-min);
             font-size:var(--font-size-sm); font-weight:600; color:var(--b9-text-muted); background:none; border:none;
             border-bottom:2.5px solid transparent; margin-bottom:-1.5px; cursor:pointer; transition:color .15s; }
.fr-tab--active[b-52bl82hqmo] { color:var(--b9-primary-text); border-bottom-color:var(--b9-primary); font-weight:700; }
.fr-count[b-52bl82hqmo]  { background:var(--b9-surface-muted); color:var(--b9-text-muted); border-radius:999px; padding:0 8px;
             font-size:var(--font-size-chip); font-weight:700; }
.fr-count--alert[b-52bl82hqmo] { background:var(--b9-primary); color:var(--player-text-inverse); }

.fr-status[b-52bl82hqmo] { background:var(--b9-primary-soft); color:var(--b9-primary-text); border:1px solid var(--b9-border);
             border-radius:10px; padding:10px 14px; font-size:var(--font-size-sm); font-weight:600; margin:0 0 12px; }
.fr-status--in-card[b-52bl82hqmo] { margin:12px 0 0; }

/* ── Person cards ─────────────────────────────────────────────────── */
.fr-list[b-52bl82hqmo]   { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:8px; }
.fr-card[b-52bl82hqmo]   { display:flex; align-items:center; gap:14px; flex-wrap:wrap; background:var(--b9-surface-alt);
             border:1.5px solid var(--b9-border); border-radius:12px; padding:14px 16px; }
.fr-avatar[b-52bl82hqmo] { flex-shrink:0; width:44px; height:44px; border-radius:50%; background:var(--b9-primary-soft);
             color:var(--b9-primary-text); display:flex; align-items:center; justify-content:center;
             font-size:1.125rem; font-weight:700; }
.fr-avatar--muted[b-52bl82hqmo] { background:var(--b9-surface-muted); color:var(--b9-text-muted); }
.fr-card-body[b-52bl82hqmo] { flex:1 1 160px; min-width:0; }
.fr-name[b-52bl82hqmo]   { font-size:var(--font-size-base); font-weight:700; color:var(--b9-text); margin:0; overflow-wrap:anywhere; }
.fr-sub[b-52bl82hqmo]    { font-size:var(--font-size-sm); color:var(--b9-text-muted); margin:2px 0 0; overflow-wrap:anywhere; }
/* F4 head-to-head: one celebratory line, never a table. */
.fr-h2h[b-52bl82hqmo]    { font-size:var(--font-size-sm); font-weight:600; color:var(--b9-primary-text); margin:4px 0 0; overflow-wrap:anywhere; }
.fr-offer[b-52bl82hqmo]  { font-size:var(--font-size-sm); color:var(--b9-text-muted); margin:0 0 12px; }
.fr-offer a[b-52bl82hqmo] { color:var(--b9-link); font-weight:700; display:inline-flex; align-items:center;
              min-height:var(--touch-target-min); padding:0 4px; }
.fr-sent[b-52bl82hqmo]   { font-size:var(--font-size-sm); font-weight:600; color:var(--b9-success-text); }

.fr-actions[b-52bl82hqmo] { display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.fr-actions--row[b-52bl82hqmo] { flex-basis:100%; }
@media (min-width: 560px) { .fr-actions--row[b-52bl82hqmo] { flex-basis:auto; } }

/* ── Buttons ──────────────────────────────────────────────────────── */
.fr-btn[b-52bl82hqmo]    { display:inline-flex; align-items:center; justify-content:center; min-height:var(--touch-target-min);
             min-width:var(--touch-target-min); padding:6px 16px; border-radius:10px; border:1.5px solid var(--b9-border);
             background:var(--b9-surface); color:var(--b9-text); font-size:var(--font-size-sm); font-weight:700;
             cursor:pointer; transition:background .15s, border-color .15s; }
.fr-btn:hover[b-52bl82hqmo] { background:var(--b9-surface-muted); border-color:var(--b9-border-strong); }
.fr-btn--primary[b-52bl82hqmo] { background:var(--b9-primary); border-color:var(--b9-primary); color:var(--player-text-inverse); }
.fr-btn--primary:hover[b-52bl82hqmo] { background:var(--b9-primary-hover); border-color:var(--b9-primary-hover); }
.fr-btn--danger[b-52bl82hqmo] { background:var(--b9-danger); border-color:var(--b9-danger); color:var(--player-text-inverse); }
.fr-btn--quiet[b-52bl82hqmo]  { background:none; border-color:transparent; color:var(--b9-text-muted); }

/* ── Link + sharing panels ───────────────────────────────────────── */
.fr-panel[b-52bl82hqmo]  { margin-top:28px; background:var(--b9-surface-alt); border:1.5px solid var(--b9-border);
             border-radius:14px; padding:4px 18px 18px; }
.fr-panel-sub[b-52bl82hqmo] { font-size:var(--font-size-sm); color:var(--b9-text-muted); margin:0 0 12px; }
.fr-link[b-52bl82hqmo]   { font-family:var(--font-mono, ui-monospace, monospace); font-size:var(--font-size-sm); color:var(--b9-text);
             background:var(--b9-surface); border:1px dashed var(--b9-border-strong); border-radius:8px;
             padding:10px 12px; margin:0 0 12px; overflow-wrap:anywhere; }
.fr-hint[b-52bl82hqmo]   { font-size:var(--font-size-sm); color:var(--b9-text-soft); margin:8px 0 0; }

.fr-choices[b-52bl82hqmo] { border:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.fr-choice[b-52bl82hqmo]  { display:flex; align-items:center; gap:12px; min-height:var(--touch-target-min); padding:6px 12px;
              border:1.5px solid var(--b9-border); border-radius:10px; background:var(--b9-surface);
              font-size:var(--font-size-base); color:var(--b9-text); cursor:pointer; }
.fr-choice:has(input:checked)[b-52bl82hqmo] { border-color:var(--b9-primary); background:var(--b9-primary-soft); }
.fr-choice input[b-52bl82hqmo] { width:22px; height:22px; flex-shrink:0; accent-color:var(--b9-primary); }

/* ── Empty states ────────────────────────────────────────────────── */
.fr-empty[b-52bl82hqmo]       { text-align:center; padding:40px 0; color:var(--b9-text-soft); }
.fr-empty-icon[b-52bl82hqmo]  { font-size:2.5rem; margin-bottom:12px; }
.fr-empty-title[b-52bl82hqmo] { font-size:1rem; font-weight:700; color:var(--b9-text); margin:0 0 6px; }
.fr-empty-sub[b-52bl82hqmo]   { font-size:var(--font-size-sm); margin:0; color:var(--b9-text-muted); }

.fr-pref-link[b-52bl82hqmo]   { font-size:var(--font-size-sm); color:var(--b9-text-muted); text-align:center; margin-top:20px; }
.fr-pref-link a[b-52bl82hqmo] { color:var(--b9-link); display:inline-flex; align-items:center; min-height:var(--touch-target-min); padding:0 4px; }

.fr-tab:focus-visible[b-52bl82hqmo],
.fr-btn:focus-visible[b-52bl82hqmo],
.fr-choice:focus-within[b-52bl82hqmo] { outline:2px solid var(--b9-primary); outline-offset:2px; }
/* /Components/Pages/MyInbox.razor.rz.scp.css */
/* Moved from a page-embedded <style> block (audit Batch D): scoped to this component,
   font sizes converted px→rem, and hardcoded colors replaced with brand tokens so both
   themes render correctly (the status-icon colors now flip with [data-theme]). */

/* ── Inbox layout ────────────────────────────────────────────────── */
.inbox-page[b-x1d3shtd0m]      { max-width:720px; margin:0 auto; padding:24px 16px 48px; }
.inbox-header[b-x1d3shtd0m]    { display:flex; align-items:center; justify-content:space-between; margin-bottom:20px; gap:12px; flex-wrap:wrap; }
.inbox-title[b-x1d3shtd0m]     { font-size:1.375rem; font-weight:700; color:var(--b9-text); margin:0; }
.inbox-badge[b-x1d3shtd0m]     { background:var(--b9-primary-soft); color:var(--b9-primary-text); border:1px solid var(--b9-border); border-radius:999px; padding:2px 10px; font-size:var(--font-size-chip); font-weight:700; }
.inbox-actions[b-x1d3shtd0m]   { display:flex; gap:8px; }
.inbox-btn[b-x1d3shtd0m]       { background:var(--b9-surface-alt); border:1.5px solid var(--b9-border); border-radius:8px; padding:6px 14px; min-height:var(--touch-target-min); font-size:var(--font-size-sm); font-weight:600; color:var(--b9-text-muted); cursor:pointer; transition:background .15s, border-color .15s, color .15s; }
.inbox-btn:hover[b-x1d3shtd0m] { background:var(--b9-surface-muted); border-color:var(--b9-border-strong); color:var(--b9-text); }
.inbox-btn-primary[b-x1d3shtd0m]       { background:var(--b9-primary); border-color:var(--b9-primary); color:var(--player-text-inverse); }
.inbox-btn-primary:hover[b-x1d3shtd0m] { background:var(--b9-primary-hover); }

/* ── Filter tabs ─────────────────────────────────────────────────── */
/* flex-wrap: on a 320px phone the fourth tab wraps to a second row
   instead of widening the page. */
.inbox-tabs[b-x1d3shtd0m]   { display:flex; flex-wrap:wrap; gap:0; margin-bottom:16px; border-bottom:1.5px solid var(--b9-border); }
.inbox-tab[b-x1d3shtd0m]    { padding:8px 16px; min-height:var(--touch-target-min); font-size:var(--font-size-sm); font-weight:600; color:var(--b9-text-muted); background:none; border:none; border-bottom:2.5px solid transparent; cursor:pointer; margin-bottom:-1.5px; transition:color .15s; }
.inbox-tab--active[b-x1d3shtd0m] { color:var(--b9-primary-text); border-bottom-color:var(--b9-primary); font-weight:700; }

/* ── Notification card ───────────────────────────────────────────── */
.inbox-list[b-x1d3shtd0m]       { display:flex; flex-direction:column; gap:8px; }
.inbox-card[b-x1d3shtd0m]       { background:var(--b9-surface-alt); border:1.5px solid var(--b9-border); border-radius:12px; padding:16px 18px; display:flex; gap:14px; cursor:pointer; transition:border-color .15s, background .15s; position:relative; }
.inbox-card:hover[b-x1d3shtd0m] { border-color:var(--b9-border-strong); background:var(--b9-surface-muted); }
.inbox-card--unread[b-x1d3shtd0m] { border-left:3.5px solid var(--b9-primary); background:var(--b9-primary-soft); }
.inbox-card--read[b-x1d3shtd0m]   { opacity:.8; }

.inbox-icon[b-x1d3shtd0m]     { flex-shrink:0; width:36px; height:36px; border-radius:50%; background:var(--b9-primary-soft); color:var(--b9-primary-text); display:flex; align-items:center; justify-content:center; font-size:1rem; }
.inbox-icon--event[b-x1d3shtd0m]  { background:var(--b9-success-soft); color:var(--b9-success-text); }
.inbox-icon--league[b-x1d3shtd0m] { background:var(--b9-warning-soft); color:var(--b9-warning-text); }
.inbox-icon--admin[b-x1d3shtd0m]  { background:var(--b9-info-soft); color:var(--b9-info-text); }
.inbox-icon--system[b-x1d3shtd0m] { background:var(--b9-badge-neutral-bg); color:var(--b9-text-muted); }

.inbox-body[b-x1d3shtd0m]     { flex:1; min-width:0; }
.inbox-subject[b-x1d3shtd0m]  { font-size:var(--font-size-base); font-weight:600; color:var(--b9-text); margin:0 0 4px;
                  /* Was nowrap+ellipsis. At 16px beside a 116px action gutter that cut every
                     subject mid-word — "Pairings posted f…" names no event a golfer can act on.
                     Two lines, then clamp: the type floor is worth nothing if it buys bigger
                     letters and fewer words. (X02/X03, seen in a screenshot, not a test.) */
                  overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.inbox-subject--unread[b-x1d3shtd0m] { font-weight:700; }
.inbox-preview[b-x1d3shtd0m]  { font-size:var(--font-size-sm); color:var(--b9-text-muted); margin:0 0 6px; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.inbox-meta[b-x1d3shtd0m]     { display:flex; align-items:center; gap:8px; }
.inbox-category[b-x1d3shtd0m] { font-size:var(--font-size-chip); font-weight:700; color:var(--b9-text-soft); text-transform:uppercase; letter-spacing:.04em; }
.inbox-time[b-x1d3shtd0m]     { font-size:var(--font-size-sm); color:var(--b9-text-soft); margin-left:auto; }
.inbox-unread-dot[b-x1d3shtd0m] { width:8px; height:8px; border-radius:50%; background:var(--b9-primary); flex-shrink:0; margin-top:4px; }

/* Hidden via opacity (not display:none) so the buttons stay in the keyboard
   tab order — tabbing onto one triggers :focus-within and reveals them. */
.inbox-card-actions[b-x1d3shtd0m] { position:absolute; right:14px; top:14px; display:flex; gap:4px; opacity:0; pointer-events:none; }
.inbox-card:hover .inbox-card-actions[b-x1d3shtd0m],
.inbox-card:focus-within .inbox-card-actions[b-x1d3shtd0m] { opacity:1; pointer-events:auto; }

/* Touch devices have no hover — keep the actions visible, and reserve room
   on the card so the buttons never sit on top of the title text. */
@media (hover: none) {
    .inbox-card-actions[b-x1d3shtd0m] { opacity:1; pointer-events:auto; }
    .inbox-card[b-x1d3shtd0m] { padding-right:116px; }   /* two 48px actions + 4px gap + 14px offset */
}
.inbox-act-btn[b-x1d3shtd0m]  { background:none; border:none; width:var(--touch-target-min); height:var(--touch-target-min); border-radius:6px; display:flex; align-items:center; justify-content:center; font-size:1rem; color:var(--b9-text-muted); cursor:pointer; }
.inbox-act-btn:hover[b-x1d3shtd0m] { background:var(--b9-surface-muted); color:var(--b9-text); }

.inbox-action-btn[b-x1d3shtd0m] { margin-top:8px; display:inline-flex; align-items:center; justify-content:center; background:var(--b9-primary); color:var(--player-text-inverse); border-radius:8px; padding:7px 16px; min-height:var(--touch-target-min); font-size:var(--font-size-sm); font-weight:700; text-decoration:none; }
.inbox-action-btn:hover[b-x1d3shtd0m] { background:var(--b9-primary-hover); color:var(--player-text-inverse); }

/* ── "You in?" (F3) — two plain answers; the lit one is the saved one ── */
.inbox-rsvp[b-x1d3shtd0m]      { margin-top:10px; }
.inbox-rsvp-row[b-x1d3shtd0m]  { display:flex; gap:8px; flex-wrap:wrap; }
.inbox-rsvp-btn[b-x1d3shtd0m]  { flex:1 1 140px; min-height:var(--touch-target-min); border-radius:10px; border:1px solid var(--b9-border-strong); background:var(--b9-surface); color:var(--b9-text); font-size:var(--font-size-base); font-weight:700; cursor:pointer; padding:0 16px; }
.inbox-rsvp-btn:hover[b-x1d3shtd0m] { background:var(--b9-surface-muted); }
.inbox-rsvp-btn--on[b-x1d3shtd0m],
.inbox-rsvp-btn--on:hover[b-x1d3shtd0m] { background:var(--b9-primary); border-color:var(--b9-primary); color:var(--player-text-inverse); }
.inbox-rsvp-btn:disabled[b-x1d3shtd0m] { opacity:0.6; cursor:default; }
.inbox-rsvp-btn:focus-visible[b-x1d3shtd0m] { outline:2px solid var(--b9-link); outline-offset:2px; }
.inbox-rsvp-note[b-x1d3shtd0m]  { margin:0; font-size:var(--font-size-sm); font-weight:700; color:var(--b9-text); }
.inbox-rsvp-error[b-x1d3shtd0m] { margin:8px 0 0; font-size:var(--font-size-sm); color:var(--b9-danger-text); }

/* ── Expanded view ───────────────────────────────────────────────── */
.inbox-expanded[b-x1d3shtd0m] { border-color:var(--b9-primary); background:var(--b9-primary-soft); }
.inbox-full-body[b-x1d3shtd0m] { font-size:var(--font-size-base); color:var(--b9-text); white-space:pre-wrap; line-height:1.7; margin:0 0 10px; }

/* ── Empty state ─────────────────────────────────────────────────── */
.inbox-empty[b-x1d3shtd0m]      { text-align:center; padding:48px 0; color:var(--b9-text-soft); }
.inbox-empty-icon[b-x1d3shtd0m] { font-size:2.5rem; margin-bottom:12px; }
.inbox-empty-title[b-x1d3shtd0m] { font-size:1rem; font-weight:700; color:var(--b9-text); margin:0 0 6px; }
.inbox-empty-sub[b-x1d3shtd0m]   { font-size:var(--font-size-sm); margin:0; color:var(--b9-text-muted); }

/* ── Preferences link ─────────────────────────────────────────────── */
.inbox-pref-link[b-x1d3shtd0m]  { font-size:var(--font-size-sm); color:var(--b9-text-soft); text-align:center; margin-top:24px; }
.inbox-pref-link a[b-x1d3shtd0m] {
    color:var(--b9-link);
    /* The link itself carried no box: it measured 209x17, a 17px-tall tap target sitting
       under every message in the inbox. Height is bought here, not from the type. (X03) */
    display:inline-flex; align-items:center; justify-content:center;
    min-height:var(--touch-target-min); padding:0 8px;
}

.inbox-btn:focus-visible[b-x1d3shtd0m],
.inbox-tab:focus-visible[b-x1d3shtd0m],
.inbox-act-btn:focus-visible[b-x1d3shtd0m],
.inbox-action-btn:focus-visible[b-x1d3shtd0m],
.inbox-pref-link a:focus-visible[b-x1d3shtd0m] {
    outline: 2px solid var(--b9-link);
    outline-offset: 2px;
}
/* /Components/Pages/MyLeaderboards.razor.rz.scp.css */
/* ================================================================
   MY LEADERBOARDS — /my/leaderboards
   A plain list: name · one-line status · chevron. Tokens only.
   ================================================================ */

.mlb-page[b-uextkxbnfp] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    max-width: 720px;
    margin: 0 auto;
    padding: 1.25rem 1rem 3rem;
}

/* Header row: title + a quiet Home link */
.mlb-header[b-uextkxbnfp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.mlb-title[b-uextkxbnfp] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.2;
    color: var(--text-primary);
}

.mlb-home-link[b-uextkxbnfp] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: var(--touch-target-min);
    padding: 0 0.5rem;
    font-size: var(--font-size-base);
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
    white-space: nowrap;
}

.mlb-home-link:hover[b-uextkxbnfp] { text-decoration: underline; }

/* Card */
.mlb-card[b-uextkxbnfp] {
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-lg);
    padding: 1rem;
}

.mlb-card-title[b-uextkxbnfp] {
    margin: 0 0 0.75rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-primary);
}

/* The list */
.mlb-list[b-uextkxbnfp] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* One row = one link. Name wraps; nothing is ever clipped. */
.mlb-row[b-uextkxbnfp] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-height: 64px;
    padding: 0.65rem 0.75rem;
    border-radius: var(--radius-md);
    border: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
    color: inherit;
    text-decoration: none;
    transition: border-color 160ms ease;
}

.mlb-row:hover[b-uextkxbnfp],
.mlb-row:focus-visible[b-uextkxbnfp] {
    border-color: var(--brand);
}

.mlb-row-body[b-uextkxbnfp] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.mlb-row-name[b-uextkxbnfp] {
    font-size: var(--font-size-base);
    font-weight: 700;
    line-height: 1.3;
    color: var(--text-primary);
    overflow-wrap: anywhere;
}

.mlb-row-status[b-uextkxbnfp] {
    font-size: 0.875rem;
    line-height: 1.4;
    color: var(--text-secondary);
    overflow-wrap: anywhere;
}

.mlb-row-chevron[b-uextkxbnfp] {
    flex-shrink: 0;
    font-size: var(--font-size-base);
    color: var(--text-muted);
}

/* Empty state */
.mlb-empty[b-uextkxbnfp] {
    text-align: center;
    padding: 1.25rem 0.5rem;
}

.mlb-empty-icon[b-uextkxbnfp] {
    display: block;
    margin-bottom: 0.5rem;
    font-size: 2rem;
    color: var(--text-muted);
}

.mlb-empty-title[b-uextkxbnfp] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-primary);
}

.mlb-empty-body[b-uextkxbnfp] {
    margin: 0.35rem 0 0;
    font-size: var(--font-size-base);
    color: var(--text-secondary);
}

.mlb-link-btn[b-uextkxbnfp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min);
    min-width: var(--touch-target-min);
    margin-top: 1rem;
    padding: 0.6rem 1rem;
    border-radius: var(--radius-md);
    border: 1px solid var(--border-default);
    background: var(--bg-elevated);
    color: var(--text-primary);
    font-size: var(--font-size-base);
    font-weight: 700;
    text-decoration: none;
}

/* ────────────────────────────────────────────────────────────────
   Narrow phones (iPhone SE, 320px). The name is the only thing on
   the row that matters, so the gutters shrink before it does: with
   the audit's padding it sat in a 148px column and "Test Monday
   Night League" needed three lines.
   ──────────────────────────────────────────────────────────────── */
@media (max-width: 360px) {
    .mlb-page[b-uextkxbnfp] { padding-left: 0.625rem; padding-right: 0.625rem; }
    .mlb-card[b-uextkxbnfp] { padding: 0.75rem; }
    .mlb-row[b-uextkxbnfp]  { padding-left: 0.5rem; padding-right: 0.5rem; gap: 0.5rem; }
}
/* /Components/Pages/MyProfile.razor.rz.scp.css */
/* ══════════════════════════════════════════════════════════════════════════════
   MY PROFILE — Self-service player page
   /my-profile
══════════════════════════════════════════════════════════════════════════════ */

/* ── Loading ── */
.mp-loading[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 40vh;
    gap: .75rem;
}

/* ── Unlinked state ── */
.mp-unlinked[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    max-width: 440px;
    margin: 5rem auto 2rem;
    padding: 0 1.5rem;
}
.mp-unlinked-icon[b-jgiabi29m8] {
    font-size: 3rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    margin-bottom: 1rem;
}
.mp-unlinked-title[b-jgiabi29m8] {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--player-text-primary, var(--b9-text));
    margin-bottom: .5rem;
}
.mp-unlinked-sub[b-jgiabi29m8] {
    font-size: .9rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    line-height: 1.6;
}
/* No roster row yet: the alert settings still apply (they belong to the account), so the
   card sits under the message instead of the page ending there. */
.mp-unlinked-prefs[b-jgiabi29m8] {
    max-width: 440px;
    margin: 0 auto 4rem;
    padding: 0 1rem;
    color: var(--player-text-primary, var(--b9-text));
}

/* ── Page wrapper ── */
.mp-page[b-jgiabi29m8] {
    max-width: 980px;
    margin: 0 auto;
    padding: 2rem 1.5rem 4rem;
    color: var(--player-text-primary, var(--b9-text));
}

/* ══════════════════════
   HEADER / IDENTITY CARD
══════════════════════ */

.mp-header[b-jgiabi29m8] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1.25rem;
    margin-bottom: 1.75rem;
}

.mp-header-left[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-width: 0; /* let the name block shrink instead of widening the page */
}

.mp-header-left > div[b-jgiabi29m8] {
    min-width: 0;
}

.mp-avatar[b-jgiabi29m8] {
    flex-shrink: 0;
    width: 3.25rem;
    height: 3.25rem;
    border-radius: 50%;
    background: linear-gradient(145deg, var(--b9-link, #2563eb) 0%, color-mix(in srgb, var(--b9-link, #2563eb) 75%, #000) 100%);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.15rem;
    font-weight: 700;
    letter-spacing: -.02em;
    text-transform: uppercase;
    user-select: none;
}

.mp-name[b-jgiabi29m8] {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--player-text-primary, var(--b9-text));
    line-height: 1.2;
    margin: 0 0 .2rem;
    overflow-wrap: anywhere; /* email-style display names break instead of overflowing */
}

.mp-org[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}

/* ── Header stat chips ── */
.mp-header-chips[b-jgiabi29m8] {
    display: grid;
    grid-template-columns: repeat(2, minmax(110px, 1fr));
    gap: .625rem;
    align-items: stretch;
    min-width: 236px;
}

.mp-stat-chip[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    justify-content: flex-start;
    min-height: 84px;
    padding: .6rem .85rem;
    border-radius: 8px;
    border: 1px solid var(--player-border, var(--b9-border));
    background: var(--player-surface-card, var(--b9-surface-alt));
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}
.mp-chip-label[b-jgiabi29m8] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--player-text-secondary, var(--b9-text-muted));
    margin-bottom: .1rem;
    width: 100%;
    text-align: left;
}
.mp-chip-value[b-jgiabi29m8] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--player-text-primary, var(--b9-text));
    line-height: 1.2;
    width: 100%;
    text-align: left;
}
.mp-chip-hcp    .mp-chip-value[b-jgiabi29m8] { color: var(--b9-primary-text); }
.mp-chip-active .mp-chip-value[b-jgiabi29m8] { color: var(--b9-success-text); }
.mp-chip-inactive .mp-chip-value[b-jgiabi29m8] { color: var(--player-text-secondary, var(--b9-text-muted)); }

.mp-chip-sub[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
    margin-top: .15rem;
    white-space: nowrap;
    width: 100%;
    text-align: left;
}
.mp-chip-sub-stale[b-jgiabi29m8] {
    /* The warning FILL as ink measured 2.15:1 on the light card; -text is the ink twin. */
    color: var(--b9-warning-text);
    font-weight: 600;
}

.mp-chip-ghin-val[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--player-text-primary, var(--b9-text));
}

.mp-chip-b9id[b-jgiabi29m8] {
    background: var(--b9-indigo-soft);
    border-color: var(--b9-indigo-border);
    min-width: 168px;
}

.mp-chip-b9id-val[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    font-family: 'Courier New', monospace;
    letter-spacing: .05em;
    color: var(--b9-indigo-text);
    user-select: all;
    white-space: nowrap;
}

/* ══════════════════════
   LEAGUE MOMENTS
══════════════════════ */

.mp-moments-grid[b-jgiabi29m8] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

.mp-moment-card[b-jgiabi29m8] {
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 12px;
    padding: 1rem;
    background: var(--player-surface-card, var(--b9-surface-alt));
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}

.mp-moment-card h3[b-jgiabi29m8] {
    margin: 0;
    font-size: 1rem;
    color: var(--player-text-primary, var(--b9-text));
}

.mp-moment-sub[b-jgiabi29m8] {
    margin: .4rem 0 1rem;
    font-size: .875rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-moment-toggle[b-jgiabi29m8] {
    margin-bottom: .5rem;
}

/* The label IS the target — `for=` forwards the tap, so a golfer aims at the whole row.
   It was 22px tall with a 16px box, so the row failed the floor whichever way you measure it.
   48px on the row, 22px on the box: a 48px checkbox beside "Score reminders" reads as broken,
   while a modest box in a full-height row is what every platform's own guidance asks for. */
.mp-moment-toggle label[b-jgiabi29m8] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    min-height: 48px;
    font-size: .9rem;
    color: var(--player-text-primary, var(--b9-text));
}

.mp-moment-toggle input[b-jgiabi29m8] {
    accent-color: var(--player-link, var(--b9-link));
    width: 1.375rem;
    height: 1.375rem;
}

.mp-moment-status[b-jgiabi29m8] {
    margin-top: .65rem;
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-moment-head[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .75rem;
}

.mp-moment-list[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}

.mp-moment-item[b-jgiabi29m8] {
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 10px;
    padding: .75rem;
    background: var(--player-surface-elev, var(--b9-surface-muted));
}

.mp-moment-item-unread[b-jgiabi29m8] {
    border-left: 3px solid var(--player-link, var(--b9-link));
    background: color-mix(in srgb, var(--player-link, var(--b9-link)) 10%, var(--player-surface-card, var(--b9-surface-alt)) 90%);
}

.mp-moment-meta[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .15rem;
}

.mp-moment-meta span[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-moment-item p[b-jgiabi29m8] {
    margin: .45rem 0;
    font-size: .9rem;
    color: var(--player-text-primary, var(--b9-text));
}

.mp-moment-actions[b-jgiabi29m8] {
    display: flex;
    gap: .45rem;
}

.mp-empty-tight[b-jgiabi29m8] {
    padding: 1rem .5rem;
}

/* ══════════════
   TAB BAR
══════════════ */

.mp-tabs[b-jgiabi29m8] {
    display: flex;
    gap: .25rem;
    border-bottom: 2px solid var(--player-border, var(--b9-border));
    margin-bottom: 1.5rem;
    /* Wrap instead of scroll so every tab stays visible on narrow phones —
       a horizontally-scrolled tab strip hid "League Moments" off-screen. */
    flex-wrap: wrap;
}

.mp-tab[b-jgiabi29m8] {
    background: none;
    border: none;
    padding: .55rem .9rem;
    font-size: .875rem;
    font-weight: 500;
    color: var(--player-text-secondary, var(--b9-text-muted));
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    border-radius: 6px 6px 0 0;
    transition: color .15s, border-color .15s;
    display: flex;
    align-items: center;
    gap: .3rem;
    white-space: nowrap;
}
.mp-tab:hover[b-jgiabi29m8] { color: var(--player-text-primary, var(--b9-text)); }
.mp-tab.active[b-jgiabi29m8] {
    color: var(--player-link, var(--b9-link));
    border-bottom-color: var(--player-link, var(--b9-link));
    font-weight: 600;
}
.mp-tab-badge[b-jgiabi29m8] {
    background: var(--player-link, var(--b9-link));
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 700;
    line-height: 1;
    padding: .2em .45em;
    border-radius: 999px;
}
.mp-tab:not(.active) .mp-tab-badge[b-jgiabi29m8] {
    background: var(--player-surface-elev, var(--b9-surface-muted));
    color: var(--player-text-secondary, var(--b9-text-muted));
}

/* ══════════════════════
   EMPTY STATE
══════════════════════ */

.mp-empty[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 3.5rem 1rem;
}
.mp-empty-icon[b-jgiabi29m8] {
    font-size: 2.5rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    margin-bottom: 1rem;
    display: block;
}
.mp-empty-title[b-jgiabi29m8] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--player-text-primary, var(--b9-text));
    margin: 0 0 .35rem;
}
.mp-empty-sub[b-jgiabi29m8] {
    font-size: .875rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    max-width: 340px;
    line-height: 1.55;
    margin: 0;
}

.mp-empty-cta[b-jgiabi29m8] {
    margin-top: .9rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: .65rem 1.05rem;
    border-radius: 10px;
    border: 1px solid color-mix(in srgb, var(--b9-primary, #16a34a) 72%, #000 28%);
    background: var(--b9-primary, #16a34a);
    color: #f8fafc;
    text-decoration: none;
    font-size: var(--font-size-base, 1rem);
    font-weight: 700;
    line-height: 1.25;
}

.mp-empty-cta:hover[b-jgiabi29m8] {
    background: color-mix(in srgb, var(--b9-primary, #16a34a) 82%, #000 18%);
    color: #ffffff;
}

.mp-empty-cta:focus-visible[b-jgiabi29m8] {
    outline: 2px solid color-mix(in srgb, var(--b9-primary, #16a34a) 60%, #ffffff 40%);
    outline-offset: 2px;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--b9-primary, #16a34a) 28%, transparent 72%);
}

.mp-loading-inline[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    padding: 2rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
    font-size: .875rem;
}

.mp-empty-compact[b-jgiabi29m8] {
    padding: 1.5rem 1rem;
}

.mp-upcoming-stack[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.mp-subsection[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.mp-subsection-head[b-jgiabi29m8] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.mp-subsection-title[b-jgiabi29m8] {
    margin: 0;
    font-size: 1rem;
    font-weight: 700;
    color: var(--player-text-primary, var(--b9-text));
}

.mp-subsection-sub[b-jgiabi29m8] {
    margin: .2rem 0 0;
    font-size: .875rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-subsection-count[b-jgiabi29m8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    height: 2rem;
    border-radius: 999px;
    background: var(--player-surface-elev, var(--b9-surface-muted));
    color: var(--player-text-primary, var(--b9-text));
    border: 1px solid var(--player-border, var(--b9-border));
    font-size: var(--font-size-chip);
    font-weight: 700;
}

.mp-week-list[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.mp-week-card[b-jgiabi29m8] {
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,.08);
}

.mp-week-top[b-jgiabi29m8] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.1rem .8rem;
}

.mp-week-left[b-jgiabi29m8] {
    flex: 1;
    min-width: 0;
}

/* ══════════════════════
   UPCOMING EVENT CARDS
══════════════════════ */

.mp-event-list[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.mp-event-card[b-jgiabi29m8] {
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 3px rgba(0,0,0,.08);
    transition: box-shadow .15s;
}
.mp-event-card:hover[b-jgiabi29m8] { box-shadow: 0 3px 10px rgba(0,0,0,.09); }

.mp-ec-top[b-jgiabi29m8] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.1rem .8rem;
}

.mp-ec-left[b-jgiabi29m8] { flex: 1; min-width: 0; }

.mp-ec-countdown[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .08em;
    margin-bottom: .3rem;
}
.cd-today[b-jgiabi29m8]  { color: var(--b9-primary-text); }
.cd-soon[b-jgiabi29m8]   { color: #d97706; }
.cd-far[b-jgiabi29m8]    { color: var(--player-text-secondary, var(--b9-text-muted)); }
.cd-past[b-jgiabi29m8]   { color: var(--player-text-secondary, var(--b9-text-muted)); opacity: .7; }

.mp-ec-name[b-jgiabi29m8] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--player-text-primary, var(--b9-text));
    text-decoration: none;
    line-height: 1.3;
    display: block;
    margin-bottom: .4rem;
}
.mp-ec-name:hover[b-jgiabi29m8] { color: var(--player-link, var(--b9-link)); text-decoration: underline; }

.mp-ec-meta[b-jgiabi29m8] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem .9rem;
    font-size: .875rem;
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-ec-right[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .4rem;
    flex-shrink: 0;
}

/* Status badges */
.mp-ec-status-badge[b-jgiabi29m8] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: .2em .65em;
    border-radius: 6px;
    text-transform: uppercase;
    letter-spacing: .05em;
    white-space: nowrap;
}
.mp-status-open[b-jgiabi29m8]      { background: var(--success-soft); color: var(--success-text); }
.mp-status-active[b-jgiabi29m8]    { background: var(--brand-soft); color: var(--brand-text); }
.mp-status-closed[b-jgiabi29m8]    { background: color-mix(in srgb, var(--player-surface-elev, var(--b9-surface-muted)) 85%, #000 15%); color: var(--player-text-secondary, var(--b9-text-muted)); }
.mp-status-cancelled[b-jgiabi29m8] { background: var(--danger-soft); color: var(--danger-text); }
.mp-status-draft[b-jgiabi29m8]     { background: var(--warning-soft); color: var(--warning-text); }

.mp-ec-hcp-snap[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-ec-footer[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
    padding: .6rem 1.1rem;
    border-top: 1px solid var(--player-border, var(--b9-border));
    background: var(--player-surface-elev, var(--b9-surface-muted));
}

.mp-ec-link[b-jgiabi29m8] {
    font-size: var(--font-size-base, 1rem);
    font-weight: 600;
    color: var(--player-text-secondary, var(--b9-text-muted));
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    min-width: 48px;
    padding: .55rem .9rem;
    line-height: 1.25;
    border-radius: 8px;
    border: 1px solid var(--player-border, var(--b9-border));
    background: var(--player-surface-card, var(--b9-surface-alt));
    transition: color .12s;
}
.mp-ec-link:hover[b-jgiabi29m8] { color: var(--player-link, var(--b9-link)); }
.mp-ec-link-primary[b-jgiabi29m8] { color: var(--player-link, var(--b9-link)); }

.mp-withdraw-btn[b-jgiabi29m8] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    background: transparent;
    border: 1.5px solid rgba(252, 165, 165, .55);
    color: #fca5a5;
    border-radius: 6px;
    padding: .3rem .8rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    cursor: pointer;
    transition: background .12s, color .12s;
    line-height: 1.4;
}
.mp-withdraw-btn:hover:not(:disabled)[b-jgiabi29m8] {
    background: rgba(239, 68, 68, .12);
}
.mp-withdraw-btn:disabled[b-jgiabi29m8] { opacity: .55; cursor: not-allowed; }

/* ══════════════════════
   HISTORY TAB
══════════════════════ */

.mp-history-summary[b-jgiabi29m8] {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: 1.25rem;
}
.mp-hs-chip[b-jgiabi29m8] {
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 6px;
    padding: .3rem .75rem;
    font-size: var(--font-size-chip);
    color: var(--player-text-secondary, var(--b9-text-muted));
}
.mp-hs-chip strong[b-jgiabi29m8] { color: var(--player-text-primary, var(--b9-text)); }

.mp-history-list[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .625rem;
}

.mp-hc[b-jgiabi29m8] {
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 10px;
    overflow: hidden;
    box-shadow: 0 1px 2px rgba(0,0,0,.04);
}
.mp-hc-top[b-jgiabi29m8] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: .75rem;
    padding: .875rem 1rem .6rem;
}
.mp-hc-left[b-jgiabi29m8] { flex: 1; min-width: 0; }
.mp-hc-name[b-jgiabi29m8] {
    font-size: .9375rem;
    font-weight: 600;
    color: var(--player-text-primary, var(--b9-text));
    margin-bottom: .25rem;
    line-height: 1.3;
}
.mp-hc-meta[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}
.mp-hc-badges[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .3rem;
    flex-shrink: 0;
}
.mp-badge[b-jgiabi29m8] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .05em;
    padding: .15em .55em;
    border-radius: 4px;
    white-space: nowrap;
}
.mp-badge-fmt[b-jgiabi29m8]      { background: var(--brand-soft); color: var(--brand-text); }
.mp-badge-active[b-jgiabi29m8]   { background: var(--brand-soft); color: var(--brand-text); }
.mp-badge-closed[b-jgiabi29m8]   { background: color-mix(in srgb, var(--player-surface-elev, var(--b9-surface-muted)) 85%, #000 15%); color: var(--player-text-secondary, var(--b9-text-muted)); }
.mp-badge-cancelled[b-jgiabi29m8]{ background: var(--danger-soft); color: var(--danger-text); }
.mp-badge-open[b-jgiabi29m8]     { background: var(--success-soft); color: var(--success-text); }
.mp-badge-draft[b-jgiabi29m8]    { background: var(--warning-soft); color: var(--warning-text); }

.mp-hc-bottom[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .5rem;
    padding: .5rem 1rem .75rem;
    border-top: 1px solid var(--player-border, var(--b9-border));
    background: var(--player-surface-elev, var(--b9-surface-muted));
}
.mp-hc-scores[b-jgiabi29m8] {
    display: flex;
    flex-wrap: wrap;
    gap: .3rem;
}
.mp-score-pill[b-jgiabi29m8] {
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 4px;
    padding: .1rem .5rem;
    font-size: var(--font-size-sm);
    color: var(--player-text-primary, var(--b9-text));
}
.mp-score-total[b-jgiabi29m8] {
    background: var(--b9-primary, #0d6efd);
    border-color: var(--b9-primary, #0d6efd);
    color: #fff;
    font-weight: 700;
}
.mp-hc-no-scores[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}
.mp-hc-link[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--player-link, var(--b9-link));
    text-decoration: none;
    margin-left: auto;
    white-space: nowrap;
}
.mp-hc-link:hover[b-jgiabi29m8] { text-decoration: underline; }

/* ══════════════════════
   EDIT PROFILE TAB
══════════════════════ */

/* ── Profile photo upload section ──────────────────────────────────────── */
.mp-photo-section[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border-radius: 10px;
    border: 1px solid var(--player-border, var(--b9-border));
    flex-wrap: wrap;
}

.mp-photo-preview[b-jgiabi29m8] {
    flex-shrink: 0;
    width: 4rem;
    height: 4rem;
    border-radius: 50%;
    background: linear-gradient(145deg, var(--b9-link, #2563eb) 0%, color-mix(in srgb, var(--b9-link, #2563eb) 75%, #000) 100%);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    font-weight: 700;
    text-transform: uppercase;
    user-select: none;
    overflow: hidden;
}

.mp-photo-actions[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .5rem;
}

.mp-photo-upload-btn[b-jgiabi29m8] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .375rem .75rem;
    font-size: .875rem;
    font-weight: 500;
    cursor: pointer;
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 6px;
    background: var(--player-surface-card, var(--b9-surface-alt));
    color: var(--player-text-primary, var(--b9-text));
    transition: background .15s, border-color .15s;
}

.mp-photo-upload-btn:hover[b-jgiabi29m8] {
    background: var(--b9-card-bg-hover, rgba(255,255,255,.08));
    border-color: var(--b9-brand, #22c55e);
}

.mp-photo-remove-btn[b-jgiabi29m8] {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .3rem .65rem;
    font-size: var(--font-size-sm);
    font-weight: 500;
    cursor: pointer;
    border: 1px solid var(--b9-danger, #ef4444);
    border-radius: 6px;
    background: transparent;
    /* The border keeps the bright fill; the label needs the ink twin (#EF4444 measures
       3.76:1 on the light card). */
    color: var(--b9-danger-text);
    transition: background .15s;
}

.mp-photo-remove-btn:hover[b-jgiabi29m8] {
    background: var(--b9-danger-soft, rgba(239,68,68,.1));
}

.mp-edit-card[b-jgiabi29m8] {
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 12px;
    overflow: hidden;
    box-shadow: 0 1px 4px rgba(0,0,0,.06);
    margin-bottom: 1rem;
}
.mp-edit-card-header[b-jgiabi29m8] {
    padding: .875rem 1.25rem;
    font-size: .875rem;
    font-weight: 700;
    color: var(--player-text-primary, var(--b9-text));
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border-bottom: 1px solid var(--player-border, var(--b9-border));
}
.mp-edit-card-body[b-jgiabi29m8] { padding: 1.5rem 1.25rem; }

.mp-field-row[b-jgiabi29m8] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-bottom: 1rem;
}
.mp-field-row-narrow[b-jgiabi29m8] { grid-template-columns: 180px 1fr; }

.mp-field[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .3rem;
}

.mp-label[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--player-text-primary, var(--b9-text));
}

/* 🔴 The `::deep` half of every selector below is LOAD-BEARING, not tidiness.
   Nine of the ten boxes on this form are <InputText class="mp-input" /> — a Blazor CHILD
   component — so the <input> it renders never receives this page's b-* scope attribute, and a
   plain `.mp-input { }` compiles to `.mp-input[b-jgiabi29m8]`, which matches NOTHING. Every rule
   here was dead on those nine: measured on the phone they came back with `min-height: auto`,
   `padding: 1px 2px` and `font-size: 16px` — the browser's own defaults, no border, no radius,
   no token colour, on the form where a golfer types their name, handicap and Venmo handle.

   The tenth box is a plain <input> in this page's own markup and it measured 38px against the
   others' 30px. That gap IS the child boundary, and it is what made the bug visible.

   `.mp-field ::deep .mp-input` compiles to `.mp-field[b-jgiabi29m8] .mp-input`, which matches,
   because the wrapper is ours even when the input is not. All nine sit inside `.mp-field`.
   Note the form is exercised at PHONE width by "my profile · edit" in player-floors.spec.ts;
   before that row existed nothing opened this tab at all.

   min-height is new: even styled, these were 30px tall against a 48px floor. */
.mp-input[b-jgiabi29m8],
.mp-field[b-jgiabi29m8]  .mp-input {
    display: block;
    width: 100%;
    min-height: 48px;
    padding: .45rem .75rem;
    font-size: .875rem;
    border: 1.5px solid var(--player-border, var(--b9-border));
    border-radius: 7px;
    background: var(--player-surface-elev, var(--b9-surface-muted));
    color: var(--player-text-primary, var(--b9-text));
    transition: border-color .15s, box-shadow .15s;
    line-height: 1.5;
}
.mp-input:focus[b-jgiabi29m8],
.mp-field[b-jgiabi29m8]  .mp-input:focus {
    outline: none;
    border-color: var(--player-link, var(--b9-link));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--player-link, var(--b9-link)) 22%, transparent);
}
.mp-input:disabled[b-jgiabi29m8],
.mp-field[b-jgiabi29m8]  .mp-input:disabled {
    background: color-mix(in srgb, var(--player-surface-elev, var(--b9-surface-muted)) 88%, #000 12%);
    color: var(--player-text-secondary, var(--b9-text-muted));
    cursor: not-allowed;
}
.mp-input-mono[b-jgiabi29m8],
.mp-field[b-jgiabi29m8]  .mp-input-mono { font-family: ui-monospace, "Cascadia Code", monospace; letter-spacing: .04em; }

.mp-hint[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
    line-height: 1.4;
}
.mp-validation[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: #dc3545;
}

/* Canonical (cross-org) display name block */
.mp-canonical-block[b-jgiabi29m8] {
    background: rgba(99, 102, 241, 0.05);
    border: 1px solid rgba(99, 102, 241, 0.18);
    border-radius: 8px;
    padding: .875rem 1rem 1rem;
    margin-bottom: 1.25rem;
}

.mp-canonical-title[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-indigo-text);
    margin-bottom: .25rem;
    text-transform: uppercase;
    letter-spacing: .05em;
}

.mp-canonical-hint[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
    margin-bottom: .75rem;
    line-height: 1.5;
}

/* Read-only block (email / org) */
.mp-edit-readonly-block[b-jgiabi29m8] {
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 8px;
    padding: .75rem 1rem;
    margin-bottom: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: .45rem;
}
.mp-ro-item[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: var(--font-size-sm);
}
.mp-ro-label[b-jgiabi29m8] { color: var(--player-text-secondary, var(--b9-text-muted)); min-width: 100px; }
.mp-ro-value[b-jgiabi29m8] { color: var(--player-text-primary, var(--b9-text)); font-weight: 500; }

/* "Copy your Back9Ops number" — a single clipboard glyph, and it measured 16px WIDE by 48 tall.
   A width floor is not implied by a height floor; this is the third time that half-fix has shown
   up in this codebase (the rename glyph on the team page, the landing page's "Sign in"). */
.mp-ro-value .btn[b-jgiabi29m8] {
    min-width: 48px;
    min-height: 48px;
}

.mp-error-msg[b-jgiabi29m8] {
    background: rgba(239, 68, 68, .12);
    color: #fca5a5;
    border: 1px solid rgba(252, 165, 165, .45);
    border-radius: 7px;
    padding: .6rem .9rem;
    font-size: var(--font-size-sm);
    margin-bottom: 1rem;
}

.mp-edit-actions[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    gap: 1rem;
}
.mp-save-btn[b-jgiabi29m8] {
    display: inline-flex;
    align-items: center;
    padding: .5rem 1.3rem;
    background: var(--player-link, var(--b9-link));
    color: #fff;
    border: none;
    border-radius: 7px;
    font-size: .875rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 1px 3px color-mix(in srgb, var(--player-link, var(--b9-link)) 35%, transparent);
    transition: background .15s, box-shadow .15s;
    line-height: 1.4;
}
.mp-save-btn:hover:not(:disabled)[b-jgiabi29m8] {
    background: color-mix(in srgb, var(--player-link, var(--b9-link)) 85%, #000);
    box-shadow: 0 2px 6px color-mix(in srgb, var(--player-link, var(--b9-link)) 45%, transparent);
}
.mp-save-btn:disabled[b-jgiabi29m8] { opacity: .6; cursor: not-allowed; }

.mp-saved-confirm[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-success-text);
    display: flex;
    align-items: center;
}

/* Account link card */
.mp-account-link-card[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    gap: .875rem;
    background: var(--player-surface-card, var(--b9-surface-alt));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 10px;
    padding: .9rem 1.1rem;
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}

.mp-account-link-card-advanced[b-jgiabi29m8] {
    margin-top: 1rem;
}
.mp-alc-icon[b-jgiabi29m8] {
    flex-shrink: 0;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 8px;
    background: color-mix(in srgb, var(--player-link, var(--b9-link)) 14%, transparent);
    color: var(--player-link, var(--b9-link));
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.1rem;
}
.mp-alc-text[b-jgiabi29m8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: .15rem;
}
.mp-alc-text strong[b-jgiabi29m8] {
    font-size: .875rem;
    font-weight: 600;
    color: var(--player-text-primary, var(--b9-text));
}
.mp-alc-text span[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}
.mp-alc-link[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--player-link, var(--b9-link));
    text-decoration: none;
    white-space: nowrap;
    display: flex;
    align-items: center;
    /* 306x21 before: full width, but a thumb aims at a 21px band. */
    min-height: 48px;
}
.mp-alc-link:hover[b-jgiabi29m8] { text-decoration: underline; }

/* ══════════════════════
   RESPONSIVE
══════════════════════ */

@media (max-width: 640px) {
    .mp-page[b-jgiabi29m8] { padding: 1.25rem 1rem 3rem; }

    .mp-header[b-jgiabi29m8] { flex-direction: column; gap: .875rem; }

    .mp-header-chips[b-jgiabi29m8] {
        width: 100%;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        min-width: 0;
    }

    .mp-chip-b9id[b-jgiabi29m8] { min-width: 0; }

    .mp-ec-top[b-jgiabi29m8] { flex-direction: column; gap: .5rem; }
    .mp-ec-right[b-jgiabi29m8] { align-items: flex-start; flex-direction: row; flex-wrap: wrap; }

    .mp-field-row[b-jgiabi29m8],
    .mp-field-row-narrow[b-jgiabi29m8] { grid-template-columns: 1fr; }

    .mp-account-link-card[b-jgiabi29m8] { flex-wrap: wrap; }
    .mp-alc-link[b-jgiabi29m8] { width: 100%; }
    .mp-settings-grid[b-jgiabi29m8] { grid-template-columns: 1fr; }
    .mp-week-top[b-jgiabi29m8] { flex-direction: column; gap: .5rem; }
    .mp-subsection-head[b-jgiabi29m8] { flex-direction: column; }
}

/* ── Handicap trend ── */
.mp-hcp-trend[b-jgiabi29m8] {
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 10px;
    padding: .875rem 1rem;
    margin-bottom: 1.25rem;
}
.mp-hcp-trend-label[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--player-text-secondary, var(--b9-text-muted));
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .625rem;
}
.mp-hcp-trend-row[b-jgiabi29m8] {
    display: flex;
    align-items: flex-end;
    gap: .75rem;
    flex-wrap: wrap;
}
.mp-hcp-pip[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .2rem;
    cursor: default;
}
.mp-hcp-pip-val[b-jgiabi29m8] {
    background: var(--b9-primary, #0d6efd);
    color: #fff;
    font-size: var(--font-size-sm);
    font-weight: 700;
    border-radius: 6px;
    padding: .25rem .55rem;
    min-width: 3rem;
    text-align: center;
}
.mp-hcp-pip-date[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}
.mp-hcp-delta[b-jgiabi29m8] {
    font-size: .875rem;
    font-weight: 700;
    padding: .25rem .625rem;
    border-radius: 6px;
    align-self: center;
    margin-left: auto;
}
.mp-hcp-delta-better[b-jgiabi29m8] {
    background: var(--success-soft);
    color: var(--success-text);
}
.mp-hcp-delta-higher[b-jgiabi29m8] {
    background: var(--danger-soft);
    color: var(--danger-text);
}

/* ── Email mismatch badge ── */
.mp-ro-mismatch[b-jgiabi29m8] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: #fcd34d;
    background: rgba(245, 158, 11, .14);
    border-radius: 4px;
    padding: .1rem .4rem;
    cursor: default;
}

.mp-settings-grid[b-jgiabi29m8] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    width: 100%;
}

.mp-settings-card[b-jgiabi29m8] {
    border: 1px solid var(--player-border, var(--b9-border));
    border-radius: 12px;
    padding: 1rem;
    background: var(--player-surface-card, var(--b9-surface-alt));
    box-shadow: 0 1px 2px rgba(0,0,0,.08);
}

.mp-settings-kicker[b-jgiabi29m8] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-settings-title[b-jgiabi29m8] {
    margin: .35rem 0 .25rem;
    font-size: 1rem;
    font-weight: 700;
    color: var(--player-text-primary, var(--b9-text));
}

.mp-settings-copy[b-jgiabi29m8] {
    margin: 0;
    font-size: var(--font-size-sm);
    line-height: 1.55;
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-settings-list[b-jgiabi29m8] {
    display: flex;
    flex-direction: column;
    gap: .55rem;
    margin-top: .9rem;
}

.mp-settings-row[b-jgiabi29m8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .6rem .75rem;
    border-radius: 10px;
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border: 1px solid var(--player-border, var(--b9-border));
    font-size: var(--font-size-sm);
    color: var(--player-text-secondary, var(--b9-text-muted));
}

.mp-settings-row strong[b-jgiabi29m8] {
    color: var(--player-text-primary, var(--b9-text));
    font-size: var(--font-size-sm);
}

.mp-settings-row-theme[b-jgiabi29m8] {
    align-items: center;
}

.mp-settings-row-theme[b-jgiabi29m8]  .theme-toggle.mp-theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: .45rem;
    /* 40px, and this rule is page-scoped — raising it here reaches the profile's own toggle
       without touching the shared .ui-btn or the sidebar's copy of the same control. */
    min-height: 48px;
    min-width: 170px;
    padding: 0 .7rem;
    border-radius: 10px;
    border: 1px solid var(--player-border, var(--b9-border));
    background: var(--player-surface-card, var(--b9-surface-alt));
    color: var(--player-text-primary, var(--b9-text));
}

.mp-settings-row-theme[b-jgiabi29m8]  .theme-toggle.mp-theme-toggle:hover {
    border-color: var(--player-link, var(--b9-link));
    color: var(--player-link, var(--b9-link));
}

.mp-settings-row-theme[b-jgiabi29m8]  .theme-toggle.mp-theme-toggle .theme-toggle-label {
    font-size: var(--font-size-sm);
    font-weight: 600;
    white-space: nowrap;
}

.mp-settings-actions[b-jgiabi29m8] {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    margin-top: 1rem;
}

.mp-action-btn[b-jgiabi29m8],
.mp-mini-btn[b-jgiabi29m8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .35rem;
    border-radius: 10px;
    text-decoration: none;
    font-size: var(--font-size-sm);
    font-weight: 700;
    border: 1px solid transparent;
    cursor: pointer;
}

.mp-action-btn[b-jgiabi29m8] {
    /* Measured 98x38 on a 390px phone. Height is bought with the box, never by shrinking
       the label. (X03) */
    display: inline-flex; align-items: center; justify-content: center;
    min-height: var(--touch-target-min);
    padding: .48rem .8rem;
}

.mp-mini-btn[b-jgiabi29m8] {
    padding: .4rem .65rem;
    background: var(--player-surface-elev, var(--b9-surface-muted));
    color: var(--player-text-primary, var(--b9-text));
    border-color: var(--player-border, var(--b9-border));
}

.mp-mini-btn:hover:not(:disabled)[b-jgiabi29m8] {
    border-color: var(--player-link, var(--b9-link));
    color: var(--player-link, var(--b9-link));
}

.mp-action-btn-primary[b-jgiabi29m8] {
    background: var(--player-link, var(--b9-link));
    color: #fff;
}

.mp-action-btn-primary:hover[b-jgiabi29m8] {
    background: color-mix(in srgb, var(--player-link, var(--b9-link)) 85%, #000);
    color: #fff;
}

.mp-action-btn-secondary[b-jgiabi29m8] {
    background: var(--player-surface-elev, var(--b9-surface-muted));
    border-color: var(--player-border, var(--b9-border));
    color: var(--player-text-primary, var(--b9-text));
}

.mp-action-btn-secondary:hover[b-jgiabi29m8] {
    border-color: var(--player-link, var(--b9-link));
    color: var(--player-link, var(--b9-link));
}

/* My clubs — a golfer can belong to more than one (X7). */
.mp-clubs[b-jgiabi29m8] {
  display: flex;
  flex-wrap: wrap;
  gap: 0.35rem;
  margin-top: 0.3rem;
}

.mp-club-chip[b-jgiabi29m8] {
  border: 1px solid var(--border-subtle, #1E3A52);
  border-radius: 999px;
  padding: 0.1rem 0.6rem;
  font-size: var(--font-size-chip);
  color: var(--text-muted, #9FB0C4);
}
/* /Components/Pages/MySchedule.razor.rz.scp.css */
/* ================================================================
   MY SCHEDULE — /my/schedule
   One date-ordered list: when · what · where · chevron. Tokens only.
   ================================================================ */

.msc-page[b-0p871sv32d] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    width: 100%;
    max-width: 720px;
    margin: 0 auto;
    padding: 1.25rem 1rem 3rem;
}

/* Header row: title + a quiet Home link */
.msc-header[b-0p871sv32d] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.msc-title[b-0p871sv32d] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.2;
    color: var(--text-primary);
}

.msc-home-link[b-0p871sv32d] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: var(--touch-target-min);
    padding: 0 0.5rem;
    font-size: var(--font-size-base);
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
    white-space: nowrap;
}

.msc-home-link:hover[b-0p871sv32d] { text-decoration: underline; }

/* Card */
.msc-card[b-0p871sv32d] {
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-lg);
    padding: 1rem;
}

.msc-card-title[b-0p871sv32d] {
    margin: 0 0 0.75rem;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-primary);
}

/* The list */
.msc-list[b-0p871sv32d] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* One row = one link, 64px tall, nothing clipped */
.msc-row[b-0p871sv32d] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    min-height: 64px;
    padding: 0.65rem 0.75rem;
    border-radius: var(--radius-md);
    border: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
    color: inherit;
    text-decoration: none;
    transition: border-color 160ms ease;
}

.msc-row:hover[b-0p871sv32d],
.msc-row:focus-visible[b-0p871sv32d] {
    border-color: var(--brand);
}

/* Day block: "Sat / Sep 12" */
.msc-when[b-0p871sv32d] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-width: 58px;
    padding: 0.35rem 0.4rem;
    border-radius: var(--radius-md);
    background: var(--brand-soft);
    color: var(--b9-primary-text);
    flex-shrink: 0;
    line-height: 1.2;
}

.msc-when-day[b-0p871sv32d] {
    font-size: 0.875rem;
    font-weight: 600;
}

.msc-when-date[b-0p871sv32d] {
    font-size: var(--font-size-base);
    font-weight: 800;
}

/* Only printed when the day is in another year: "Jan 5" alone could read as last January */
.msc-when-year[b-0p871sv32d] {
    font-size: 0.875rem;
    font-weight: 600;
}

.msc-body[b-0p871sv32d] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
}

.msc-name[b-0p871sv32d] {
    font-size: var(--font-size-base);
    font-weight: 700;
    line-height: 1.3;
    color: var(--text-primary);
    overflow-wrap: anywhere;
}

.msc-meta[b-0p871sv32d] {
    font-size: 0.875rem;
    line-height: 1.4;
    color: var(--text-secondary);
    overflow-wrap: anywhere;
}

.msc-chevron[b-0p871sv32d] {
    flex-shrink: 0;
    font-size: var(--font-size-base);
    color: var(--text-muted);
}

/* Empty state */
.msc-empty[b-0p871sv32d] {
    text-align: center;
    padding: 1.25rem 0.5rem;
}

.msc-empty-icon[b-0p871sv32d] {
    display: block;
    margin-bottom: 0.5rem;
    font-size: 2rem;
    color: var(--text-muted);
}

.msc-empty-title[b-0p871sv32d] {
    margin: 0;
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-primary);
}

.msc-empty-body[b-0p871sv32d] {
    margin: 0.35rem 0 0;
    font-size: var(--font-size-base);
    color: var(--text-secondary);
}

.msc-empty-actions[b-0p871sv32d] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.5rem;
    margin-top: 1rem;
}

.msc-link-btn[b-0p871sv32d] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min);
    min-width: var(--touch-target-min);
    padding: 0.6rem 1rem;
    border-radius: var(--radius-md);
    border: 1px solid var(--border-default);
    background: var(--bg-elevated);
    color: var(--text-primary);
    font-size: var(--font-size-base);
    font-weight: 700;
    text-decoration: none;
}
/* /Components/Pages/Org/ClubPage.razor.rz.scp.css */
/* Club page editor — one calm card, the same tokens as every settings surface. */

.cp-container[b-2ua4yola63] {
    max-width: 860px;
}

/* 🔴 --bg-card IS NOT A TOKEN. It is declared nowhere in this codebase, so `var(--bg-card,
   #101827)` never had a fallback — #101827 was the value, in every theme, always. In dark
   that is invisible (it is roughly --bg-elevated), which is why this survived; in light the
   card stayed near-black while every token inside it flipped, and the form's own headings
   and labels went #1A1A1A on #101827 = 1.02:1. Forty of them. That was the worst single
   number in the 2026-09-06 audit, and it was one undefined name.

   The card is a FORM — "Club name", "Tagline", "Contact email" — not a preview of the club's
   public page, so it is not one of the surfaces that stay dark on purpose: it follows the
   theme like every other settings card, and --bg-surface is the token that means what the
   fallback was reaching for. #1A1A1A on #FFFFFF is 17.4:1. Dark is unchanged: --bg-surface
   resolves to #0F172A there, within a hair of the #101827 that was hardcoded.

   The same defect, same shape, lives at MyDashboard.razor.css:1018 — a player surface, so
   another package's to fix; reported, not touched. */
.cp-card[b-2ua4yola63] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: 14px;
    padding: 1.5rem 1.75rem 1.75rem;
}

.cp-heading[b-2ua4yola63] {
    font-size: 1rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    margin: 1.6rem 0 0.9rem;
    padding-bottom: 0.4rem;
    border-bottom: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
}

.cp-card .cp-heading:first-child[b-2ua4yola63] {
    margin-top: 0;
}

.cp-row[b-2ua4yola63] {
    margin-bottom: 1.1rem;
}

.cp-label[b-2ua4yola63] {
    display: block;
    font-weight: 600;
    font-size: 0.92rem;
    margin-bottom: 0.35rem;
}

.cp-input[b-2ua4yola63] {
    max-width: 560px;
}

.cp-color[b-2ua4yola63] {
    width: 64px;
    height: 48px;
    padding: 4px;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.15));
    border-radius: 8px;
    background: transparent;
    cursor: pointer;
}

.cp-hero-preview[b-2ua4yola63] {
    width: 100%;
    max-width: 560px;
    height: 150px;
    border-radius: 10px;
    background-size: cover;
    background-position: center;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.12));
}

.cp-sections[b-2ua4yola63] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    max-width: 560px;
}

.cp-section-row[b-2ua4yola63] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    background: var(--bg-elevated, rgba(255, 255, 255, 0.03));
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: 10px;
    padding: 0.55rem 0.8rem;
}

.cp-section-arrows[b-2ua4yola63] {
    display: flex;
    gap: 0.25rem;
}

.cp-section-arrows .btn[b-2ua4yola63] {
    min-width: 34px;
}

.cp-section-name[b-2ua4yola63] {
    font-weight: 600;
}

.cp-logo-preview[b-2ua4yola63] {
    width: 72px;
    height: 72px;
    object-fit: contain;
    border-radius: 10px;
    background: #fff;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.12));
}

/* Two short fields that belong on one line on a desk, and stack on a phone. */
.cp-row-split[b-2ua4yola63] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

@media (max-width: 600px) {
    .cp-row-split[b-2ua4yola63] {
        grid-template-columns: 1fr;
    }
}

/* A quiet "you are listed, but…" line under the directory switch — the town and time zone the
   finder reads. Body colour, not muted: it is advice the club should act on. */
.cp-directory-nudge[b-2ua4yola63] {
    display: flex;
    align-items: baseline;
    gap: 0.45rem;
    margin: 0.5rem 0 0;
    font-size: 0.875rem;
    color: var(--text-primary);
}
.cp-directory-nudge a[b-2ua4yola63] { text-decoration: underline; }
/* /Components/Pages/Org/OrgLanding.razor.rz.scp.css */
/* ================================================================
   ORG LANDING PAGE (/org/{id})
   Public-facing club/org page — uses PublicLayout
   ================================================================ */

/* ── Loading / Not Found ── */
.ol-loading[b-jdbembhlfs],
.ol-notfound[b-jdbembhlfs] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 5rem 1.5rem;
    text-align: center;
    color: var(--text-muted, #64748b);
}

.ol-nf-icon[b-jdbembhlfs] {
    font-size: 3.5rem;
    margin-bottom: 1rem;
}

/* ================================================================
   HERO
   ================================================================ */
.ol-hero[b-jdbembhlfs] {
    /* 🔴 This band is --bg-sidebar, which tokens.css keeps DARK in BOTH themes on purpose. Its
       lettering therefore cannot come from the theme's own text tokens: in light mode
       --text-primary flips to #1A1A1A and --text-secondary to #475569, which is how a club's own
       name ended up at 1.20:1 on its own page for anyone carrying a light preference. These are
       the BAND's ink, not the theme's, and they stay put. */
    --ol-hero-ink:      #F3F6FB;   /* the dark theme's --text-primary */
    /* The band's softer ink. Everything muted inside the band takes THIS, not --text-muted:
       that token flips with the theme, and this band is dark in both, so a theme-muted grey
       here was a colour chosen for a surface that is not underneath it. */
    --ol-hero-ink-soft: #94A3B8;

    /* The green was the gradient's SECOND STOP, i.e. a translucent wash over whatever the page
       behind it happened to be — dark in dark mode, near-white in light, so the band faded out
       from under its own lettering. Painting the tint as a LAYER over an opaque --bg-sidebar base
       keeps the band dark in both themes and leaves the dark-mode look where it was. */
    background:
        linear-gradient(160deg, rgba(22, 163, 74, 0) 0%, rgba(22, 163, 74, 0.10) 100%),
        var(--bg-sidebar, #0B1220);
    /* Everything in the band inherits the band's ink, so a chip or a hint that never set a colour
       of its own cannot fall through to --text-primary and go near-black on a dark ground. */
    color: var(--ol-hero-ink);
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    padding: 2.5rem 1.25rem 2rem;

    /* 🔴 A club with no photo got a thin flat strip with no presence — the single biggest reason
       the live page read as a dashboard rather than a golf course's front door. Most clubs will
       not have uploaded a photo on day one, so the NO-PHOTO state has to carry itself.

       A photograph is still far better and nothing here pretends otherwise; this is the floor,
       not the ceiling. Height gives the club's name room to be a masthead instead of a table
       caption, and the two soft washes give the band depth so it reads as designed rather than
       as an empty container. Both washes are painted OVER the opaque --bg-sidebar base, never
       as a translucent tint over the page, which is the bug the comment above records. */
    position: relative;
    min-height: 210px;
    display: flex;
    align-items: center;
}

/* Overridden to `none` for the photo case further down — a photo brings its own depth and does
   not need a second gradient fighting it. */
.ol-hero[b-jdbembhlfs]::before {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background:
        radial-gradient(120% 90% at 12% 0%,
            color-mix(in srgb, var(--ol-accent, #16a34a) 22%, transparent) 0%, transparent 62%),
        radial-gradient(90% 80% at 100% 100%,
            rgba(255, 255, 255, 0.05) 0%, transparent 58%);
}

/* The photo case paints its own scrim; a second wash on top of it only muddies the picture. */
.ol-hero.has-photo[b-jdbembhlfs]::before { content: none; }

/* Everything in the band must sit above the wash. */
/* Above the wash — and `width: 100%` because .ol-hero is now a flex container: without it the
   inner block shrinks to its content, and `margin: 0 auto` below then centres a narrow column
   with a dead gap beside it. That is exactly what it did on the first attempt. */
.ol-hero-inner[b-jdbembhlfs] { position: relative; z-index: 2; width: 100%; }

/* With the band carrying real height, the club's name can be a masthead. Clamped so a long club
   name on a phone does not wrap into four lines. */
.ol-hero .ol-org-name[b-jdbembhlfs] {
    font-size: clamp(1.75rem, 4.4vw, 2.6rem);
    letter-spacing: -0.015em;
}

.ol-hero-inner[b-jdbembhlfs] {
    max-width: 900px;
    margin: 0 auto;
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.ol-hero-avatar[b-jdbembhlfs] {
    width: 64px;
    height: 64px;
    border-radius: 14px;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-size: 1.75rem;
    font-weight: 800;
    display: flex;
    align-items: center;
    justify-content: center;
    text-transform: uppercase;
    flex-shrink: 0;
    box-shadow: 0 4px 16px rgba(22,163,74,0.3);
    overflow: hidden;
}

.ol-hero-logo-img[b-jdbembhlfs] {
    width: 100%;
    height: 100%;
    object-fit: contain;
    border-radius: 14px;
}

.ol-org-description[b-jdbembhlfs] {
    font-size: 0.95rem;
    color: var(--ol-hero-ink-soft);
    margin: 0 0 0.45rem;
    line-height: 1.5;
}

.ol-hero-info[b-jdbembhlfs] {
    flex: 1;
    min-width: 0;
}

.ol-org-name[b-jdbembhlfs] {
    font-size: 1.75rem;
    font-weight: 800;
    color: var(--ol-hero-ink);
    margin: 0 0 0.375rem;
    line-height: 1.2;
}

.ol-org-location[b-jdbembhlfs] {
    font-size: 0.9rem;
    color: var(--ol-hero-ink-soft);
    margin: 0 0 0.75rem;
}

.ol-hero-meta[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.ol-meta-chip[b-jdbembhlfs] {
    display: inline-flex;
    align-items: center;
    font-size: var(--font-size-chip);
    font-weight: 500;
    padding: 0.3rem 0.75rem;
    border-radius: 999px;
    text-decoration: none;
    transition: opacity 0.15s;
}

.ol-chip-active[b-jdbembhlfs] {
    background: rgba(22, 163, 74, 0.15);
    color: #4ade80;
    border: 1px solid rgba(22, 163, 74, 0.25);
}

/* The course facts chip that replaced "Active Organization". Quieter than the old green pill —
   it is a statement of fact, not a status badge, so it reads as part of the club's identity
   rather than as something that could turn red. Takes the BAND's ink, never the theme's: this
   sits on --bg-sidebar, which is dark in both themes. */
.ol-chip-course[b-jdbembhlfs] {
    background: rgba(255, 255, 255, 0.09);
    color: var(--ol-hero-ink);
    border: 1px solid rgba(255, 255, 255, 0.16);
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.01em;
}

.ol-chip-email[b-jdbembhlfs] {
    background: rgba(255,255,255,0.05);
    color: var(--ol-hero-ink-soft);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.ol-chip-email:hover[b-jdbembhlfs] {
    opacity: 0.8;
}

/* The email, Website and phone chips are links a golfer taps, so they take the 48px touch floor.
   "Website" measured 93x31. The course chip is a span, not a control, and keeps its compact size. */
a.ol-meta-chip[b-jdbembhlfs] {
    min-height: var(--touch-target-min, 48px);
}

.ol-hero-cta[b-jdbembhlfs] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.375rem;
    flex-shrink: 0;
}

.ol-signin-btn[b-jdbembhlfs] {
    min-width: 140px;
}

/* 🔴 The one thing in the band that still took its ink from the THEME. Everything else inherits
   --ol-hero-ink, but Bootstrap's own .btn-outline-secondary sets a colour, so inheritance never
   reaches it: in light mode that is slate #475569, which MEASURED 1.90:1 against the scrimmed
   band — the club's Sign In button, unreadable, for anyone carrying a light preference. Same bug
   as the club name above it, one selector further down. The band's border was worse than the
   ink: rgba(0,0,0,0.12) is invisible on a dark ground, so the control had no visible edge either.

   Pinned to the band's ink rather than the theme's, like every other rule in this block. */
.ol-hero .btn-outline-secondary[b-jdbembhlfs] {
    color: var(--ol-hero-ink);
    border-color: rgba(255, 255, 255, 0.40);
    background-color: transparent;
}

.ol-hero .btn-outline-secondary:hover[b-jdbembhlfs],
.ol-hero .btn-outline-secondary:focus-visible[b-jdbembhlfs] {
    /* Inverted on hover: the band's ink becomes the fill, and the text goes to the band's own
       dark. Both directions stay above 4.5:1. */
    color: #0F172A;
    background-color: var(--ol-hero-ink);
    border-color: var(--ol-hero-ink);
}

.ol-cta-hint[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--ol-hero-ink-soft);
    margin: 0;
    text-align: right;
}

.ol-cta-new-account[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--ol-hero-ink-soft);
    text-align: right;
    text-decoration: none;
    margin-top: 0.1rem;
    transition: color 0.15s;
}

.ol-cta-new-account:hover[b-jdbembhlfs] {
    color: var(--b9-primary-text);
}

/* ── Join-request CTA states ── */
.ol-join-success[b-jdbembhlfs],
.ol-join-pending[b-jdbembhlfs] {
    font-size: 0.875rem;
    padding: 0.625rem 0.875rem;
    border-radius: 8px;
    text-align: right;
}

.ol-join-success[b-jdbembhlfs] {
    background: rgba(34, 197, 94, 0.12);
    color: #4ade80;
    border: 1px solid rgba(34, 197, 94, 0.25);
}

.ol-join-pending[b-jdbembhlfs] {
    background: rgba(234, 179, 8, 0.1);
    color: #fbbf24;
    border: 1px solid rgba(234, 179, 8, 0.25);
}

/* ── Inline join form ── */
.ol-join-form[b-jdbembhlfs] {
    background: rgba(255,255,255,0.04);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.1));
    border-radius: 12px;
    padding: 1rem;
    width: 280px;
    max-width: 100%;
}

.ol-join-form-title[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--text-muted, #64748b);
    margin: 0 0 0.75rem;
}

.ol-join-form .form-control[b-jdbembhlfs] {
    background: rgba(255,255,255,0.06);
    border-color: rgba(255,255,255,0.1);
    color: var(--text-primary, #f1f5f9);
    font-size: var(--font-size-base);
}

.ol-join-form .form-control:focus[b-jdbembhlfs] {
    background: rgba(255,255,255,0.09);
    border-color: var(--b9-primary, #16a34a);
    box-shadow: 0 0 0 0.2rem rgba(22,163,74,0.25);
    color: var(--text-primary, #f1f5f9);
}

.ol-join-form .form-control[b-jdbembhlfs]::placeholder {
    color: var(--text-muted, #64748b);
}

.ol-join-form .alert-sm[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
}


/* ================================================================
   BODY / SECTIONS
   ================================================================ */
.ol-body[b-jdbembhlfs] {
    max-width: 900px;
    margin: 0 auto;
    padding: 2rem 1.25rem 3rem;
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}

.ol-section[b-jdbembhlfs] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.ol-section-header[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.25rem;
}

.ol-section-title[b-jdbembhlfs] {
    font-size: 0.875rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--text-muted, #64748b);
    display: flex;
    align-items: center;
    margin: 0;
}

/* Live pulse dot */
.ol-live-dot[b-jdbembhlfs] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--success, #22c55e);
    margin-right: 0.625rem;
    animation: ol-pulse-b-jdbembhlfs 1.8s ease-in-out infinite;
    flex-shrink: 0;
}

@keyframes ol-pulse-b-jdbembhlfs {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: 0.4; transform: scale(0.75); }
}

/* ================================================================
   EVENT CARDS
   ================================================================ */
.ol-event-list[b-jdbembhlfs] {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
}

.ol-event-card[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    background: rgba(255,255,255,0.04);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    border-radius: 12px;
    transition: background 0.15s, border-color 0.15s;
}

.ol-event-card:hover[b-jdbembhlfs] {
    background: rgba(255,255,255,0.07);
    border-color: rgba(255,255,255,0.1);
}

.ol-card-active[b-jdbembhlfs] {
    border-left: 3px solid var(--success, #22c55e);
}

.ol-card-past[b-jdbembhlfs] {
    border-left: 3px solid var(--b9-border, #334155);
    opacity: 0.88;
}

.ol-past-list .ol-ec-date[b-jdbembhlfs] {
    color: var(--text-muted, #94a3b8);
}

.ol-ec-body[b-jdbembhlfs] {
    flex: 1;
    min-width: 0;
}

.ol-ec-date[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    /* --b9-primary itself is 2.8:1 as text on this card. --b9-primary-text is the palette's
       readable-on-dark variant of the same blue (10.5:1) — no new hue, see the brand lock. */
    color: var(--b9-primary-text, #93C5FD);
    margin-bottom: 0.2rem;
}

.ol-ec-name[b-jdbembhlfs] {
    /* Seven of these measured 306x24 — the event name is what a golfer aims at on a club
       page, and it was a 24px-tall line of text. Height is bought with padding rather than
       display:flex so the nowrap/ellipsis below keeps working; on a phone the media query
       lets the name wrap and this simply grows. (X03) */
    min-height: var(--touch-target-min);
    box-sizing: border-box;
    padding-block: 12px;
    font-size: 1rem;
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
    text-decoration: none;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-bottom: 0.3rem;
}

.ol-ec-name:hover[b-jdbembhlfs] {
    text-decoration: underline;
}

.ol-ec-meta[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.ol-ec-format[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
}

.ol-ec-players[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary, #94a3b8);
}

.ol-ec-full[b-jdbembhlfs] {
    color: #f59e0b;
}

.ol-ec-actions[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.ol-lb-btn[b-jdbembhlfs],
.ol-register-btn[b-jdbembhlfs],
.ol-detail-btn[b-jdbembhlfs] {
    white-space: nowrap;
}

/* ================================================================
   EMPTY STATE
   ================================================================ */
.ol-empty[b-jdbembhlfs] {
    text-align: center;
    padding: 3rem 1rem;
    background: rgba(255,255,255,0.02);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.05));
    border-radius: 14px;
}

.ol-empty-icon[b-jdbembhlfs] {
    font-size: 2.75rem;
    color: var(--text-muted, #64748b);
    display: block;
    margin-bottom: 1rem;
}

.ol-empty-title[b-jdbembhlfs] {
    font-size: 1.0625rem;
    font-weight: 600;
    color: var(--text-secondary, #94a3b8);
    margin: 0 0 0.4rem;
}

.ol-empty-sub[b-jdbembhlfs] {
    font-size: 0.9rem;
    color: var(--text-muted, #64748b);
    margin: 0;
}

/* ── League cards ───────────────────────────────────────────── */
.ol-league-card[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.9rem 1rem;
    background: var(--bg-elevated, #1e293b);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 0.75rem;
    flex-wrap: wrap;
}

.ol-league-header[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    flex-wrap: wrap;
    margin-bottom: 0.3rem;
}

.ol-league-status[b-jdbembhlfs] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    padding: 2px 9px;
    border-radius: 999px;
}

.ol-league-status--active[b-jdbembhlfs] {
    background: var(--success-soft, rgba(34,197,94,0.15));
    color: var(--success-text, #4ade80);
    border: 1px solid rgba(34,197,94,0.25);
}

.ol-league-status--complete[b-jdbembhlfs] {
    background: rgba(148,163,184,0.12);
    color: var(--text-secondary, #94a3b8);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

.ol-league-status--draft[b-jdbembhlfs] {
    background: rgba(255,255,255,0.06);
    color: var(--text-muted, #64748b);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
}

/* ── Coming soon / starts-soon labels ──────────────────────── */
.ol-ec-starts-soon[b-jdbembhlfs] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--success-text, #4ade80);
}

/* X14 — the same chip, but the day has gone. --success-text is the "go" green this chip wears
   for "Starts today!"; a date that has been and gone is not good news and must not be painted as
   it. Muted, and it keeps the chip's size so the meta row does not jump. */
.ol-ec-starts-soon.ol-ec-date-passed[b-jdbembhlfs] {
    color: var(--b9-text-soft);
}

.ol-coming-soon-badge[b-jdbembhlfs] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--warning-text, #fbbf24);
    letter-spacing: 0.03em;
}

.ol-card-coming-soon[b-jdbembhlfs] {
    opacity: 0.88;
    border-style: dashed;
}

/* ── Next round countdown strip on league card ──────────────── */
.ol-next-round[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.45rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted, #64748b);
}

.ol-next-round--live[b-jdbembhlfs] {
    color: var(--success-text, #4ade80);
}

.ol-next-round .ol-live-dot[b-jdbembhlfs] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--success, #22c55e);
    box-shadow: 0 0 6px rgba(34,197,94,.7);
    animation: dot-pulse 1.5s infinite;
    flex-shrink: 0;
}

/* ── Season progress bar ────────────────────────────────────── */
.ol-season-progress[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin-top: 0.5rem;
}

.ol-season-bar-wrap[b-jdbembhlfs] {
    flex: 1;
    height: 5px;
    background: rgba(255,255,255,0.08);
    border-radius: 4px;
    overflow: hidden;
    max-width: 140px;
}

.ol-season-bar[b-jdbembhlfs] {
    height: 100%;
    background: linear-gradient(90deg, var(--success, #22c55e), #4ade80);
    border-radius: 4px;
    transition: width 0.4s ease;
}

.ol-season-label[b-jdbembhlfs] {
    font-size: var(--font-size-chip);
    font-weight: 600;
    color: var(--text-muted, #64748b);
    white-space: nowrap;
}

/* ── Recent results podium teaser ───────────────────────────── */
.ol-podium-card[b-jdbembhlfs] {
    background: var(--bg-elevated, rgba(255,255,255,0.04));
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 0.75rem;
    padding: 0.85rem 1rem;
    margin-bottom: 0.75rem;
}

.ol-podium-header[b-jdbembhlfs] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    margin-bottom: 0.6rem;
    flex-wrap: wrap;
}

.ol-podium-event[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--text-secondary, #94a3b8);
}

.ol-podium-date[b-jdbembhlfs] {
    font-size: var(--font-size-chip);
    color: var(--text-muted, #64748b);
}

.ol-podium-entries[b-jdbembhlfs] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}

.ol-podium-entry[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: var(--font-size-sm);
}

.ol-podium-medal[b-jdbembhlfs] {
    font-size: 1rem;
    flex-shrink: 0;
    width: 1.4rem;
    text-align: center;
}

.ol-podium-name[b-jdbembhlfs] {
    flex: 1;
    min-width: 0;                 /* without this the ellipsis never fires inside a flex row */
    display: flex;
    flex-direction: column;
    font-weight: 600;
    color: var(--text-primary, #f1f5f9);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* A scramble podium names the team, then the people in it — the reason anyone looks. */
.ol-podium-members[b-jdbembhlfs] {
    display: block;
    font-size: var(--font-size-sm);
    font-weight: 500;
    color: var(--text-muted, #64748b);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ol-podium-score[b-jdbembhlfs] {
    font-weight: 700;
    color: var(--text-secondary, #94a3b8);
    min-width: 2.2rem;
    text-align: right;
}

.ol-podium-relpar[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    min-width: 2rem;
    text-align: right;
}

.ol-podium-under[b-jdbembhlfs] { color: var(--success-text, #4ade80); }
.ol-podium-even[b-jdbembhlfs]  { color: var(--text-muted, #64748b); }
.ol-podium-over[b-jdbembhlfs]  { color: var(--danger-text, #f87171); }

/* ── Season highlight reel ──────────────────────────────────── */
.ol-highlight-strip[b-jdbembhlfs] {
    display: flex;
    gap: 0.5rem;
    overflow-x: auto;
    scrollbar-width: none;
    padding: 0.5rem 0 0.75rem;
    flex-wrap: wrap;
}

.ol-highlight-strip[b-jdbembhlfs]::-webkit-scrollbar { display: none; }

.ol-highlight-item[b-jdbembhlfs] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.3rem 0.8rem;
    background: var(--bg-elevated, rgba(255,255,255,0.05));
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 999px;
    white-space: nowrap;
    font-size: var(--font-size-sm);
    flex-shrink: 0;
}

.ol-highlight-emoji[b-jdbembhlfs] {
    font-size: 0.95rem;
    line-height: 1;
}

.ol-highlight-text[b-jdbembhlfs] {
    font-weight: 600;
    color: var(--text-secondary, #94a3b8);
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.ol-icon-warning[b-jdbembhlfs] { color: var(--warning); }
.ol-icon-success[b-jdbembhlfs] { color: var(--success); }

/* ================================================================
   CLUB PAGE CUSTOMIZATION (OrgPageSettings)
   The org's accent arrives as --ol-accent/--ol-accent-ink on .ol-page
   (service-sanitized #RRGGBB; ink computed for contrast). Layout and
   typography stay Back9Ops — the accent touches buttons and headers.
   ================================================================ */

/* 🔴 --ol-accent-text is the accent LIGHTENED until it reads on a near-black card, so on a white
   one it is the least readable form of the colour there is — a club's forest green arrives as a
   pale mint at about 1.5:1. The server cannot choose between the two: the theme is in the
   visitor's localStorage, not in the request. So it sends both and the THEME picks here.

   🔴 It picks through a THIRD name, and that is not decoration. --ol-accent-text arrives in the
   element's own style="" attribute, and an inline custom property beats any stylesheet rule no
   matter how specific — a rule here that re-declared --ol-accent-text under the light theme would
   never win, and the club page would go on writing the dark-ground value on its white cards while
   every test that only read the stylesheet said it was fixed. Found by driving the page, not by
   reading it. So the rules below consume a name the server never sets.

   The fallback chain in each branch is the same one every other rule in this file uses, for a club
   that set no accent (Lake City is one) or typed something the sanitiser rejected. */
.ol-page[b-jdbembhlfs] {
    --ol-accent-writing: var(--ol-accent-text, var(--b9-primary-text, #93C5FD));
}

html[data-theme="light"] .ol-page[b-jdbembhlfs] {
    --ol-accent-writing: var(--ol-accent-text-light, var(--b9-primary-text, #1E40AF));
}

/* The photo fills the band it now lives inside. An <img> rather than a background so the
   preload scanner can find it — this is the page's largest paint. */
.ol-hero-photo[b-jdbembhlfs] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    z-index: 0;
}

/* ── The photo case, and ONLY the photo case ──────────────────────
   A club with no hero keeps the band exactly as it was: no scrim, no minimum height, no ink
   override. A 260px darkened rectangle over nothing is not a premium page. */
.ol-hero.has-photo[b-jdbembhlfs] {
    position: relative;
    overflow: hidden;
    /* min-height, never height: the band carries the CTA column AND the inline join form, which
       stack at 375px. A fixed height would clip the form. It also reserves the box, so the image
       arriving costs no layout shift. */
    min-height: clamp(260px, 34vw, 420px);
    /* Over a scrimmed blown-out sky the softer ink needs lifting: #94A3B8 measures ~3.3:1 there,
       #CBD5E1 ~5.3:1. The no-photo band keeps its own value. */
    --ol-hero-ink-soft: #CBD5E1;
}

/* Three stops, not a flat darken — the difference between a photograph and a dark rectangle.
   Only the top ~22% carries no text, so that strip is lightly veiled and the sky still reads as
   sky. Everything below it — the name, the address, the buttons, the hint and the join form —
   sits under 0.72 or more.

   Tuned against the worst case in golf photography, a blown-out white sky, and MEASURED in the
   browser: not the centre pixel under each element, which flatters, but the BRIGHTEST pixel it
   covers, sampled on a grid. A first attempt at 0.35/45% measured 8:1 on centre pixels and only
   3.3:1 on the worst one — the exact trap this project's notes warn about, composite the alpha or
   the measurement lies. The band is also taller on a real desktop (420px at the clamp's top),
   where proportionally more photograph sits above the text. */
.ol-hero.has-photo[b-jdbembhlfs]::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg,
        rgba(8,13,22,0.30) 0%,
        rgba(8,13,22,0.72) 22%,
        rgba(8,13,22,0.90) 100%);
    z-index: 1;
    pointer-events: none;
}

.ol-hero.has-photo .ol-hero-inner[b-jdbembhlfs] {
    position: relative;
    z-index: 2;
}

.ol-welcome[b-jdbembhlfs] {
    /* --bg-card and --accent-primary are not tokens in this codebase, so both declarations always
       fell through to a hardcoded dark literal and never flipped. In light mode that put the
       welcome headline — which inherits --text-primary, #1A1A1A — on #101827, at 1.02:1.
       --bg-surface and --brand are real and theme-aware. */
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-left: 4px solid var(--ol-accent, var(--brand));
    border-radius: 12px;
    padding: 1rem 1.25rem;
    margin-bottom: 1.5rem;
}

.ol-welcome-title[b-jdbembhlfs] {
    font-size: 1.15rem;
    font-weight: 700;
    margin: 0 0 0.3rem;
}

.ol-welcome-text[b-jdbembhlfs] {
    margin: 0;
    color: var(--text-muted, #94a3b8);
    white-space: pre-line;
}

/* ── Next open tee times strip ── */
.ol-tt-day[b-jdbembhlfs] {
    color: var(--text-muted, #94a3b8);
    font-size: 0.9rem;
}

.ol-tt-strip[b-jdbembhlfs] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.6rem;
    align-items: stretch;
}

.ol-tt-chip[b-jdbembhlfs] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.1rem;
    min-width: 96px;
    min-height: 56px;
    padding: 0.5rem 0.9rem;
    border-radius: 10px;
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.12));
    background: var(--bg-surface);
    text-decoration: none;
    color: var(--text-primary);
}

.ol-tt-chip:hover[b-jdbembhlfs] {
    border-color: var(--ol-accent, var(--brand));
}

.ol-tt-time[b-jdbembhlfs] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.ol-tt-open[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #94a3b8);
}

.ol-tt-more[b-jdbembhlfs] {
    align-self: center;
    padding: 0.5rem 0.9rem;
    /* The accent as TEXT, not the raw accent: --ol-accent-text is lightened until it clears
       AA (ClubPageAccentPalette). The raw value measured 3.1:1 here. */
    color: var(--ol-accent-writing);
    text-decoration: none;
    font-weight: 600;
    min-height: 48px;
    display: flex;
    align-items: center;
}

/* ── The club's accent, where it's safe to speak ── */
.ol-themed[b-jdbembhlfs]  .btn-primary,
.ol-themed .btn-primary[b-jdbembhlfs] {
    background-color: var(--ol-accent);
    border-color: var(--ol-accent);
    color: var(--ol-accent-ink, #ffffff);
}

.ol-themed .ol-section-title[b-jdbembhlfs] {
    border-left: 4px solid var(--ol-accent);
    padding-left: 0.6rem;
}

.ol-themed .ol-welcome[b-jdbembhlfs] {
    border-left-color: var(--ol-accent);
}

/* The date is the one place the accent has to work as lettering, so it takes the derived
   readable form rather than --ol-accent. Borders and fills above keep the raw accent: they
   are decoration, and decoration is not held to the text contrast bar. */
.ol-themed .ol-ec-date[b-jdbembhlfs] {
    color: var(--ol-accent-writing);
}

/* Past events are deliberately de-emphasised, so their date stays muted even for a themed
   club — the accent would pull the eye to the oldest thing on the page. */
.ol-themed .ol-past-list .ol-ec-date[b-jdbembhlfs] {
    color: var(--text-muted, #9FB0C4);
}

/* ── The podium card IS the way into the full board ─────────── */
a.ol-podium-card[b-jdbembhlfs] {
    display: block;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, background 0.15s ease, transform 0.15s ease;
}

a.ol-podium-card:hover[b-jdbembhlfs],
a.ol-podium-card:focus-visible[b-jdbembhlfs] {
    border-color: var(--ol-accent, var(--b9-primary, #3b82f6));
    background: var(--bg-raised);   /* --bg-hover is not a token here */
}

a.ol-podium-card:focus-visible[b-jdbembhlfs] {
    outline: 2px solid var(--ol-accent, var(--b9-primary, #3b82f6));
    outline-offset: 2px;
}

.ol-podium-more[b-jdbembhlfs] {
    display: block;
    margin-top: 0.6rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.02em;
    /* The accent is readable as TEXT only through its -text variant; the raw accent on a dark
       card measures ~3:1. See ClubPageAccentPalette. */
    color: var(--ol-accent-writing);
}

@media (prefers-reduced-motion: reduce) {
    a.ol-podium-card[b-jdbembhlfs] { transition: none; }
}

/* ── When the button cannot say "Register Now", the card says why ─── */
.ol-ec-regnote[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    margin: 0.15rem 0 0.35rem;
}

/* ── When a board last moved, and the card for one nobody closed ─── */
.ol-ec-dateline[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
    margin-top: 0.3rem;
    font-variant-numeric: tabular-nums;
}

.ol-card-pending[b-jdbembhlfs] {
    border-left: 3px solid var(--border-subtle, rgba(255,255,255,0.14));
}

/* ── Which course, for a club that has more than one ─────────── */
.ol-course-chips[b-jdbembhlfs] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    margin: 0 0 0.6rem;
}

.ol-course-chip[b-jdbembhlfs] {
    min-height: 48px;              /* the house touch-target rule */
    padding: 0.4rem 0.9rem;
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    cursor: pointer;
    background: var(--bg-surface);
    color: var(--text-primary);
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.12));
}

.ol-course-chip.is-active[b-jdbembhlfs] {
    border-color: var(--ol-accent, var(--brand));
    background: var(--bg-raised);
}

.ol-course-chip:focus-visible[b-jdbembhlfs] {
    outline: 2px solid var(--ol-accent, var(--brand));
    outline-offset: 2px;
}

/* ── The line between a club's live business and its history ─────── */
.ol-subhead[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.09em;
    text-transform: uppercase;
    color: var(--text-muted, #64748b);
    margin: 0.9rem 0 0.15rem;
}

/* ── A tee sheet with nothing open still says so ─────────────────── */
.ol-tt-none[b-jdbembhlfs] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
    border: 1px dashed var(--border-subtle, rgba(255,255,255,0.14));
    border-radius: 12px;
    background: var(--bg-surface);
}

.ol-tt-none-line[b-jdbembhlfs] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--text-secondary);
}

.ol-tt-none-actions[b-jdbembhlfs] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.ol-tt-none-actions .btn[b-jdbembhlfs] {
    min-height: 48px;
}

/* ── What it costs and when you can play ─────────────────────────── */
.ol-tt-facts[b-jdbembhlfs] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 0.9rem;
    margin: 0 0 0.6rem;
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
}

.ol-tt-fact strong[b-jdbembhlfs] {
    color: var(--text-primary);
    font-weight: 600;
}

.ol-tt-count[b-jdbembhlfs] {
    color: var(--text-muted);
}

/* The course's own words about today — CourseBookingSettings.GolferNote, promoted. */
.ol-tt-note[b-jdbembhlfs] {
    margin: 0 0 0.6rem;
    padding: 0.5rem 0.75rem;
    border-radius: 8px;
    font-size: var(--font-size-sm);
    background: var(--bg-elevated);
    color: var(--text-secondary);
    border-left: 3px solid var(--ol-accent, var(--brand));
}

/* ── The course itself ───────────────────────────────────────────── */
.ol-course-card[b-jdbembhlfs] {
    background: var(--bg-elevated, rgba(255,255,255,0.04));
    border: 1px solid var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
    padding: 0.9rem 1rem;
    margin-bottom: 0.6rem;
}

.ol-course-head[b-jdbembhlfs] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
    margin-bottom: 0.6rem;
}

.ol-course-name[b-jdbembhlfs] {
    font-weight: 700;
    color: var(--text-primary);
}

.ol-course-holes[b-jdbembhlfs] {
    font-size: var(--font-size-sm);
    color: var(--text-muted, #64748b);
}

/* A table is the honest shape for this, so it scrolls inside its own box rather than
   pushing the page sideways on a phone. */
.tablewrap-x[b-jdbembhlfs] {
    overflow-x: auto;
}

.ol-tee-table[b-jdbembhlfs] {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-size-sm);
    /* Four of the five columns are numbers that should line up. */
    font-variant-numeric: tabular-nums;
}

.ol-tee-table th[b-jdbembhlfs] {
    text-align: left;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-muted, #64748b);
    padding: 0.3rem 0.75rem 0.3rem 0;
    white-space: nowrap;
}

.ol-tee-table td[b-jdbembhlfs] {
    padding: 0.35rem 0.75rem 0.35rem 0;
    color: var(--text-secondary);
    border-top: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    white-space: nowrap;
}

.ol-tee-table td:first-child[b-jdbembhlfs] {
    color: var(--text-primary);
    font-weight: 600;
}

/* One quiet line where a 300px empty card used to sit. A club with no tournament this week is
   not shut, and the page should not look like it is. Deliberately NOT .ol-empty: that treatment
   is for a section that genuinely has nothing to say, and this one is a footnote under a page
   that is already carrying the course. */
.ol-quiet-line[b-jdbembhlfs] {
    margin: 0.25rem 0 1.75rem;
    padding: 0.85rem 1rem;
    font-size: 0.9rem;
    color: var(--text-muted);
    background: var(--bg-surface, rgba(255,255,255,0.02));
    border: 1px dashed var(--border-subtle, rgba(255,255,255,0.08));
    border-radius: 12px;
}


/* ── Phone layout ─────────────────────────────────────────────────────────────
   MOVED TO THE END OF THE FILE, 2026-09-12. These two blocks sat at line 318,
   ABOVE the base rules they exist to override, at equal specificity — so source
   order won and the phone layout silently never applied. Two declarations were
   dead outright:

     .ol-ec-body { flex-basis: 100% }  killed by a later `.ol-ec-body { flex: 1 }`,
       whose SHORTHAND resets flex-basis to 0%. The event body computed to 101px
       wide on a 390px phone instead of taking the full line.
     .ol-ec-name { white-space: normal } killed by a later `white-space: nowrap`,
       which is why a club's event read "Senior 3-Pl..." on a phone.

   Nothing inside these blocks changed. A media query must come after the rules it
   overrides, or it is decoration. */
@media (max-width: 600px) {
    .ol-join-form[b-jdbembhlfs] {
        width: 100%;
    }

    .ol-join-success[b-jdbembhlfs],
    .ol-join-pending[b-jdbembhlfs] {
        text-align: center;
    }
}

@media (max-width: 600px) {
    .ol-hero-inner[b-jdbembhlfs] {
        flex-direction: column;
    }

    .ol-hero-cta[b-jdbembhlfs] {
        align-items: stretch;
        width: 100%;
    }

    .ol-cta-hint[b-jdbembhlfs] {
        text-align: center;
    }

    /* 🔴 The event's NAME is the one piece of text that says which event it is, and it was the
       piece that got ellipsised: at 375px the two buttons took two thirds of the row and
       "LC Calcutta — Rounds 2–3" rendered as "LC Calcu…", while the DATE wrapped to two lines.
       The layout was spending its width on everything except the thing you read first.

       flex-wrap on its own is a no-op here, which is why .ol-league-card has carried one for ages
       without it ever doing anything: .ol-ec-body is flex:1 with min-width:0, so it shrinks rather
       than wrapping. It has to be told to take the whole line. */
    .ol-event-card[b-jdbembhlfs],
    .ol-league-card[b-jdbembhlfs] {
        flex-wrap: wrap;
        align-items: flex-start;
    }

    .ol-ec-body[b-jdbembhlfs] {
        flex-basis: 100%;
    }

    .ol-ec-name[b-jdbembhlfs] {
        /* A name with a line to itself should use it rather than being cut short. */
        white-space: normal;
    }

    .ol-ec-actions[b-jdbembhlfs] {
        width: 100%;
    }

    .ol-ec-actions .btn[b-jdbembhlfs] {
        flex: 1;
    }
}
/* /Components/Pages/PlayerPlus/GameBoardPage.razor.rz.scp.css */
/*
    GameBoardPage had NO stylesheet. Five classes — gb-missing, gb-wrap, gb-back, gb-livefoot,
    gb-dot — were written in the markup and defined nowhere in the app, so every one of them
    rendered as a browser default. The back control was a bare inline <a>: about 19px tall on the
    page a player lands on from a shared Player+ game link.

    This is the shape that ships unstyled controls quietly — a class name reads as intent, and
    nothing anywhere says the intent was never implemented. The guard for it is
    ScopedCssReachesTheChildGuardTests; what it could not see is a class with no rule at all.
*/

.gb-wrap[b-i7xdga26sk] {
    max-width: 960px;
    margin: 0 auto;
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.gb-missing[b-i7xdga26sk] {
    max-width: 480px;
    margin: 3rem auto;
    padding: 1.5rem;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

/* A real box, not an inline link. 48px is the project floor and this is the only way back. */
.gb-back[b-i7xdga26sk] {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    align-self: flex-start;
    min-height: var(--touch-target, 48px);
    min-width: var(--touch-target, 48px);
    padding: 0 .75rem;
    border-radius: 10px;
    color: var(--brand-text, var(--text-primary));
    font-size: var(--font-size-base);
    font-weight: 600;
    text-decoration: none;
}

.gb-back:hover[b-i7xdga26sk] {
    background: var(--bg-elevated);
}

.gb-livefoot[b-i7xdga26sk] {
    display: inline-flex;
    align-items: center;
    gap: .45rem;
    color: var(--text-muted);
    font-size: var(--font-size-sm);
}

.gb-dot[b-i7xdga26sk] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--b9-success, #22C55E);
    flex-shrink: 0;
}
/* /Components/Pages/PlayerPlus/GameBoardView.razor.rz.scp.css */
/* Shared board view: leaderboard + settlement. Dark-first, readable. */

.gbv-head[b-45rpg8rars] { margin-bottom: 14px; }
.gbv-title[b-45rpg8rars] { font-size: 1.5rem; margin: 0 0 4px; color: var(--text-primary); }
.gbv-meta[b-45rpg8rars] { color: var(--text-muted); font-size: 0.95rem; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }

.gbv-live[b-45rpg8rars] { display: inline-flex; align-items: center; gap: 6px; font-weight: 800; font-size: 0.78rem; color: var(--text-primary); }
.gbv-dot[b-45rpg8rars] { width: 8px; height: 8px; border-radius: 999px; background: #36d399; display: inline-block; animation: gbv-pulse-b-45rpg8rars 1.6s infinite; }
@keyframes gbv-pulse-b-45rpg8rars { 0%,100% { opacity: 1; } 50% { opacity: 0.35; } }
.gbv-final[b-45rpg8rars] { font-weight: 800; font-size: 0.78rem; color: var(--text-muted); }

.gbv-card[b-45rpg8rars] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 16px;
    margin-bottom: 14px;
}

.gbv-card-title[b-45rpg8rars] {
    font-weight: 700; font-size: 1.1rem; color: var(--text-primary);
    margin-bottom: 10px; display: flex; align-items: center; gap: 8px;
}
.gbv-prelim[b-45rpg8rars], .gbv-brag[b-45rpg8rars] { color: var(--text-muted); }
.gbv-prelim[b-45rpg8rars] { font-size: 0.78rem; font-weight: 600; border: 1px solid var(--border-subtle); border-radius: 999px; padding: 1px 8px; }
.gbv-empty[b-45rpg8rars] { color: var(--text-muted); padding: 16px 0; text-align: center; }
.gbv-waiting[b-45rpg8rars] {
    color: var(--text-muted); font-size: 0.9rem; margin-bottom: 10px;
    padding: 8px 10px; border: 1px solid var(--border-subtle); border-radius: 8px;
    background: var(--bg-surface-subtle, transparent);
}

/* The card contains only static content (no floating menus), so horizontal
   containment is safe: if the table ever exceeds a very narrow phone, the
   card pans instead of the whole page scrolling sideways. */
.gbv-card[b-45rpg8rars] { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.gbv-table[b-45rpg8rars] { width: 100%; border-collapse: collapse; }
.gbv-table th[b-45rpg8rars] {
    text-align: left; color: var(--text-muted); font-weight: 600;
    font-size: 0.82rem; padding: 6px 8px; border-bottom: 1px solid var(--border-subtle);
}
.gbv-table td[b-45rpg8rars] { padding: 10px 8px; color: var(--text-primary); border-bottom: 1px solid var(--border-subtle); }
.gbv-table tr:last-child td[b-45rpg8rars] { border-bottom: none; }
.gbv-pos[b-45rpg8rars] { width: 40px; color: var(--text-muted); }
.gbv-name[b-45rpg8rars] { font-weight: 600; }
.gbv-thru[b-45rpg8rars] { color: var(--text-muted); }
.gbv-num[b-45rpg8rars] { text-align: right; width: 56px; }

/* Rank chip + leader emphasis (mirrors the Game Hub team card). */
.gbv-rank[b-45rpg8rars] {
    display: inline-flex; align-items: center; justify-content: center;
    width: 26px; height: 26px; border-radius: 999px;
    background: var(--bg-raised); color: var(--text-muted);
    font-weight: 800; font-size: 0.85rem;
}
.gbv-rank-leader[b-45rpg8rars] { background: #f59e0b; color: #0b1220; }
.gbv-row-leader td[b-45rpg8rars] { background: rgba(245, 158, 11, 0.12); }

/* Scoped overrides: plain .gbv-up/.gbv-down lose to `.gbv-table td` on specificity. */
.gbv-table td.gbv-up[b-45rpg8rars] { color: #36d399; }
.gbv-table td.gbv-down[b-45rpg8rars] { color: #f87272; }
.gbv-table td.gbv-even[b-45rpg8rars] { color: var(--text-muted); }

.gbv-headline[b-45rpg8rars] { color: var(--text-primary); font-weight: 600; margin-bottom: 10px; }

.gbv-lines[b-45rpg8rars] { display: grid; gap: 6px; }
.gbv-line[b-45rpg8rars] {
    display: grid;
    grid-template-columns: 1fr auto auto;
    gap: 10px;
    align-items: baseline;
    padding: 8px 10px;
    background: var(--bg-raised);
    border-radius: 10px;
}
.gbv-line-name[b-45rpg8rars] { font-weight: 600; color: var(--text-primary); }
.gbv-line-detail[b-45rpg8rars] { color: var(--text-muted); font-size: 0.85rem; text-align: right; }
.gbv-line-amt[b-45rpg8rars] { font-weight: 800; font-variant-numeric: tabular-nums; min-width: 72px; text-align: right; }
.gbv-up[b-45rpg8rars] { color: #36d399; }
.gbv-down[b-45rpg8rars] { color: #f87272; }
.gbv-even[b-45rpg8rars] { color: var(--text-muted); }

.gbv-settle[b-45rpg8rars] { margin-top: 14px; border-top: 1px solid var(--border-subtle); padding-top: 12px; }
.gbv-settle-title[b-45rpg8rars] { font-weight: 600; color: var(--text-muted); margin-bottom: 8px; font-size: 0.9rem; }
.gbv-transfer[b-45rpg8rars] { color: var(--text-primary); padding: 6px 0; }
.gbv-transfer-amt[b-45rpg8rars] { font-weight: 800; margin-left: 4px; }

.gbv-brag[b-45rpg8rars] { display: flex; align-items: center; gap: 10px; }

/* Narrow phones: tighter cells so the 6-column board fits without panning. */
@media (max-width: 380px) {
    .gbv-card[b-45rpg8rars] { padding: 12px 10px; }
    .gbv-table th[b-45rpg8rars] { padding: 6px 5px; }
    .gbv-table td[b-45rpg8rars] { padding: 10px 5px; }
    .gbv-pos[b-45rpg8rars] { width: 30px; }
    .gbv-num[b-45rpg8rars] { width: 44px; }
}

/* "Settle up" links — authenticated board only. Provider chips that open the payee's own app. */
.gbv-settle-up[b-45rpg8rars] { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 6px; }
.gbv-settle-lead[b-45rpg8rars] { font-size: 0.8rem; color: var(--text-muted); }
.gbv-settle-link[b-45rpg8rars] {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    font-size: 0.8rem;
    font-weight: 600;
    border: 1px solid var(--border-default);
    border-radius: 999px;
    color: var(--brand-text, #56c7ff);
    text-decoration: none;
}
.gbv-settle-link:hover[b-45rpg8rars] { background: var(--bg-elevated); }
.gbv-settle-copy[b-45rpg8rars] { font-size: 0.8rem; color: var(--text-muted); }
.gbv-settle-copy code[b-45rpg8rars] { color: var(--text-primary); }
.gbv-settle-note[b-45rpg8rars] { margin-top: 8px; font-size: 0.72rem; color: var(--text-muted); }
/* /Components/Pages/PlayerPlus/GameHubPage.razor.rz.scp.css */
/* Game hub — host controls + share + players. Dark-first, 48px targets. */

.gh-wrap[b-8r6z654uak] { max-width: 680px; margin: 0 auto; padding: 16px 16px 64px; }

.gh-missing[b-8r6z654uak] { max-width: 480px; margin: 48px auto; text-align: center; color: var(--text-primary); display: grid; gap: 10px; justify-items: center; }

.gh-back[b-8r6z654uak] { color: var(--text-muted); text-decoration: none; font-size: 0.95rem; display: inline-flex; gap: 6px; align-items: center; min-height: var(--touch-target-min); }   /* was 40px — X03 */
.gh-back:hover[b-8r6z654uak] { color: var(--text-primary); }

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

.gh-title[b-8r6z654uak] { font-size: 1.45rem; margin: 2px 0 4px; color: var(--text-primary); }
.gh-meta[b-8r6z654uak] { color: var(--text-muted); font-size: 0.95rem; }
.gh-stakes[b-8r6z654uak] { margin-top: 2px; font-weight: 600; color: var(--text-primary); }

.gh-status[b-8r6z654uak] {
    flex: 0 0 auto;
    font-size: var(--font-size-sm); font-weight: 700;
    padding: 4px 12px; border-radius: 999px;
    border: 1px solid var(--border-subtle);
    color: var(--text-primary);
}
.gh-status-active[b-8r6z654uak] { background: var(--success-soft); }
.gh-status-draft[b-8r6z654uak], .gh-status-open[b-8r6z654uak] { background: var(--bg-raised); }
.gh-status-closed[b-8r6z654uak] { background: var(--bg-raised); color: var(--text-muted); }
/* Active but its day has passed — waiting on the host to finish it, not being played. */
.gh-status-unfinished[b-8r6z654uak] { background: var(--warning-soft); }

.gh-error[b-8r6z654uak], .gh-notice[b-8r6z654uak] {
    display: flex; gap: 10px; align-items: center;
    border: 1px solid var(--border-subtle);
    border-radius: 12px; padding: 12px 14px; margin: 10px 0;
    color: var(--text-primary);
}
.gh-error[b-8r6z654uak] { background: var(--warning-soft); }
.gh-notice[b-8r6z654uak] { background: var(--success-soft); }

.gh-actions[b-8r6z654uak] { display: grid; gap: 10px; margin: 14px 0 18px; }

.gh-btn[b-8r6z654uak] {
    display: inline-flex; align-items: center; justify-content: center; gap: 8px;
    min-height: 50px; padding: 0 20px;
    border-radius: 12px; font-size: 1.02rem; font-weight: 700;
    cursor: pointer; text-decoration: none; border: 1px solid transparent;
}
.gh-btn-primary[b-8r6z654uak] { background: var(--brand); color: #fff; }
.gh-btn-primary:hover[b-8r6z654uak] { background: var(--brand-hover); }
.gh-btn-secondary[b-8r6z654uak] { background: var(--bg-raised); color: var(--text-primary); border-color: var(--border-subtle); }
.gh-btn:disabled[b-8r6z654uak] { opacity: 0.55; cursor: default; }
.gh-wide[b-8r6z654uak] { width: 100%; }

.gh-card[b-8r6z654uak] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 18px;
    margin-bottom: 16px;
}

.gh-card-title[b-8r6z654uak] { font-weight: 700; font-size: 1.1rem; color: var(--text-primary); }
.gh-count[b-8r6z654uak] { color: var(--text-muted); font-weight: 500; font-size: 0.92rem; }
.gh-card-sub[b-8r6z654uak] { color: var(--text-muted); font-size: 0.95rem; margin: 6px 0 10px; }
.gh-spectate-sub[b-8r6z654uak] { margin-top: 14px; }

.gh-linkrow[b-8r6z654uak] { display: flex; flex-wrap: wrap; gap: 8px; }

.gh-link[b-8r6z654uak] {
    flex: 1 1 10rem;
    min-width: 0; /* the link input shrinks; Copy wraps below on tiny phones */
    min-height: 48px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    color: var(--text-muted);
    padding: 0 12px;
    font-size: 0.88rem;
    text-overflow: ellipsis;
}

.gh-players[b-8r6z654uak] { display: grid; gap: 6px; margin-top: 10px; }

.gh-player[b-8r6z654uak] {
    display: flex; justify-content: space-between; align-items: center; gap: 10px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 10px 14px;
    min-height: 56px;
    flex-wrap: wrap;
}

.gh-player-name[b-8r6z654uak] { font-weight: 600; color: var(--text-primary); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

.gh-player-right[b-8r6z654uak] { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }

.gh-chip[b-8r6z654uak] {
    font-size: var(--font-size-chip); font-weight: 700;
    background: var(--brand-soft);
    color: var(--text-primary);
    padding: 1px 8px; border-radius: 999px;
}
.gh-chip-muted[b-8r6z654uak] { background: var(--bg-surface); border: 1px solid var(--border-subtle); color: var(--text-muted); }

.gh-hcp[b-8r6z654uak] { color: var(--text-muted); font-size: 0.9rem; }

.gh-mini[b-8r6z654uak] {
    background: none; border: 1px solid var(--border-subtle);
    color: var(--text-primary);
    border-radius: 999px; padding: 4px 12px;
    /* Was 36px. These are Edit and Remove beside each player's name — the controls that
       change who is in the game and what they are playing for. .gh-input two rules down was
       already at the floor; these were simply missed. X03, UX audit 2026-09-06. */
    min-height: var(--touch-target-min);
    cursor: pointer; font-size: var(--font-size-sm);
}
.gh-mini-muted[b-8r6z654uak] { color: var(--text-muted); }

.gh-addguest[b-8r6z654uak] { margin-top: 16px; border-top: 1px solid var(--border-subtle); padding-top: 14px; }
.gh-addguest-title[b-8r6z654uak] { font-weight: 600; color: var(--text-primary); margin-bottom: 8px; }

.gh-addguest-row[b-8r6z654uak] { display: flex; gap: 8px; flex-wrap: wrap; }

.gh-input[b-8r6z654uak] {
    flex: 1; min-width: 110px;
    min-height: 48px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    color: var(--text-primary);
    padding: 0 12px; font-size: 0.98rem;
}
.gh-input:focus[b-8r6z654uak] { outline: none; border-color: var(--brand-soft); }
.gh-hcp-input[b-8r6z654uak] { max-width: 90px; flex: 0 0 auto; }

.gh-hint[b-8r6z654uak] { color: var(--text-muted); font-size: 0.88rem; margin-top: 8px; }
.gh-center[b-8r6z654uak] { text-align: center; }

/* Friends (Social plan F3) — chips reuse .gh-btn; the answer rides inside the chip as a quiet tag */
.gh-rsvp[b-8r6z654uak] { color: var(--text-secondary); font-size: 0.95rem; margin-bottom: 10px; }
.gh-friend-state[b-8r6z654uak] { color: var(--text-muted); font-size: 0.82rem; font-weight: 500; margin-left: 6px; }
.gh-invite-open[b-8r6z654uak] { margin-top: 10px; gap: 8px; }
.gh-pick[b-8r6z654uak] { margin-top: 10px; display: flex; flex-direction: column; gap: 4px; }
.gh-pick-row[b-8r6z654uak] {
    display: flex; align-items: center; gap: 12px;
    min-height: var(--touch-target-min);
    padding: 0 12px;
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    background: var(--bg-raised);
    color: var(--text-primary);
    cursor: pointer;
}
.gh-pick-row input[b-8r6z654uak] { width: 22px; height: 22px; accent-color: var(--brand); flex: 0 0 auto; }
.gh-pick-row span[b-8r6z654uak] { overflow-wrap: anywhere; }
.gh-pick .gh-addguest-row[b-8r6z654uak] { margin-top: 8px; }

/* ── Teams (Scramble / Best Ball) ── */
.gh-team-auto[b-8r6z654uak] { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.gh-team-auto .gh-hint[b-8r6z654uak] { margin-top: 0; }

/* Elite team card: identity color, rank circle, and live score once started. */
.gh-team-card[b-8r6z654uak] {
    display: flex; align-items: center; gap: 12px;
    background: var(--gh-accent-soft, var(--bg-raised));
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    padding: 12px 14px;
    margin-bottom: 8px;
}
.gh-team-rank[b-8r6z654uak] {
    flex: 0 0 auto;
    width: 34px; height: 34px; border-radius: 999px;
    background: var(--gh-accent, var(--brand));
    color: var(--bg-surface);
    display: flex; align-items: center; justify-content: center;
    font-weight: 800; font-size: 0.95rem;
}
.gh-team-main[b-8r6z654uak] { flex: 1 1 auto; min-width: 0; }
.gh-team-headline[b-8r6z654uak] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.gh-team-name[b-8r6z654uak] { font-weight: 700; color: var(--text-primary); }
.gh-team-leading[b-8r6z654uak] {
    font-size: var(--font-size-sm); font-weight: 700;
    color: var(--gh-accent-text, var(--text-primary));
    background: color-mix(in srgb, var(--gh-accent) 22%, transparent);
    padding: 2px 9px; border-radius: 999px;
}
.gh-team-memberline[b-8r6z654uak] { color: var(--text-muted); font-size: 0.9rem; margin-top: 2px; }
.gh-team-members[b-8r6z654uak] { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.gh-team-score[b-8r6z654uak] { flex: 0 0 auto; text-align: right; line-height: 1; }
.gh-team-vspar[b-8r6z654uak] { font-weight: 800; font-size: 1.3rem; }
.gh-team-thru[b-8r6z654uak] { color: var(--text-muted); font-size: var(--font-size-sm); margin-top: 4px; }
.gh-score-under[b-8r6z654uak] { color: #86EFAC; }
.gh-score-over[b-8r6z654uak] { color: #FCA5A5; }
.gh-score-even[b-8r6z654uak] { color: var(--text-primary); }
.gh-team-chip[b-8r6z654uak] {
    display: inline-flex; align-items: center; gap: 6px;
    background: var(--brand-soft);
    color: var(--text-primary);
    border-radius: 999px; padding: 5px 10px;
    font-size: 0.9rem;
}
.gh-chip-x[b-8r6z654uak] {
    background: none; border: none; cursor: pointer;
    color: var(--text-muted); font-size: 1.05rem; line-height: 1;
    padding: 0 2px; min-width: 24px; min-height: 24px;
}
.gh-chip-x:hover[b-8r6z654uak] { color: var(--text-primary); }

.gh-unassigned[b-8r6z654uak] { margin-top: 12px; border-top: 1px solid var(--border-subtle); padding-top: 12px; }
.gh-assign-row[b-8r6z654uak] {
    display: flex; gap: 10px; align-items: center; justify-content: space-between;
    flex-wrap: wrap; margin-bottom: 8px;
}
.gh-assign-name[b-8r6z654uak] { font-weight: 600; color: var(--text-primary); }
.gh-assign-actions[b-8r6z654uak] { display: flex; gap: 6px; flex-wrap: wrap; }
.gh-mini-primary[b-8r6z654uak] { border-color: var(--brand-soft); color: var(--brand-text, var(--text-primary)); }
/* /Components/Pages/PlayerPlus/JoinGamePage.razor.rz.scp.css */
/* Join-by-link landing — centered card, works signed-out, dark-first. */

.jg-shell[b-5uk95sglv5] {
    min-height: 100dvh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 16px;
    background: var(--bg-elevated, #0d1117);
}

.jg-card[b-5uk95sglv5] {
    width: 100%;
    max-width: 420px;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 20px;
    padding: 30px 24px;
    text-align: center;
    display: grid;
    gap: 12px;
    justify-items: center;
}

.jg-loading[b-5uk95sglv5] { color: var(--text-muted); padding: 24px 0; }

.jg-badge[b-5uk95sglv5] {
    width: 56px; height: 56px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--text-primary);
    font-size: 1.5rem;
}
.jg-badge-dead[b-5uk95sglv5] { background: var(--bg-raised); color: var(--text-muted); }

.jg-kicker[b-5uk95sglv5] {
    color: var(--text-muted);
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.jg-title[b-5uk95sglv5] { font-size: 1.4rem; margin: 0; color: var(--text-primary); }

.jg-sub[b-5uk95sglv5] { color: var(--text-muted); margin: 0; font-size: 1rem; }

.jg-error[b-5uk95sglv5] {
    width: 100%;
    background: var(--warning-soft);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 10px 14px;
    color: var(--text-primary);
    font-size: 0.95rem;
}

.jg-btn[b-5uk95sglv5] {
    display: inline-flex; align-items: center; justify-content: center;
    width: 100%;
    min-height: 50px;
    border-radius: 12px;
    font-size: 1.02rem; font-weight: 700;
    text-decoration: none; cursor: pointer;
    border: 1px solid transparent;
}
.jg-btn-primary[b-5uk95sglv5] { background: var(--brand); color: #fff; }
.jg-btn-primary:hover[b-5uk95sglv5] { background: var(--brand-hover); }
.jg-btn-primary:disabled[b-5uk95sglv5] { opacity: 0.6; cursor: default; }
.jg-btn-secondary[b-5uk95sglv5] { background: var(--bg-raised); color: var(--text-primary); border-color: var(--border-subtle); }

.jg-fine[b-5uk95sglv5] { color: var(--text-muted); font-size: 0.88rem; margin: 2px 0 0; }
/* /Components/Pages/PlayerPlus/MyGamesPage.razor.rz.scp.css */
/* My Games list — dark-first, big targets. */

.pg-wrap[b-pzof3ok1xn] { max-width: 760px; margin: 0 auto; padding: 16px 16px 48px; }

.pg-empty[b-pzof3ok1xn] { max-width: 560px; margin: 48px auto; text-align: center; color: var(--text-primary); }

.pg-header[b-pzof3ok1xn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 0 16px;
}

.pg-title[b-pzof3ok1xn] { font-size: 1.5rem; margin: 0; color: var(--text-primary); }

.pg-btn[b-pzof3ok1xn] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 48px;
    padding: 0 20px;
    border-radius: 12px;
    font-size: 1rem;
    font-weight: 700;
    text-decoration: none;
    cursor: pointer;
    border: 1px solid transparent;
}

.pg-btn-primary[b-pzof3ok1xn] { background: var(--brand); color: #fff; }
.pg-btn-primary:hover[b-pzof3ok1xn] { background: var(--brand-hover); }
.pg-btn-secondary[b-pzof3ok1xn] { background: var(--bg-raised); color: var(--text-primary); border-color: var(--border-subtle); }

.pg-upsell[b-pzof3ok1xn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    background: var(--bg-surface);
    border: 1px solid var(--brand-soft);
    border-radius: 16px;
    padding: 18px;
    margin-bottom: 18px;
    flex-wrap: wrap;
}

.pg-upsell-title[b-pzof3ok1xn] { font-weight: 700; font-size: 1.1rem; color: var(--text-primary); }
.pg-upsell-sub[b-pzof3ok1xn] { color: var(--text-muted); margin-top: 2px; max-width: 420px; }

.pg-none[b-pzof3ok1xn] {
    text-align: center;
    color: var(--text-muted);
    padding: 48px 16px;
    font-size: 1.05rem;
}
.pg-none i[b-pzof3ok1xn] { font-size: 2rem; display: block; margin-bottom: 8px; }
.pg-none-sub[b-pzof3ok1xn] { font-size: 0.95rem; }

.pg-list[b-pzof3ok1xn] { display: grid; gap: 10px; }

.pg-card[b-pzof3ok1xn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    padding: 16px;
    text-decoration: none;
    min-height: 64px;
}
.pg-card:hover[b-pzof3ok1xn] { border-color: var(--brand-soft); }

.pg-card-name[b-pzof3ok1xn] { font-weight: 700; font-size: 1.05rem; color: var(--text-primary); }
.pg-card-meta[b-pzof3ok1xn] { color: var(--text-muted); font-size: 0.92rem; margin-top: 2px; }

.pg-card-side[b-pzof3ok1xn] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 4px;
    flex: 0 0 auto;
}

.pg-status[b-pzof3ok1xn] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    padding: 2px 10px;
    border-radius: 999px;
    border: 1px solid var(--border-subtle);
    color: var(--text-primary);
}
.pg-status-active[b-pzof3ok1xn] { background: var(--success-soft); }
.pg-status-draft[b-pzof3ok1xn], .pg-status-open[b-pzof3ok1xn] { background: var(--bg-raised); }
.pg-status-closed[b-pzof3ok1xn] { background: var(--bg-raised); color: var(--text-muted); }
/* An Active game whose day has passed: nobody is playing it, but it is not finished either — it is
   waiting on the host. Amber rather than the green "live" pill, which was the whole bug. */
.pg-status-unfinished[b-pzof3ok1xn] { background: var(--warning-soft); }

/* How many people are in the game — a fact a golfer reads, not decoration. The X02 sweep
   matched this on its name (`-count`) and sized it as furniture; pinning the page in
   player-floors.spec.ts caught it. Counts that carry meaning read at the type floor. */
.pg-card-count[b-pzof3ok1xn] { color: var(--text-muted); font-size: var(--font-size-sm); }

.pg-host-chip[b-pzof3ok1xn] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--text-muted);
    border: 1px solid var(--border-subtle);
    padding: 1px 8px;
    border-radius: 999px;
}
/* /Components/Pages/PlayerPlus/NewGamePage.razor.rz.scp.css */
/* New game wizard — one calm page, numbered steps, dark-first. */

.ng-wrap[b-e5fbb4eh8o] { max-width: 640px; margin: 0 auto; padding: 16px 16px 64px; }

.ng-gate[b-e5fbb4eh8o] { max-width: 480px; margin: 48px auto; text-align: center; color: var(--text-primary); display: grid; gap: 12px; justify-items: center; }

.ng-back[b-e5fbb4eh8o] { color: var(--text-muted); text-decoration: none; font-size: 0.95rem; display: inline-flex; gap: 6px; align-items: center; min-height: 40px; }
.ng-back:hover[b-e5fbb4eh8o] { color: var(--text-primary); }

.ng-title[b-e5fbb4eh8o] { font-size: 1.5rem; margin: 4px 0 14px; color: var(--text-primary); }

.ng-error[b-e5fbb4eh8o] {
    display: flex; gap: 10px; align-items: center;
    background: var(--warning-soft);
    border: 1px solid var(--border-subtle);
    border-radius: 12px; padding: 12px 14px; margin-bottom: 14px;
    color: var(--text-primary);
}

.ng-challenge[b-e5fbb4eh8o] {
    display: flex; gap: 10px; align-items: center;
    background: var(--bg-raised);
    border: 1px solid var(--brand-soft);
    border-radius: 12px; padding: 12px 14px; margin-bottom: 18px;
    color: var(--text-primary);
}

.ng-section[b-e5fbb4eh8o] { margin-bottom: 22px; }

.ng-label[b-e5fbb4eh8o] { font-weight: 700; color: var(--text-primary); margin-bottom: 10px; font-size: 1.02rem; }
.ng-sublabel[b-e5fbb4eh8o] { font-weight: 600; color: var(--text-muted); margin: 12px 0 8px; }

.ng-formats[b-e5fbb4eh8o] { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 560px) { .ng-formats[b-e5fbb4eh8o] { grid-template-columns: 1fr; } }

.ng-format[b-e5fbb4eh8o] {
    display: grid; gap: 4px; text-align: left;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 14px; padding: 14px;
    cursor: pointer; min-height: 72px;
    color: var(--text-primary);
}
.ng-format-on[b-e5fbb4eh8o] { border-color: var(--brand-soft); background: var(--bg-raised); box-shadow: 0 0 0 1px var(--brand-soft) inset; }
.ng-format-name[b-e5fbb4eh8o] { font-weight: 800; font-size: 1.02rem; }
.ng-format-blurb[b-e5fbb4eh8o] { color: var(--text-muted); font-size: 0.88rem; }

.ng-input[b-e5fbb4eh8o] {
    width: 100%;
    min-height: 48px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    color: var(--text-primary);
    padding: 0 14px;
    font-size: 1rem;
}
.ng-input:focus[b-e5fbb4eh8o] { outline: none; border-color: var(--brand-soft); }
.ng-date[b-e5fbb4eh8o] { max-width: 220px; }

.ng-hint[b-e5fbb4eh8o] { color: var(--text-muted); font-size: 0.9rem; margin-top: 8px; }
.ng-center[b-e5fbb4eh8o] { text-align: center; }

.ng-results[b-e5fbb4eh8o] { display: grid; gap: 8px; margin-top: 10px; }

.ng-result[b-e5fbb4eh8o] {
    display: flex; justify-content: space-between; gap: 10px; align-items: center;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 12px; padding: 12px 14px;
    cursor: pointer; min-height: 52px; text-align: left;
    color: var(--text-primary);
}
.ng-result:hover[b-e5fbb4eh8o] { border-color: var(--brand-soft); }
.ng-result-name[b-e5fbb4eh8o] { font-weight: 600; }
.ng-result-loc[b-e5fbb4eh8o] { color: var(--text-muted); font-size: 0.9rem; flex: 0 0 auto; }

.ng-picked[b-e5fbb4eh8o] {
    display: flex; justify-content: space-between; align-items: center; gap: 12px;
    background: var(--bg-raised);
    border: 1px solid var(--brand-soft);
    border-radius: 12px; padding: 12px 14px;
}
.ng-picked-name[b-e5fbb4eh8o] { font-weight: 700; color: var(--text-primary); }
.ng-picked-loc[b-e5fbb4eh8o] { color: var(--text-muted); font-size: 0.9rem; }
.ng-change[b-e5fbb4eh8o] { background: none; border: none; color: var(--text-muted); text-decoration: underline; cursor: pointer; min-height: 40px; }

.ng-tees[b-e5fbb4eh8o] { display: flex; flex-wrap: wrap; gap: 8px; }
.ng-tee[b-e5fbb4eh8o] {
    min-height: 44px; padding: 0 16px;
    border-radius: 999px;
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    color: var(--text-primary);
    cursor: pointer; font-size: 0.95rem;
}
.ng-tee-on[b-e5fbb4eh8o] { border-color: var(--brand-soft); background: var(--bg-raised); box-shadow: 0 0 0 1px var(--brand-soft) inset; }

.ng-money[b-e5fbb4eh8o] { display: flex; align-items: center; gap: 10px; }
.ng-money-prefix[b-e5fbb4eh8o], .ng-money-suffix[b-e5fbb4eh8o] { color: var(--text-primary); font-weight: 600; }
.ng-money-input[b-e5fbb4eh8o] { max-width: 120px; text-align: right; }

.ng-toggle[b-e5fbb4eh8o] {
    display: flex; align-items: center; gap: 10px;
    margin-top: 14px; color: var(--text-primary); cursor: pointer;
    min-height: 44px; font-size: 1rem;
}
.ng-toggle input[b-e5fbb4eh8o] { width: 20px; height: 20px; }

.ng-btn[b-e5fbb4eh8o] {
    display: inline-flex; align-items: center; justify-content: center;
    min-height: 50px; padding: 0 22px;
    border-radius: 12px; font-size: 1.05rem; font-weight: 700;
    cursor: pointer; text-decoration: none; border: 1px solid transparent;
}
.ng-btn-primary[b-e5fbb4eh8o] { background: var(--brand); color: #fff; }
.ng-btn-primary:hover[b-e5fbb4eh8o] { background: var(--brand-hover); }
.ng-btn-primary:disabled[b-e5fbb4eh8o] { opacity: 0.55; cursor: default; }
.ng-btn-secondary[b-e5fbb4eh8o] { background: var(--bg-raised); color: var(--text-primary); border-color: var(--border-subtle); }

.ng-create[b-e5fbb4eh8o] { width: 100%; margin-top: 6px; }
/* /Components/Pages/PlayerPlus/PlayerPlusPage.razor.rz.scp.css */
/* Player+ upgrade/manage page — dark-first, token-based, grandmother-readable. */

.pp-wrap[b-wxyd3bkr7s] {
    max-width: 760px;
    margin: 0 auto;
    padding: 16px 16px 48px;
}

.pp-empty[b-wxyd3bkr7s] {
    max-width: 560px;
    margin: 48px auto;
    text-align: center;
    color: var(--text-primary);
}

/* ── Hero ── */
.pp-hero[b-wxyd3bkr7s] { text-align: center; padding: 24px 8px 8px; }

.pp-hero-badge[b-wxyd3bkr7s] {
    display: inline-block;
    padding: 4px 14px;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--text-primary);
    font-weight: 700;
    letter-spacing: 0.12em;
    font-size: var(--font-size-chip);
}

.pp-hero-title[b-wxyd3bkr7s] {
    margin: 14px 0 8px;
    font-size: 1.7rem;
    line-height: 1.25;
    color: var(--text-primary);
}

.pp-hero-sub[b-wxyd3bkr7s] {
    color: var(--text-muted);
    font-size: 1.05rem;
    max-width: 540px;
    margin: 0 auto;
}

/* ── Banners ── */
.pp-banner[b-wxyd3bkr7s] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 16px 0;
    padding: 12px 16px;
    border-radius: 12px;
    font-size: 1rem;
    color: var(--text-primary);
    border: 1px solid var(--border-subtle);
}
.pp-banner-info[b-wxyd3bkr7s] { background: var(--bg-raised); }
.pp-banner-warn[b-wxyd3bkr7s] { background: var(--warning-soft); }

.pp-link[b-wxyd3bkr7s] {
    background: none;
    border: none;
    color: var(--text-primary);
    text-decoration: underline;
    cursor: pointer;
    font-size: 1rem;
    padding: 4px 8px;
    min-height: 32px;
}

/* ── Cards ── */
.pp-card[b-wxyd3bkr7s] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 20px;
}

.pp-prices[b-wxyd3bkr7s] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px;
    margin-top: 18px;
}

@media (max-width: 640px) {
    .pp-prices[b-wxyd3bkr7s] { grid-template-columns: 1fr; }
}

.pp-price-card[b-wxyd3bkr7s] { text-align: center; position: relative; }

.pp-price-best[b-wxyd3bkr7s] { border-color: var(--brand-soft); }

.pp-price-flag[b-wxyd3bkr7s] {
    position: absolute;
    top: -12px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--brand-soft);
    color: var(--text-primary);
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    padding: 3px 12px;
    white-space: nowrap;
}

.pp-price-name[b-wxyd3bkr7s] { color: var(--text-muted); font-weight: 600; margin-bottom: 4px; }

.pp-price-amount[b-wxyd3bkr7s] {
    font-size: 2rem;
    font-weight: 800;
    color: var(--text-primary);
}

.pp-price-per[b-wxyd3bkr7s] { font-size: 1rem; font-weight: 500; color: var(--text-muted); }

.pp-price-perks[b-wxyd3bkr7s] {
    list-style: none;
    padding: 0;
    margin: 14px 0 18px;
    color: var(--text-primary);
    font-size: 0.98rem;
    display: grid;
    gap: 6px;
}

/* ── Buttons (48px touch targets) ── */
.pp-btn[b-wxyd3bkr7s] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 48px;
    padding: 0 22px;
    border-radius: 12px;
    font-size: 1.02rem;
    font-weight: 700;
    cursor: pointer;
    text-decoration: none;
    border: 1px solid transparent;
    width: 100%;
}

.pp-btn-primary[b-wxyd3bkr7s] {
    background: var(--brand);
    color: #fff;
}
.pp-btn-primary:hover[b-wxyd3bkr7s] { background: var(--brand-hover); }
.pp-btn-primary:disabled[b-wxyd3bkr7s] { opacity: 0.6; cursor: default; }

.pp-btn-secondary[b-wxyd3bkr7s] {
    background: var(--bg-raised);
    color: var(--text-primary);
    border-color: var(--border-subtle);
}

/* ── Active state ── */
.pp-active-card[b-wxyd3bkr7s] { margin-top: 18px; }

.pp-active-row[b-wxyd3bkr7s] { display: flex; gap: 14px; align-items: flex-start; }

.pp-active-check[b-wxyd3bkr7s] { font-size: 1.6rem; color: var(--text-primary); }

.pp-active-title[b-wxyd3bkr7s] { font-size: 1.15rem; font-weight: 700; color: var(--text-primary); }

.pp-active-sub[b-wxyd3bkr7s] { color: var(--text-muted); margin-top: 2px; }

.pp-pastdue[b-wxyd3bkr7s] { color: var(--text-primary); }

.pp-active-actions[b-wxyd3bkr7s] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
    margin-top: 16px;
}

@media (max-width: 520px) {
    .pp-active-actions[b-wxyd3bkr7s] { grid-template-columns: 1fr; }
}

/* ── Free-week (no-card trial) ── */
.pp-trial-card[b-wxyd3bkr7s] { text-align: center; margin-top: 18px; }

.pp-trial-badge[b-wxyd3bkr7s] {
    display: inline-block;
    padding: 4px 14px;
    border-radius: 999px;
    background: var(--brand-soft);
    color: var(--text-primary);
    font-weight: 700;
    font-size: var(--font-size-chip);
}

.pp-trial-title[b-wxyd3bkr7s] {
    margin: 12px 0 6px;
    font-size: 1.4rem;
    color: var(--text-primary);
}

.pp-trial-card .pp-price-perks[b-wxyd3bkr7s] { justify-items: center; }

.pp-btn-lg[b-wxyd3bkr7s] { min-height: 54px; font-size: 1.08rem; }

/* ── Keep hosting (trial → paid) ── */
.pp-keep[b-wxyd3bkr7s] {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid var(--border-subtle);
}

.pp-keep-title[b-wxyd3bkr7s] {
    color: var(--text-primary);
    font-weight: 600;
    margin-bottom: 10px;
}

.pp-keep-actions[b-wxyd3bkr7s] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px;
}

@media (max-width: 520px) {
    .pp-keep-actions[b-wxyd3bkr7s] { grid-template-columns: 1fr; }
}

.pp-keep .pp-fineprint[b-wxyd3bkr7s] { margin-top: 10px; }

/* ── How it works ── */
.pp-how[b-wxyd3bkr7s] { margin-top: 34px; }

.pp-how-title[b-wxyd3bkr7s] { font-size: 1.15rem; color: var(--text-primary); margin-bottom: 12px; }

.pp-how-grid[b-wxyd3bkr7s] { display: grid; gap: 10px; }

.pp-how-step[b-wxyd3bkr7s] {
    display: flex;
    gap: 12px;
    align-items: center;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    border-radius: 12px;
    padding: 12px 14px;
    color: var(--text-primary);
    font-size: 1rem;
}

.pp-how-num[b-wxyd3bkr7s] {
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 999px;
    background: var(--brand-soft);
    font-weight: 800;
}

.pp-fineprint[b-wxyd3bkr7s] {
    color: var(--text-muted);
    font-size: 0.9rem;
    text-align: center;
    margin-top: 12px;
}
/* /Components/Pages/PlayerPlus/WatchGamePage.razor.rz.scp.css */
/* No-account spectator view — full-bleed, dark, works signed-out. */

.wg-shell[b-ogrskxzbev] {
    min-height: 100dvh;
    background: var(--bg-elevated, #0d1117);
    padding: 16px;
}

.wg-inner[b-ogrskxzbev] { max-width: 680px; margin: 0 auto; }

.wg-loading[b-ogrskxzbev] { color: var(--text-muted); text-align: center; padding: 60px 0; }

.wg-dead[b-ogrskxzbev] { text-align: center; color: var(--text-primary); padding: 48px 16px; display: grid; gap: 10px; justify-items: center; }
.wg-badge[b-ogrskxzbev] {
    width: 56px; height: 56px; border-radius: 999px;
    display: flex; align-items: center; justify-content: center;
    background: var(--bg-raised); color: var(--text-muted); font-size: 1.5rem;
}
.wg-cta[b-ogrskxzbev], .wg-join[b-ogrskxzbev] {
    display: inline-flex; align-items: center; justify-content: center;
    min-height: 48px; padding: 0 20px; border-radius: 12px;
    background: var(--brand); color: #fff;
    text-decoration: none; font-weight: 700;
}

.wg-foot[b-ogrskxzbev] { text-align: center; margin-top: 18px; display: grid; gap: 12px; justify-items: center; }
.wg-livenote[b-ogrskxzbev] { color: var(--text-muted); display: inline-flex; align-items: center; gap: 8px; }
.wg-dot[b-ogrskxzbev] { width: 8px; height: 8px; border-radius: 999px; background: #36d399; display: inline-block; }
.wg-join[b-ogrskxzbev] { background: var(--bg-surface); border: 1px solid var(--border-subtle); }
/* /Components/Pages/Players/Create.razor.rz.scp.css */
/* Extracted inline styles (Blazor audit Batch G). */
.pc-container[b-qk4498vwa7] { max-width: 640px; }
.pc-flex-grow[b-qk4498vwa7] { flex: 1; }
/* /Components/Pages/Players/Detail.razor.rz.scp.css */
/* ================================================================
   PLAYER DETAIL — scoped styles
   Tab bar + tournament history cards
================================================================ */

/* ── Tab Bar ─────────────────────────────────────────────────── */

.player-tabs[b-r2g50hiesu] {
    display: flex;
    gap: 2px;
    border-bottom: 2px solid var(--b9-border);
    margin-bottom: 1.25rem;
}

.player-tab[b-r2g50hiesu] {
    background: none;
    border: none;
    padding: 0.5rem 1.125rem 0.625rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--b9-text-muted);
    cursor: pointer;
    position: relative;
    border-radius: 0;
    transition: color 0.14s ease;
    display: flex;
    align-items: center;
    gap: 4px;
}

.player-tab:hover[b-r2g50hiesu] {
    color: var(--b9-text);
}

.player-tab.active[b-r2g50hiesu] {
    color: var(--b9-primary-text);
}

.player-tab.active[b-r2g50hiesu]::after {
    content: '';
    position: absolute;
    bottom: -2px;
    left: 0;
    right: 0;
    height: 2px;
    background: var(--b9-primary);
    border-radius: 2px 2px 0 0;
}

.tab-count[b-r2g50hiesu] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    margin-left: 2px;
}

/* ── History Summary Chips ───────────────────────────────────── */

.history-summary[b-r2g50hiesu] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.stat-chip[b-r2g50hiesu] {
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 8px;
    padding: 0.35rem 0.875rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted);
    line-height: 1.5;
}

.stat-chip strong[b-r2g50hiesu] {
    color: var(--b9-text);
    font-weight: 700;
}

/* ── History Event Cards ─────────────────────────────────────── */

.history-card[b-r2g50hiesu] {
    background: var(--b9-card-bg);
    border: 1px solid var(--b9-card-border);
    border-radius: var(--b9-card-radius);
    padding: 0.875rem 1.125rem;
    margin-bottom: 0.5rem;
    box-shadow: var(--b9-card-shadow);
    transition: box-shadow 0.14s ease;
}

.history-card:hover[b-r2g50hiesu] {
    box-shadow: var(--b9-card-shadow-md);
}

.hc-top[b-r2g50hiesu] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.3rem;
    flex-wrap: wrap;
}

.hc-event-name[b-r2g50hiesu] {
    font-size: 0.9375rem;
    font-weight: 700;
    color: var(--b9-text);
    line-height: 1.3;
    flex: 1 1 200px;
}

.hc-badges[b-r2g50hiesu] {
    display: flex;
    gap: 0.3rem;
    flex-wrap: wrap;
    flex-shrink: 0;
}

/* Base badge */
.hc-badge[b-r2g50hiesu] {
    display: inline-block;
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: 0.2em 0.55em;
    border-radius: 5px;
    line-height: 1.4;
}

.badge-fmt[b-r2g50hiesu] {
    background: var(--b9-info-soft);
    color: var(--b9-info-text);
}

.badge-status-draft[b-r2g50hiesu]     { background: var(--b9-warning-soft);  color: var(--b9-warning-text); }
.badge-status-open[b-r2g50hiesu]      { background: var(--b9-primary-soft);  color: var(--b9-primary-text); }
.badge-status-active[b-r2g50hiesu]    { background: var(--b9-success-soft);  color: var(--b9-success-text); }
.badge-status-closed[b-r2g50hiesu]    { background: var(--b9-surface-muted); color: var(--b9-text-muted);   }
.badge-status-cancelled[b-r2g50hiesu] { background: var(--b9-danger-soft);   color: var(--b9-danger-text);  }

/* ── Meta row ────────────────────────────────────────────────── */

.hc-meta[b-r2g50hiesu] {
    display: flex;
    gap: 1rem;
    font-size: var(--font-size-sm);
    color: var(--b9-text-soft);
    margin-bottom: 0.5rem;
    flex-wrap: wrap;
}

/* ── Bottom row: scores + leaderboard link ───────────────────── */

.hc-bottom[b-r2g50hiesu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.hc-scores[b-r2g50hiesu] {
    display: flex;
    gap: 0.3rem;
    flex-wrap: wrap;
    align-items: center;
}

.round-score-pill[b-r2g50hiesu] {
    background: var(--b9-surface-muted);
    border: 1px solid var(--b9-border);
    border-radius: 6px;
    padding: 0.2rem 0.55rem;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-text-muted);
}

.round-total-pill[b-r2g50hiesu] {
    background: var(--b9-primary-soft);
    border: 1px solid transparent;
    border-radius: 6px;
    padding: 0.2rem 0.6rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--b9-primary-text);
}

.hc-link[b-r2g50hiesu] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
}

.hc-link:hover[b-r2g50hiesu] {
    text-decoration: underline;
}

/* ── Empty state ─────────────────────────────────────────────── */

.history-empty[b-r2g50hiesu] {
    text-align: center;
    padding: 3.5rem 1rem;
    color: var(--b9-text-muted);
}

.history-empty .bi[b-r2g50hiesu] {
    font-size: 2.5rem;
    display: block;
    margin-bottom: 0.875rem;
    opacity: 0.35;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.pd-container[b-r2g50hiesu] { max-width: 680px; }

/* Read-only B9 Player ID field (indigo tint, one-off) */
.pd-b9id-input[b-r2g50hiesu] {
    letter-spacing: .06em;
    background: rgba(99,102,241,.07);
    color: #818cf8;
    border-color: rgba(99,102,241,.3);
}

/* !important needed to beat Bootstrap .border-0 on the card */
.pd-callout-info[b-r2g50hiesu] { border-left: 4px solid var(--b9-info) !important; }
.pd-callout-warning[b-r2g50hiesu] { border-left: 4px solid var(--b9-warning) !important; }

.pd-divider[b-r2g50hiesu] { border-color: #e2e8f0; }

.pd-btn-xs[b-r2g50hiesu] { font-size: var(--font-size-sm); }
.pd-flex-grow[b-r2g50hiesu] { flex: 1; min-width: 200px; }
.pd-note-xs[b-r2g50hiesu] { font-size: var(--font-size-sm); }
/* /Components/Pages/Players/HandicapImport.razor.rz.scp.css */
/* ── Top Bar ─────────────────────────────────────────────────────────────── */

.hm-bar[b-md8o33xxb9] {
    position: sticky;
    top: 0;
    z-index: 100;
    background: var(--b9-surface-alt);
    border-bottom: 1px solid var(--b9-border);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding: 0.75rem 1.25rem;
}

.hm-bar-left[b-md8o33xxb9] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    min-width: 0;
}

.hm-bar-right[b-md8o33xxb9] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-shrink: 0;
}

.hm-back[b-md8o33xxb9] {
    flex-shrink: 0;
}

.hm-title[b-md8o33xxb9] {
    font-size: 1.125rem;
    font-weight: 700;
    margin: 0;
    color: var(--b9-text);
    line-height: 1.3;
}

/* ── Stats Strip ────────────────────────────────────────────────────────── */

.hm-stats[b-md8o33xxb9] {
    display: flex;
    gap: 0.625rem;
    flex-wrap: wrap;
}

.hm-stat[b-md8o33xxb9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--b9-surface-alt);
    border: 1px solid var(--b9-border);
    border-radius: 10px;
    padding: 0.625rem 1.125rem;
    min-width: 90px;
    box-shadow: var(--b9-card-shadow);
}

.hm-stat-val[b-md8o33xxb9] {
    font-size: 1.5rem;
    font-weight: 800;
    line-height: 1.1;
    color: var(--b9-text);
}

.hm-stat-lbl[b-md8o33xxb9] {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--b9-text-muted);
    margin-top: 2px;
    white-space: nowrap;
}

/* The three big numbers at the top of the page were written in the status FILLS. On the white
   stat card that is 2.28:1 for the green count and 2.15:1 for the amber one — a headline number
   an admin is meant to read across the room. The -text twins are the same three hues said as
   writing, and they resolve to the fills' pale forms in dark, so the card keeps its colour. */
.hm-stat-success .hm-stat-val[b-md8o33xxb9] { color: var(--b9-success-text); }
.hm-stat-warning .hm-stat-val[b-md8o33xxb9] { color: var(--b9-warning-text); }
.hm-stat-danger  .hm-stat-val[b-md8o33xxb9] { color: var(--b9-danger-text);  }
.hm-stat-muted   .hm-stat-val[b-md8o33xxb9] { color: var(--b9-text-soft); }

/* ── CSV Import Panel ───────────────────────────────────────────────────── */

.hm-csv-panel[b-md8o33xxb9] {
    background: var(--b9-surface-alt);
    border: 1px solid var(--b9-primary-soft);
    border-radius: var(--b9-card-radius);
    box-shadow: var(--b9-card-shadow-md);
    overflow: hidden;
}

.hm-csv-header[b-md8o33xxb9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.875rem 1.25rem;
    background: var(--b9-primary-soft);
    border-bottom: 1px solid var(--b9-border);
}

.hm-csv-body[b-md8o33xxb9] {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.875rem;
}

.hm-csv-instructions[b-md8o33xxb9] {
    background: var(--b9-surface-muted);
    border-radius: 8px;
    padding: 0.875rem 1rem;
    font-size: 0.875rem;
}

.hm-csv-format[b-md8o33xxb9] {
    display: inline-block;
    background: var(--b9-dark-surface-raise);
    color: var(--b9-accent-green);
    padding: 0.25rem 0.625rem;
    border-radius: 6px;
    font-size: 0.8rem;
    letter-spacing: 0.03em;
}

.hm-csv-textarea[b-md8o33xxb9] {
    font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace;
    font-size: 0.8125rem;
    min-height: 120px;
    resize: vertical;
    background: var(--b9-surface-muted);
    border-color: var(--b9-border);
}

.hm-csv-textarea:focus[b-md8o33xxb9] {
    background: var(--b9-surface-alt);
    border-color: var(--b9-primary);
    box-shadow: 0 0 0 0.2rem rgba(30, 64, 175, 0.15);
}

.hm-csv-actions[b-md8o33xxb9] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.hm-csv-preview[b-md8o33xxb9] {
    border-top: 1px solid var(--b9-border);
}

.hm-csv-preview-header[b-md8o33xxb9] {
    padding: 0.625rem 1.25rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--b9-text-muted);
    background: var(--b9-surface-muted);
}

.hm-csv-apply[b-md8o33xxb9] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-top: 1px solid var(--b9-border);
    background: var(--b9-surface-muted);
    flex-wrap: wrap;
}

/* ── Roster Table ───────────────────────────────────────────────────────── */

.hm-table th[b-md8o33xxb9],
.hm-table td[b-md8o33xxb9] {
    vertical-align: middle;
}

.hm-table .col-ghin[b-md8o33xxb9]    { width: 140px; }
.hm-table .col-hcp[b-md8o33xxb9]     { width: 130px; }
.hm-table .col-updated[b-md8o33xxb9] { width: 140px; }
.hm-table .col-save[b-md8o33xxb9]    { width: 80px;  text-align: right; }

.hm-player-link[b-md8o33xxb9] {
    color: var(--b9-text);
}

.hm-player-link:hover[b-md8o33xxb9] {
    color: var(--b9-primary-text);
}

.hm-dirty-dot[b-md8o33xxb9] {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--b9-warning);
    margin-left: 6px;
    vertical-align: middle;
}

.hm-row-dirty[b-md8o33xxb9] {
    background: var(--b9-warning-soft) !important;
}

.hm-ghin-input[b-md8o33xxb9] {
    font-family: 'SFMono-Regular', Consolas, monospace;
    font-size: 0.8125rem;
    letter-spacing: 0.06em;
    max-width: 120px;
}

.hm-hcp-input[b-md8o33xxb9] {
    text-align: center;
    font-weight: 600;
    max-width: 90px;
}

.hm-input-changed[b-md8o33xxb9] {
    border-color: var(--b9-primary) !important;
    background: var(--b9-primary-soft) !important;
}

.hm-save-row-btn[b-md8o33xxb9] {
    white-space: nowrap;
    min-width: 56px;
}

/* ── Freshness badges ───────────────────────────────────────────────────── */

.hm-freshness[b-md8o33xxb9] {
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

/* Same defect, once per row: "48d ago" in the amber fill measured 2.04:1 on the light table
   and "No date" in the red fill 3.57:1, on a 1,229-row roster. */
.hf-fresh[b-md8o33xxb9]  { color: var(--b9-success-text); }
.hf-recent[b-md8o33xxb9] { color: var(--b9-text-soft); }
.hf-aging[b-md8o33xxb9]  { color: var(--b9-warning-text); }
.hf-stale[b-md8o33xxb9]  { color: var(--b9-danger-text);  }
.hf-never[b-md8o33xxb9]  { color: var(--b9-text-soft); font-style: italic; font-weight: 400; }

/* ── Responsive ─────────────────────────────────────────────────────────── */

@media (max-width: 640px) {
    .hm-stats[b-md8o33xxb9] {
        gap: 0.5rem;
    }

    .hm-stat[b-md8o33xxb9] {
        min-width: 72px;
        padding: 0.5rem 0.75rem;
    }

    .hm-stat-val[b-md8o33xxb9] {
        font-size: 1.25rem;
    }

    .hm-table .col-updated[b-md8o33xxb9] { display: none; }
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.hi-td-fit[b-md8o33xxb9] { width: 1%; }
/* /Components/Pages/Players/Import.razor.rz.scp.css */
.pi-csv-example-wrap[b-erd4opn80k] {
    width: 100%;
}

.pi-csv-example-label[b-erd4opn80k] {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: 0.5rem;
}

.pi-csv-example-surface[b-erd4opn80k] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 20px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    line-height: 1.6;
    overflow-x: auto;
}

.pi-csv-example-head[b-erd4opn80k] {
    color: var(--text-primary);
    font-weight: 600;
}

.pi-csv-example-row[b-erd4opn80k] {
    color: var(--text-secondary);
}

.pi-csv-help[b-erd4opn80k] {
    color: var(--text-secondary);
    font-size: 0.875rem;
}

.pi-csv-help-line[b-erd4opn80k] {
    margin: 0;
}

.pi-csv-help-heading[b-erd4opn80k] {
    margin: 0.45rem 0 0.2rem;
    color: var(--text-primary);
    font-weight: 700;
}

.pi-csv-help-list[b-erd4opn80k] {
    margin: 0 0 0.25rem 1.1rem;
    padding: 0;
}

.pi-csv-help-list li[b-erd4opn80k] {
    margin: 0;
}

.pi-preview-card[b-erd4opn80k] {
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
}

.pi-preview-header[b-erd4opn80k] {
    color: var(--text-primary);
}

.pi-preview-header .badge[b-erd4opn80k] {
    font-weight: 700;
}

.pi-preview-table-wrap[b-erd4opn80k] {
    overflow-x: auto;
}

.pi-preview-table[b-erd4opn80k] {
    color: var(--text-primary);
    margin-bottom: 0;
}

.pi-preview-table thead th[b-erd4opn80k] {
    color: var(--text-primary);
    font-weight: 700;
    background: var(--bg-surface);
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.pi-preview-table tbody td[b-erd4opn80k] {
    color: var(--text-primary);
    background: transparent;
    border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

.pi-preview-secondary[b-erd4opn80k] {
    color: var(--text-secondary) !important;
}

.pi-name-cell[b-erd4opn80k] {
    color: var(--text-primary) !important;
    font-weight: 600;
}

.pi-preview-row:hover td[b-erd4opn80k] {
    background: rgba(255, 255, 255, 0.03);
}

.pi-handicap-badge[b-erd4opn80k] {
    background: var(--bg-surface);
    color: var(--text-primary);
    border: 1px solid var(--border-subtle);
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.pi-container[b-erd4opn80k] { max-width: 900px; }
.pi-th-num[b-erd4opn80k] { width: 40px; }
/* /Components/Pages/Players/Index.razor.rz.scp.css */
/* Players index page-level consistency (Phase 3U) */

.pl-page-header[b-j9jbzs7oiw] {
  margin-bottom: 1.25rem;
}

.pl-page-header-copy[b-j9jbzs7oiw] {
  display: flex;
  flex-direction: column;
  gap: 0.25rem;
}

.pl-page-subtitle[b-j9jbzs7oiw] {
  font-size: 0.95rem;
  color: var(--b9-text-soft);
  max-width: 42rem;
}

.pl-empty-card[b-j9jbzs7oiw] {
  border: 1px solid var(--b9-border) !important;
  background: var(--b9-surface);
  border-radius: 12px;
}

.pl-empty-body[b-j9jbzs7oiw] {
  max-width: 560px;
  margin: 0 auto;
}

.pl-empty-icon[b-j9jbzs7oiw] {
  font-size: 2.5rem !important;
  color: var(--b9-text-soft) !important;
}

.pl-empty-title[b-j9jbzs7oiw] {
  font-size: 1.2rem;
  font-weight: 700;
  color: var(--b9-text);
  margin-bottom: 0.45rem;
}

.pl-empty-text[b-j9jbzs7oiw] {
  font-size: 0.95rem;
  color: var(--b9-text-soft);
  margin: 0 auto 1rem;
  max-width: 34rem;
}

.pl-empty-action[b-j9jbzs7oiw] {
  min-width: 140px;
}

/* Keep roster player identity line readable in dark and light themes. */
.roster-player-name[b-j9jbzs7oiw] {
  color: var(--text-primary);
  font-weight: 600;
  line-height: 1.2;
}

.roster-player-meta[b-j9jbzs7oiw] {
  color: var(--text-muted);
  font-size: 0.875rem;
  line-height: 1.35;
  margin-top: 0.2rem;
}

/* ── Dark-shell contrast locks (Phase 3AC) ──────────────────────────────── */

.pl-roster-head th[b-j9jbzs7oiw] {
  background: var(--bg-elevated, #111827) !important;
  color: var(--text-primary, #F3F6FB) !important;
  border-bottom: 1px solid var(--border-subtle, #1E3A52) !important;
}

.pl-search-icon[b-j9jbzs7oiw] {
  background: var(--bg-raised, #1E293B) !important;
  color: var(--text-muted, #9FB0C4) !important;
  border-color: var(--border-subtle, #1E3A52) !important;
}

.pl-hcp-badge[b-j9jbzs7oiw] {
  background: var(--bg-raised, #1E293B) !important;
  color: var(--text-primary, #F3F6FB) !important;
  border: 1px solid var(--border-default, #2D4A6A) !important;
}

.pl-utility-actions[b-j9jbzs7oiw] {
  border-right: 1px solid var(--border-subtle, #1E3A52);
  padding-right: 0.5rem;
  margin-right: 0.25rem;
}

.pl-utility-actions .btn[b-j9jbzs7oiw] {
  min-height: 48px;
  min-width: 48px;
  padding: 0.55rem 0.9rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.25;
  font-size: var(--font-size-base, 1rem);
  white-space: nowrap;
}

/* Merge row button — muted/secondary appearance so it doesn't compete with Edit */
.pl-row-merge-action[b-j9jbzs7oiw] {
  min-width: 40px;
  min-height: 40px;
  padding: 0.45rem 0.65rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  color: var(--text-muted, #9FB0C4);
  border-color: var(--border-subtle, #1E3A52);
  background: transparent;
}
.pl-row-merge-action:hover[b-j9jbzs7oiw] {
  color: var(--warning, #f59e0b);
  border-color: var(--warning, #f59e0b);
  background: color-mix(in srgb, var(--warning, #f59e0b) 10%, transparent);
}

/* Players row action touch target: keep table dense but make Edit safely tappable.

   The three colours below were typed for a near-black page: #93c5fd is the pale blue that
   reads on charcoal, and rgba(15,23,42,0.42) is a wash of the dark page ground. On a white
   table row that wash composites to a mid grey and the pale blue on it measured 1.56:1 — on
   every Edit button in the roster, 50 of them at a time. The ink is written through the token
   that already answers this per theme, and #93c5fd IS what that token resolves to in dark, so
   dark keeps the colour it shipped with.

   The wash goes rather than being made theme-aware: composited over the dark page ground it
   is rgb(8,13,31) against rgb(2,6,23), a difference nobody can see, and every other outline
   button in the app is transparent at rest. It was only ever visible as the defect. */
.pl-row-edit-action[b-j9jbzs7oiw] {
  min-width: 48px;
  min-height: 48px;
  padding: 0.55rem 0.9rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  line-height: 1.25;
  font-size: var(--font-size-base, 1rem);
  font-weight: 600;
  color: var(--b9-primary-text);
  border-color: var(--b9-primary-text);
  background: transparent;
}

.pl-row-edit-action:hover[b-j9jbzs7oiw] {
  border-color: var(--b9-primary, #2563eb);
  background: color-mix(in srgb, var(--b9-primary, #2563eb) 12%, transparent);
}

.pl-row-edit-action:focus-visible[b-j9jbzs7oiw] {
  outline: 2px solid var(--b9-primary, #2563eb);
  outline-offset: 2px;
  box-shadow: 0 0 0 3px color-mix(in srgb, var(--b9-primary, #2563eb) 26%, transparent);
}

/* ── Player Merge Modal (pm-*) ─────────────────────────────────────────── */

.pm-overlay[b-j9jbzs7oiw] {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.65);
  z-index: 1050;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1rem;
}

.pm-dialog[b-j9jbzs7oiw] {
  background: var(--bg-elevated, #1E293B);
  border: 1px solid var(--border-default, #2D4A6A);
  border-radius: 12px;
  width: 100%;
  max-width: 540px;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.55);
}

.pm-dialog-header[b-j9jbzs7oiw] {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1rem 1.25rem;
  border-bottom: 1px solid var(--border-subtle, #1E3A52);
}

.pm-dialog-title[b-j9jbzs7oiw] {
  font-size: 1.1rem;
  font-weight: 700;
  color: var(--text-primary, #F3F6FB);
}

.pm-dialog-close[b-j9jbzs7oiw] {
  background: none;
  border: none;
  font-size: 1.5rem;
  line-height: 1;
  color: var(--text-muted, #9FB0C4);
  cursor: pointer;
  padding: 0.25rem 0.5rem;
  border-radius: 6px;
  transition: color 0.15s, background 0.15s;
}
.pm-dialog-close:hover[b-j9jbzs7oiw] {
  color: var(--text-primary, #F3F6FB);
  background: var(--bg-raised, #2D3748);
}

.pm-dialog-body[b-j9jbzs7oiw] {
  padding: 1.25rem;
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.pm-dialog-footer[b-j9jbzs7oiw] {
  padding: 1rem 1.25rem;
  border-top: 1px solid var(--border-subtle, #1E3A52);
  display: flex;
  justify-content: flex-end;
  gap: 0.75rem;
  flex-wrap: wrap;
}

/* Source card (shown in step 1 to remind admin who is being deleted) */
.pm-source-card[b-j9jbzs7oiw] {
  background: color-mix(in srgb, var(--danger, #ef4444) 10%, transparent);
  border: 1px solid var(--danger, #ef4444);
  border-radius: 8px;
  padding: 0.75rem 1rem;
}

.pm-badge[b-j9jbzs7oiw] {
  font-size: var(--font-size-chip);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  padding: 0.2rem 0.5rem;
  border-radius: 4px;
  display: inline-block;
  margin-bottom: 0.4rem;
}

.pm-badge--delete[b-j9jbzs7oiw] {
  background: var(--danger, #ef4444);
  color: #fff;
}

.pm-badge--keep[b-j9jbzs7oiw] {
  background: var(--success, #22c55e);
  color: #fff;
}

.pm-card-name[b-j9jbzs7oiw] {
  font-size: 1rem;
  font-weight: 700;
  color: var(--text-primary, #F3F6FB);
  line-height: 1.3;
}

.pm-card-meta[b-j9jbzs7oiw] {
  font-size: 0.875rem;
  color: var(--text-muted, #9FB0C4);
  margin-top: 0.15rem;
}

.pm-card-warn[b-j9jbzs7oiw] {
  font-size: var(--font-size-sm);
  color: var(--warning, #f59e0b);
  margin-top: 0.4rem;
  display: flex;
  flex-direction: column;
  gap: 0.15rem;
}

.pm-hint[b-j9jbzs7oiw] {
  font-size: 0.9rem;
  color: var(--text-muted, #9FB0C4);
  margin: 0;
}

/* Search picker in merge modal */
.pm-search-wrap[b-j9jbzs7oiw] {
  position: relative;
}

.pm-search-input-row[b-j9jbzs7oiw] {
  display: flex;
  align-items: center;
  background: var(--bg-surface, #0F172A);
  border: 1px solid var(--border-default, #2D4A6A);
  border-radius: 8px;
  padding: 0 0.75rem;
  transition: border-color 0.15s;
}
.pm-search-input-row:focus-within[b-j9jbzs7oiw] {
  border-color: var(--b9-primary, #2563eb);
}

.pm-search-icon[b-j9jbzs7oiw] {
  color: var(--text-muted, #9FB0C4);
  flex-shrink: 0;
  margin-right: 0.5rem;
  font-size: 0.9rem;
}

.pm-search-input[b-j9jbzs7oiw] {
  flex: 1;
  background: transparent;
  border: none;
  padding: 0.7rem 0;
  font-size: 0.95rem;
  color: var(--text-primary, #F3F6FB);
  outline: none;
  min-height: 48px;
}
.pm-search-input[b-j9jbzs7oiw]::placeholder {
  color: var(--text-muted, #9FB0C4);
}

.pm-search-backdrop[b-j9jbzs7oiw] {
  position: fixed;
  inset: 0;
  z-index: 198;
  cursor: default;
}

.pm-search-dropdown[b-j9jbzs7oiw] {
  /* In-flow (relative, no offsets) so the results panel can never be clipped by the
     dialog's own scroll (.pm-dialog has overflow-y auto) — the dialog grows/scrolls to it.
     z-index keeps it above the click-away backdrop. */
  position: relative;
  z-index: 200;
  background: var(--bg-elevated, #1E293B);
  border: 1px solid var(--border-default, #2D4A6A);
  border-radius: 8px;
  max-height: 240px;
  overflow-y: auto;
  list-style: none;
  margin: 0.25rem 0 0;
  padding: 0.25rem 0;
  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.4);
}

.pm-search-result[b-j9jbzs7oiw] {
  padding: 0.6rem 1rem;
  cursor: pointer;
  min-height: 48px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  transition: background 0.1s;
}
.pm-search-result:hover[b-j9jbzs7oiw] {
  background: color-mix(in srgb, var(--b9-primary, #2563eb) 12%, transparent);
}

.pm-result-name[b-j9jbzs7oiw] {
  font-weight: 600;
  color: var(--text-primary, #F3F6FB);
  font-size: 0.95rem;
}

.pm-result-meta[b-j9jbzs7oiw] {
  font-size: var(--font-size-sm);
  color: var(--text-muted, #9FB0C4);
}

.pm-search-no-results[b-j9jbzs7oiw] {
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
  color: var(--text-muted, #9FB0C4);
  text-align: center;
}

/* Selected player chip (step 1, after choosing target) */
.pm-target-selected[b-j9jbzs7oiw] {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  background: color-mix(in srgb, var(--success, #22c55e) 10%, transparent);
  border: 1px solid var(--success, #22c55e);
  border-radius: 8px;
  padding: 0.65rem 1rem;
  min-height: 56px;
}

.pm-target-info[b-j9jbzs7oiw] {
  flex: 1;
  min-width: 0;
}

.pm-target-name[b-j9jbzs7oiw] {
  font-weight: 700;
  color: var(--text-primary, #F3F6FB);
  font-size: 0.95rem;
}

.pm-target-meta[b-j9jbzs7oiw] {
  font-size: var(--font-size-sm);
  color: var(--text-muted, #9FB0C4);
}

.pm-target-clear[b-j9jbzs7oiw] {
  background: none;
  border: none;
  color: var(--text-muted, #9FB0C4);
  font-size: 1.25rem;
  line-height: 1;
  cursor: pointer;
  padding: 0.15rem 0.4rem;
  border-radius: 4px;
  flex-shrink: 0;
  transition: color 0.15s;
}
.pm-target-clear:hover[b-j9jbzs7oiw] {
  color: var(--danger, #ef4444);
}

/* Preview cards (step 2) */
.pm-preview-cards[b-j9jbzs7oiw] {
  display: flex;
  align-items: center;
  gap: 0.75rem;
}

.pm-preview-card[b-j9jbzs7oiw] {
  flex: 1;
  border-radius: 8px;
  padding: 0.75rem 1rem;
  min-width: 0;
}

.pm-preview-card--delete[b-j9jbzs7oiw] {
  background: color-mix(in srgb, var(--danger, #ef4444) 10%, transparent);
  border: 1px solid var(--danger, #ef4444);
}

.pm-preview-card--keep[b-j9jbzs7oiw] {
  background: color-mix(in srgb, var(--success, #22c55e) 10%, transparent);
  border: 1px solid var(--success, #22c55e);
}

.pm-preview-arrow[b-j9jbzs7oiw] {
  font-size: 1.5rem;
  color: var(--text-muted, #9FB0C4);
  flex-shrink: 0;
}

.pm-transfer-list[b-j9jbzs7oiw] {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 0.4rem;
  font-size: 0.9rem;
  color: var(--text-primary, #F3F6FB);
}

.pm-warning-box[b-j9jbzs7oiw] {
  background: color-mix(in srgb, var(--warning, #f59e0b) 10%, transparent);
  border: 1px solid var(--warning, #f59e0b);
  border-radius: 8px;
  padding: 0.75rem 1rem;
  font-size: 0.875rem;
  color: var(--text-primary, #F3F6FB);
}

@media (max-width: 480px) {
  .pm-preview-cards[b-j9jbzs7oiw] {
    flex-direction: column;
    align-items: stretch;
  }
  .pm-preview-arrow[b-j9jbzs7oiw] {
    text-align: center;
    transform: rotate(90deg);
  }
  .pm-dialog-footer[b-j9jbzs7oiw] {
    flex-direction: column-reverse;
  }
  .pm-dialog-footer .btn[b-j9jbzs7oiw] {
    width: 100%;
    justify-content: center;
  }
}

/* ── Possible duplicates review (Phase 4) ─────────────────────────────────── */

/* 🔴 --surface-raised IS NOT A TOKEN (the real name is --bg-raised). Nothing declares it, so
   #14263A was the background in every theme — and in light the two review cards at the top of
   /players ("N records combined", "N possible duplicates") stayed near-black while their own
   text took the light theme's near-black ink: 1.13:1 for the heading and the count, 2.03:1 for
   the explanation and the Review button. Fourteen unreadable elements on the page an admin
   opens to tidy up their roster. --bg-raised is #1E293B in dark — the same slab this was
   drawing — and #E2E8F0 in light. */
.dup-card[b-j9jbzs7oiw] {
  border: 1px solid var(--border-default, #2D4A6A) !important;
  background: var(--bg-raised, #14263A);
}

.dup-icon[b-j9jbzs7oiw] {
  color: var(--b9-primary-text);
}

.dup-pair[b-j9jbzs7oiw] {
  border-top: 1px solid var(--border-subtle, #1E3A52);
  padding: 1rem 0 1.25rem;
}

.dup-reason[b-j9jbzs7oiw] {
  color: var(--text-primary, #F3F6FB);
  font-size: 0.9rem;
  margin-bottom: 0.75rem;
}

.dup-sides[b-j9jbzs7oiw] {
  display: flex;
  gap: 0.75rem;
  align-items: stretch;
}

/* --surface-default is the same phantom as --surface-raised above: the two records being
   compared sat on a hardcoded #0E1B2A in both themes. Only visible once the card is opened,
   which is why the probe never reached it — the same defect all the same. */
.dup-side[b-j9jbzs7oiw] {
  flex: 1 1 0;
  min-width: 0;
  border: 1px solid var(--border-subtle, #1E3A52);
  border-radius: 10px;
  padding: 0.75rem 0.85rem;
  background: var(--bg-surface, #0E1B2A);
}

.dup-side--keep[b-j9jbzs7oiw] {
  border-color: var(--brand, #2F6FEB);
}

.dup-side-tag[b-j9jbzs7oiw] {
  display: inline-block;
  font-size: var(--font-size-chip);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--text-muted, #9FB0C4);
  margin-bottom: 0.25rem;
}

.dup-side--keep .dup-side-tag[b-j9jbzs7oiw] {
  color: var(--b9-primary-text);
}

.dup-side-name[b-j9jbzs7oiw] {
  color: var(--text-primary, #F3F6FB);
  font-weight: 600;
  overflow-wrap: anywhere;
}

.dup-side-meta[b-j9jbzs7oiw] {
  color: var(--text-muted, #9FB0C4);
  font-size: var(--font-size-sm);
  overflow-wrap: anywhere;
}

.dup-actions[b-j9jbzs7oiw] {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin-top: 0.85rem;
}

.dup-actions .btn[b-j9jbzs7oiw] {
  min-height: 44px;
}

@media (max-width: 560px) {
  .dup-sides[b-j9jbzs7oiw] {
    flex-direction: column;
  }
  .dup-actions .btn[b-j9jbzs7oiw] {
    width: 100%;
    justify-content: center;
  }
}

.undo-row[b-j9jbzs7oiw] {
  padding: 0.35rem 0;
}

.undo-row .btn[b-j9jbzs7oiw] {
  min-height: 44px;
}

/* Course member badge (tee sheet P1) — matches the hcp badge treatment, success-toned. */
.pl-member-badge[b-j9jbzs7oiw] {
  background: var(--success-soft, rgba(34, 197, 94, .14)) !important;
  color: var(--text-primary, #F3F6FB) !important;
  border: 1px solid var(--border-default, #2D4A6A) !important;
}
/* /Components/Pages/Privacy.razor.rz.scp.css */
.privacy-page[b-o4hla7xhr7] {
    padding: 2rem 1rem 4rem;
}

.privacy-inner[b-o4hla7xhr7] {
    max-width: 680px;
    margin: 0 auto;
}

.privacy-inner h1[b-o4hla7xhr7] {
    font-size: 2rem;
    font-weight: 700;
    margin-bottom: 0.25rem;
    color: var(--text-primary);
}

/* Qualified deliberately. As `.privacy-updated` (0,0,1,0) this whole rule lost to
   `.privacy-inner p` (0,0,1,1) further down — font-size, colour and margin all of it — so
   the "Last updated" line has always rendered as ordinary body text with a 0.75rem gap. The
   X02 sweep changed the dead font-size from 0.85rem to the token and nothing moved on
   screen, which is how the mutation test found this: killing the declaration left the guard
   green because the declaration was never alive.

   Made live rather than deleted, because the intent was right: this line is metadata and
   should read as quieter than the policy, and the first heading wants air above it. It is
   quieter by COLOUR and SPACING only — no font-size, so it keeps the 0.95rem the paragraphs
   use. Shrinking a date on a legal page is the wrong direction for a 90-year-old. */
.privacy-inner p.privacy-updated[b-o4hla7xhr7] {
    color: var(--text-muted);
    margin-bottom: 2rem;
}

.privacy-inner h2[b-o4hla7xhr7] {
    font-size: 1.2rem;
    font-weight: 600;
    margin-top: 2rem;
    margin-bottom: 0.5rem;
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-subtle);
    padding-bottom: 0.25rem;
}

.privacy-inner h3[b-o4hla7xhr7] {
    font-size: 1rem;
    font-weight: 600;
    margin-top: 1.25rem;
    margin-bottom: 0.25rem;
    color: var(--text-primary);
}

.privacy-inner p[b-o4hla7xhr7],
.privacy-inner li[b-o4hla7xhr7] {
    font-size: 0.95rem;
    line-height: 1.7;
    color: var(--text-secondary);
    margin-bottom: 0.75rem;
}

.privacy-inner ul[b-o4hla7xhr7] {
    padding-left: 1.5rem;
    margin-bottom: 0.75rem;
}

.privacy-inner a[b-o4hla7xhr7] {
    color: var(--brand-text, var(--brand));
    text-decoration: underline;
}
/* /Components/Pages/Public/FindEvent.razor.rz.scp.css */
/* ================================================================
   FIND AN EVENT (/find)
   The public, cross-club event directory — uses PublicLayout.
   Tokens only; every colour has a fallback because the status
   tokens are scoped to the always-dark band in brand-tokens.css.
   ================================================================ */

.fe-page[b-xlv20g16l4] {
    display: flex;
    flex-direction: column;
    min-height: 100%;
}

/* ── Hero band ──────────────────────────────────────────────────
   --bg-sidebar stays dark in BOTH themes (see OrgLanding's hero for
   the full reasoning), so the band's ink is fixed, not the theme's. */
.fe-hero[b-xlv20g16l4] {
    --fe-ink:      #F3F6FB;
    --fe-ink-soft: #A7B4C6;
    position: relative;
    overflow: hidden;
    background:
        linear-gradient(160deg, rgba(29, 78, 216, 0) 0%, rgba(29, 78, 216, 0.18) 100%),
        var(--bg-sidebar, #0B1220);
    color: var(--fe-ink);
    border-bottom: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.06));
    padding: 3.25rem 1.25rem 2.5rem;
}

.fe-hero[b-xlv20g16l4]::before,
.fe-hero[b-xlv20g16l4]::after {
    content: "";
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
}

.fe-hero[b-xlv20g16l4]::before {
    width: 42rem;
    height: 42rem;
    right: -14rem;
    top: -26rem;
    background: radial-gradient(closest-side, rgba(34, 197, 94, 0.16), rgba(34, 197, 94, 0) 72%);
}

.fe-hero[b-xlv20g16l4]::after {
    width: 30rem;
    height: 30rem;
    left: -12rem;
    bottom: -20rem;
    background: radial-gradient(closest-side, rgba(96, 165, 250, 0.14), rgba(96, 165, 250, 0) 72%);
}

.fe-hero-inner[b-xlv20g16l4] {
    position: relative;
    max-width: 960px;
    margin: 0 auto;
}

.fe-eyebrow[b-xlv20g16l4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0 0 0.6rem;
    font-size: var(--font-size-chip, 13px);   /* the uppercase floor */
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--fe-ink-soft);
}

.fe-title[b-xlv20g16l4] {
    margin: 0 0 0.5rem;
    font-size: clamp(2.1rem, 5vw, 2.9rem);
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1.08;
    color: var(--fe-ink);
}

.fe-sub[b-xlv20g16l4] {
    max-width: 40rem;
    margin: 0 0 1.5rem;
    font-size: 1.05rem;
    line-height: 1.55;
    color: var(--fe-ink-soft);
}

/* ── Search ── */
.fe-search[b-xlv20g16l4] {
    position: relative;
    max-width: 34rem;
}

.fe-search-icon[b-xlv20g16l4] {
    position: absolute;
    left: 1.1rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: 1.1rem;
    color: var(--fe-ink-soft);
    pointer-events: none;
}

.fe-search-input[b-xlv20g16l4] {
    width: 100%;
    min-height: 56px;
    box-sizing: border-box;
    padding: 0 3.25rem 0 3rem;
    border-radius: var(--radius-full, 9999px);
    border: 1px solid rgba(255, 255, 255, 0.18);
    background: rgba(255, 255, 255, 0.09);
    color: var(--fe-ink);
    font-size: 1.05rem;
    outline: none;
    -webkit-appearance: none;
    appearance: none;
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.fe-search-input[b-xlv20g16l4]::placeholder {
    color: var(--fe-ink-soft);
    opacity: 1;
}

.fe-search-input[b-xlv20g16l4]::-webkit-search-cancel-button {
    display: none;
}

.fe-search-input:focus[b-xlv20g16l4] {
    border-color: var(--b9-primary-text, #93C5FD);
    background: rgba(255, 255, 255, 0.13);
    box-shadow: 0 0 0 4px rgba(147, 197, 253, 0.2);
}

.fe-search-clear[b-xlv20g16l4] {
    position: absolute;
    right: 0.4rem;
    top: 50%;
    transform: translateY(-50%);
    width: 44px;
    height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 0;
    border-radius: 50%;
    background: transparent;
    color: var(--fe-ink-soft);
    cursor: pointer;
    font-size: 0.95rem;
}

.fe-search-clear:hover[b-xlv20g16l4],
.fe-search-clear:focus-visible[b-xlv20g16l4] {
    background: rgba(255, 255, 255, 0.12);
    color: var(--fe-ink);
    outline: none;
}

.fe-hero-stats[b-xlv20g16l4] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem 1.5rem;
    margin-top: 1.25rem;
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--fe-ink-soft);
}

.fe-hero-stat[b-xlv20g16l4] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
}

.fe-hero-stat strong[b-xlv20g16l4] {
    color: var(--fe-ink);
    font-weight: 700;
}

.fe-hero-stat--live strong[b-xlv20g16l4] {
    color: #86EFAC;
}

/* ── Live dot ── */
.fe-live-dot[b-xlv20g16l4] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--success, #22C55E);
    box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.18);
    animation: fe-pulse-b-xlv20g16l4 1.8s ease-in-out infinite;
    flex-shrink: 0;
}

@keyframes fe-pulse-b-xlv20g16l4 {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: 0.45; transform: scale(0.8); }
}

/* ── Body ── */
.fe-body[b-xlv20g16l4] {
    width: 100%;
    max-width: 960px;
    margin: 0 auto;
    padding: 2rem 1.25rem 3.5rem;
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    gap: 2.5rem;
}

.fe-loading[b-xlv20g16l4] {
    padding: 3rem 1rem;
    text-align: center;
    color: var(--text-muted, #94A3B8);
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

/* ── Sections ── */
.fe-section-head[b-xlv20g16l4] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.9rem;
}

.fe-section-title[b-xlv20g16l4] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    margin: 0;
    font-size: 0.85rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--text-secondary, #C2CFDF);
}

.fe-section-title .fe-live-dot[b-xlv20g16l4] {
    margin-right: 0.1rem;
}

.fe-count[b-xlv20g16l4] {
    display: inline-block;
    padding: 0.1rem 0.6rem;
    border-radius: var(--radius-full, 9999px);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    background: var(--bg-elevated, #111827);
    color: var(--text-muted, #9FB0C4);
    font-size: var(--font-size-chip, 13px);
    font-weight: 600;
    letter-spacing: 0;
    line-height: 1.5;
}

.fe-section-hint[b-xlv20g16l4] {
    margin: 0;
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--text-muted, #9FB0C4);
}

.fe-list[b-xlv20g16l4] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

/* ── Cards ── */
.fe-card[b-xlv20g16l4] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.1rem;
    padding: 1.1rem 1.25rem;
    background: var(--bg-surface, #0F172A);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: var(--radius-xl, 16px);
    transition: border-color 0.15s, box-shadow 0.15s;
}

.fe-card:hover[b-xlv20g16l4] {
    border-color: var(--border-strong, rgba(255, 255, 255, 0.2));
    box-shadow: 0 8px 28px rgba(0, 0, 0, 0.14);
}

.fe-card-live[b-xlv20g16l4] {
    border-color: rgba(34, 197, 94, 0.38);
    background:
        linear-gradient(90deg, rgba(34, 197, 94, 0.07), rgba(34, 197, 94, 0) 42%),
        var(--bg-surface, #0F172A);
}

.fe-card-live:hover[b-xlv20g16l4] {
    border-color: rgba(34, 197, 94, 0.6);
}

.fe-card-past[b-xlv20g16l4] {
    opacity: 0.92;
}

/* Date pill */
.fe-pill[b-xlv20g16l4] {
    width: 60px;
    min-height: 60px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-radius: 14px;
    background: var(--brand-soft, rgba(29, 78, 216, 0.15));
    color: var(--b9-primary-text, #93C5FD);
    line-height: 1;
    flex-shrink: 0;
}

.fe-pill-month[b-xlv20g16l4] {
    font-size: var(--font-size-chip, 13px);   /* the uppercase floor: 60px holds "SEP" at 13px */
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.fe-pill-day[b-xlv20g16l4] {
    margin-top: 0.2rem;
    font-size: 1.55rem;
    font-weight: 800;
    letter-spacing: -0.02em;
    font-variant-numeric: tabular-nums;
}

.fe-pill-live[b-xlv20g16l4] {
    gap: 0.4rem;
    background: rgba(34, 197, 94, 0.16);
    color: #86EFAC;
    font-size: var(--font-size-chip, 13px);
    font-weight: 800;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.fe-pill-past[b-xlv20g16l4] {
    background: var(--bg-elevated, #111827);
    color: var(--text-secondary, #C2CFDF);
}

/* Card body */
.fe-card-body[b-xlv20g16l4] {
    min-width: 0;
}

.fe-club[b-xlv20g16l4] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.2rem 0.6rem;
    margin-bottom: 0.15rem;
    font-size: var(--font-size-sm, 0.875rem);
}

.fe-club-name[b-xlv20g16l4] {
    font-weight: 700;
    color: var(--b9-primary-text, #93C5FD);
    text-decoration: none;
    /* A club name is a link a thumb aims at: give it the height without breaking the line. */
    display: inline-block;
    padding-block: 6px;
}

.fe-club-name:hover[b-xlv20g16l4] {
    text-decoration: underline;
}

.fe-club-loc[b-xlv20g16l4] {
    color: var(--text-muted, #9FB0C4);
}

.fe-event-name[b-xlv20g16l4] {
    display: block;
    min-height: var(--touch-target-min, 48px);
    box-sizing: border-box;
    padding-block: 10px;
    font-size: 1.1rem;
    font-weight: 700;
    line-height: 1.3;
    color: var(--text-primary, #F3F6FB);
    text-decoration: none;
    overflow-wrap: anywhere;
}

.fe-event-name:hover[b-xlv20g16l4] {
    text-decoration: underline;
}

.fe-meta[b-xlv20g16l4] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.2rem 0.6rem;
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--text-secondary, #C2CFDF);
}

.fe-meta-sep[b-xlv20g16l4] {
    color: var(--text-muted, #9FB0C4);
}

.fe-when[b-xlv20g16l4] {
    font-weight: 600;
    color: var(--text-primary, #F3F6FB);
}

.fe-when-today[b-xlv20g16l4] {
    color: var(--b9-primary-text, #93C5FD);
}

/* Leader line under a live event */
.fe-leader[b-xlv20g16l4] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.2rem 0.5rem;
    margin-top: 0.6rem;
    padding: 0.5rem 0.8rem;
    border-radius: 10px;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    background: var(--bg-elevated, #111827);
    font-size: var(--font-size-sm, 0.875rem);
}

.fe-leader-icon[b-xlv20g16l4] {
    color: var(--warning, #F59E0B);
}

.fe-leader-icon-quiet[b-xlv20g16l4] {
    color: var(--text-muted, #9FB0C4);
}

.fe-leader-label[b-xlv20g16l4] {
    color: var(--text-muted, #9FB0C4);
}

.fe-leader-name[b-xlv20g16l4] {
    font-weight: 700;
    color: var(--text-primary, #F3F6FB);
}

.fe-leader-score[b-xlv20g16l4] {
    font-weight: 800;
    color: var(--b9-primary-text, #93C5FD);
    font-variant-numeric: tabular-nums;
}

.fe-leader-thru[b-xlv20g16l4] {
    color: var(--text-muted, #9FB0C4);
}

/* Actions */
.fe-actions[b-xlv20g16l4] {
    display: flex;
}

.fe-btn[b-xlv20g16l4] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: var(--touch-target-min, 48px);
    padding: 0 1.2rem;
    border-radius: 12px;
    border: 1px solid transparent;
    font-size: 0.95rem;
    font-weight: 700;
    text-decoration: none;
    white-space: nowrap;
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s, filter 0.15s, transform 0.1s;
}

.fe-btn:active[b-xlv20g16l4] {
    transform: translateY(1px);
}

.fe-btn:focus-visible[b-xlv20g16l4] {
    outline: 3px solid var(--brand-ring, rgba(29, 78, 216, 0.3));
    outline-offset: 2px;
}

.fe-btn-live[b-xlv20g16l4] {
    background: var(--success, #22C55E);
    color: #05240F;
}

.fe-btn-live:hover[b-xlv20g16l4] {
    filter: brightness(1.07);
    color: #05240F;
}

.fe-btn-primary[b-xlv20g16l4] {
    background: var(--brand, #1D4ED8);
    color: #FFFFFF;
}

.fe-btn-primary:hover[b-xlv20g16l4] {
    background: var(--brand-hover, #2563EB);
    color: #FFFFFF;
}

.fe-btn-ghost[b-xlv20g16l4] {
    background: transparent;
    border-color: var(--border-default, rgba(255, 255, 255, 0.12));
    color: var(--text-primary, #F3F6FB);
}

.fe-btn-ghost:hover[b-xlv20g16l4] {
    background: var(--bg-elevated, #111827);
    border-color: var(--border-strong, rgba(255, 255, 255, 0.2));
    color: var(--text-primary, #F3F6FB);
}

/* ── Empty states ── */
.fe-empty[b-xlv20g16l4] {
    text-align: center;
    padding: 3.25rem 1.25rem;
    background: var(--bg-surface, #0F172A);
    border: 1px dashed var(--border-default, rgba(255, 255, 255, 0.12));
    border-radius: var(--radius-xl, 16px);
}

.fe-empty-icon[b-xlv20g16l4] {
    margin-bottom: 0.75rem;
    font-size: 2.5rem;
    color: var(--text-muted, #9FB0C4);
}

.fe-empty h2[b-xlv20g16l4] {
    margin: 0 0 0.4rem;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text-primary, #F3F6FB);
}

.fe-empty p[b-xlv20g16l4] {
    max-width: 32rem;
    margin: 0 auto;
    color: var(--text-secondary, #C2CFDF);
    line-height: 1.5;
}

.fe-empty-btn[b-xlv20g16l4] {
    margin-top: 1.25rem;
}

/* ── Operator nudge ── */
.fe-cta[b-xlv20g16l4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    border-radius: var(--radius-xl, 16px);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    background: var(--brand-soft, rgba(29, 78, 216, 0.15));
}

.fe-cta-text strong[b-xlv20g16l4] {
    display: block;
    font-size: 1.05rem;
    color: var(--text-primary, #F3F6FB);
}

.fe-cta-text span[b-xlv20g16l4] {
    font-size: var(--font-size-sm, 0.875rem);
    color: var(--text-secondary, #C2CFDF);
}

/* ── Light theme ────────────────────────────────────────────────
   The status inks above are the DARK theme's; on cream they need a
   deeper green, and the soft tints need less alpha to still read. */
html[data-theme="light"] .fe-pill-live[b-xlv20g16l4] {
    background: rgba(22, 163, 74, 0.12);
    color: #166534;
}

html[data-theme="light"] .fe-card-live[b-xlv20g16l4] {
    border-color: rgba(22, 163, 74, 0.35);
}

html[data-theme="light"] .fe-card:hover[b-xlv20g16l4] {
    box-shadow: 0 8px 28px rgba(15, 23, 42, 0.08);
}

html[data-theme="light"] .fe-btn-live[b-xlv20g16l4] {
    background: #16A34A;
    color: #FFFFFF;
}

/* ── One tournament, several divisions ──
   The card names the tournament once; each division is its own button to its own page. */
.fe-event-name-group[b-xlv20g16l4] {
    margin: 0;
}

.fe-event-name-group:hover[b-xlv20g16l4] {
    text-decoration: none;
}

.fe-divisions[b-xlv20g16l4] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.65rem;
}

.fe-division[b-xlv20g16l4] {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    min-height: var(--touch-target-min, 48px);
    padding: 0 0.85rem 0 1rem;
    border-radius: 12px;
    border: 1px solid var(--border-default, rgba(255, 255, 255, 0.12));
    background: var(--bg-elevated, #111827);
    color: var(--text-primary, #F3F6FB);
    font-size: 0.95rem;
    font-weight: 700;
    text-decoration: none;
    transition: border-color 0.15s, background 0.15s;
}

.fe-division:hover[b-xlv20g16l4],
.fe-division:focus-visible[b-xlv20g16l4] {
    border-color: var(--b9-primary, #3B82F6);
    color: var(--text-primary, #F3F6FB);
}

.fe-division-meta[b-xlv20g16l4] {
    font-size: var(--font-size-sm, 14px);
    font-weight: 500;
    color: var(--text-secondary, #C2CFDF);
}

.fe-division-go[b-xlv20g16l4] {
    font-size: 0.85rem;
    color: var(--text-secondary, #C2CFDF);
}

/* League card: a trophy when there is no next week to date the pill with */
.fe-pill-icon[b-xlv20g16l4] {
    font-size: 1.5rem;
}

/* ── Phones ── */
@media (max-width: 640px) {
    .fe-division[b-xlv20g16l4] {
        flex: 1 1 100%;
        justify-content: space-between;
    }

    .fe-division-meta[b-xlv20g16l4] {
        margin-left: auto;
    }

    .fe-hero[b-xlv20g16l4] {
        padding: 2.25rem 1rem 1.9rem;
    }

    .fe-body[b-xlv20g16l4] {
        padding: 1.5rem 1rem 3rem;
        gap: 2rem;
    }

    .fe-card[b-xlv20g16l4] {
        grid-template-columns: auto minmax(0, 1fr);
        gap: 0.9rem;
        padding: 1rem;
    }

    .fe-actions[b-xlv20g16l4] {
        grid-column: 1 / -1;
    }

    .fe-btn[b-xlv20g16l4] {
        width: 100%;
    }

    .fe-event-name[b-xlv20g16l4] {
        font-size: 1.05rem;
    }

    .fe-section-head[b-xlv20g16l4] {
        flex-direction: column;
        align-items: flex-start;
        gap: 0.2rem;
    }
}

/* ── Reduced motion ── */
@media (prefers-reduced-motion: reduce) {
    .fe-live-dot[b-xlv20g16l4] {
        animation: none;
    }

    .fe-card[b-xlv20g16l4],
    .fe-btn[b-xlv20g16l4],
    .fe-search-input[b-xlv20g16l4] {
        transition: none;
    }
}
/* /Components/Pages/Rounds/Setup.razor.rz.scp.css */
/* ── Step pills ─────────────────────────────────────────────────────── */
.rsw-steps[b-9zof3wj2ch] {
    display: flex;
    gap: .5rem;
    flex-wrap: wrap;
}

.rsw-step[b-9zof3wj2ch] {
    border: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
    color: var(--text-secondary);
    border-radius: 999px;
    padding: .35rem .9rem;
    font-size: var(--font-size-sm);
    display: flex;
    align-items: center;
    gap: .4rem;
    cursor: pointer;
    transition: border-color .15s, color .15s;
}

.rsw-step-num[b-9zof3wj2ch] {
    width: 1.2rem;
    height: 1.2rem;
    border-radius: 999px;
    background: rgba(255,255,255,0.08);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: var(--font-size-chip);
    color: var(--text-muted);
    flex-shrink: 0;
}

.rsw-step-active[b-9zof3wj2ch] {
    border-color: var(--brand, #2563eb);
    color: var(--brand-text, #60a5fa);
}

.rsw-step-active .rsw-step-num[b-9zof3wj2ch] {
    background: var(--brand, #2563eb);
    color: #fff;
}

.rsw-step-done[b-9zof3wj2ch] {
    border-color: var(--success, #22c55e);
    color: var(--success-text, #4ade80);
}

.rsw-step-done .rsw-step-num[b-9zof3wj2ch] {
    background: var(--success, #22c55e);
    color: #fff;
}

/* ── Hole map grid cards ─────────────────────────────────────────────── */
.rsw-hole[b-9zof3wj2ch] {
    border: 1px solid var(--border-subtle);
    border-radius: .6rem;
    padding: .5rem .45rem;
    min-height: 5rem;
    background: var(--bg-elevated);
    transition: border-color .15s;
}

.rsw-hole-pref[b-9zof3wj2ch] {
    border-color: var(--success, #22c55e);
    background: var(--success-soft, rgba(34,197,94,0.12));
}

.rsw-hole-avoid[b-9zof3wj2ch] {
    border-color: var(--warning, #f59e0b);
    background: var(--warning-soft, rgba(245,158,11,0.12));
}

.rsw-hole-title[b-9zof3wj2ch] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    color: var(--text-muted);
    margin-bottom: .3rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.rsw-chip[b-9zof3wj2ch] {
    display: inline-block;
    background: var(--brand-soft, rgba(29,78,216,0.18));
    color: var(--brand-text, #60a5fa);
    font-size: var(--font-size-chip);
    font-weight: 600;
    border-radius: 999px;
    padding: .12rem .45rem;
    margin: .06rem;
}

.rsw-empty[b-9zof3wj2ch] {
    color: var(--text-muted);
    font-size: var(--font-size-sm);
}

/* ── Legend strip ────────────────────────────────────────────────────── */
.rsw-legend[b-9zof3wj2ch] {
    display: flex;
    gap: 1rem;
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-bottom: .75rem;
    flex-wrap: wrap;
}

.rsw-legend-dot[b-9zof3wj2ch] {
    width: .65rem;
    height: .65rem;
    border-radius: 50%;
    display: inline-block;
    margin-right: .3rem;
}

.rsw-legend-dot--pref[b-9zof3wj2ch]  { background: var(--success, #22c55e); }
.rsw-legend-dot--avoid[b-9zof3wj2ch] { background: var(--warning, #f59e0b); }
.rsw-legend-dot--plain[b-9zof3wj2ch] { background: var(--border-subtle); }

/* ── Flight preview cards ────────────────────────────────────────────── */
.rsw-flight-card[b-9zof3wj2ch] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: .6rem;
    padding: 1rem;
}

.rsw-flight-name[b-9zof3wj2ch] {
    font-weight: 700;
    color: var(--text-primary);
    margin-bottom: .15rem;
}

/* Inline-editable flight title on the Review screen: reads as the card heading until focused. */
.rsw-flight-name-input[b-9zof3wj2ch] {
    font-weight: 700;
    color: var(--text-primary);
    background: transparent;
    border-color: transparent;
    padding-left: .35rem;
    padding-right: .35rem;
}

.rsw-flight-name-input:hover[b-9zof3wj2ch] {
    border-color: var(--border-subtle);
}

.rsw-flight-name-input:focus[b-9zof3wj2ch] {
    background: var(--bg-elevated);
    border-color: var(--border-subtle);
}

.rsw-flight-summary[b-9zof3wj2ch] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-bottom: .5rem;
}

.rsw-flight-members[b-9zof3wj2ch] {
    font-size: var(--font-size-sm);
    color: var(--text-secondary);
    padding-left: 1rem;
    margin: 0;
}

/* ── Extracted inline styles (Blazor audit Batch G) ────────── */
.rsw-readonly-field[b-9zof3wj2ch] { background: var(--bg-elevated); color: var(--text-primary); }
.rsw-badge-xs[b-9zof3wj2ch] { font-size: var(--font-size-chip); }
.rsw-flight-table[b-9zof3wj2ch] { max-width: 520px; }
.rsw-td-flight[b-9zof3wj2ch] { width: 190px; }

/* ── Flight repair board ─────────────────────────────────────────────────────
   Same select-then-place gesture as the team builder so learning one screen
   teaches the other (WCAG 3.2.4). Replaces the per-row <select> — GOV.UK calls
   the select element a last resort, and eight flights in a dropdown is open,
   scroll, hunt, commit, where eight cards is one tap. */
.rsw-flight-cards[b-9zof3wj2ch] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr));
    gap: 0.5rem;
    margin-bottom: 0.9rem;
}

.rsw-flight-card[b-9zof3wj2ch] {
    border: 1.5px solid var(--border-default);
    border-radius: 10px;
    padding: 0.55rem 0.65rem;
    background: var(--bg-elevated);
    min-height: var(--touch-target-min, 48px);
}

.rsw-flight-card--target[b-9zof3wj2ch] {
    border-color: var(--brand);
    box-shadow: 0 0 0 3px var(--brand-ring);
    cursor: pointer;
}

.rsw-flight-card--target:hover[b-9zof3wj2ch] { background: var(--brand-soft); }
.rsw-flight-card:focus-visible[b-9zof3wj2ch] { outline: none; box-shadow: var(--b9-focus-ring); }

.rsw-flight-meta[b-9zof3wj2ch] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    margin-top: 0.25rem;
    font-variant-numeric: tabular-nums;
}

.rsw-flight-drop[b-9zof3wj2ch] {
    margin-top: 0.3rem;
    font-size: var(--font-size-sm);
    font-weight: 700;
    color: var(--brand-text, var(--brand));
}

.rsw-subject-list[b-9zof3wj2ch] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    max-height: 32rem;
    overflow-y: auto;
}

.rsw-chip[b-9zof3wj2ch] { min-height: var(--touch-target-min, 48px); }
.rsw-chip:focus-visible[b-9zof3wj2ch] { outline: none; box-shadow: var(--b9-focus-ring); }

/* De-emphasised, never removed — a subject that vanishes reads as "did I break it?" */
.rsw-chip--assigned[b-9zof3wj2ch] { opacity: 0.62; }

.rsw-chip-flight[b-9zof3wj2ch] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: 2px 7px;
    border-radius: 20px;
    background: var(--bg-raised);
    color: var(--text-secondary);
    white-space: nowrap;
}

.rsw-chip-flight--none[b-9zof3wj2ch] { color: var(--b9-warning, var(--text-muted)); }

/* Counter carries the fix, not just the complaint (WCAG 3.3.3). */
.rsw-counter[b-9zof3wj2ch] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.75rem;
    border-radius: 8px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    font-size: var(--font-size-sm);
}

.rsw-selbar[b-9zof3wj2ch] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.6rem;
    padding: 0.55rem 0.85rem;
    margin-bottom: 0.75rem;
    border-radius: 10px;
    background: var(--brand);
    color: #fff;
}

.rsw-selbar-count[b-9zof3wj2ch] { font-weight: 700; font-variant-numeric: tabular-nums; }
.rsw-selbar-hint[b-9zof3wj2ch] { font-size: var(--font-size-sm); opacity: 0.9; }

.rsw-selbar-clear[b-9zof3wj2ch] {
    margin-left: auto;
    min-height: var(--touch-target-min, 48px);
    padding: 0 0.85rem;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.6);
    background: transparent;
    color: #fff;
    font-weight: 600;
    cursor: pointer;
}






.rsw-selbar-clear:focus-visible[b-9zof3wj2ch] { outline: 2px solid var(--brand); outline-offset: 2px; }
/* /Components/Pages/TeeSheet/BookingManage.razor.rz.scp.css */
.pb-page[b-2mnad3enop] {
    max-width: 560px;
    margin: 0 auto;
    padding: 28px 16px 80px;
}
.pb-card[b-2mnad3enop] {
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    padding: 26px 22px;
}
.pb-h1[b-2mnad3enop] { font-size: 1.6rem; font-weight: 800; margin: 0 0 4px; color: var(--text-primary); }
.pb-h2[b-2mnad3enop] { font-size: 1.25rem; font-weight: 700; margin: 18px 0 12px; color: var(--text-primary); }
.pb-sub[b-2mnad3enop] { color: var(--text-secondary); margin: 0 0 8px; font-size: 1.02rem; }
.pb-muted[b-2mnad3enop] { color: var(--text-muted); }
.pb-note[b-2mnad3enop], .pb-rates[b-2mnad3enop] { color: var(--text-secondary); margin: 4px 0; font-size: .95rem; }
.pb-state[b-2mnad3enop] { font-size: 1.05rem; padding: 14px 0; }

.pb-member-line[b-2mnad3enop] { margin: 8px 0 0; color: var(--text-secondary); }
.pb-memberbadge[b-2mnad3enop] {
    background: var(--success-soft);
    color: var(--text-primary);
    border-radius: 999px;
    padding: 3px 11px;
    font-size: var(--font-size-chip);
    font-weight: 700;
}
.pb-sizerow[b-2mnad3enop] { display: flex; gap: 10px; }
.pb-sizebtn[b-2mnad3enop] {
    flex: 1;
    min-height: 56px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    font-weight: 800;
    font-size: 1.2rem;
    cursor: pointer;
}
.pb-btn[b-2mnad3enop] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    background: var(--brand);
    border: none;
    color: #fff;
    border-radius: 12px;
    padding: 10px 22px;
    font-size: 1.05rem;
    font-weight: 700;
    cursor: pointer;
}
.pb-btn:hover[b-2mnad3enop] { background: var(--brand-hover); }
.pb-btn-big[b-2mnad3enop] { width: 100%; min-height: 60px; font-size: 1.2rem; margin-top: 20px; }
.pb-btn-quiet[b-2mnad3enop] {
    background: none;
    border: 1px solid var(--border-strong);
    color: var(--text-primary);
    font-weight: 600;
}
.pb-btn-quiet:hover[b-2mnad3enop] { background: var(--bg-raised); }

.pb-error[b-2mnad3enop] {
    margin: 14px 0 0;
    color: var(--text-primary);
    background: var(--danger-soft);
    border-radius: 10px;
    padding: 12px 14px;
}
.pb-confirm-line[b-2mnad3enop] { font-size: 1.3rem; line-height: 1.6; margin: 12px 0 16px; color: var(--text-primary); }

/* Module pass 2026-08-18: keep the confirm page's promise — change AND cancel,
   the policy said before it bites, and the calendar file one tap away. */
.pb-manage-actions[b-2mnad3enop] { display: flex; flex-wrap: wrap; gap: 10px; margin: 6px 0 4px; }
.pb-mini[b-2mnad3enop] { color: var(--text-muted); font-size: var(--font-size-sm); margin: 6px 0 14px; }

/* Changing the party without losing the booking (TS-014). */
.pb-partyedit[b-2mnad3enop] { margin: 18px 0; }
.pb-partylabel[b-2mnad3enop] { margin-bottom: 6px; }
/* /Components/Pages/TeeSheet/MyBookings.razor.rz.scp.css */
.mb-page[b-hgns0sluy6] { max-width: 640px; margin: 0 auto; padding: 24px 16px 80px; }
.mb-h1[b-hgns0sluy6] { font-size: 1.5rem; font-weight: 800; margin: 0 0 16px; color: var(--text-primary); }
.mb-muted[b-hgns0sluy6] { color: var(--text-muted); }
.mb-card[b-hgns0sluy6] {
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    padding: 16px 18px;
    margin-bottom: 12px;
}
.mb-row[b-hgns0sluy6] { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.mb-row-past[b-hgns0sluy6] { opacity: .65; }
.mb-when[b-hgns0sluy6] { display: flex; flex-direction: column; min-width: 110px; }
.mb-date[b-hgns0sluy6] { color: var(--text-muted); font-size: .88rem; }
.mb-time[b-hgns0sluy6] { color: var(--text-primary); font-weight: 800; font-size: 1.15rem; }
.mb-what[b-hgns0sluy6] { flex: 1; display: flex; flex-direction: column; min-width: 160px; }
.mb-course[b-hgns0sluy6] { color: var(--text-primary); font-weight: 600; }
.mb-meta[b-hgns0sluy6] { color: var(--text-muted); font-size: .88rem; }
.mb-cancelled[b-hgns0sluy6] { color: var(--danger); }
.mb-actions[b-hgns0sluy6] { display: flex; gap: 8px; }
.mb-btn[b-hgns0sluy6] { min-height: 48px; }

/* Module pass 2026-08-18: the list splits into what's ahead and what's history. */
.mb-section[b-hgns0sluy6] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--text-muted);
    margin: 18px 0 8px;
}
/* /Components/Pages/TeeSheet/PublicBooking.razor.rz.scp.css */
/* The grandmother page: three screens, giant targets, plain words. */

.pb-page[b-znu7ultqik] {
    max-width: 560px;
    margin: 0 auto;
    padding: 28px 16px 80px;
}
.pb-card[b-znu7ultqik] {
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    padding: 26px 22px;
}
.pb-h1[b-znu7ultqik] { font-size: 1.6rem; font-weight: 800; margin: 0 0 4px; color: var(--text-primary); }
.pb-h2[b-znu7ultqik] { font-size: 1.25rem; font-weight: 700; margin: 18px 0 12px; color: var(--text-primary); }
.pb-sub[b-znu7ultqik] { color: var(--text-secondary); margin: 0 0 8px; font-size: 1.02rem; }
.pb-muted[b-znu7ultqik] { color: var(--text-muted); }
.pb-note[b-znu7ultqik], .pb-rates[b-znu7ultqik] { color: var(--text-secondary); margin: 4px 0; font-size: .95rem; }
.pb-state[b-znu7ultqik] { font-size: 1.05rem; padding: 14px 0; }

.pb-member-line[b-znu7ultqik] { margin: 8px 0 0; color: var(--text-secondary); }
.pb-memberbadge[b-znu7ultqik] {
    background: var(--success-soft);
    color: var(--text-primary);
    border-radius: 999px;
    padding: 3px 11px;
    font-size: var(--font-size-chip);
    font-weight: 700;
}

.pb-daystrip[b-znu7ultqik] {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 8px 0 12px;
    /* Swipe, don't scrollbar: the raw bar under the chips was the ugliest pixel on the
       page. Snap keeps a chip from being sliced at the edge mid-swipe. */
    scrollbar-width: none;
    scroll-snap-type: x proximity;
}
.pb-daystrip[b-znu7ultqik]::-webkit-scrollbar { display: none; }
.pb-daybtn[b-znu7ultqik] { scroll-snap-align: start; }
.pb-daybtn[b-znu7ultqik] {
    flex: 0 0 auto;
    min-width: 86px;
    min-height: 64px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    cursor: pointer;
}
.pb-daybtn-on[b-znu7ultqik] { border-color: var(--brand); background: var(--brand); color: var(--brand-ink, #fff); }
.pb-daybtn-on .pb-day-dow[b-znu7ultqik], .pb-daybtn-on .pb-day-num[b-znu7ultqik] { color: var(--brand-ink, #fff); }
.pb-day-dow[b-znu7ultqik] { font-weight: 700; }
.pb-day-num[b-znu7ultqik] { color: var(--text-muted); font-size: var(--font-size-sm); }

/* The strip's little prices — Friday $28, Saturday $35, visible before tapping.
   Tabular digits so the chips line up; selected chip flips to white like its siblings. */
.pb-day-price[b-znu7ultqik] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--b9-primary-text);
}
.pb-daybtn-on .pb-day-price[b-znu7ultqik] { color: var(--brand-ink, #fff); }

.pb-times[b-znu7ultqik] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
    gap: 10px;
    margin-top: 6px;
}
.pb-timebtn[b-znu7ultqik] {
    min-height: 56px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    font-size: 1.05rem;
    font-weight: 700;
    cursor: pointer;
}
.pb-timebtn:hover[b-znu7ultqik] { border-color: var(--brand); }
.pb-time-open[b-znu7ultqik] { font-size: var(--font-size-sm); font-weight: 600; color: var(--text-muted); }

.pb-blocked-note[b-znu7ultqik] {
    margin: 12px 0 0;
    color: var(--text-secondary);
    background: var(--warning-soft);
    border-radius: 10px;
    padding: 10px 14px;
    font-size: .95rem;
}

.pb-back[b-znu7ultqik] {
    background: none;
    border: none;
    color: var(--text-secondary);
    padding: 6px 0;
    min-height: 48px;
    cursor: pointer;
    font-size: .95rem;
}

.pb-label[b-znu7ultqik] { display: block; margin: 16px 0 6px; color: var(--text-secondary); font-size: .95rem; }
.pb-input[b-znu7ultqik] {
    width: 100%;
    min-height: 52px;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    padding: 10px 14px;
    font-size: 1.05rem;
}
.pb-input:focus[b-znu7ultqik] { outline: none; border-color: var(--brand); box-shadow: var(--b9-focus-ring); }

.pb-sizerow[b-znu7ultqik] { display: flex; gap: 10px; }
.pb-sizebtn[b-znu7ultqik] {
    flex: 1;
    min-height: 56px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    font-weight: 800;
    font-size: 1.2rem;
    cursor: pointer;
}
.pb-sizebtn-on[b-znu7ultqik] { border-color: var(--brand); box-shadow: var(--b9-focus-ring); background: var(--bg-elevated); }

/* Holes: two big targets carrying the price, so the choice and its cost are one decision.
   Taller than the party-size row because each button holds two lines. */
.pb-holesrow[b-znu7ultqik] { display: flex; gap: 10px; }
.pb-holesbtn[b-znu7ultqik] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    min-height: 64px;
    padding: 8px 6px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    cursor: pointer;
}
.pb-holesnum[b-znu7ultqik] { font-weight: 800; font-size: 1.05rem; }
.pb-holesprice[b-znu7ultqik] { color: var(--text-secondary); font-size: .95rem; font-variant-numeric: tabular-nums; }
.pb-turnnote[b-znu7ultqik] { margin-top: 8px; }

/* The rest of the price list — quieter than the headline rate, but on the same screen.
   Tight spacing so riding + classes read as one small card, not three paragraphs. */
.pb-rates-extra[b-znu7ultqik] { margin-top: 2px; font-size: .95rem; color: var(--text-secondary); }

.pb-btn[b-znu7ultqik] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    background: var(--brand);
    border: none;
    color: var(--brand-ink, #fff);
    border-radius: 12px;
    padding: 10px 22px;
    font-size: 1.05rem;
    font-weight: 700;
    cursor: pointer;
}
.pb-btn:hover[b-znu7ultqik] { background: var(--brand-hover); }
.pb-btn-big[b-znu7ultqik] { width: 100%; min-height: 60px; font-size: 1.2rem; margin-top: 20px; }
.pb-btn-quiet[b-znu7ultqik] {
    background: none;
    border: 1px solid var(--border-strong);
    color: var(--text-primary);
    font-weight: 600;
}
.pb-btn-quiet:hover[b-znu7ultqik] { background: var(--bg-raised); }

.pb-error[b-znu7ultqik] {
    margin: 14px 0 0;
    color: var(--text-primary);
    background: var(--danger-soft);
    border-radius: 10px;
    padding: 12px 14px;
}

.pb-waitrow[b-znu7ultqik] { margin-top: 18px; }
.pb-waitform[b-znu7ultqik] { display: flex; flex-direction: column; gap: 10px; margin-top: 8px; }
.pb-memberask[b-znu7ultqik] { margin-top: 18px; color: var(--text-muted); }
.pb-memberask summary[b-znu7ultqik] { cursor: pointer; min-height: 48px; display: flex; align-items: center; }

.pb-confirm[b-znu7ultqik] { text-align: center; }
.pb-confirm-icon[b-znu7ultqik] { font-size: 3rem; color: var(--success); display: block; margin-bottom: 8px; }
.pb-confirm-line[b-znu7ultqik] { font-size: 1.3rem; line-height: 1.6; margin: 12px 0 16px; color: var(--text-primary); }


/* Pre-book reassurance sits quietly under the big button. */
.pb-reassure[b-znu7ultqik] { margin-top: 10px; text-align: center; }

/* ── Time groups: Morning / Afternoon / Twilight (the tested slot-picker shape) ── */
.pb-timegroup[b-znu7ultqik] { margin-top: 18px; }
.pb-timegroup:first-of-type[b-znu7ultqik] { margin-top: 4px; }
.pb-timegroup-head[b-znu7ultqik] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    border-bottom: 1px solid var(--border-subtle);
    padding-bottom: 6px;
    margin-bottom: 4px;
}
.pb-timegroup-label[b-znu7ultqik] { font-weight: 800; font-size: 1.02rem; color: var(--text-primary); }
.pb-timegroup-price[b-znu7ultqik] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--b9-primary-text);
}
.pb-timegroup-count[b-znu7ultqik] { margin-left: auto; color: var(--text-muted); font-size: var(--font-size-chip); }

.pb-main-title[b-znu7ultqik] { margin-top: 0; }

/* ── Desktop: a real layout, not a phone column in an ocean ──
   Two panes inside one card: the club + day list hold the left rail (sticky, so the
   days stay in reach while times scroll), times own the right. The card wears the
   club's accent as a hairline crown. */
@media (min-width: 960px) {
    .pb-page.pb-browse[b-znu7ultqik] { max-width: 1080px; }
    .pb-page.pb-browse .pb-card[b-znu7ultqik] {
        padding: 30px 34px 34px;
        border-top: 3px solid var(--brand, #2f6bff);
    }

    .pb-browsegrid[b-znu7ultqik] {
        display: grid;
        grid-template-columns: 300px minmax(0, 1fr);
        gap: 34px;
        align-items: start;
        margin-top: 10px;
    }
    .pb-rail[b-znu7ultqik] { position: sticky; top: 24px; }

    /* The strip turns into a day LIST: one row per day, price on the right — no
       horizontal scrolling, no clipped chips, every day visible at once. */
    .pb-rail .pb-daystrip[b-znu7ultqik] {
        flex-direction: column;
        overflow: visible;
        gap: 6px;
        padding: 4px 0 0;
    }
    .pb-rail .pb-daybtn[b-znu7ultqik] {
        display: grid;
        /* auto, not a fixed column: "Tomorrow" is longer than "Sat" and must never
           collide with its date. */
        grid-template-columns: auto 1fr auto;
        column-gap: 10px;
        align-items: center;
        justify-items: start;
        width: 100%;
        min-height: 52px;
        padding: 0 14px;
        text-align: left;
    }
    .pb-rail .pb-day-num[b-znu7ultqik] { font-size: .92rem; }
    .pb-rail .pb-day-price[b-znu7ultqik] { justify-self: end; }

    .pb-times[b-znu7ultqik] { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); }
}


/* The set of time sections. Purely a handle — the sections already own their own spacing
   (.pb-timegroup margin-top), so this adds no gap of its own and the day looks unchanged. */
.pb-timesets[b-znu7ultqik] { display: block; }

/* A tee time somebody else already holds. Marked on the chip AND stated plainly on the
   commit screen — a golfer choosing a time is choosing whether to share it (TS-023). */
.pb-time-shared[b-znu7ultqik] {
    display: block;
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: .02em;
    color: var(--text-muted);
}
.pb-sharednote[b-znu7ultqik] { border-left: 3px solid var(--brand); padding-left: 10px; }

/* Reaching a phone-only guest: the one thing between them and a booking they can find again. */
.pb-noemail[b-znu7ultqik] { margin: 12px 0 16px; text-align: left; }
.pb-noemail-row[b-znu7ultqik] { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.pb-noemail-row .pb-input[b-znu7ultqik] { flex: 1 1 12rem; }

/* Which course (TS-008). Only drawn when the club sells more than one online. */
.pb-courserow[b-znu7ultqik] { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 4px; }
.pb-coursebtn[b-znu7ultqik] {
    flex: 1 1 10rem;
    min-height: 52px;
    padding: 8px 14px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 12px;
    font-weight: 700;
    cursor: pointer;
}

/* Booking closed online (UX audit G05): the way forward stacks under the sentence, full
   width, so both taps are big and obvious on a phone. */
.pb-closed-actions[b-znu7ultqik] { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
.pb-closed-actions .pb-btn[b-znu7ultqik] { width: 100%; text-decoration: none; }

/* A phone number is a single unbreakable thing. Without this the hyphen in "345-3221" is a
   break opportunity like any other and the number split across two lines. */
.pb-phone[b-znu7ultqik] { white-space: nowrap; }

/* And so is the instruction beside it. The digits were held together while the words were not,
   so the button broke as "Call the pro" / "shop:" / "(651) 345-3221" — three lines to say one
   thing. The whole phrase now moves to the next line together, or not at all. */
.pb-calllabel[b-znu7ultqik] { white-space: nowrap; }
/* /Components/Pages/TeeSheet/StationHome.razor.rz.scp.css */
/* Front desk home — a handful of doors, each big enough to hit without aiming.
   Design tokens only; the tiles read in both themes. */
.sh-page[b-s1glcqvb1a] {
    max-width: 960px;
}

.sh-switch[b-s1glcqvb1a] {
    min-height: 48px;
}

.sh-tiles[b-s1glcqvb1a] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
}

.sh-tile[b-s1glcqvb1a] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 1.25rem 1.4rem;
    min-height: 128px;
    border: 1px solid var(--border-subtle, rgba(128, 128, 128, 0.25));
    border-radius: 14px;
    background: var(--bg-surface, rgba(128, 128, 128, 0.06));
    text-decoration: none;
    color: inherit;
    transition: border-color 120ms ease, transform 120ms ease;
}

.sh-tile:hover[b-s1glcqvb1a],
.sh-tile:focus-visible[b-s1glcqvb1a] {
    border-color: var(--brand, #2f6bff);
    transform: translateY(-1px);
}

.sh-tile-icon[b-s1glcqvb1a] {
    font-size: 1.6rem;
    color: var(--b9-primary-text);
}

.sh-tile-title[b-s1glcqvb1a] {
    font-size: 1.15rem;
    font-weight: 700;
}

.sh-tile-sub[b-s1glcqvb1a] {
    color: var(--text-muted, #8a94a6);
    font-size: 0.9rem;
}
/* /Components/Pages/TeeSheet/StationPinGate.razor.rz.scp.css */
/* ── Front desk station: the who's-working gate ─────────────────────────
   A full-screen curtain, not a modal — the surface behind it must be
   unreadable and untappable until a person owns the session.
   Counter-friendly targets throughout. */
.ts-station-gate[b-mu5upxd0t8] {
    position: fixed;
    inset: 0;
    z-index: 1100;
    background: var(--bg-app, #0b1020);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.5rem;
}

.ts-station-card[b-mu5upxd0t8] {
    width: min(92vw, 520px);
    text-align: center;
}

.ts-station-names[b-mu5upxd0t8] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    justify-content: center;
}

.ts-station-name[b-mu5upxd0t8] {
    min-height: 56px;
    min-width: 140px;
    font-size: 1.05rem;
    font-weight: 600;
}

.ts-pin-dots[b-mu5upxd0t8] {
    display: flex;
    gap: 0.6rem;
    justify-content: center;
    margin-bottom: 0.75rem;
}

.ts-pin-dot[b-mu5upxd0t8] {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    border: 2px solid var(--border-strong, rgba(255, 255, 255, 0.35));
}

.ts-pin-dot.on[b-mu5upxd0t8] {
    background: var(--brand, #2f6bff);
    border-color: var(--brand, #2f6bff);
}

.ts-pin-pad[b-mu5upxd0t8] {
    display: grid;
    grid-template-columns: repeat(3, 84px);
    gap: 0.5rem;
    justify-content: center;
}

.ts-pin-key[b-mu5upxd0t8] {
    min-height: 56px;
    font-size: 1.25rem;
    font-variant-numeric: tabular-nums;
}

.ts-pin-cancel[b-mu5upxd0t8] {
    font-size: 0.95rem;
}

/* Reserved for the wrong-code / lockout line (two lines at most), so the keypad never jumps. */
.ts-pin-msg[b-mu5upxd0t8] {
    min-height: 2.8em;
    margin-bottom: 0.5rem;
}
/* /Components/Pages/TeeSheet/TeeSheetPage.razor.rz.scp.css */
/* Staff tee sheet — calm, token-driven, phone-first (staff live on phones). */

.ts-subtitle[b-h56xbr1o2x] { font-size: .95rem; }

.ts-teaser[b-h56xbr1o2x] {
    max-width: 640px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    padding: 28px;
}
.ts-teaser-icon[b-h56xbr1o2x] { font-size: 2rem; color: var(--b9-primary-text); display: block; margin-bottom: 10px; }
.ts-teaser-copy[b-h56xbr1o2x] { color: var(--text-secondary); }

.ts-course-pick[b-h56xbr1o2x] { min-height: 48px; max-width: 240px; }
.ts-toolbtn[b-h56xbr1o2x], .ts-cta[b-h56xbr1o2x], .ts-datebtn[b-h56xbr1o2x], .ts-todaybtn[b-h56xbr1o2x], .ts-primary[b-h56xbr1o2x] { min-height: 48px; }

/* ── One obvious action ────────────────────────────────────────────────────
   The sheet used to open with eleven outline buttons and nothing filled, so
   the brightest thing on a phone was the date chip. This is the counter's job
   — sell the next tee time — and it is the only filled control up here. It
   keeps the brand fill Bootstrap's .btn-primary already gives it; the rules
   below only make it read as the first thing on the row. */
.ts-primary[b-h56xbr1o2x] {
    font-weight: 600;
    /* Never the runt of a wrapped row: on a phone it takes the line it needs. */
    flex: 1 1 auto;
    min-width: 190px;
}
.ts-tools .ts-toolbtn[b-h56xbr1o2x] { flex: 0 1 auto; }

/* ── The "More" drawer ─────────────────────────────────────────────────────
   Opens in the flow directly under the toolbar rather than floating, so a
   thumb never chases it and nothing is hidden behind an overlay on a small
   screen. Same buttons as before, same handlers — just no longer competing
   with the day's work for attention. */
.ts-more[b-h56xbr1o2x] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    max-width: 1240px;
    margin: 0 0 14px;
    padding: 12px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
}

.ts-datebar[b-h56xbr1o2x] {
    display: flex;
    gap: 8px;
    align-items: center;
    margin-bottom: 14px;
    /* One row always: the strip scrolls INSIDE itself, controls never wrap under. */
    flex-wrap: nowrap;
    min-width: 0;
}
.ts-daystrip[b-h56xbr1o2x] { flex: 1 1 auto; min-width: 0; }
.ts-datebar > .ts-datebtn[b-h56xbr1o2x], .ts-datebar > .ts-todaybtn[b-h56xbr1o2x], .ts-datebar > .ts-calbtn[b-h56xbr1o2x] { flex: 0 0 auto; }
.ts-dateinput[b-h56xbr1o2x] { min-height: 48px; max-width: 190px; }
.ts-datebtn[b-h56xbr1o2x] { min-width: 48px; }

.ts-closed[b-h56xbr1o2x] {
    display: flex;
    gap: 10px;
    align-items: center;
    color: var(--text-muted);
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    border-radius: var(--b9-card-radius);
    padding: 22px;
    max-width: 640px;
}

.ts-blockstrip[b-h56xbr1o2x] { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.ts-blockchip[b-h56xbr1o2x] {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    background: var(--warning-soft);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 999px;
    padding: 8px 14px;
    font-size: var(--font-size-sm);
}
.ts-blockchip-tentative[b-h56xbr1o2x] { border-style: dashed; }
/* A crossover block closes nothing on the first tee, so it must not carry the warning colour
   a real closure does — same strip, visibly different claim (TS-018). */
.ts-blockchip-open[b-h56xbr1o2x] { background: var(--bg-raised); }
.ts-blockchip-note[b-h56xbr1o2x] {
    color: var(--text-secondary);
    font-weight: 600;
    font-size: var(--font-size-sm);
    white-space: nowrap;
}
.ts-blockchip-time[b-h56xbr1o2x] { color: var(--text-muted); }
/* The most destructive control on the sheet — it puts tee times back ON SALE — and it was the
   smallest, at roughly 22x26px. The hit area is expanded rather than the chip: negative margins
   pull the 48px target back over the chip's own padding, so the strip looks unchanged and the
   thumb still lands. */
.ts-blockchip-x[b-h56xbr1o2x] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    background: none;
    border: none;
    color: var(--text-muted);
    padding: 0;
    margin: -12px -10px -12px 0;
    border-radius: 999px;
    cursor: pointer;
}
.ts-blockchip-x:hover[b-h56xbr1o2x] { color: var(--danger); }

.ts-grid[b-h56xbr1o2x] {
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    overflow: hidden;
}
.ts-row[b-h56xbr1o2x] {
    display: flex;
    align-items: stretch;
    gap: 10px;
    border-bottom: 1px solid var(--border-subtle);
    min-height: 56px;
}
.ts-row:last-child[b-h56xbr1o2x] { border-bottom: none; }
.ts-row-blocked[b-h56xbr1o2x] { background: var(--warning-soft); }

.ts-time[b-h56xbr1o2x] {
    flex: 0 0 92px;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 6px 0 14px;
    /* The time is the sheet's primary column — it had been sitting in the same lowest-emphasis
       tier as incidental labels, which is exactly backwards for the thing staff scan first. */
    color: var(--text-primary);
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    font-size: .92rem;
}

.ts-cell[b-h56xbr1o2x] {
    flex: 1;
    /* A flex item's default min-width is auto, so it refuses to shrink below its content and the
       grid's overflow:hidden takes the difference off the right-hand edge. These guards used to
       live only inside @media (min-width: 900px) — i.e. everywhere EXCEPT the phone staff
       actually work on. */
    min-width: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 8px 14px 8px 0;
}

.ts-blockband[b-h56xbr1o2x] {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--text-secondary);
    font-size: .9rem;
    padding-right: 14px;
}

.ts-bookingchip[b-h56xbr1o2x] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 48px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 10px;
    padding: 6px 12px;
    cursor: pointer;
    text-align: left;
    min-width: 0;
    overflow: hidden;
}
.ts-bookingchip:hover[b-h56xbr1o2x] { border-color: var(--border-strong); }
/* Ellipsis, not a hard cut: a truncated name still reads as a name, where a clipped one just
   ends mid-letter and looks like a rendering fault. */
.ts-chipname[b-h56xbr1o2x] {
    font-weight: 600;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ts-chipsize[b-h56xbr1o2x] { color: var(--text-muted); font-variant-numeric: tabular-nums; }

.ts-memberbadge[b-h56xbr1o2x] {
    background: var(--success-soft);
    color: var(--text-primary);
    border-radius: 999px;
    padding: 2px 9px;
    font-size: var(--font-size-chip);
    font-weight: 600;
    letter-spacing: .02em;
    white-space: nowrap;
}

/* ── Find a booking on another day (TS-012) ─────────────────────────────── */
.ts-searchbar[b-h56xbr1o2x] { margin: 12px 0 0; }
.ts-searchfield[b-h56xbr1o2x] {
    position: relative;
    display: flex;
    align-items: center;
    gap: 8px;
    max-width: 480px;
}
.ts-searchfield > i[b-h56xbr1o2x] { position: absolute; left: 12px; color: var(--text-muted); }
.ts-searchfield input[b-h56xbr1o2x] { padding-left: 36px; min-height: 48px; }
.ts-searchclear[b-h56xbr1o2x] {
    position: absolute;
    right: 6px;
    min-width: 48px;
    min-height: 48px;
    background: none;
    border: 0;
    color: var(--text-muted);
    cursor: pointer;
}
.ts-searchclear:hover[b-h56xbr1o2x] { color: var(--text-primary); }

.ts-searchresults[b-h56xbr1o2x] {
    margin-top: 8px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-width: 640px;
}
.ts-searchnote[b-h56xbr1o2x] { color: var(--text-muted); font-size: .9rem; margin: 6px 0; }
.ts-searchhit[b-h56xbr1o2x] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 10px;
    width: 100%;
    min-height: 48px;
    text-align: left;
    padding: 8px 14px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: 10px;
    color: var(--text-primary);
    cursor: pointer;
}
.ts-searchhit:hover[b-h56xbr1o2x] { border-color: var(--brand); }
.ts-hitwhen[b-h56xbr1o2x] { font-weight: 700; font-variant-numeric: tabular-nums; }
.ts-hitwho[b-h56xbr1o2x] { color: var(--text-primary); }
.ts-hitmeta[b-h56xbr1o2x] { color: var(--text-muted); font-size: var(--font-size-sm); margin-left: auto; }
.ts-hitcancelled[b-h56xbr1o2x] { color: var(--danger); font-weight: 600; }
.ts-hitcheckedin[b-h56xbr1o2x] { color: var(--success-text, var(--text-secondary)); font-weight: 600; }

/* ── Who's waiting (TS-021) ─────────────────────────────────────────────── */
.ts-toolcount[b-h56xbr1o2x] {
    display: inline-block;
    margin-left: 6px;
    padding: 0 7px;
    border-radius: 999px;
    background: var(--brand);
    /* White on brand blue, matching every other primary chip in the app. */
    color: #fff;
    font-size: var(--font-size-chip);
    font-weight: 700;
}
.ts-waitlist[b-h56xbr1o2x] {
    margin-top: 12px;
    padding: 12px 14px;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
}
.ts-waitlist-head[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}
.ts-waitrow[b-h56xbr1o2x] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 10px;
    padding: 8px 0;
    border-top: 1px solid var(--border-subtle);
}
.ts-waitcontact[b-h56xbr1o2x] { display: flex; flex-wrap: wrap; gap: 12px; margin-left: auto; }
.ts-waitbadge[b-h56xbr1o2x] {
    background: var(--warning-soft);
    border-radius: 999px;
    padding: 1px 9px;
    font-size: var(--font-size-chip);
    font-weight: 700;
}

/* Round length. Only ever drawn when a group is playing something other than this course's
   usual round, so it must read as an exception at a glance without shouting. */
.ts-holesbadge[b-h56xbr1o2x] {
    background: var(--bg-raised);
    border: 1px solid var(--border-strong);
    color: var(--text-secondary);
    border-radius: 999px;
    padding: 1px 8px;
    font-size: var(--font-size-sm);
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.ts-holesline[b-h56xbr1o2x] { color: var(--text-secondary); }

/* The turn on a nine played twice — stated before the booking is taken, never discovered. */
.ts-turnnote[b-h56xbr1o2x] {
    margin: 8px 0 0;
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
}

.ts-bookbtn[b-h56xbr1o2x] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 48px;
    background: none;
    border: 1px dashed var(--border-strong);
    color: var(--text-muted);
    border-radius: 10px;
    padding: 6px 14px;
    cursor: pointer;
}
.ts-bookbtn:hover[b-h56xbr1o2x] { color: var(--text-primary); border-color: var(--brand); }

/* Dialogs */
.ts-overlay[b-h56xbr1o2x] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, .55);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    z-index: 1050;
}
.ts-modal[b-h56xbr1o2x] {
    width: min(440px, 100%);
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    box-shadow: var(--b9-card-shadow-md);
    padding: 22px;
    max-height: 92vh;
    overflow-y: auto;
}
.ts-modal-sub[b-h56xbr1o2x] { font-size: .88rem; margin-bottom: 14px; }
.ts-label[b-h56xbr1o2x] { display: block; margin: 14px 0 6px; color: var(--text-secondary); font-size: .88rem; }
.ts-modal-actions[b-h56xbr1o2x] { display: flex; justify-content: flex-end; gap: 10px; margin-top: 20px; }

.ts-sizerow[b-h56xbr1o2x] { display: flex; gap: 8px; }
.ts-sizebtn[b-h56xbr1o2x] {
    flex: 1;
    min-height: 48px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    color: var(--text-primary);
    border-radius: 10px;
    font-weight: 700;
    font-size: 1.05rem;
    cursor: pointer;
}
.ts-sizebtn-on[b-h56xbr1o2x] { border-color: var(--brand); background: var(--bg-surface); box-shadow: var(--b9-focus-ring); }
/* Two wide targets rather than four narrow ones — a holes row has at most two answers. */
.ts-holesbtn[b-h56xbr1o2x] { font-size: 1rem; }

.ts-timerow[b-h56xbr1o2x] { display: flex; gap: 12px; }
.ts-timerow > div[b-h56xbr1o2x] { flex: 1; }

.ts-check[b-h56xbr1o2x] { display: flex; gap: 10px; align-items: center; margin-top: 14px; color: var(--text-secondary); }
.ts-check input[b-h56xbr1o2x] { width: 20px; height: 20px; }

.ts-matchlist[b-h56xbr1o2x] {
    border: 1px solid var(--border-default);
    border-radius: 10px;
    margin-top: 6px;
    overflow: hidden;
}
.ts-matchrow[b-h56xbr1o2x] {
    display: flex;
    width: 100%;
    justify-content: space-between;
    align-items: center;
    gap: 10px;
    background: var(--bg-raised);
    border: none;
    border-bottom: 1px solid var(--border-subtle);
    color: var(--text-primary);
    padding: 12px 14px;
    min-height: 48px;
    cursor: pointer;
    text-align: left;
}
.ts-matchrow:last-child[b-h56xbr1o2x] { border-bottom: none; }
.ts-matchrow:hover[b-h56xbr1o2x] { background: var(--bg-surface); }
.ts-matchrow-hi[b-h56xbr1o2x] { background: var(--bg-surface); box-shadow: inset 3px 0 0 var(--brand); }
.ts-matchwho[b-h56xbr1o2x] { display: flex; flex-direction: column; gap: 2px; min-width: 0; text-align: left; }
.ts-matchmail[b-h56xbr1o2x] {
    color: var(--text-muted);
    font-size: var(--font-size-sm);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.ts-matchhint[b-h56xbr1o2x] {
    margin: 0;
    padding: 8px 14px;
    background: var(--bg-raised);
    border-top: 1px dashed var(--border-subtle);
    color: var(--text-muted);
    font-size: var(--font-size-sm);
}

/* The tagged state: the field becomes a chip — one identity, visibly attached. */
.ts-pickedfield[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    gap: 10px;
    background: var(--bg-raised);
    border: 1px solid var(--brand);
    border-radius: 10px;
    padding: 6px 8px 6px 14px;
    min-height: 48px;
}
.ts-pickedname[b-h56xbr1o2x] { font-weight: 600; }
.ts-pickedclear[b-h56xbr1o2x] {
    margin-left: auto;
    background: none;
    border: none;
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 600;
    cursor: pointer;
    padding: 10px 12px;
    min-height: 48px;
}
.ts-pickedclear:hover[b-h56xbr1o2x] { text-decoration: underline; }
.ts-pickedwhy[b-h56xbr1o2x] { margin: 6px 0 0; color: var(--text-muted); font-size: var(--font-size-sm); }

@media (max-width: 640px) {
    .ts-time[b-h56xbr1o2x] { flex-basis: 74px; font-size: var(--font-size-sm); }
    .ts-page[b-h56xbr1o2x] { padding-left: 10px !important; padding-right: 10px !important; }
}

/* Conflict queue — the human decides; nothing auto-cancels. */
.ts-conflicts[b-h56xbr1o2x] {
    background: var(--warning-soft);
    border: 1px solid var(--border-strong);
    border-radius: var(--b9-card-radius);
    padding: 14px 18px;
    margin-bottom: 14px;
}
.ts-conflicts-head[b-h56xbr1o2x] { display: flex; gap: 10px; align-items: baseline; flex-wrap: wrap; margin-bottom: 8px; color: var(--text-primary); }
.ts-conflicts-sub[b-h56xbr1o2x] { color: var(--text-muted); font-size: var(--font-size-sm); }
.ts-conflict-row[b-h56xbr1o2x] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    padding: 10px 0;
    border-top: 1px solid var(--border-subtle);
}
.ts-conflict-what[b-h56xbr1o2x] { color: var(--text-secondary); }
.ts-conflict-actions[b-h56xbr1o2x] { display: flex; gap: 8px; flex-wrap: wrap; }
.ts-conflict-actions .btn[b-h56xbr1o2x] { min-height: 48px; }

/* GolfNow channel badge — marks slots sold on the marketplace so nobody sells them twice. */
.ts-gnbadge[b-h56xbr1o2x] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    padding: 0.05rem 0.4rem;
    border-radius: 6px;
    background: rgba(16, 122, 61, 0.18);
    color: var(--success-text);
    border: 1px solid rgba(52, 211, 153, 0.35);
}

.ts-hint[b-h56xbr1o2x] {
    font-size: var(--font-size-sm);
}

/* ── Move mode, undo, and check-in ── */
.ts-movebar[b-h56xbr1o2x],
.ts-undobar[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
    padding: 0.55rem 0.9rem;
    border-radius: 10px;
    margin-bottom: 0.75rem;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.12));
    background: var(--bg-elevated);
}

.ts-movebar[b-h56xbr1o2x] {
    border-color: var(--brand);
}

.ts-movehere[b-h56xbr1o2x] {
    border-color: var(--brand);
    color: var(--brand-text);
    font-weight: 700;
}

.ts-chip-checkedin[b-h56xbr1o2x] {
    opacity: 0.85;
    border-style: solid;
}

.ts-checkin-mark[b-h56xbr1o2x] {
    color: var(--success-text);
}

.ts-actionstack[b-h56xbr1o2x] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.ts-actionstack .btn[b-h56xbr1o2x] {
    min-height: 48px;
}

/* The who's-working gate styles moved with the markup into StationPinGate.razor.css
   (scoped CSS only applies to the component that owns the markup). */

/* ── "Bring your tee sheet with you" import ────────────────────────────── */
.ts-import-modal[b-h56xbr1o2x] {
    width: min(94vw, 640px);
}

.ts-import-text[b-h56xbr1o2x] {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: var(--font-size-sm);
}

.ts-import-counts[b-h56xbr1o2x] {
    display: flex;
    gap: 1rem;
    margin: 0.5rem 0;
    font-weight: 600;
    font-size: 0.9rem;
}

.ts-imp-ok[b-h56xbr1o2x]   { color: var(--success-text, #4ade80); }
.ts-imp-dup[b-h56xbr1o2x]  { color: var(--text-muted, #94a3b8); }
.ts-imp-warn[b-h56xbr1o2x] { color: var(--warning-text, #fbbf24); }

.ts-import-rows[b-h56xbr1o2x] {
    max-height: 240px;
    overflow-y: auto;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.08));
    border-radius: 10px;
    padding: 0.35rem 0.6rem;
}

.ts-import-row[b-h56xbr1o2x] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.2rem 0;
}

.ts-imp-chip[b-h56xbr1o2x] {
    flex: 0 0 auto;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    align-self: center;
    background: var(--warning, #f59e0b);
}

.ts-imp-chip.ts-imp-ok[b-h56xbr1o2x]  { background: var(--success, #22c55e); }
.ts-imp-chip.ts-imp-dup[b-h56xbr1o2x] { background: var(--border-strong, #64748b); }

.ts-import-what[b-h56xbr1o2x] { font-weight: 600; white-space: nowrap; }

.ts-impbadge[b-h56xbr1o2x] {
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    padding: 0.1rem 0.35rem;
    border-radius: 6px;
    background: var(--bg-elevated, rgba(255, 255, 255, 0.08));
    color: var(--text-secondary, #94a3b8);
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.12));
}

.ts-standing[b-h56xbr1o2x] {
    color: var(--brand-text, #7ea6ff);
}

/* ── Day strip — the counter's two-week world ──────────────────────────── */
.ts-daystrip[b-h56xbr1o2x] {
    display: flex;
    gap: 6px;
    overflow-x: auto;
    scrollbar-width: thin;
    padding-bottom: 2px;
}

.ts-daybtn[b-h56xbr1o2x] {
    flex: 0 0 auto;
    min-width: 68px;
    min-height: 52px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1px;
    border-radius: 10px;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.12));
    background: var(--bg-elevated, rgba(255, 255, 255, 0.03));
    color: var(--text-primary, #e6ecf7);
    cursor: pointer;
}

.ts-daybtn:hover[b-h56xbr1o2x] {
    border-color: var(--border-strong, rgba(255, 255, 255, 0.28));
}

.ts-day-dow[b-h56xbr1o2x] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--text-muted, #8b96ab);
}

.ts-day-num[b-h56xbr1o2x] {
    font-size: 0.9rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.ts-daybtn-today[b-h56xbr1o2x] {
    border-color: var(--brand, #2f6bff);
}

.ts-daybtn-today .ts-day-dow[b-h56xbr1o2x] {
    color: var(--brand-text, #7ea6ff);
}

.ts-daybtn-on[b-h56xbr1o2x],
.ts-daybtn-on:hover[b-h56xbr1o2x] {
    background: var(--brand, #2f6bff);
    border-color: var(--brand, #2f6bff);
}

.ts-daybtn-on .ts-day-dow[b-h56xbr1o2x],
.ts-daybtn-on .ts-day-num[b-h56xbr1o2x] {
    color: #fff;
}

/* The rare-case calendar: a real date input hiding behind the icon, so the
   native picker opens on tap and keyboards/screen readers still reach it. */
.ts-calbtn[b-h56xbr1o2x] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    border: 1px solid var(--border-subtle, rgba(255, 255, 255, 0.12));
    border-radius: 10px;
    color: var(--text-secondary, #aab4c6);
}

.ts-calbtn .ts-dateinput[b-h56xbr1o2x] {
    position: absolute;
    inset: 0;
    opacity: 0;
    cursor: pointer;
}

/* ── The sheet reads as a sheet (2026-08-18 wide-screen redesign) ──────────────
   Research verdict: elite sheets are capacity bars with class colors and a "now"
   orientation, and the top competitor complaints are dated looks, clutter, and
   losing your place. Width is capped so 2000px monitors get a sheet, not a smear;
   each row's chips grow by party size so a full time reads full from across the
   shop; today dims its own history and draws a line at now. */
.ts-headrow[b-h56xbr1o2x], .ts-datebar[b-h56xbr1o2x], .ts-conflicts[b-h56xbr1o2x], .ts-movebar[b-h56xbr1o2x], .ts-undobar[b-h56xbr1o2x],
.ts-daypulse[b-h56xbr1o2x], .ts-grid[b-h56xbr1o2x] { max-width: 1240px; }

.ts-daypulse[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin: 0 0 12px;
}
.ts-pulsebar[b-h56xbr1o2x] {
    flex: 1;
    height: 6px;
    border-radius: 999px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    overflow: hidden;
}
.ts-pulsebar span[b-h56xbr1o2x] {
    display: block;
    height: 100%;
    background: var(--brand);
    border-radius: 999px;
    transition: width .3s ease;
}
.ts-pulsetext[b-h56xbr1o2x] {
    color: var(--text-secondary);
    font-size: var(--font-size-sm);
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}
/* Phones: the sentence wraps under a full-width bar — never clipped. */
@media (max-width: 640px) {
    .ts-daypulse[b-h56xbr1o2x] { flex-direction: column; align-items: stretch; gap: 6px; }
    .ts-pulsebar[b-h56xbr1o2x] { width: 100%; }
    .ts-pulsetext[b-h56xbr1o2x] { white-space: normal; }
}

.ts-period[b-h56xbr1o2x] {
    padding: 18px 14px 6px;
    color: var(--text-muted);
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .09em;
    text-transform: uppercase;
    border-bottom: 1px solid var(--border-subtle);
}

.ts-nowline[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    padding: 0 14px;
    border-bottom: 2px solid var(--brand);
}
.ts-nowline span[b-h56xbr1o2x] {
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 700;
    letter-spacing: .04em;
    padding: 3px 0;
}

/* History fades so the eye lands on now; hover wakes a row for late check-ins. */
.ts-row-past[b-h56xbr1o2x] { opacity: .55; transition: opacity .15s ease; }
.ts-row-past:hover[b-h56xbr1o2x], .ts-row-past:focus-within[b-h56xbr1o2x] { opacity: 1; }

/* ── Off-grid rows ──────────────────────────────────────────────────────────
   A live booking the current interval or hours no longer land on. Marked with a
   word as well as a tint — never colour alone — because the counter has to be
   able to tell at a glance that this one needs moving. */
.ts-row-offgrid[b-h56xbr1o2x] {
    background: var(--warning-soft);
    border-left: 3px solid var(--warning, #d18b1f);
}

.ts-offgrid-tag[b-h56xbr1o2x] {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    border-radius: 999px;
    font-size: var(--font-size-chip);
    font-weight: 700;
    letter-spacing: .02em;
    text-transform: uppercase;
    color: var(--text-primary);
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    white-space: nowrap;
}

.ts-offgrid-note[b-h56xbr1o2x] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    padding: 6px 10px;
    align-self: center;
}

/* ── Golfer contact on the booking dialog ───────────────────────────────── */
.ts-contact[b-h56xbr1o2x] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 16px;
    margin-bottom: 14px;
    font-size: .9rem;
}

/* 48px minimum: this is the control a counter person taps to phone a golfer, one-handed,
   with someone waiting — it is exactly the case the touch-target rule exists for. */
.ts-contact-link[b-h56xbr1o2x] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 48px;
    padding: 0 10px;
    border-radius: 8px;
    color: var(--text-primary);
    text-decoration: none;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
}

.ts-contact-link:hover[b-h56xbr1o2x], .ts-contact-link:focus-visible[b-h56xbr1o2x] { border-color: currentColor; }

.ts-contact-none[b-h56xbr1o2x] { color: var(--text-muted); font-size: var(--font-size-sm); }

/* The conflict queue's own contact affordance — same job, tighter row. */
.ts-conflict-contact[b-h56xbr1o2x] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-height: 48px;
    padding: 0 8px;
    margin-left: 8px;
    border-radius: 8px;
    font-size: var(--font-size-sm);
    color: var(--text-primary);
    text-decoration: none;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
    white-space: nowrap;
}

.ts-conflict-contact:hover[b-h56xbr1o2x], .ts-conflict-contact:focus-visible[b-h56xbr1o2x] { border-color: currentColor; }

/* ── Who turned up: per-player attendance on the booking dialog ─────────── */
.ts-attendance[b-h56xbr1o2x] {
    margin-bottom: 14px;
    padding: 10px 12px;
    border-radius: 10px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
}

.ts-attend-row[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 4px 0;
}

.ts-attend-who[b-h56xbr1o2x] {
    font-size: .92rem;
    color: var(--text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ts-attend-actions[b-h56xbr1o2x] { display: flex; gap: 6px; flex: 0 0 auto; }

/* 48px: this is tapped once per golfer with a queue at the counter. */
.ts-attend-btn[b-h56xbr1o2x] {
    min-height: 48px;
    min-width: 84px;
    padding: 0 12px;
    border-radius: 8px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-primary);
    background: var(--bg-surface);
    border: 1px solid var(--border-subtle);
    cursor: pointer;
}

.ts-attend-btn:hover:not(:disabled)[b-h56xbr1o2x] { border-color: currentColor; }

/* Selected state carries a fill AND the word it already contains — never colour alone. */
.ts-attend-on[b-h56xbr1o2x] { background: var(--success-soft); border-color: var(--success, #2e7d52); }
.ts-attend-no.ts-attend-on[b-h56xbr1o2x] { background: var(--danger-soft); border-color: var(--danger, #b3392f); }

.ts-closurebar[b-h56xbr1o2x] { margin-bottom: 12px; }

/* Live bookings stranded on a day that was closed after they were made. */
.ts-closed-strays[b-h56xbr1o2x] { margin-top: 14px; }

.ts-closed-strays-lead[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    padding: 10px 12px;
    border-radius: 10px;
    background: var(--warning-soft);
    color: var(--text-primary);
    font-size: .9rem;
}

/* The time column is a fixed flex-basis, so the tag needs to be allowed to sit under the
   time rather than fight it for width on a narrow sheet. */
.ts-row-offgrid .ts-time[b-h56xbr1o2x] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 4px;
    row-gap: 2px;
}

/* Seat-track rows: chips grow by ×party (inline flex-grow), the open button takes
   the rest — the row itself becomes the utilization bar. */
@media (min-width: 900px) {
    .ts-cell[b-h56xbr1o2x] { flex-wrap: nowrap; }
    .ts-bookingchip[b-h56xbr1o2x] { flex-basis: 0; min-width: 130px; overflow: hidden; }
    .ts-chipname[b-h56xbr1o2x] { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .ts-memberbadge[b-h56xbr1o2x], .ts-gnbadge[b-h56xbr1o2x], .ts-impbadge[b-h56xbr1o2x], .ts-chipsize[b-h56xbr1o2x] { flex-shrink: 0; }
    .ts-bookbtn[b-h56xbr1o2x] { flex-basis: 0; min-width: 112px; justify-content: center; }
}

/* Phones: the day strip earns its width back — compact chips, chevrons slim, and
   the standalone Today button yields (the TODAY chip is right there). */
@media (max-width: 640px) {
    .ts-todaybtn[b-h56xbr1o2x] { display: none; }
    .ts-datebtn[b-h56xbr1o2x] { min-width: 48px; padding-left: 8px; padding-right: 8px; }
    .ts-daybtn[b-h56xbr1o2x] { padding: 6px 10px; }
    .ts-day-dow[b-h56xbr1o2x] { font-size: var(--font-size-sm); }
    .ts-day-num[b-h56xbr1o2x] { font-size: var(--font-size-sm); }
}

/* The one-tap clock fix, sitting inside its warning banner. */
.ts-tzfix[b-h56xbr1o2x] {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
    margin-top: .5rem;
}

/* Changing a party without destroying the booking (TS-014). */
.ts-party[b-h56xbr1o2x] { margin-top: 12px; }
.ts-dropbtn[b-h56xbr1o2x] {
    min-height: 48px;
    padding: 6px 12px;
    background: none;
    border: 1px solid var(--border-default);
    border-radius: 10px;
    color: var(--text-secondary);
    cursor: pointer;
    white-space: nowrap;
}
.ts-dropbtn:hover[b-h56xbr1o2x] { color: var(--danger); border-color: var(--danger); }
.ts-addplayer[b-h56xbr1o2x] { min-height: 48px; margin-top: 8px; }

/* The staff note, editable at the counter rather than hidden in a title attribute. */
.ts-noteedit[b-h56xbr1o2x] { margin: 10px 0 4px; }
.ts-notesave[b-h56xbr1o2x] { min-height: 48px; margin-top: 8px; }
/* /Components/Pages/TeeSheet/TeeSheetPrint.razor.rz.scp.css */
/* The starter's paper. Deliberately single-look — black on white, because it is going through
   a pro-shop laser printer and the person reading it is standing at the first tee. */

.tp-page[b-ynaj7pf0os] { max-width: 1000px; margin: 0 auto; padding: 20px 16px 40px; }
.tp-muted[b-ynaj7pf0os] { color: var(--text-muted); }

.tp-toolbar[b-ynaj7pf0os] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 18px;
}
.tp-daynav[b-ynaj7pf0os] { display: flex; gap: 8px; margin-left: auto; }
.tp-toolbar .btn[b-ynaj7pf0os] { min-height: 48px; }

/* Screen preview shows the page as it will print: a white sheet, whatever the app theme. */
.tp-paper[b-ynaj7pf0os] {
    background: #fff;
    color: #111;
    border: 1px solid var(--border-default);
    border-radius: 8px;
    padding: 24px 22px;
}

.tp-head[b-ynaj7pf0os] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    flex-wrap: wrap;
    border-bottom: 2px solid #111;
    padding-bottom: 10px;
    margin-bottom: 14px;
}
.tp-title[b-ynaj7pf0os] { font-size: 1.5rem; font-weight: 800; margin: 0; color: #111; }
.tp-date[b-ynaj7pf0os] { font-size: 1.05rem; margin: 2px 0 0; color: #333; }
.tp-counts[b-ynaj7pf0os] { display: flex; flex-direction: column; align-items: flex-end; gap: 2px; font-size: .92rem; }
.tp-printed[b-ynaj7pf0os] { color: #555; font-size: .82rem; }

.tp-closed[b-ynaj7pf0os] {
    font-weight: 800;
    letter-spacing: .04em;
    border: 2px solid #111;
    padding: 8px 12px;
    margin: 0 0 14px;
}

.tp-blocks[b-ynaj7pf0os] { margin: 0 0 14px; padding-left: 18px; font-size: .92rem; }
.tp-blocks li[b-ynaj7pf0os] { margin-bottom: 2px; }

.tp-table[b-ynaj7pf0os] { width: 100%; border-collapse: collapse; font-size: .95rem; }
.tp-table th[b-ynaj7pf0os] {
    text-align: left;
    border-bottom: 1.5px solid #111;
    padding: 6px 8px;
    font-size: .8rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.tp-table td[b-ynaj7pf0os] {
    border-bottom: 1px solid #ccc;
    padding: 8px;
    vertical-align: top;
}
.tp-c-time[b-ynaj7pf0os] { white-space: nowrap; font-weight: 700; font-variant-numeric: tabular-nums; width: 6.5rem; }
.tp-c-num[b-ynaj7pf0os] { text-align: center; width: 2.5rem; font-variant-numeric: tabular-nums; }
.tp-c-holes[b-ynaj7pf0os] { width: 5rem; font-variant-numeric: tabular-nums; }
.tp-c-contact[b-ynaj7pf0os] { width: 11rem; font-variant-numeric: tabular-nums; }
.tp-c-in[b-ynaj7pf0os] { width: 3rem; text-align: center; }

/* A pen box, because the fallback this exists for has no working screen to tap. */
.tp-box[b-ynaj7pf0os] {
    display: inline-block;
    width: 16px;
    height: 16px;
    border: 1.5px solid #111;
}

.tp-tag[b-ynaj7pf0os] {
    display: inline-block;
    margin-left: 6px;
    padding: 0 6px;
    border: 1px solid #666;
    border-radius: 3px;
    font-size: .7rem;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: #333;
}
.tp-names[b-ynaj7pf0os] { display: block; font-size: .82rem; color: #444; }
.tp-offgrid td[b-ynaj7pf0os] { background: #f2f2f2; }

@media print {
    /* Chrome off, ink on. Everything the starter needs is inside .tp-paper. */
    .tp-noprint[b-ynaj7pf0os] { display: none !important; }
    .tp-page[b-ynaj7pf0os] { padding: 0; max-width: none; }
    .tp-paper[b-ynaj7pf0os] { border: none; border-radius: 0; padding: 0; }
    /* A day sheet that splits a group across a page break is a group the starter misses. */
    .tp-table tr[b-ynaj7pf0os] { break-inside: avoid; }
    .tp-table thead[b-ynaj7pf0os] { display: table-header-group; }
}
/* /Components/Pages/TeeSheet/TeeSheetQrKit.razor.rz.scp.css */
.qk-page[b-tdemktg9b3] { max-width: 640px; margin: 0 auto; padding: 24px 16px 60px; }
.qk-muted[b-tdemktg9b3] { color: var(--text-muted); }
.qk-card[b-tdemktg9b3] {
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    padding: 24px;
}
.qk-toolbar[b-tdemktg9b3] { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 8px; }
.qk-btn[b-tdemktg9b3] { min-height: 48px; }

/* The printed card is deliberately single-look: black on white, at the counter. */
.qk-cardstock[b-tdemktg9b3] {
    background: #ffffff;
    color: #101418;
    border: 1px solid var(--border-default);
    border-radius: 14px;
    max-width: 420px;
    margin: 18px auto 0;
    padding: 34px 30px;
    text-align: center;
}
.qk-org[b-tdemktg9b3] { font-size: 1rem; letter-spacing: .08em; text-transform: uppercase; color: #4a5560; }
.qk-headline[b-tdemktg9b3] { font-size: 1.7rem; font-weight: 800; margin: 6px 0 18px; }
.qk-qr[b-tdemktg9b3] { max-width: 240px; margin: 0 auto; }
.qk-qr[b-tdemktg9b3]  svg { width: 100%; height: auto; display: block; }
.qk-sub[b-tdemktg9b3] { font-size: 1.05rem; font-weight: 600; margin-top: 16px; }
.qk-sub2[b-tdemktg9b3] { font-size: .9rem; color: #4a5560; margin-top: 6px; }

@media print {
    .qk-noprint[b-tdemktg9b3] { display: none !important; }
    .qk-page[b-tdemktg9b3] { padding: 0; max-width: none; }
    .qk-cardstock[b-tdemktg9b3] { border: none; margin: 0 auto; }
}
/* /Components/Pages/TeeSheet/TeeSheetReports.razor.rz.scp.css */
/* End-of-day numbers. Big figures, few of them — the reader is standing at a counter at the
   end of a shift, not sitting down to analyse anything. */

.tr-page[b-9p65f3tk1m] { max-width: 900px; margin: 0 auto; padding: 20px 16px 48px; }
.tr-muted[b-9p65f3tk1m] { color: var(--text-muted); }

.tr-head[b-9p65f3tk1m] { display: flex; align-items: center; gap: 12px; margin-bottom: 18px; }
.tr-back[b-9p65f3tk1m] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    min-height: 48px;
    color: var(--text-secondary);
    text-decoration: none;
}
.tr-back:hover[b-9p65f3tk1m] { color: var(--text-primary); }
.tr-title[b-9p65f3tk1m] { font-size: 1.5rem; font-weight: 800; margin: 0; }

.tr-rangebar[b-9p65f3tk1m] { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.tr-rangebtn[b-9p65f3tk1m] { min-height: 48px; }
.tr-csv[b-9p65f3tk1m] { margin-left: auto; display: inline-flex; align-items: center; gap: 6px; }

.tr-range[b-9p65f3tk1m] { color: var(--text-secondary); margin: 0 0 14px; }

.tr-cards[b-9p65f3tk1m] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: 12px;
    margin-bottom: 26px;
}
.tr-card[b-9p65f3tk1m] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 16px 18px;
    background: var(--bg-elevated);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
}
/* Rounds played is the number the shift is reconciled against — it leads. */
.tr-card-lead[b-9p65f3tk1m] { border-color: var(--brand); }
.tr-num[b-9p65f3tk1m] { font-size: 2rem; font-weight: 800; line-height: 1.1; font-variant-numeric: tabular-nums; }
.tr-lab[b-9p65f3tk1m] { color: var(--text-secondary); font-size: .9rem; }
.tr-sub[b-9p65f3tk1m] { color: var(--text-muted); font-size: var(--font-size-sm); }

.tr-h2[b-9p65f3tk1m] { font-size: 1.05rem; font-weight: 700; margin: 0 0 10px; }

.tr-sources[b-9p65f3tk1m] { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.tr-sources li[b-9p65f3tk1m] { display: flex; align-items: center; gap: 12px; }
.tr-srcname[b-9p65f3tk1m] { flex: 0 0 14rem; font-size: .92rem; }
.tr-srcbar[b-9p65f3tk1m] {
    flex: 1;
    height: 12px;
    background: var(--bg-raised);
    border-radius: 999px;
    overflow: hidden;
}
.tr-srcfill[b-9p65f3tk1m] { display: block; height: 100%; background: var(--brand); }
.tr-srcnum[b-9p65f3tk1m] { flex: 0 0 3rem; text-align: right; font-variant-numeric: tabular-nums; font-weight: 700; }

@media (max-width: 560px) {
    .tr-srcname[b-9p65f3tk1m] { flex-basis: 8rem; font-size: var(--font-size-sm); }
    .tr-csv[b-9p65f3tk1m] { margin-left: 0; }
}
/* /Components/Pages/TeeSheet/TeeSheetSetup.razor.rz.scp.css */
/* Tee sheet setup — the two-minute wizard. */

.tss-card[b-unhtqfmel7] {
    max-width: 680px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    border-radius: var(--b9-card-radius);
    padding: 26px;
}

.tss-days[b-unhtqfmel7] { display: flex; flex-direction: column; gap: 10px; }
.tss-dayrow[b-unhtqfmel7] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    padding: 10px 12px;
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    background: var(--bg-elevated);
}
.tss-dayrow-closed[b-unhtqfmel7] { opacity: .75; }
.tss-dayname[b-unhtqfmel7] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 150px;
    min-height: 48px;
    color: var(--text-primary);
    font-weight: 600;
    cursor: pointer;
}
.tss-dayname input[b-unhtqfmel7] { width: 20px; height: 20px; }
.tss-daytimes[b-unhtqfmel7] { display: flex; gap: 12px; flex-wrap: wrap; }
.tss-daytimes label[b-unhtqfmel7] { display: flex; flex-direction: column; gap: 4px; }
.tss-daytimes input[b-unhtqfmel7] { min-height: 48px; }
.tss-mini[b-unhtqfmel7] { color: var(--text-muted); font-size: var(--font-size-sm); }
.tss-closednote[b-unhtqfmel7] { color: var(--text-muted); }

.tss-pair[b-unhtqfmel7] { display: flex; gap: 16px; flex-wrap: wrap; }
.tss-pair label[b-unhtqfmel7] { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 200px; }
.tss-pair select[b-unhtqfmel7] { min-height: 48px; }

.tss-coming[b-unhtqfmel7] {
    margin-top: 26px;
    border: 1px dashed var(--border-strong);
    border-radius: 10px;
    padding: 16px 18px;
    color: var(--text-muted);
}
.tss-coming-copy[b-unhtqfmel7] { margin: 0; font-size: .9rem; }

.tss-actions[b-unhtqfmel7] { display: flex; justify-content: flex-end; gap: 10px; margin-top: 24px; }
.tss-btn[b-unhtqfmel7] { min-height: 48px; min-width: 120px; }

/* Senior/junior/resident savings, laid out as the small grid a price sign already is:
   a row label and one box per length sold. Columns collapse to one when the course sells
   a single length, so nobody stares at an empty second column. */
.tss-discounts[b-unhtqfmel7] { display: flex; flex-direction: column; gap: 8px; }
.tss-discount-row[b-unhtqfmel7] {
    display: grid;
    grid-template-columns: 9rem minmax(0, 1fr) minmax(0, 1fr);
    gap: 12px;
    align-items: center;
}
.tss-discounts-single .tss-discount-row[b-unhtqfmel7] { grid-template-columns: 9rem minmax(0, 1fr); }
.tss-discount-head[b-unhtqfmel7] { color: var(--text-muted); }
.tss-discount-row input[b-unhtqfmel7] { min-height: 48px; }

@media (max-width: 560px) {
    .tss-discount-row[b-unhtqfmel7] { grid-template-columns: 1fr 1fr; }
    .tss-discount-row > label:first-child[b-unhtqfmel7] { grid-column: 1 / -1; }
    .tss-discount-head[b-unhtqfmel7] { display: none; }
}

/* The live check: what a golfer will actually read, before anything is saved. */
.tss-ratepreview[b-unhtqfmel7] {
    margin-top: 14px;
    padding: 12px 14px;
    background: var(--bg-raised);
    border: 1px solid var(--border-default);
    border-radius: 10px;
}
.tss-ratepreview p[b-unhtqfmel7] { color: var(--text-secondary); }

.tss-check[b-unhtqfmel7] { display: flex; gap: 10px; align-items: flex-start; color: var(--text-primary); }
.tss-check input[b-unhtqfmel7] { width: 20px; height: 20px; margin-top: 2px; }

.tss-mow-day[b-unhtqfmel7] { max-width: 160px; min-height: 48px; }
.tss-mow-x[b-unhtqfmel7] { min-height: 48px; min-width: 48px; margin-left: auto; }

/* Standing tee times add row — one line on desktop, stacks on phones. */
.tss-standing-add[b-unhtqfmel7] {
    display: grid;
    grid-template-columns: 150px 130px 90px 1fr auto;
    gap: 0.5rem;
    align-items: center;
}

@media (max-width: 720px) {
    .tss-standing-add[b-unhtqfmel7] {
        grid-template-columns: 1fr 1fr;
    }
}

/* ── Rates v2: the season list ── */
.tss-season-list[b-unhtqfmel7] {
    list-style: none;
    margin: 0 0 12px;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.tss-season-row[b-unhtqfmel7] {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    padding: 10px 14px;
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
}

.tss-season-name[b-unhtqfmel7] { font-weight: 700; }
.tss-season-dates[b-unhtqfmel7] { color: var(--text-muted); font-size: .9rem; }
.tss-season-prices[b-unhtqfmel7] {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    margin-left: auto;
}

.tss-season-add[b-unhtqfmel7] {
    border: 1px dashed var(--border-strong);
    border-radius: 10px;
    padding: 12px 14px;
}

/* ── Module pass 2026-08-18: the wizard stops being a wall ─────────────────────
   Research: group long settings into named sections and let people jump; put
   hierarchy before scroll. The card widens, the day rows compress to one line,
   and a sticky chip rail names the six sections. */
.tss-card[b-unhtqfmel7] { max-width: 860px; }

.tss-jumpnav[b-unhtqfmel7] {
    position: sticky;
    top: 0;
    z-index: 5;
    display: flex;
    gap: 8px;
    max-width: 860px;
    padding: 10px 0;
    margin-bottom: 8px;
    background: var(--bg-app);
    overflow-x: auto;
    scrollbar-width: none;
}

/* A jumped-to heading lands BELOW the sticky rail, never underneath it. */
.tss-card h2[id][b-unhtqfmel7], .tss-card h3[id][b-unhtqfmel7] { scroll-margin-top: 72px; }
.tss-jumpnav[b-unhtqfmel7]::-webkit-scrollbar { display: none; }
.tss-jumpnav button[b-unhtqfmel7] {
    flex: 0 0 auto;
    min-height: 48px;
    padding: 6px 14px;
    background: var(--bg-surface);
    border: 1px solid var(--border-default);
    color: var(--text-secondary);
    border-radius: 999px;
    font-size: var(--font-size-sm);
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
}
.tss-jumpnav button:hover[b-unhtqfmel7] { color: var(--text-primary); border-color: var(--brand); }

/* Desktop: a day is one line — label beside input, seven rows read as a table. */
@media (min-width: 900px) {
    .tss-daytimes label[b-unhtqfmel7] { flex-direction: row; align-items: center; gap: 8px; }
}

/* Placeholders are hints, not data: at full brightness the rates card looks
   pre-filled ("28"/"35" read as saved prices — it fooled a careful reviewer,
   so it will fool a club owner). Bootstrap's form-control lacks the muting the
   b9-input family has; scoped here where the confusion bit. */
.tss-card input[b-unhtqfmel7]::placeholder { color: var(--text-muted); opacity: .55; }

/* The club's own GolfNow address — the one thing on the card someone has to copy exactly,
   so it gets room and a handle rather than sitting inside a paragraph. */
.tss-gn-address[b-unhtqfmel7] {
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
    padding: .5rem .75rem;
    border-radius: 8px;
    background: var(--bg-raised);
    border: 1px solid var(--border-subtle);
}

.tss-gn-address code[b-unhtqfmel7] {
    font-size: .95rem;
    font-weight: 600;
    color: var(--text-primary);
    word-break: break-all;
}

.tss-gn-steps[b-unhtqfmel7] {
    padding-left: 1.1rem;
    margin-bottom: .75rem;
}

.tss-gn-steps li[b-unhtqfmel7] { margin-bottom: .4rem; }

/* The GolfNow ingest history — the only record that exists, since the mail provider keeps none. */
.tss-gn-activity[b-unhtqfmel7] {
    margin-top: 1rem;
    padding-top: .75rem;
    border-top: 1px solid var(--border-subtle);
}

.tss-gn-activity-head[b-unhtqfmel7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .5rem;
}

.tss-gn-outcome[b-unhtqfmel7] {
    display: inline-block;
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 1px 7px;
    border-radius: 4px;
}

.tss-gn-ok[b-unhtqfmel7]   { background: var(--success-soft, rgba(34,197,94,0.15));  color: var(--success, #22C55E); }
.tss-gn-bad[b-unhtqfmel7]  { background: var(--danger-soft,  rgba(220,38,38,0.15));  color: var(--b9-danger, #DC2626); }
.tss-gn-meh[b-unhtqfmel7]  { background: var(--bg-raised);                            color: var(--text-secondary, var(--text-muted)); }
/* /Components/Security/RouteAccessGate.razor.rz.scp.css */
.route-gate-loading[b-aj7g1hpe4k] {
    min-height: 46vh;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.route-gate-loading-state[b-aj7g1hpe4k] {
    width: min(100%, 540px);
}
/* /Components/Shared/AdminOrgOverrideBanner.razor.rz.scp.css */
/* Admin org-override banner (extracted from inline styles, Blazor audit Batch G).
   --brand-strong was never defined; its #1D4ED8 fallback equals --brand. */
.aob-banner[b-aus6x6np9p] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;          /* phone widths: the button drops to its own line instead of overflowing */
    gap: .75rem;
    padding: .6rem 1rem;
    margin-bottom: 1rem;
    border-radius: 10px;
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-left: 4px solid var(--brand);
    color: var(--text-primary);
}

.aob-banner > .bi-shield-lock-fill[b-aus6x6np9p] { color: var(--b9-primary-text); }

/* Two lines: what mode you are in and which org, then what that means. */
.aob-text[b-aus6x6np9p] {
    display: flex;
    flex-direction: column;
    min-width: 0;             /* let a long org name wrap instead of stretching the strip */
}

.aob-title[b-aus6x6np9p] {
    font-weight: 700;
    letter-spacing: .02em;
}

.aob-sub[b-aus6x6np9p] {
    font-size: .875rem;
    color: var(--text-secondary);
}

/* The only way out of support mode, so it is a real target (>= 48px) and readable in both
   themes. --b9-primary-text is the brand-toned foreground defined for light AND dark; the
   hover state flips to the strip's own surface colour so it stays legible either way. */
.aob-exit[b-aus6x6np9p] {
    margin-left: auto;
    min-height: 48px;
    padding: .5rem 1rem;
    background: transparent;
    border: 1px solid var(--b9-primary-text);
    color: var(--b9-primary-text);
    font-weight: 600;
}

.aob-exit:hover[b-aus6x6np9p],
.aob-exit:focus-visible[b-aus6x6np9p] {
    background: var(--b9-primary-text);
    color: var(--bg-elevated);
}

/* The resume offer wears a quieter edge than support mode itself. The blue left border says
   "you are inside a customer's org"; this strip is the opposite statement — you are safely back
   in your own — so it borrows the muted border instead of shouting in brand blue. */
.aob-resume[b-aus6x6np9p] {
    border-left-color: var(--border-subtle);
}

.aob-resume > .bi-arrow-counterclockwise[b-aus6x6np9p] { color: var(--text-secondary); }

.aob-resume-go[b-aus6x6np9p] { margin-left: auto; }

/* Secondary to "Resume support", but still a real target. */
.aob-dismiss[b-aus6x6np9p] {
    min-height: 48px;
    padding: .5rem 1rem;
    background: transparent;
    border: 1px solid var(--border-subtle);
    color: var(--text-secondary);
    font-weight: 600;
}

.aob-dismiss:hover[b-aus6x6np9p],
.aob-dismiss:focus-visible[b-aus6x6np9p] {
    border-color: var(--text-secondary);
    color: var(--text-primary);
}
/* /Components/Shared/Billing/FeatureLockedModal.razor.rz.scp.css */
/* ================================================================
   FEATURE LOCKED MODAL — paywall upgrade prompt overlay
   ================================================================ */

.fl-overlay[b-jxis6ikkl5] {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(2, 6, 23, 0.72);
    backdrop-filter: blur(6px);
}

.fl-modal[b-jxis6ikkl5] {
    position: relative;
    width: min(440px, 100%);
    background: var(--b9-card-bg, #0f172a);
    border: 1px solid var(--b9-card-border, rgba(255, 255, 255, 0.08));
    border-radius: 16px;
    box-shadow: var(--b9-card-shadow-xl, 0 25px 50px rgba(0, 0, 0, 0.5));
    color: var(--b9-text, #f1f5f9);
    overflow: hidden;
}

.fl-modal-header[b-jxis6ikkl5] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.25rem 0;
}

.fl-modal-title-row[b-jxis6ikkl5] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
}

.fl-lock-icon[b-jxis6ikkl5] {
    font-size: 1.25rem;
    color: #f59e0b;
    flex-shrink: 0;
}

.fl-title[b-jxis6ikkl5] {
    font-size: 1.125rem;
    font-weight: 700;
    margin: 0;
    color: var(--text-primary, #f1f5f9);
}

.fl-close-btn[b-jxis6ikkl5] {
    background: transparent;
    border: none;
    padding: 0.25rem;
    color: var(--text-muted, #64748b);
    cursor: pointer;
    flex-shrink: 0;
    line-height: 1;
    margin-top: 2px;
}

.fl-close-btn:hover[b-jxis6ikkl5] {
    color: var(--text-secondary, #94a3b8);
}

.fl-modal-body[b-jxis6ikkl5] {
    padding: 1rem 1.25rem 0;
}

.fl-description[b-jxis6ikkl5] {
    font-size: 0.9375rem;
    color: var(--text-secondary, #94a3b8);
    line-height: 1.6;
    margin-bottom: 1rem;
}

.fl-plan-badge[b-jxis6ikkl5] {
    display: inline-flex;
    align-items: center;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--b9-primary-text);
    background: rgba(22, 163, 74, 0.1);
    border: 1px solid rgba(22, 163, 74, 0.25);
    border-radius: 6px;
    padding: 0.3125rem 0.75rem;
}

.fl-modal-footer[b-jxis6ikkl5] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.25rem;
}

.fl-btn-primary[b-jxis6ikkl5] {
    display: block;
    text-align: center;
    padding: 0.625rem 1rem;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    font-weight: 600;
    font-size: 0.9375rem;
    border-radius: 8px;
    text-decoration: none;
    transition: background 0.15s;
}

.fl-btn-primary:hover[b-jxis6ikkl5] {
    background: #15803d;
    color: #fff;
}

.fl-btn-secondary[b-jxis6ikkl5] {
    display: block;
    text-align: center;
    padding: 0.5625rem 1rem;
    border: 1px solid var(--b9-border, rgba(255, 255, 255, 0.1));
    color: var(--text-secondary, #94a3b8);
    font-size: 0.875rem;
    border-radius: 8px;
    text-decoration: none;
}

.fl-btn-secondary:hover[b-jxis6ikkl5] {
    border-color: rgba(255, 255, 255, 0.2);
    color: var(--text-primary, #f1f5f9);
}

.fl-btn-ghost[b-jxis6ikkl5] {
    background: transparent;
    border: none;
    color: var(--text-muted, #64748b);
    font-size: 0.8125rem;
    cursor: pointer;
    padding: 0.25rem;
    text-align: center;
    width: 100%;
}

.fl-btn-ghost:hover[b-jxis6ikkl5] {
    color: var(--text-secondary, #94a3b8);
}
/* /Components/Shared/Billing/SoftLimitWarning.razor.rz.scp.css */
/* ================================================================
   SOFT LIMIT WARNING — inline plan-limit nudge banner
   ================================================================ */

.slw-banner[b-aflagudi0z] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.875rem;
    background: rgba(245, 158, 11, 0.08);
    border: 1px solid rgba(245, 158, 11, 0.28);
    border-radius: 8px;
    font-size: 0.875rem;
    flex-wrap: wrap;
}

.slw-icon[b-aflagudi0z] {
    color: #f59e0b;
    flex-shrink: 0;
}

.slw-message[b-aflagudi0z] {
    color: var(--text-secondary, #94a3b8);
    flex: 1;
    min-width: 0;
}

.slw-cta[b-aflagudi0z] {
    color: #f59e0b;
    font-weight: 600;
    text-decoration: none;
    white-space: nowrap;
}

.slw-cta:hover[b-aflagudi0z] {
    text-decoration: underline;
}
/* /Components/Shared/Billing/TrialBanner.razor.rz.scp.css */
/* ================================================================
   TRIAL BANNER — top-of-content subscription trial status strip
   ================================================================ */

.trial-banner[b-6rkg7pnvvd] {
    background: linear-gradient(90deg, rgba(22, 163, 74, 0.12) 0%, rgba(21, 128, 61, 0.06) 100%);
    border: 1px solid rgba(22, 163, 74, 0.28);
    border-radius: 8px;
    margin-bottom: 1.25rem;
}

.trial-banner-inner[b-6rkg7pnvvd] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.625rem 1rem;
}

.trial-banner-content[b-6rkg7pnvvd] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    flex-wrap: wrap;
}

.trial-banner-icon[b-6rkg7pnvvd] {
    font-size: 1.05rem;
    color: var(--b9-success-text);
    flex-shrink: 0;
}

.trial-banner-text[b-6rkg7pnvvd] {
    font-size: 0.875rem;
    color: var(--text-primary, #f1f5f9);
}

.trial-banner-text strong[b-6rkg7pnvvd] {
    color: var(--b9-success-text);
}

.trial-banner-cta[b-6rkg7pnvvd] {
    display: inline-flex;
    align-items: center;
    min-height: var(--touch-target-min, 48px);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--b9-success-text);
    text-decoration: underline;
    white-space: nowrap;
}

.trial-banner-cta:hover[b-6rkg7pnvvd] {
    text-decoration: underline;
}

.trial-banner-dismiss[b-6rkg7pnvvd] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    background: transparent;
    border: none;
    padding: 0.25rem;
    color: var(--text-muted, #64748b);
    cursor: pointer;
    flex-shrink: 0;
    line-height: 1;
}

.trial-banner-dismiss:hover[b-6rkg7pnvvd] {
    color: var(--text-secondary, #94a3b8);
}

/* Expired-trial variant — amber warning instead of the green "active" look */
.trial-banner--expired[b-6rkg7pnvvd] {
    background: linear-gradient(90deg, rgba(217, 119, 6, 0.14) 0%, rgba(180, 83, 9, 0.07) 100%);
    border-color: rgba(217, 119, 6, 0.35);
}

.trial-banner--expired .trial-banner-icon[b-6rkg7pnvvd],
.trial-banner--expired .trial-banner-text strong[b-6rkg7pnvvd],
.trial-banner--expired .trial-banner-cta[b-6rkg7pnvvd] {
    color: var(--b9-warning-text, #f59e0b);
}
/* /Components/Shared/BlockingReasonList.razor.rz.scp.css */
.ui-blocking-list[b-vzz7sj434x] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.ui-blocking-list__item[b-vzz7sj434x] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    padding: 0.55rem 0.7rem;
    border-radius: 6px;
    border: 1px solid transparent;
    line-height: 1.35;
}

.ui-blocking-list__item i[b-vzz7sj434x] {
    flex-shrink: 0;
    font-size: 1.05em;
    margin-top: 0.1rem;
}

.ui-blocking-list__item--error[b-vzz7sj434x] {
    background: var(--danger-soft);
    color: var(--danger-text);
    border-color: rgba(239,68,68,0.28);
}

.ui-blocking-list__item--warning[b-vzz7sj434x] {
    background: var(--warning-soft);
    color: var(--warning-text);
    border-color: rgba(251,191,36,0.28);
}

.ui-blocking-list__msg[b-vzz7sj434x] {
    font-weight: 500;
}

.ui-blocking-list code[b-vzz7sj434x] {
    font-size: 0.78em;
    opacity: 0.85;
}
/* /Components/Shared/CourseSuggestionsCard.razor.rz.scp.css */
/* F5 course suggestions on the player home. Tokens only (brand-tokens.css); the person rows match
   /my/friends so a golfer sees the same card in both places. */
.csg-section[b-waq9a29pjr] { margin-top: 1rem; }

.csg-heading[b-waq9a29pjr] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--b9-text-muted);
    margin: 0 0 0.5rem;
    overflow-wrap: anywhere;
}

.csg-card[b-waq9a29pjr] {
    background: var(--b9-surface-alt);
    border: 1.5px solid var(--b9-border);
    border-radius: 12px;
    padding: 0.95rem;
}

.csg-list[b-waq9a29pjr] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 12px; }

.csg-person[b-waq9a29pjr] { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }

.csg-avatar[b-waq9a29pjr] {
    flex-shrink: 0;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--b9-primary-soft);
    color: var(--b9-primary-text);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.125rem;
    font-weight: 700;
}

.csg-body[b-waq9a29pjr] { flex: 1 1 140px; min-width: 0; }
.csg-name[b-waq9a29pjr] { font-size: var(--font-size-base); font-weight: 700; color: var(--b9-text); margin: 0; overflow-wrap: anywhere; }
.csg-reason[b-waq9a29pjr] { font-size: var(--font-size-sm); color: var(--b9-text-muted); margin: 2px 0 0; overflow-wrap: anywhere; }

.csg-title[b-waq9a29pjr] { font-size: 1.05rem; font-weight: 700; color: var(--b9-text); margin: 0 0 0.25rem; overflow-wrap: anywhere; }
.csg-note[b-waq9a29pjr] { font-size: var(--font-size-sm); color: var(--b9-text-muted); margin: 0 0 0.85rem; max-width: 34rem; }
.csg-status[b-waq9a29pjr] { font-size: var(--font-size-sm); color: var(--b9-text-muted); margin: 0; }

.csg-actions[b-waq9a29pjr] { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.csg-foot[b-waq9a29pjr] { display: flex; justify-content: flex-end; margin-top: 8px; }
.csg-sent[b-waq9a29pjr] { font-size: var(--font-size-sm); font-weight: 600; color: var(--b9-success-text); }

.csg-btn[b-waq9a29pjr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: var(--touch-target-min);
    min-width: var(--touch-target-min);
    padding: 6px 16px;
    border-radius: 10px;
    border: 1.5px solid var(--b9-border);
    background: var(--b9-surface);
    color: var(--b9-text);
    font-size: var(--font-size-sm);
    font-weight: 700;
    cursor: pointer;
}
.csg-btn:hover[b-waq9a29pjr] { background: var(--b9-surface-muted); border-color: var(--b9-border-strong); }
.csg-btn--primary[b-waq9a29pjr] { background: var(--b9-primary); border-color: var(--b9-primary); color: var(--player-text-inverse); }
.csg-btn--primary:hover[b-waq9a29pjr] { background: var(--b9-primary-hover); border-color: var(--b9-primary-hover); }
.csg-btn--quiet[b-waq9a29pjr] { background: none; border-color: transparent; color: var(--b9-text-muted); }

.csg-x[b-waq9a29pjr] {
    width: var(--touch-target-min, 48px);
    height: var(--touch-target-min, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    border-radius: 8px;
    color: var(--b9-text-muted);
    font-size: 0.95rem;
    cursor: pointer;
}
.csg-x:hover[b-waq9a29pjr] { background: var(--b9-surface-muted); color: var(--b9-text); }

.csg-btn:focus-visible[b-waq9a29pjr],
.csg-x:focus-visible[b-waq9a29pjr] { outline: 2px solid var(--b9-primary); outline-offset: 2px; }
/* /Components/Shared/EventBrandingEditor.razor.rz.scp.css */
.eb-editor[b-wo3rr4va2q] { display: flex; flex-direction: column; gap: .9rem; }

.eb-block[b-wo3rr4va2q] {
    border: 1px solid var(--border-subtle);
    border-radius: 10px;
    padding: .75rem .85rem;
    background: var(--bg-surface);
}

.eb-head[b-wo3rr4va2q] { display: flex; flex-wrap: wrap; align-items: baseline; gap: .2rem .6rem; margin-bottom: .55rem; }
.eb-title[b-wo3rr4va2q] { font-weight: 600; font-size: .9rem; color: var(--text-primary); }
.eb-opt[b-wo3rr4va2q] { font-weight: 400; color: var(--text-muted); font-size: var(--font-size-sm); }
.eb-badge[b-wo3rr4va2q] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    background: var(--brand-soft);
    border-radius: 999px;
    padding: .12rem .5rem;
}

.eb-row[b-wo3rr4va2q] { display: flex; align-items: center; gap: .85rem; flex-wrap: wrap; }

.eb-preview[b-wo3rr4va2q] {
    width: 92px; height: 60px;
    border: 1px dashed var(--border-subtle);
    border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    overflow: hidden;
    background: var(--bg-elevated);
    flex: 0 0 auto;
}
.eb-preview img[b-wo3rr4va2q] { max-width: 100%; max-height: 100%; object-fit: contain; }
.eb-preview-sponsor[b-wo3rr4va2q] { width: 120px; }
.eb-empty[b-wo3rr4va2q] { color: var(--text-muted); font-size: 1.3rem; opacity: .6; }

.eb-actions[b-wo3rr4va2q] { display: flex; flex-direction: column; align-items: flex-start; gap: .3rem; }
.eb-upload[b-wo3rr4va2q] {
    display: inline-flex; align-items: center;
    cursor: pointer;
    font-size: var(--font-size-sm); font-weight: 600;
    color: var(--text-primary);
    border: 1px solid var(--border-subtle);
    border-radius: 8px;
    padding: .35rem .7rem;
    margin: 0;
    background: var(--bg-elevated);
    min-height: 2.2rem;
}
.eb-upload:hover[b-wo3rr4va2q] { background: var(--brand-soft); }

.eb-msg[b-wo3rr4va2q] { font-size: var(--font-size-sm); margin-top: .45rem; }
.eb-err[b-wo3rr4va2q] { color: var(--danger, #ef4444); }

/* Saved, but it will not print sharply. Amber, not red — the file IS on the sponsor's row, and
   colouring a caveat like a failure is how an organizer learns to ignore both.
   --b9-warning-text (not --b9-warning) is the ink variant: the fill colour as text measures
   about 3:1 on this dark surface. */
.eb-warn[b-wo3rr4va2q] { color: var(--b9-warning-text, #FCD34D); }
.eb-ok[b-wo3rr4va2q] { color: var(--success, #22c55e); }
.eb-hint[b-wo3rr4va2q] { font-size: var(--font-size-sm); color: var(--text-muted); margin-top: .4rem; }

.eb-locked[b-wo3rr4va2q] {
    font-size: var(--font-size-sm); color: var(--text-muted);
    background: var(--bg-elevated);
    border: 1px dashed var(--border-subtle);
    border-radius: 8px;
    padding: .55rem .7rem;
}
.eb-locked a[b-wo3rr4va2q] { font-weight: 600; }

.eb-sponsor-name[b-wo3rr4va2q] { display: flex; gap: .5rem; margin-bottom: .6rem; }
.eb-sponsor-name input[b-wo3rr4va2q] { flex: 1 1 auto; }

/* ── Sponsor wall rows ─────────────────────────────────────────────────────── */
.eb-wall-row[b-wo3rr4va2q] {
    display: flex; align-items: center; gap: .7rem;
    padding: .5rem 0;
    border-top: 1px solid var(--border-subtle);
}
.eb-wall-row:first-of-type[b-wo3rr4va2q] { border-top: none; }
.eb-wall-mid[b-wo3rr4va2q] { flex: 1 1 auto; display: flex; flex-direction: column; gap: .4rem; min-width: 0; }
.eb-wall-actions[b-wo3rr4va2q] { display: flex; align-items: center; gap: .35rem; flex-wrap: wrap; }
.eb-upload-sm[b-wo3rr4va2q] {
    display: inline-flex; align-items: center;
    cursor: pointer; margin: 0;
    font-size: var(--font-size-sm); font-weight: 600;
    color: var(--text-primary);
    border: 1px solid var(--border-subtle);
    border-radius: 7px;
    padding: .25rem .55rem;
    background: var(--bg-elevated);
}
.eb-upload-sm:hover[b-wo3rr4va2q] { background: var(--brand-soft); }
.eb-iconbtn[b-wo3rr4va2q] {
    display: inline-flex; align-items: center; justify-content: center;
    width: 2rem; height: 2rem;
    border: 1px solid var(--border-subtle);
    border-radius: 7px;
    background: var(--bg-elevated);
    color: var(--text-muted);
    cursor: pointer;
}
.eb-iconbtn:hover:not(:disabled)[b-wo3rr4va2q] { background: var(--brand-soft); color: var(--text-primary); }
.eb-iconbtn:disabled[b-wo3rr4va2q] { opacity: .4; cursor: default; }
.eb-iconbtn-danger:hover:not(:disabled)[b-wo3rr4va2q] { color: var(--danger, #ef4444); }

/* Route to the dedicated sponsor screens — the sidebar editor handles a few sponsors,
   that page handles a hundred and owns tee-box assignment. */
.eb-manage-link[b-wo3rr4va2q] {
    display: inline-flex;
    align-items: center;
    margin-bottom: 0.6rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--b9-border-strong);
    border-radius: 8px;
    background: var(--b9-surface-muted);
    color: var(--b9-primary-text);
    font-size: var(--font-size-sm);
    font-weight: 600;
    text-decoration: none;
    min-height: 40px;
}

.eb-manage-link:hover[b-wo3rr4va2q] {
    border-color: var(--b9-primary);
    color: var(--b9-primary-text);
}

/* Event accent colour — shown so an organiser can see what was detected from their
   photo, and overrule it. Design tokens only; never raw colours. */
.eb-accent[b-wo3rr4va2q] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.6rem;
}

.eb-accent-label[b-wo3rr4va2q] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--b9-text-muted);
}


/* A native colour input is the one control every browser and screen reader already
   understands — 48px tall so it stays a comfortable touch target on a phone. */
.eb-accent-input[b-wo3rr4va2q] {
    width: 52px;
    height: 48px;
    padding: 2px;
    border: 1px solid var(--b9-border-strong);
    border-radius: 8px;
    background: var(--b9-surface-muted);
    cursor: pointer;
}

.eb-accent-hex[b-wo3rr4va2q] {
    font-size: var(--font-size-sm);
    color: var(--b9-text-muted);
    text-transform: uppercase;
}
/* /Components/Shared/GetTheAppCard.razor.rz.scp.css */
.getapp-section[b-sicjegqppg] {
    margin-top: 1rem;
}

.getapp-heading[b-sicjegqppg] {
    /* A card heading a golfer reads. (X02) */
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted);
    margin: 0 0 0.5rem;
}

.getapp-card[b-sicjegqppg] {
    position: relative;
    background: var(--brand-soft);
    border: 1px solid var(--brand-ring);
    border-radius: 12px;
    padding: 0.95rem;
}

.getapp-meta[b-sicjegqppg] {
    /* The line telling them which phones it runs on. (X02) */
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--text-muted);
    margin-bottom: 0.35rem;
}

.getapp-title[b-sicjegqppg] {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--text-primary);
    margin: 0 0 0.25rem;
}

.getapp-note[b-sicjegqppg] {
    font-size: 0.875rem;
    color: var(--text-secondary);
    margin: 0 0 0.85rem;
    max-width: 34rem;
}

.getapp-dismiss[b-sicjegqppg] {
    position: absolute;
    top: 0.35rem;
    right: 0.35rem;
    /* 48px, not the 44 of WCAG 2.5.5: this project's floor is 48 (CLAUDE.md), and dismissing a
       card you did not ask for should not be the hardest thing to hit on the page. */
    width: var(--touch-target-min, 48px);
    height: var(--touch-target-min, 48px);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: transparent;
    border: none;
    border-radius: 8px;
    color: var(--text-muted);
    font-size: 0.95rem;        /* glyph stays modest inside the larger hit area */
    cursor: pointer;
}

.getapp-dismiss:hover[b-sicjegqppg] {
    background: var(--bg-raised);
    color: var(--text-primary);
}
/* /Components/Shared/OnboardingBanner.razor.rz.scp.css */
/* ================================================================
   ONBOARDING BANNER
   First-run setup wizard — course detail page, new orgs only
   ================================================================ */

.ob-banner[b-r1dnh30f2p] {
    border-bottom: 1px solid var(--border-subtle, rgba(255,255,255,0.06));
    background: linear-gradient(135deg,
        rgba(22, 163, 74, 0.07) 0%,
        rgba(16, 185, 129, 0.05) 50%,
        rgba(59, 130, 246, 0.04) 100%);
    padding: 1.25rem 1.5rem 1.5rem;
}

.ob-banner-inner[b-r1dnh30f2p] {
    max-width: 960px;
    margin: 0 auto;
}

/* ── Header row ── */
.ob-header[b-r1dnh30f2p] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 1.25rem;
    gap: 1rem;
}

.ob-header-left[b-r1dnh30f2p] {
    display: flex;
    align-items: flex-start;
    gap: 0.875rem;
}

.ob-rocket[b-r1dnh30f2p] {
    font-size: 1.625rem;
    color: var(--b9-primary-text);
    flex-shrink: 0;
    margin-top: 2px;
}

.ob-title[b-r1dnh30f2p] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    line-height: 1.3;
}

.ob-subtitle[b-r1dnh30f2p] {
    font-size: 0.875rem;
    color: var(--text-muted, #64748b);
    margin-top: 0.2rem;
}

.ob-dismiss[b-r1dnh30f2p] {
    background: none;
    border: none;
    padding: 0.25rem 0.375rem;
    color: var(--text-muted, #64748b);
    cursor: pointer;
    border-radius: 6px;
    line-height: 1;
    transition: color 0.15s, background 0.15s;
    flex-shrink: 0;
}

.ob-dismiss:hover[b-r1dnh30f2p] {
    color: var(--text-primary, #f1f5f9);
    background: rgba(255,255,255,0.06);
}

/* ── Steps row ── */
.ob-steps[b-r1dnh30f2p] {
    display: flex;
    align-items: flex-start;
    gap: 0;
    flex-wrap: wrap;
}

.ob-step[b-r1dnh30f2p] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    flex: 1;
    min-width: 180px;
    padding: 1rem 1.25rem;
    border-radius: 12px;
    border: 1px solid transparent;
    transition: border-color 0.15s;
}

.ob-step-done[b-r1dnh30f2p] {
    background: rgba(22, 163, 74, 0.07);
    border-color: rgba(22, 163, 74, 0.2);
}

.ob-step-active[b-r1dnh30f2p] {
    background: rgba(255,255,255,0.04);
    border-color: rgba(255,255,255,0.1);
    box-shadow: 0 0 0 1px rgba(99, 102, 241, 0.2);
}

.ob-step-pending[b-r1dnh30f2p] {
    background: rgba(255,255,255,0.02);
    border-color: rgba(255,255,255,0.04);
    opacity: 0.7;
}

/* Step icon / number circle */
.ob-step-check[b-r1dnh30f2p] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.875rem;
    font-weight: 700;
    flex-shrink: 0;
    margin-top: 1px;
}

.ob-step-num[b-r1dnh30f2p] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: rgba(255,255,255,0.08);
    border: 1px solid rgba(255,255,255,0.12);
    color: var(--text-secondary, #94a3b8);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8125rem;
    font-weight: 700;
    flex-shrink: 0;
    margin-top: 1px;
}

.ob-step-num-done[b-r1dnh30f2p] {
    background: var(--b9-primary, #16a34a);
    border-color: transparent;
    color: #fff;
}

/* Step body */
.ob-step-body[b-r1dnh30f2p] {
    flex: 1;
    min-width: 0;
}

.ob-step-label[b-r1dnh30f2p] {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: 0.2rem;
}

.ob-step-detail[b-r1dnh30f2p] {
    font-size: 0.8125rem;
    color: var(--text-muted, #64748b);
    line-height: 1.45;
    margin-bottom: 0.5rem;
}

.ob-step-cta[b-r1dnh30f2p] {
    display: inline-flex;
    align-items: center;
    font-size: 0.8125rem;
    font-weight: 600;
    padding: 0.3rem 0.75rem;
    border-radius: 7px;
    background: var(--b9-primary, #16a34a);
    color: #fff;
    text-decoration: none;
    transition: opacity 0.15s;
}

.ob-step-cta:hover[b-r1dnh30f2p] {
    opacity: 0.85;
    color: #fff;
}

.ob-step-cta-muted[b-r1dnh30f2p] {
    background: rgba(255,255,255,0.08);
    color: var(--text-secondary, #94a3b8);
}

/* Arrow dividers between steps */
.ob-step-divider[b-r1dnh30f2p] {
    display: flex;
    align-items: center;
    padding: 0 0.375rem;
    color: var(--text-muted, #4b5563);
    font-size: 0.8rem;
    align-self: center;
    flex-shrink: 0;
}

/* All-done state */
.ob-complete[b-r1dnh30f2p] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-top: 1rem;
    padding: 0.75rem 1rem;
    background: rgba(22, 163, 74, 0.1);
    border: 1px solid rgba(22, 163, 74, 0.25);
    border-radius: 10px;
    font-size: 0.875rem;
    color: #4ade80;
}

.ob-dismiss-text[b-r1dnh30f2p] {
    background: none;
    border: none;
    padding: 0;
    color: rgba(74, 222, 128, 0.7);
    font-size: 0.8125rem;
    cursor: pointer;
    text-decoration: underline;
    margin-left: auto;
}

/* Mobile: stack steps vertically */
@media (max-width: 700px) {
    .ob-steps[b-r1dnh30f2p] {
        flex-direction: column;
        gap: 0.5rem;
    }

    .ob-step-divider[b-r1dnh30f2p] {
        display: none;
    }

    .ob-step[b-r1dnh30f2p] {
        min-width: 0;
    }
}
/* /Components/Shared/OrgPaywallGuard.razor.rz.scp.css */
/* ================================================================
   ORG PAYWALL GUARD — suspended/cancelled org block screen
   ================================================================ */

.paywall-block[b-ew1is4i13o] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 5rem 2rem;
    max-width: 520px;
    margin: 0 auto;
}

.paywall-icon[b-ew1is4i13o] {
    font-size: 4rem;
    color: #f59e0b;
    margin-bottom: 1.25rem;
    line-height: 1;
}

.paywall-icon-cancelled[b-ew1is4i13o] {
    color: #ef4444;
}

.paywall-title[b-ew1is4i13o] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text-primary, #f1f5f9);
    margin-bottom: 0.75rem;
}

.paywall-sub[b-ew1is4i13o] {
    font-size: 0.9375rem;
    color: var(--text-secondary, #94a3b8);
    line-height: 1.6;
    margin-bottom: 0.5rem;
}

.paywall-note[b-ew1is4i13o] {
    font-size: 0.875rem;
    color: var(--text-muted, #64748b);
}

.paywall-link[b-ew1is4i13o] {
    color: var(--b9-primary-text);
    text-decoration: none;
    font-weight: 500;
}

.paywall-link:hover[b-ew1is4i13o] {
    text-decoration: underline;
}
/* /Components/Shared/Promote/PromotePanel.razor.rz.scp.css */
/* PromotePanel — "Post this on social media". Themed chrome uses design tokens; the .pk-preview
   block is an on-screen proxy for the PNG that promote-kit.js draws, so it carries the picture's
   own fixed colours (white ink on the brand-blue gradient) in light AND dark — it is a picture,
   not UI, and must look the same as the file they will post. */

.pk[b-u7ps9z8d0n] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-top: 0.5rem;
    /* The kit sits inside a grid/flex column (the Share card's d-grid, the league's Promote card).
       A grid item defaults to min-width:auto = its min-content width, and this panel's min-content
       is the 360px picture — so on a 375px phone the WHOLE card column widened to 360 and every
       sibling button pushed past the right edge (measured: scrollWidth 426 at 375). Zero it, and
       the picture shrinks to the column instead. */
    min-width: 0;
    width: 100%;
    max-width: 100%;
}

/* ── The picture, previewed ─────────────────────────────────────────────── */
.pk-preview[b-u7ps9z8d0n] {
    position: relative;
    width: 100%;
    max-width: 360px;
    aspect-ratio: 1 / 1;
    margin: 0 auto;
    padding: 7%;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    overflow: hidden;
    border-radius: 14px;
    background: linear-gradient(135deg, #1e40af 0%, #0b1f5c 100%);
    color: #ffffff;
    box-shadow: var(--shadow-md);
    /* The picture is drawn at 1080px with every size a share of its width (promote-kit.js). The
       preview is that picture at 244–360px, so its type is a share of ITS width too. cqw only
       resolves against a container: without this line it read the viewport, and a 375px phone
       drew a 28px title in a 244px square and pushed the footer out of the picture. */
    container-type: inline-size;
}

.pk-hero[b-u7ps9z8d0n] {
    position: absolute;
    inset: 0 0 auto 0;
    width: 100%;
    height: 46%;
    object-fit: cover;
}

.pk-preview-hero .pk-preview-body[b-u7ps9z8d0n] {
    margin-top: 32%;
    padding-top: 12%;
    background: linear-gradient(to bottom, rgba(11, 31, 92, 0) 0%, rgba(11, 31, 92, 1) 45%);
    margin-left: -8%;
    margin-right: -8%;
    padding-left: 8%;
    padding-right: 8%;
}

.pk-logo[b-u7ps9z8d0n] {
    width: 15%;
    aspect-ratio: 1 / 1;
    border-radius: 50%;
    object-fit: cover;
    background: #ffffff;
    margin-bottom: 4%;
}

.pk-preview-body[b-u7ps9z8d0n] {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: 0.15em;
    min-width: 0;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;           /* a body that still runs long is clipped; the club + mark footer
                                   below it stays inside the picture, never pushed out */
}

.pk-preview-hero .pk-title[b-u7ps9z8d0n] {
    -webkit-line-clamp: 2;      /* the hero band takes the top 46%; the canvas shrinks the title
                                   to fit under it, the preview gives it two lines instead */
}

.pk-kicker[b-u7ps9z8d0n] {
    font-size: clamp(13px, 3cqw, 0.95rem);
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: #93c5fd;
}

.pk-title[b-u7ps9z8d0n] {
    font-size: clamp(1.125rem, 8.5cqw, 2rem);
    font-weight: 800;
    line-height: 1.12;
    overflow-wrap: anywhere;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.pk-date[b-u7ps9z8d0n] {
    margin-top: 0.4em;
    font-weight: 600;
    font-size: clamp(13px, 3.8cqw, 1rem);
    line-height: 1.4;
}

.pk-place[b-u7ps9z8d0n] {
    color: #bfdbfe;
    font-size: clamp(13px, 3.8cqw, 1rem);
    line-height: 1.4;
}

.pk-sponsors[b-u7ps9z8d0n] {
    margin-top: 0.6em;
    color: #bfdbfe;
    font-size: clamp(13px, 2.7cqw, 0.9rem);
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.pk-preview-foot[b-u7ps9z8d0n] {
    position: relative;
    margin-top: auto;
    display: flex;
    flex-wrap: wrap;            /* the club's name comes first: when both don't fit on one line
                                   (the 244px phone preview: "Phas…" beside a 152px mark), the mark
                                   drops under it instead of the club name being cut */
    justify-content: space-between;
    align-items: baseline;
    gap: 0.15rem 0.75rem;
    flex: 0 0 auto;
    font-size: clamp(13px, 2.6cqw, 0.875rem);
    font-weight: 600;
}

.pk-org[b-u7ps9z8d0n] {
    color: #bfdbfe;
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pk-mark[b-u7ps9z8d0n] {
    color: #ffffff;
    white-space: nowrap;
    margin-left: auto;          /* stays right-aligned when it is alone on the second line */
}

/* ── The words ──────────────────────────────────────────────────────────── */
.pk-hint[b-u7ps9z8d0n] {
    margin: 0;
    font-size: var(--font-size-sm);
    color: var(--text-muted);
    text-align: center;
}

.pk-label[b-u7ps9z8d0n] {
    font-size: var(--font-size-sm);
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--text-muted);
    margin-bottom: -0.35rem;
}

.pk-caption[b-u7ps9z8d0n] {
    width: 100%;
    font-size: var(--font-size-base);
    line-height: 1.45;
    padding: 0.7rem 0.8rem;
    border-radius: 10px;
    border: 1px solid var(--border-default);
    background: var(--bg-surface);
    color: var(--text-primary);
    resize: vertical;
}

.pk-caption:focus[b-u7ps9z8d0n] {
    outline: none;
    border-color: var(--brand-ring);
    box-shadow: 0 0 0 3px var(--brand-soft);
}

/* ── The buttons ────────────────────────────────────────────────────────── */
.pk-actions[b-u7ps9z8d0n] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.5rem;
}

.pk-secondary[b-u7ps9z8d0n] {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 0.5rem;
}

@media (min-width: 560px) {
    .pk-actions[b-u7ps9z8d0n] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
    .pk-secondary[b-u7ps9z8d0n] { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* The wrapper only records the tap (Blazor @onclick); the grid must not see it as a cell. */
.pk-btn-wrap[b-u7ps9z8d0n] {
    display: contents;
}

.pk-btn[b-u7ps9z8d0n] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    min-height: var(--touch-target-min, 48px);
    padding: 0.5rem 0.75rem;
    width: 100%;
    border-radius: 10px;
    border: 1px solid var(--brand-ring);
    background: var(--brand-soft);
    color: var(--brand-text);
    font-size: var(--font-size-base);
    font-weight: 600;
    text-decoration: none;
    cursor: pointer;
    white-space: nowrap;
}

.pk-btn:hover[b-u7ps9z8d0n],
.pk-btn:focus-visible[b-u7ps9z8d0n] {
    border-color: var(--brand);
    text-decoration: none;
    color: var(--brand-text);
}

.pk-btn:focus-visible[b-u7ps9z8d0n] {
    outline: 3px solid var(--brand-ring);
    outline-offset: 2px;
}

.pk-btn-quiet[b-u7ps9z8d0n] {
    background: transparent;
    border-color: var(--border-default);
    color: var(--text-secondary);
}

.pk-btn-quiet:hover[b-u7ps9z8d0n],
.pk-btn-quiet:focus-visible[b-u7ps9z8d0n] {
    border-color: var(--border-strong);
    color: var(--text-primary);
}

.pk-btn .bi[b-u7ps9z8d0n] {
    font-size: 1.15em;
}

/* ── Notes ──────────────────────────────────────────────────────────────── */
.pk-note[b-u7ps9z8d0n] {
    margin: 0;
    font-size: var(--font-size-sm);
    line-height: 1.45;
    color: var(--text-secondary);
}

.pk-note-quiet[b-u7ps9z8d0n] {
    color: var(--text-muted);
}

.pk-link[b-u7ps9z8d0n] {
    background: none;
    border: none;
    padding: 0;
    min-height: var(--touch-target-min, 48px);
    font: inherit;
    font-weight: 600;
    color: var(--brand-text);
    text-decoration: underline;
    cursor: pointer;
}
/* /Components/Shared/ReactionBar.razor.rz.scp.css */
/* W2 reaction bar.

   Lives in its OWN scoped stylesheet because Blazor CSS isolation is per-component: rules written in
   Leaderboard.razor.css carry that page's scope attribute and would never match markup this component
   renders. The --lb-* palette is declared on .lb-page and custom properties cascade through the DOM
   regardless of scope attributes, so the colours below inherit correctly when this sits inside the
   board; the fallbacks keep it legible anywhere else. */

.lb-react[b-urgkxvef9z] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.55rem 0.75rem 0.7rem;
    border-top: 1px solid var(--lb-border, #28446f);
    margin-top: 0.5rem;
}

.lb-react-actions[b-urgkxvef9z] {
    display: flex;
    flex-wrap: wrap;          /* never pushes the board sideways on a 375px phone */
    gap: 0.4rem;
    align-items: center;
}

.lb-react-btn[b-urgkxvef9z] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    min-height: 48px;         /* touch-target rule */
    padding: 0.4rem 0.85rem;
    border-radius: 999px;
    border: 1px solid var(--lb-border, #28446f);
    background: transparent;
    color: var(--lb-text-soft, #c5d6ef);
    font-size: 0.85rem;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    appearance: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, transform 0.08s ease;
}

.lb-react-btn:hover[b-urgkxvef9z],
.lb-react-btn:focus-visible[b-urgkxvef9z] {
    background: var(--lb-accent-soft, rgba(86, 199, 255, 0.12));
    border-color: var(--lb-accent, #56c7ff);
    color: var(--lb-text, #f8fbff);
    outline: none;
}

.lb-react-btn:active[b-urgkxvef9z] { transform: scale(0.97); }

/* The viewer's own reaction — reads as "on" without relying on colour alone (aria-pressed carries
   the same state for assistive tech). */
.lb-react-btn--mine[b-urgkxvef9z] {
    background: var(--lb-accent-soft, rgba(86, 199, 255, 0.12));
    border-color: var(--lb-accent, #56c7ff);
    color: var(--lb-text, #f8fbff);
    font-weight: 800;
}

.lb-react-glyph[b-urgkxvef9z] { font-size: 1rem; line-height: 1; }

.lb-react-word[b-urgkxvef9z] { white-space: nowrap; }

.lb-react-n[b-urgkxvef9z] {
    min-width: 1.1rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    background: var(--lb-card-2, #132746);
    color: var(--lb-text, #f8fbff);
    /* A bare count in a pill — a chip, so the CHIP floor. It was 12px, under even that. */
    font-size: var(--font-size-chip);
    font-weight: 800;
    text-align: center;
}

/* Read-only view for spectators and non-members: the same counts, no controls they cannot use. */
.lb-react-actions--readonly[b-urgkxvef9z] { gap: 0.5rem; }

.lb-react-chip[b-urgkxvef9z] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    padding: 0.2rem 0.5rem;
    border-radius: 999px;
    border: 1px solid var(--lb-border, #28446f);
    color: var(--lb-text-soft, #c5d6ef);
    /* Glyph plus a count — a chip, so the CHIP floor. It was 12.8px, under even that.
       Honest note: this rule carries no direct text today (the glyph and the count are both
       child spans with their own sizes), so X02 does not measure it and the mutation test
       named only .lb-react-n. It is set for the container's basis, not on proof. */
    font-size: var(--font-size-chip);
}

/* 🔴 NOT FIXED, and deliberately, because it cannot be DRIVEN on this clone.
   `.lb-react-names` (12px) lists the PEOPLE who reacted, which is read content and belongs at 14px,
   and `.lb-react-btn` (13.6px) is the control a member taps. Both render only when CanReact is true
   — event membership, checked server-side, never inferred from "is signed in". The clone holds one
   reaction in total (team 197, event 73) and the player persona is not in that event; the one event
   they ARE in (51) has no leaderboard. So neither can be measured here, and this project does not
   ship a type change no spec has driven. The unblock is a seeded reaction on an event the player
   belongs to — the same fixture gap that leaves wolf, player notes and certification unmeasured.
   The two rules below are therefore the ONLY sub-floor sizes in this file left standing. */
.lb-react-names[b-urgkxvef9z] {
    font-size: 0.75rem;
    color: var(--lb-text-muted, #9db3d2);
    line-height: 1.35;
    overflow-wrap: anywhere;   /* long name lists wrap instead of widening the row */
}
/* /Components/Shared/SafeRetryCallout.razor.rz.scp.css */
.ui-retry-callout[b-xkvksgt7ph] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.75rem 0.9rem;
    border-radius: 8px;
    border: 1px solid transparent;
}

.ui-retry-callout__head[b-xkvksgt7ph] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.95rem;
}

.ui-retry-callout__head i[b-xkvksgt7ph] { font-size: 1.15em; }

.ui-retry-callout__body[b-xkvksgt7ph] {
    font-size: 0.88rem;
    line-height: 1.4;
    opacity: 0.9;
}

.ui-retry-callout__actions[b-xkvksgt7ph] {
    margin-top: 0.1rem;
}

.ui-retry-callout--safe[b-xkvksgt7ph] {
    background: var(--success-soft);
    color: var(--success-text);
    border-color: rgba(34,197,94,0.28);
}
.ui-retry-callout--blocked[b-xkvksgt7ph] {
    background: var(--warning-soft);
    color: var(--warning-text);
    border-color: rgba(251,191,36,0.28);
}
.ui-retry-callout--neutral[b-xkvksgt7ph] {
    background: var(--bg-raised);
    color: var(--text-muted);
    border-color: var(--border-default);
}
/* /Components/Shared/ScorePad.razor.rz.scp.css */
/* Score keypad — the tap-once entry the product settled on when −/+ steppers were vetoed.

   These are the event card's own pad rules, copied deliberately rather than shared: that page's
   copies are entangled with .msc-large-type / .msc-simple-mode variants which only exist there,
   and rewriting the tournament-morning surface to fix a casual round is the wrong risk. The two
   are held to one contract by ScoreEntryUsesTapOnceNumbersTests instead; deduplicating them is a
   follow-up, and the class names are identical so that follow-up is a deletion, not a rewrite.

   Component-scoped, so nothing here can reach any other page. */

.msc-scorepad-backdrop[b-xsnt2qigj6] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.5);
    display: flex;
    align-items: flex-end;
    justify-content: center;
    z-index: 1200;
}
.msc-scorepad[b-xsnt2qigj6] {
    width: min(500px, 100%);
    background: var(--b9-surface-alt, #0f172a);
    border-radius: 16px 16px 0 0;
    padding: 0.95rem;
    border-top: 1px solid var(--b9-border, rgba(255,255,255,0.12));
}
.msc-scorepad-head[b-xsnt2qigj6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--b9-text, #f3f6fb);
}
.msc-scorepad-meta[b-xsnt2qigj6] {
    margin-top: 0.45rem;
    display: flex;
    gap: 0.45rem;
    flex-wrap: wrap;
}
.msc-scorepad-meta span[b-xsnt2qigj6] {
    font-size: 0.74rem;
    font-weight: 700;
    color: var(--b9-text-muted, #c2cfdf);
    background: var(--b9-surface-muted, #111827);
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 999px;
    padding: 0.12rem 0.42rem;
}
.msc-scorepad-close[b-xsnt2qigj6] {
    border: none;
    background: transparent;
    color: var(--b9-text-soft, #9fb0c4);
}
.msc-scorepad-value[b-xsnt2qigj6] {
    margin-top: 0.6rem;
    font-size: 2rem;
    font-weight: 900;
    text-align: center;
    color: var(--b9-text, #f3f6fb);
    background: var(--b9-surface-muted, #111827);
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    border-radius: 12px;
    padding: 0.35rem;
}
.msc-scorepad-value.is-selected[b-xsnt2qigj6] {
    border-color: #1d4ed8;
    box-shadow: 0 0 0 3px rgba(29, 78, 216, 0.18);
    background: rgba(30, 64, 175, 0.24);
}
.msc-scorepad-relpar[b-xsnt2qigj6] {
    margin-top: 0.35rem;
    text-align: center;
    font-size: 0.95rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}
.msc-scorepad-grid[b-xsnt2qigj6] {
    margin-top: 0.7rem;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.45rem;
}
.msc-scorepad-key[b-xsnt2qigj6] {
    min-height: 52px;
    border-radius: 12px;
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    font-size: 1.2rem;
    font-weight: 800;
}
.msc-scorepad-key-sub[b-xsnt2qigj6] {
    font-size: 0.88rem;
    font-weight: 700;
    color: var(--b9-text, #f3f6fb);
    background: var(--b9-surface-muted, #111827);
}
.msc-scorepad-key:focus-visible[b-xsnt2qigj6],
.msc-scorepad-action:focus-visible[b-xsnt2qigj6],
.msc-scorepad-close:focus-visible[b-xsnt2qigj6] {
    outline: 2px solid #60a5fa;
    outline-offset: 1px;
}
.msc-scorepad-actions[b-xsnt2qigj6] {
    margin-top: 0.6rem;
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}
.msc-scorepad-action[b-xsnt2qigj6] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    border-radius: 8px;
    padding: 0.3rem 0.65rem;
    font-size: 0.78rem;
    font-weight: 700;
}
.msc-scorepad-action.apply[b-xsnt2qigj6] {
    border-color: #1d4ed8;
    background: #1d4ed8;
    color: #fff;
}
.msc-scorepad-key:focus-visible[b-xsnt2qigj6],
.msc-scorepad-action:focus-visible[b-xsnt2qigj6],
.msc-scorepad-close:focus-visible[b-xsnt2qigj6] {
    outline: 2px solid #60a5fa;
    outline-offset: 1px;
}

.msc-scorepad-actions[b-xsnt2qigj6] {
    margin-top: 0.6rem;
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}

.msc-scorepad-action[b-xsnt2qigj6] {
    border: 1px solid var(--b9-border, rgba(255,255,255,0.12));
    background: var(--b9-surface-alt, #0f172a);
    border-radius: 8px;
    padding: 0.3rem 0.65rem;
    font-size: 0.78rem;
    font-weight: 700;
}

.msc-scorepad-action.apply[b-xsnt2qigj6] {
    border-color: #1d4ed8;
    background: #1d4ed8;
    color: #fff;
}

/* Every key is a real thumb target — the reason the stepper was slow was tapping it repeatedly. */
.msc-scorepad-key[b-xsnt2qigj6] {
    min-height: 52px;
}

.diff-under[b-xsnt2qigj6] { color: #86efac; }
.diff-over[b-xsnt2qigj6]  { color: #93c5fd; }
.diff-even[b-xsnt2qigj6]  { color: rgba(255,255,255,0.55); }
/* /Components/Shared/StoreBadges.razor.rz.scp.css */
/* App Store + Google Play download buttons.
   Store badges are conventionally black in both light and dark UIs, so these use fixed
   near-black colors rather than theme tokens (only the caption/attribution follow the theme). */

.storebadges[b-2c9sce6m9o] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.storebadges-caption[b-2c9sce6m9o] {
    margin: 0;
    /* Our own sentence, so it takes the floor like any other. The uppercase line INSIDE the
       badge below does not — see .storebadge-small. (X02) */
    font-size: var(--font-size-sm);
    font-weight: 600;
    letter-spacing: 0.01em;
    color: var(--text-muted, #9fb0c4);
}

.storebadges-row[b-2c9sce6m9o] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.625rem;
}

.storebadge[b-2c9sce6m9o] {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    min-height: 48px;              /* touch target */
    padding: 0.5rem 0.95rem;
    background: #000;
    color: #fff;
    text-decoration: none;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 10px;
    transition: transform 0.12s ease, background 0.12s ease, border-color 0.12s ease;
}

.storebadge:hover[b-2c9sce6m9o] {
    background: #111;
    border-color: rgba(255, 255, 255, 0.30);
    transform: translateY(-1px);
    color: #fff;
}

.storebadge:focus-visible[b-2c9sce6m9o] {
    outline: 2px solid #2563eb;
    outline-offset: 2px;
}

.storebadge-glyph[b-2c9sce6m9o] {
    font-size: 1.6rem;
    line-height: 1;
}

.storebadge-text[b-2c9sce6m9o] {
    display: flex;
    flex-direction: column;
    line-height: 1.05;
    text-align: left;
}

.storebadge-small[b-2c9sce6m9o] {
    /* 10px, and deliberately left there. This block is a CSS re-creation of Apple's
       "Download on the App Store" and Google's "GET IT ON Google Play" badges, whose
       proportions are fixed by their brand guidelines — enlarging this line stops the
       lockup being the badge it is imitating. It is exempted by name in
       playwright/tests/ux/type-and-touch/player-floors.spec.ts rather than silently
       skipped. The real fix is to ship Apple's and Google's own supplied artwork instead
       of re-drawing it, which is a trademark question as much as a type one — flagged to
       Matt 2026-09-12, not decided here. (X02) */
    font-size: 0.625rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    opacity: 0.9;
}

.storebadge-big[b-2c9sce6m9o] {
    font-size: 1rem;
    font-weight: 600;
}

.storebadges-attr[b-2c9sce6m9o] {
    margin: 0.25rem 0 0;
    max-width: 34rem;
    font-size: 0.625rem;
    line-height: 1.4;
    opacity: 0.8;
    color: var(--text-muted, #9fb0c4);
}
/* /Components/UI/AdminCommandCenterLayout.razor.rz.scp.css */
/* Extracted from inline styles (Blazor audit Batch G). */
.accl-badge-slot[b-60z5r2ac32] {
    margin-left: .5rem;
    vertical-align: middle;
}
/* /Components/UI/AppRadioGroup.razor.rz.scp.css */
/* Reset default fieldset chrome (extracted from inline styles). */
.arg-fieldset[b-4vpfygxpx8] {
    border: none;
    margin: 0;
    padding: 0;
}
/* /Components/UI/CloneEventDialog.razor.rz.scp.css */
/* Lifted verbatim from Events/Index.razor.css when the dialog became shared — same look, now on
   both doors. Tokens only, so it lands correctly in either theme. */

.clone-backdrop[b-fffui2bbjz] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, .45);
    z-index: 1050;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.clone-modal[b-fffui2bbjz] {
    background: var(--b9-surface);
    border: 1px solid var(--b9-border);
    border-radius: 14px;
    width: 100%;
    max-width: 460px;
    box-shadow: 0 8px 32px rgba(15, 23, 42, .28);
    overflow: hidden;
    /* A form, not a one-line confirm: on a short screen the body scrolls and the buttons stay put. */
    display: flex;
    flex-direction: column;
    max-height: 90vh;
}

.clone-modal-header[b-fffui2bbjz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.1rem 1.25rem .9rem;
    border-bottom: 1px solid var(--b9-border);
}

.clone-modal-title[b-fffui2bbjz] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--b9-text);
}

.clone-modal-close[b-fffui2bbjz] {
    background: none;
    border: none;
    color: var(--b9-text-soft);
    cursor: pointer;
    font-size: .875rem;
    /* A close button is a touch target like any other: padding alone left it 38px wide. */
    padding: .75rem;
    min-width: 48px;
    min-height: 48px;
    line-height: 1;
}

.clone-modal-body[b-fffui2bbjz] {
    padding: 1.25rem;
    overflow-y: auto;
}

.clone-source-note[b-fffui2bbjz] {
    font-size: .8125rem;
    color: var(--b9-text-soft);
    background: color-mix(in srgb, var(--b9-surface-muted) 75%, transparent);
    border: 1px solid var(--b9-border);
    border-radius: 7px;
    padding: .65rem .875rem;
    margin-bottom: 1rem;
    line-height: 1.55;
}

.clone-brings[b-fffui2bbjz] {
    display: inline-block;
    margin-top: .35rem;
}

.clone-field[b-fffui2bbjz] {
    margin-bottom: .875rem;
    display: flex;
    flex-direction: column;
    gap: .3rem;
}

.clone-label[b-fffui2bbjz] {
    font-size: .8125rem;
    font-weight: 600;
    color: var(--b9-text);
}

.clone-input[b-fffui2bbjz] {
    display: block;
    width: 100%;
    padding: .6rem .75rem;
    font-size: .875rem;
    border: 1.5px solid var(--b9-border);
    border-radius: 7px;
    background: color-mix(in srgb, var(--b9-surface) 92%, black 8%);
    color: var(--b9-text);
    transition: border-color .15s, box-shadow .15s;
}

.clone-input:focus[b-fffui2bbjz] {
    outline: none;
    border-color: var(--b9-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--b9-primary) 14%, transparent);
}

.clone-check[b-fffui2bbjz] {
    display: flex;
    align-items: flex-start;
    gap: .5rem;
    margin: .25rem 0 .875rem;
}

.clone-check-label[b-fffui2bbjz] {
    font-size: .8125rem;
    color: var(--b9-text);
    line-height: 1.4;
    cursor: pointer;
}

.clone-validation[b-fffui2bbjz] {
    display: block;
    font-size: .8125rem;
    color: var(--b9-danger-text, #fca5a5);
    line-height: 1.5;
}

.clone-plans-link[b-fffui2bbjz] {
    display: inline-block;
    margin-top: .3rem;
    font-weight: 600;
    color: var(--b9-primary-text);
    text-decoration: none;
}

.clone-plans-link:hover[b-fffui2bbjz] {
    text-decoration: underline;
}

.clone-modal-footer[b-fffui2bbjz] {
    display: flex;
    justify-content: flex-end;
    gap: .6rem;
    padding: .9rem 1.25rem;
    border-top: 1px solid var(--b9-border);
    background: color-mix(in srgb, var(--b9-surface-muted) 55%, transparent);
}
/* /Components/UI/ConfirmDialog.razor.rz.scp.css */
/* Shared confirm dialog (UX-016) — same visual grammar as the league schedule's
   in-page confirm, promoted to a reusable component. Tokens only; dark-theme safe. */

.cd-overlay[b-cuemm51fwd] {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.45);
    padding: 1rem;
}

.cd-modal[b-cuemm51fwd] {
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 14px;
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.35);
    max-width: 460px;
    width: 100%;
    padding: 1.1rem 1.2rem 1rem;
}

.cd-body[b-cuemm51fwd] {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    margin-bottom: 1rem;
}

.cd-icon[b-cuemm51fwd] {
    color: var(--b9-warning);
    font-size: 1.25rem;
    line-height: 1.3;
    flex-shrink: 0;
}

.cd-text[b-cuemm51fwd] {
    color: var(--text-primary);
    font-size: .92rem;
    line-height: 1.5;
    /* The messages carry deliberate paragraph breaks and bullet lists. */
    white-space: pre-line;
    overflow-wrap: anywhere;
}

.cd-btns[b-cuemm51fwd] {
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
    flex-wrap: wrap;
}

/* ≥48px touch targets — these are decision buttons, often tapped on a phone at the course. */
.cd-btn[b-cuemm51fwd] {
    min-height: 48px;
    padding: .55rem 1.1rem;
}
/* /Components/UI/EventAnnouncementBanner.razor.rz.scp.css */
/* Amber on near-black. Deliberately NOT the app's alert-warning: this renders on a public page, a
   public leaderboard and a dark TV board, three surfaces with different palettes, so it carries its
   own colours rather than inheriting three different ones. Measured 11.4:1 — comfortably AA, and it
   has to survive a bright clubhouse and a phone in daylight. */
.ann[b-34k3zc194m] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
    padding: 0.6rem 0.9rem;
    margin-bottom: 0.75rem;
    border-radius: 10px;
    background: #FEF3C7;
    color: #1F1300;
    border-left: 5px solid #B45309;
    font-size: 1rem;
    line-height: 1.35;
}

.ann-icon[b-34k3zc194m] { font-size: 1.1em; }
.ann-text[b-34k3zc194m] { font-weight: 700; }

.ann-time[b-34k3zc194m] {
    font-weight: 500;
    opacity: 0.85;
    white-space: nowrap;
    font-size: 0.85em;
}

/* The clubhouse TV. "Done means" is at least 28px at 1080p and read at three metres — clamp's floor
   is 28px so a small panel cannot shrink below it, and it scales up with the board like the rest of
   the tv-board type does. */
.ann--tv[b-34k3zc194m] {
    font-size: clamp(28px, 2.2vw, 2.4rem);
    padding: 0.7rem 1.2rem;
    margin-bottom: 1rem;
    border-radius: 14px;
    border-left-width: 10px;
}
/* /Components/UI/EventSetupSteps.razor.rz.scp.css */
.setup-steps[b-fwoy2u5l26] {
    display: flex;
    align-items: stretch;
    flex-wrap: wrap;
    gap: .25rem;
    padding: .5rem .75rem;
    margin-bottom: 1rem;
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: .6rem;
}

.setup-step[b-fwoy2u5l26] {
    display: flex;
    align-items: center;
    gap: .55rem;
    padding: .4rem .7rem;
    border-radius: .5rem;
    text-decoration: none;
    color: var(--text-muted);
    min-height: 48px;          /* comfortable touch target */
    transition: background .12s ease, color .12s ease;
}

.setup-step:hover[b-fwoy2u5l26] {
    background: var(--bg-raised);
    color: var(--text-primary);
}

/* Every step is a LINK, and the tiles read as labels until the mouse is already on one.
   Underlining the title on hover and on keyboard focus is the plainest "this goes
   somewhere" a tile can carry. */
.setup-step:hover .setup-step-title[b-fwoy2u5l26],
.setup-step:focus-visible .setup-step-title[b-fwoy2u5l26] {
    text-decoration: underline;
}

/* Keyboard users had only the browser's default ring on an element styled as a tile.
   The offset stays inside the strip's .25rem gap so the ring never sits on a neighbour.

   --text-primary, not --brand: this outline REPLACES the browser's own focus indicator, so it
   has to clear WCAG 1.4.11's 3:1 on its own. Brand blue (#1D4ED8) against the strip's elevated
   background measures roughly 2.6:1 on the app's default dark theme — a focus ring you have to
   hunt for is the one indicator that must never be subtle. The body-text token is the highest-
   contrast colour either theme already guarantees. */
.setup-step:focus-visible[b-fwoy2u5l26] {
    outline: 2px solid var(--text-primary);
    outline-offset: 1px;
    background: var(--bg-raised);
    color: var(--text-primary);
}

.setup-step-mark[b-fwoy2u5l26] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    font-size: var(--font-size-chip);
    font-weight: 700;
    background: var(--bg-raised);
    color: var(--text-muted);
    border: 1px solid var(--border-default);
}

.setup-step-text[b-fwoy2u5l26] {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
}

.setup-step-title[b-fwoy2u5l26] {
    font-weight: 600;
    font-size: .9rem;
    color: inherit;
}

.setup-step-sub[b-fwoy2u5l26] {
    font-size: var(--font-size-sm);
    color: var(--text-muted);
}

/* Current page */
.setup-step.is-current[b-fwoy2u5l26] {
    background: var(--brand-soft);
    color: var(--text-primary);
}
.setup-step.is-current .setup-step-mark[b-fwoy2u5l26] {
    background: var(--brand);
    color: #fff;
    border-color: var(--brand);
}
.setup-step.is-current .setup-step-title[b-fwoy2u5l26] {
    color: var(--text-primary);
}

/* Completed step */
.setup-step.is-done .setup-step-mark[b-fwoy2u5l26] {
    background: var(--success-soft);
    color: var(--success);
    border-color: var(--success);
}
.setup-step.is-done .setup-step-title[b-fwoy2u5l26] {
    color: var(--text-primary);
}

/* NO "next step" ring here, deliberately.
   A first pass marked the first unfinished step with `inset 0 0 0 1px var(--border-default)`
   plus a brand-edged number. On the app's DEFAULT dark theme that ring composites to roughly
   1.33:1 against the strip it sits on and the number edge to about 2.18:1 — both under the 3:1
   WCAG 1.4.11 floor for a non-text cue, and the number edge only ~1.66:1 away from the plain
   ring every LATER step keeps. A signal that cannot be seen is decoration that costs specificity
   and reads as an unstyled state; better none than one that only shows up in a screenshot on a
   bright monitor. The hover/focus affordance above is what A11 actually asked for — "these tiles
   are links" — and it carries its own contrast because it changes background AND underlines.
   If a next-step cue is wanted later it needs a token that clears 3:1 on --bg-elevated
   (--brand-soft or a real accent fill), not a hairline. */

.setup-steps-arrow[b-fwoy2u5l26] {
    display: flex;
    align-items: center;
    color: var(--text-muted);
    opacity: .6;
    font-size: .9rem;
}

@media (max-width: 575.98px) {
    .setup-step-sub[b-fwoy2u5l26] { display: none; }   /* keep compact on small phones */
    .setup-steps-arrow[b-fwoy2u5l26] { font-size: var(--font-size-chip); }
}

/* "Why isn't this ticked?" — the one line that stops a grey step reading as a broken app.
   Small and quiet so it never competes with the step's own name.

   --warning-text, NOT --warning: the plain --warning amber (#D97706 in light) lands at about
   2.9:1 on --bg-elevated, which fails AA for text this size. --warning-text is the token meant
   for warning COPY and measures ~4.6:1 light / ~12:1 dark. */
.setup-step-hint[b-fwoy2u5l26] {
    font-size: var(--font-size-sm);
    font-weight: 600;
    color: var(--warning-text);
    margin-top: 1px;
}
/* /Components/UI/GpsYardagePanel.razor.rz.scp.css */
.b9gps[b-vjo52odn7s] {
    margin: 10px 0 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 10px;
}

.b9gps-toggle[b-vjo52odn7s] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 10px 18px;
    border-radius: 999px;
    border: 1px solid var(--border-subtle);
    background: var(--bg-elevated);
    color: var(--text-muted);
    font-size: 0.9375rem;
    font-weight: 600;
    cursor: pointer;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}

.b9gps-toggle:hover[b-vjo52odn7s] { color: var(--text-primary); }

.b9gps-toggle-on[b-vjo52odn7s] {
    background: var(--brand-soft);
    border-color: var(--brand-ring);
    color: var(--brand-text);
}

.b9gps-toggle i[b-vjo52odn7s] { font-size: 1rem; }

.b9gps-readout[b-vjo52odn7s] {
    width: 100%;
    max-width: 420px;
    background: var(--bg-elevated);
    border: 1px solid var(--border-subtle);
    border-radius: 16px;
    padding: 14px 12px 10px;
}

.b9gps-nums[b-vjo52odn7s] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 8px;
}

.b9gps-side[b-vjo52odn7s] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.b9gps-side-lbl[b-vjo52odn7s] {
    font-size: 0.875rem;   /* 11px -> 14px: says WHICH yardage the number beside it is */
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-muted);
}

.b9gps-side-val[b-vjo52odn7s] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--text-primary);
    font-variant-numeric: tabular-nums;
    line-height: 1;
}

.b9gps-center[b-vjo52odn7s] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0 6px;
}

.b9gps-center-val[b-vjo52odn7s] {
    font-size: 3rem;
    font-weight: 800;
    color: var(--brand-text);
    font-variant-numeric: tabular-nums;
    line-height: 1;
}

.b9gps-center-lbl[b-vjo52odn7s] {
    font-size: 0.875rem;   /* 11px -> 14px: qualifies the hero number */
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--text-muted);
    margin-top: 2px;
}

.b9gps-status[b-vjo52odn7s] {
    text-align: center;
    margin-top: 10px;
    font-size: 0.875rem;   /* 12px -> 14px: carries sentences, so the read floor */
    color: var(--text-muted);
}
/* /Components/UI/InlineAlert.razor.rz.scp.css */
/* Extracted from inline styles (Blazor audit Batch G). */
.ia-title[b-ldmxyjih27] { margin-bottom: 2px; }
/* /Components/UI/LoadingSkeleton.razor.rz.scp.css */
/* Extracted from inline styles (Blazor audit Batch G). */
.lsk-card[b-7n5364yp17] { min-height: 120px; }
/* /Components/UI/LoadingState.razor.rz.scp.css */
/* Sized spinner inside the state icon (extracted from inline styles). */
.ls-spinner[b-vi8fj3enjp] {
    width: 1.75rem;
    height: 1.75rem;
    border-width: 3px;
}
/* /Components/UI/UndoBar.razor.rz.scp.css */
/* UndoBar — inline "you can take that back" strip. Tokens only, no raw colours. */

.ub[b-z4csmqf1gd] {
    display: flex;
    align-items: center;
    gap: 0.65rem;
    flex-wrap: wrap;
    padding: 0.6rem 0.9rem;
    margin-bottom: 1rem;
    border-radius: 10px;
    border: 1px solid var(--b9-success, var(--border-default));
    background: var(--bg-raised);
    color: var(--text-primary);
}

.ub-icon[b-z4csmqf1gd] { color: var(--b9-success, var(--brand)); flex-shrink: 0; }

.ub-msg[b-z4csmqf1gd] { font-weight: 600; flex: 1 1 auto; }

.ub-btn[b-z4csmqf1gd] {
    min-height: var(--touch-target-min, 48px);
    padding: 0 1rem;
    border-radius: 8px;
    border: 1.5px solid var(--brand);
    background: transparent;
    color: var(--brand-text, var(--brand));
    font-weight: 700;
    cursor: pointer;
    flex-shrink: 0;
}

.ub-btn:hover:not(:disabled)[b-z4csmqf1gd] { background: var(--brand); color: var(--text-primary); }
.ub-btn:disabled[b-z4csmqf1gd] { opacity: 0.55; cursor: not-allowed; }

.ub-x[b-z4csmqf1gd] {
    min-width: var(--touch-target-min, 48px);
    min-height: var(--touch-target-min, 48px);
    border: none;
    background: transparent;
    color: var(--text-muted);
    cursor: pointer;
    flex-shrink: 0;
}

.ub-x:hover[b-z4csmqf1gd] { color: var(--text-primary); }

.ub-btn:focus-visible[b-z4csmqf1gd],
.ub-x:focus-visible[b-z4csmqf1gd] { outline: none; box-shadow: var(--b9-focus-ring); }
