/* /Components/Account/Shared/AccountLayout.razor.rz.scp.css */
.bd-account[b-b4b5hfwjy0] {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
}
/* /Components/Layout/BrochureLayout.razor.rz.scp.css */
.bd-brochure[b-lkr796wn86] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* ---- Top bar ---- */
.bd-topbar[b-lkr796wn86] {
    position: sticky;
    top: 0;
    z-index: 50;
    background: var(--bd-ink);
    color: #fff;
    border-bottom: 1px solid var(--bd-ink-line);
}

.bd-topbar__inner[b-lkr796wn86] {
    height: var(--bd-header-h);
    display: flex;
    align-items: center;
    gap: 1.5rem;
}

.bd-topnav[b-lkr796wn86] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-right: auto;
}

/* NavLink renders its own <a>, which does NOT carry this component's scoped-CSS attribute, so a plain
   `.bd-topnav__link` selector wouldn't match (the link would fall back to the global green-underline
   <a> rules). ::deep pierces the scope to reach the anchor. */
.bd-topnav[b-lkr796wn86]  .bd-topnav__link {
    position: relative;
    color: rgba(255, 255, 255, 0.82);
    text-decoration: none;
    font-weight: 600;
    padding: 0.4rem 0.2rem;
    transition: color .15s ease;
}

/* Accent underline that grows in on hover / active -- a lighter touch than the old pill. */
.bd-topnav[b-lkr796wn86]  .bd-topnav__link::after {
    content: "";
    position: absolute;
    left: 0.2rem;
    right: 0.2rem;
    bottom: 0.1rem;
    height: 2px;
    border-radius: 2px;
    background: var(--bd-accent);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .18s ease;
}

.bd-topnav[b-lkr796wn86]  .bd-topnav__link:hover { color: #fff; }
.bd-topnav[b-lkr796wn86]  .bd-topnav__link:hover::after,
.bd-topnav[b-lkr796wn86]  .bd-topnav__link.active::after { transform: scaleX(1); }
.bd-topnav[b-lkr796wn86]  .bd-topnav__link.active { color: #fff; }

.bd-topbar__actions[b-lkr796wn86] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.bd-topbar__user[b-lkr796wn86] { color: rgba(255, 255, 255, 0.75); font-weight: 600; font-size: 0.9rem; }

/* Account + mobile menu triggers (native <details> summaries) on the dark bar: white text/icon with
   a faint translucent-white hover for affordance. */
.bd-topbar__usermenu > summary[b-lkr796wn86],
.bd-topbar__mobile > summary[b-lkr796wn86] {
    color: #fff;
    font-weight: 600;
    padding: 0.4rem 0.7rem;
    border-radius: 0.5rem;
    font-size: 1.05rem;
}
.bd-topbar__usermenu > summary:hover[b-lkr796wn86],
.bd-topbar__usermenu > summary:focus-visible[b-lkr796wn86],
.bd-topbar__mobile > summary:hover[b-lkr796wn86],
.bd-topbar__mobile > summary:focus-visible[b-lkr796wn86] {
    background-color: rgba(255, 255, 255, 0.12);
}

/* Mobile menu toggle: shown only on narrow screens. */
.bd-topbar__mobile[b-lkr796wn86] { display: none; margin-left: auto; }

@media (max-width: 767.98px) {
    .bd-topnav[b-lkr796wn86],
    .bd-topbar__actions[b-lkr796wn86] { display: none; }
    .bd-topbar__mobile[b-lkr796wn86] { display: inline-flex; }
}

.bd-main[b-lkr796wn86] { flex: 1 0 auto; }

/* ---- Footer ---- */
.bd-footer[b-lkr796wn86] {
    background: var(--bd-ink);
    color: rgba(255, 255, 255, 0.7);
    border-top: 1px solid var(--bd-ink-line);
    padding: 2rem 0;
    margin-top: 4rem;
}

.bd-footer__inner[b-lkr796wn86] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem 2rem;
    justify-content: space-between;
}

.bd-footer__brand[b-lkr796wn86] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: #fff;
    font-weight: 800;
}

.bd-footer__links[b-lkr796wn86] { display: flex; flex-wrap: wrap; gap: 1.25rem; }
.bd-footer__links a[b-lkr796wn86] { color: rgba(255, 255, 255, 0.72); text-decoration: none; font-weight: 600; }
.bd-footer__links a:hover[b-lkr796wn86] { color: #fff; text-decoration: underline; }
.bd-footer__meta[b-lkr796wn86] { display: flex; flex-direction: column; gap: 0.2rem; font-size: 0.85rem; text-align: right; }
.bd-footer__tz[b-lkr796wn86] { color: rgba(255, 255, 255, 0.55); }
/* /Components/Layout/DashboardLayout.razor.rz.scp.css */
/* App shell: header (sticky) / body[sidebar + main] / footer, on a CSS grid so short pages keep the
   footer pinned to the bottom and tall pages scroll naturally. Replaces the old <wa-page>. */
.bd-shell[b-vekdt7skxu] {
    --bd-nav-w: 16rem;
    min-height: 100vh;
    min-height: 100dvh;
    display: grid;
    grid-template-rows: auto 1fr auto; /* header, body, footer */
}

.bd-shell__body[b-vekdt7skxu] {
    display: grid;
    grid-template-columns: var(--bd-nav-w) 1fr; /* sidebar, main */
    min-height: 0;
}

/* ---- Top app bar ---- */
.bd-dashbar[b-vekdt7skxu] {
    position: sticky;
    top: 0;
    z-index: 200;
    display: flex;
    align-items: center;
    gap: 1rem;
    height: var(--bd-header-h);
    padding: 0 1rem;
    background: var(--bd-ink);
    color: #fff;
    border-bottom: 1px solid var(--bd-ink-line);
}

/* Hamburger: hidden on desktop, shown when the sidebar collapses to a drawer. */
.bd-navtoggle[b-vekdt7skxu] {
    display: none;
    align-items: center;
    justify-content: center;
    width: 2.4rem;
    height: 2.4rem;
    margin-left: -0.35rem;
    border: none;
    background: none;
    color: #fff;
    font-size: 1.15rem;
    border-radius: 0.5rem;
    cursor: pointer;
}
.bd-navtoggle:hover[b-vekdt7skxu] { background: rgba(255, 255, 255, 0.12); }

.bd-dashbar__ctx[b-vekdt7skxu] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.3rem 0.75rem;
    border-radius: 0.5rem;
    background: rgba(255, 255, 255, 0.08);
    font-size: 0.9rem;
    color: rgba(255, 255, 255, 0.85);
}

.bd-dashbar__ctx i[b-vekdt7skxu] { color: var(--bd-accent); }
.bd-dashbar__ctx-label[b-vekdt7skxu] { color: rgba(255, 255, 255, 0.55); }
.bd-dashbar__spacer[b-vekdt7skxu] { flex: 1; }

/* Account menu trigger (native <details> summary) on the dark bar: white text/icon with a faint
   translucent-white hover for affordance. */
.bd-usermenu > summary[b-vekdt7skxu] {
    color: #fff;
    font-weight: 600;
    padding: 0.4rem 0.7rem;
    border-radius: 0.5rem;
    font-size: 1.05rem;
}
.bd-usermenu > summary:hover[b-vekdt7skxu],
.bd-usermenu > summary:focus-visible[b-vekdt7skxu] {
    background-color: rgba(255, 255, 255, 0.12);
}

/* ---- Sidebar ---- */
.bd-sidenav[b-vekdt7skxu] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    padding: 1rem 0.75rem;
    background: #fff;
    border-right: 1px solid #e5e7eb;
    /* Fills the body grid cell (align-self defaults to stretch), so the white column reaches the
       footer on short pages without forcing the shell taller than the viewport. */
}

.bd-sidenav__section[b-vekdt7skxu] {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #6b7280;
    padding: 1.25rem 0.85rem 0.4rem;
}

/* NavLink renders its own <a>, which does NOT carry this component's scoped-CSS attribute, so a
   plain `.bd-sidenav__link` selector wouldn't match (the links would fall back to the global <a>
   rules -- green + Bootstrap's underline). ::deep pierces the scope to reach the anchor. */
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link {
    display: flex;
    align-items: center;
    gap: 0.8rem;
    padding: 0.6rem 0.85rem;
    border-radius: 0.6rem;
    color: var(--bd-ink);
    text-decoration: none;
    font-weight: 600;
    transition: background-color .12s ease, color .12s ease;
}

/* Match BOTH the raw <i> and the <svg> that Font Awesome's SVG+JS kit swaps it for -- otherwise the
   swapped icon escapes this rule and renders at FA's default size (oversized in the flex row). The
   explicit width/height clamp keeps the icon a fixed size regardless of FA render mode. */
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link i,
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link svg {
    flex: 0 0 auto;
    width: 1.25rem;
    height: 1rem;
    text-align: center;
    font-size: 0.95rem;
    color: #8a94a3;
}

.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link:hover { background: var(--bd-brand-soft); color: var(--bd-brand-strong); }
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link:hover i,
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link:hover svg { color: var(--bd-brand); }

.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link.active { background: var(--bd-brand); color: #fff; }
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link.active i,
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link.active svg { color: #fff; }

/* ---- "Something's waiting on the hub" marker (NavPromptFlag) ---- */
/* Trailing edge of the row, so it reads as a status on the row rather than a second leading icon. */
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__flag {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    line-height: 1;
}

/* The rules above paint EVERY icon in a nav row muted grey (or white when active), which is the one
   thing this icon must not be -- it exists to be noticed. Carrying .bd-sidenav__link in the selector
   outranks them on specificity rather than relying on source order. */
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link .bd-sidenav__flag i,
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link .bd-sidenav__flag svg {
    width: 1rem;
    height: 1rem;
    font-size: 0.9rem;
    color: var(--bd-accent-strong);
}

/* On the active row the background is brand green, where the accent orange muddies. White reads
   cleanly and the row itself is already the emphasis. */
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link.active .bd-sidenav__flag i,
.bd-sidenav[b-vekdt7skxu]  .bd-sidenav__link.active .bd-sidenav__flag svg { color: #fff; }

/* ---- Main + footer ---- */
.bd-dashmain[b-vekdt7skxu] {
    padding: 1.75rem clamp(1rem, 3vw, 2.5rem);
    background: #f4f6fa;
    min-width: 0; /* let the main column shrink instead of overflowing the grid */
}

.bd-dashfoot[b-vekdt7skxu] {
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.9rem 1.5rem;
    background: #fff;
    border-top: 1px solid #e5e7eb;
    font-size: 0.82rem;
    color: #6b7280;
}

.bd-dashfoot__links[b-vekdt7skxu] { display: flex; flex-wrap: wrap; gap: 1rem; }
.bd-dashfoot__links a[b-vekdt7skxu] { color: #6b7280; text-decoration: none; }
.bd-dashfoot__links a:hover[b-vekdt7skxu] { color: var(--bd-brand, #3f7d1e); text-decoration: underline; }

/* Scrim behind the mobile nav drawer (hidden on desktop). */
.bd-shell__scrim[b-vekdt7skxu] { display: none; }

/* ---- Mobile: sidebar collapses to a slide-in drawer toggled by the hamburger ---- */
@media (max-width: 1023.98px) {
    .bd-shell__body[b-vekdt7skxu] { grid-template-columns: 1fr; } /* main only; nav becomes an overlay */
    .bd-navtoggle[b-vekdt7skxu] { display: inline-flex; }

    .bd-sidenav[b-vekdt7skxu] {
        position: fixed;
        top: 0;
        left: 0;
        height: 100dvh;
        width: min(82vw, 17rem);
        z-index: 400;
        border-right: 1px solid #e5e7eb;
        box-shadow: 0 0 40px rgba(0, 0, 0, 0.3);
        transform: translateX(-100%);
        transition: transform 0.2s ease;
    }
    .bd-shell.is-navopen .bd-sidenav[b-vekdt7skxu] { transform: none; }

    .bd-shell__scrim[b-vekdt7skxu] {
        display: block;
        position: fixed;
        inset: 0;
        z-index: 350;
        background: rgba(16, 34, 11, 0.45);
        opacity: 0;
        pointer-events: none;
        transition: opacity 0.2s ease;
    }
    .bd-shell.is-navopen .bd-shell__scrim[b-vekdt7skxu] { opacity: 1; pointer-events: auto; }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-3ipm0p35d4],
.components-reconnect-repeated-attempt-visible[b-3ipm0p35d4],
.components-reconnect-failed-visible[b-3ipm0p35d4],
.components-pause-visible[b-3ipm0p35d4],
.components-resume-failed-visible[b-3ipm0p35d4],
.components-rejoining-animation[b-3ipm0p35d4] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-retrying[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-failed[b-3ipm0p35d4],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-3ipm0p35d4] {
    display: block;
}


#components-reconnect-modal[b-3ipm0p35d4] {
    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-3ipm0p35d4 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-3ipm0p35d4 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-3ipm0p35d4 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-3ipm0p35d4]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-3ipm0p35d4 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-3ipm0p35d4 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-3ipm0p35d4 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-3ipm0p35d4 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-3ipm0p35d4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-3ipm0p35d4] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-3ipm0p35d4] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-3ipm0p35d4] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-3ipm0p35d4] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-3ipm0p35d4] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-3ipm0p35d4] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-3ipm0p35d4 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-3ipm0p35d4] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-3ipm0p35d4 {
    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.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

/* Shared page-header classes (.bd-page__head/__crumb/__title/__lede) live in app.css. */

.bd-controls[b-zxcgf5zrv1] { display: flex; gap: 0.6rem; flex-wrap: wrap; align-items: center; }
.bd-select[b-zxcgf5zrv1] { width: auto; min-width: 9rem; font-weight: 600; }
.bd-hint[b-zxcgf5zrv1] { font-size: 0.85rem; color: #8a94a3; }

/* ---- Top cards ---- */
.bd-admin-grid[b-zxcgf5zrv1] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(20rem, 1fr));
    gap: 1.1rem;
    margin-bottom: 1.4rem;
}
.bd-admin-card[b-zxcgf5zrv1] { padding: 1.25rem 1.35rem; }
.bd-admin-card__title[b-zxcgf5zrv1] { font-size: 1.15rem; margin: 0 0 0.5rem; display: flex; align-items: center; gap: 0.5rem; }
.bd-admin-card__title i[b-zxcgf5zrv1] { color: var(--bd-brand-strong); }
.bd-admin-card .bd-controls[b-zxcgf5zrv1] { margin: 0.75rem 0; }
.bd-admin-card__links[b-zxcgf5zrv1] { display: flex; flex-direction: column; gap: 0.35rem; margin-top: 0.75rem; }
.bd-admin-card__links a[b-zxcgf5zrv1] { font-size: 0.9rem; font-weight: 600; text-decoration: none; color: var(--bd-brand-strong); }
.bd-admin-card__links a i[b-zxcgf5zrv1] { font-size: 0.75rem; margin-right: 0.35rem; }

/* ---- Polling toggles ---- */
.bd-toggle[b-zxcgf5zrv1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 0.7rem 0;
    border-top: 1px solid #e5e7eb;
}
.bd-toggle:first-of-type[b-zxcgf5zrv1] { border-top: 0; }
.bd-toggle button[b-zxcgf5zrv1] { white-space: nowrap; }

/* ---- Log table ---- */
.bd-standings__head[b-zxcgf5zrv1] { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 0.5rem; }
.bd-standings__head h2[b-zxcgf5zrv1] { font-size: 1.25rem; margin: 0; }
.bd-admin-logs[b-zxcgf5zrv1] { padding: 1.25rem 1.35rem; }
.bd-nowrap[b-zxcgf5zrv1] { white-space: nowrap; font-variant-numeric: tabular-nums; }
.bd-log-details[b-zxcgf5zrv1] { margin-top: 0.2rem; word-break: break-word; }

/* A poller taken out of play by the startup kill switch. Dimmed so it reads as unavailable rather
   than merely switched off, with the reason spelled out beneath its description. */
.bd-toggle.is-killed strong[b-zxcgf5zrv1] { opacity: 0.65; }
.bd-toggle__killed[b-zxcgf5zrv1] { color: var(--bd-accent-strong); font-weight: 600; }
/* /Components/Pages/Badges.razor.rz.scp.css */
.bd-page__head[b-6nr8gcn5lo] { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }

/* Score + "how you earned it" breakdown, between the page header and the first badge section. */
.bd-badges__summary[b-6nr8gcn5lo] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.65rem;
    margin: 0.25rem 0 1.9rem;
}

.bd-badges__score[b-6nr8gcn5lo] { line-height: 1.1; white-space: nowrap; }
.bd-badges__score-value[b-6nr8gcn5lo] {
    display: block;
    font-size: 2rem;
    font-weight: 800;
    color: var(--bd-brand, #2f6feb);
}
.bd-badges__score-label[b-6nr8gcn5lo] { font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.03em; opacity: 0.7; }

/* The "how you earned it" table now lives in the shared BadgeEarningsTable component. */

.bd-badges__section[b-6nr8gcn5lo] { margin-bottom: 2rem; }

.bd-badges__grid[b-6nr8gcn5lo] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 0.9rem;
}

.bd-badgecard[b-6nr8gcn5lo] {
    display: flex;
    gap: 0.85rem;
    padding: 0.9rem 1rem;
    border-radius: 0.7rem;
    border: 1px solid color-mix(in srgb, currentColor 12%, transparent);
    background: color-mix(in srgb, currentColor 3%, transparent);
}

.bd-badgecard--mine[b-6nr8gcn5lo] {
    border-color: color-mix(in srgb, var(--bd-brand, #2f6feb) 55%, transparent);
    background: color-mix(in srgb, var(--bd-brand, #2f6feb) 8%, transparent);
}

/* Dubious distinctions: unearned cards stay neutral like every other unearned badge; only an
   EARNED one wears the red badge of shame. */
.bd-badgecard--dubious.bd-badgecard--mine[b-6nr8gcn5lo] {
    border-color: color-mix(in srgb, #c0392b 55%, transparent);
    background: color-mix(in srgb, #c0392b 8%, transparent);
}

.bd-badgecard--dubious .bd-badgecard__mine-tag[b-6nr8gcn5lo] {
    background: color-mix(in srgb, #c0392b 20%, transparent);
}

.bd-badgecard__emoji[b-6nr8gcn5lo] { font-size: 2rem; line-height: 1; }
.bd-badgecard__body[b-6nr8gcn5lo] { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }

.bd-badgecard__head[b-6nr8gcn5lo] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.bd-badgecard__name[b-6nr8gcn5lo] { font-weight: 700; }
.bd-badgecard__points[b-6nr8gcn5lo] {
    font-size: 0.72rem;
    font-weight: 700;
    padding: 0.1rem 0.4rem;
    border-radius: 0.4rem;
    background: color-mix(in srgb, currentColor 10%, transparent);
    opacity: 0.75;
}
.bd-badgecard__mine-tag[b-6nr8gcn5lo] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 0.1rem 0.4rem;
    border-radius: 0.4rem;
    background: color-mix(in srgb, var(--bd-brand, #2f6feb) 20%, transparent);
}

.bd-badgecard__rate[b-6nr8gcn5lo]::before { content: " · "; }
.bd-badgecard__desc[b-6nr8gcn5lo] { margin: 0; font-size: 0.9rem; opacity: 0.8; }
.bd-badgecard__meta[b-6nr8gcn5lo] { display: flex; flex-direction: column; gap: 0.1rem; font-size: 0.8rem; opacity: 0.7; margin-top: 0.15rem; }
.bd-badgecard__earned[b-6nr8gcn5lo] { font-weight: 600; opacity: 0.9; }

/* Secret badges: a subtle "Secret" chip, plus a muted, dashed-border treatment while still locked
   (name/details hidden until the viewer earns it). */
.bd-badgecard__secret-tag[b-6nr8gcn5lo] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 0.1rem 0.4rem;
    border-radius: 0.4rem;
    background: color-mix(in srgb, #7c3aed 20%, transparent);
}

/* Introduced this season (Badge.AvailableOn). */
.bd-badgecard__new-tag[b-6nr8gcn5lo] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: 0.1rem 0.4rem;
    border-radius: 0.4rem;
    background: color-mix(in srgb, var(--bd-accent, #ff8a1e) 25%, transparent);
}

.bd-badgecard--secret[b-6nr8gcn5lo] {
    border-style: dashed;
    opacity: 0.85;
}

.bd-badgecard--secret .bd-badgecard__emoji[b-6nr8gcn5lo] { opacity: 0.6; }
.bd-badgecard--secret .bd-badgecard__name[b-6nr8gcn5lo] { font-style: italic; opacity: 0.85; }
/* /Components/Pages/Commissioner.razor.rz.scp.css */
/* Membership lock badge */
.bd-lockbadge[b-phbt31wiva] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.8rem;
    font-weight: 700;
    padding: 0.35rem 0.75rem;
    border-radius: 999px;
    white-space: nowrap;
}

.bd-lockbadge.is-locked[b-phbt31wiva] { background: var(--bd-brand-soft); color: var(--bd-brand-strong); }
.bd-lockbadge.is-open[b-phbt31wiva] { background: #fff3e0; color: var(--bd-accent-strong); }

/* The .bd-tool grid these pages render lives in app.css: it's shared with the "join a league"
   picker on /create-new-entry, and a scoped stylesheet only reaches its own component. */
/* /Components/Pages/Entries.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

/* The "invite the previous players?" choice inside the series picker. Indented and rule-marked so it
   reads as a follow-up question about the series just chosen, rather than a fourth sibling option
   competing with the series modes above it. */
.bd-seriesinvite[b-xwiwpqxwbw] {
    margin-top: 0.5rem;
    margin-left: 1.5rem;
    padding: 0.6rem 0 0.2rem 0.85rem;
    border-left: 2px solid var(--bd-brand-soft, #eaf3e0);
}

.bd-seriesinvite__title[b-xwiwpqxwbw] {
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 0.35rem;
}

/* The counts sit inside the label, so keep them from reading as part of the option name. */
.bd-seriesinvite .bd-hint[b-xwiwpqxwbw] { color: #6b7280; font-size: 0.85rem; }

/* The named carry-over list. Capped in height so a long-running series (20+ players) doesn't push
   the Create button off the screen. */
.bd-invitees[b-xwiwpqxwbw] {
    list-style: none;
    margin: 0.5rem 0 0.35rem;
    padding: 0;
    max-height: 15rem;
    overflow-y: auto;
    border: 1px solid #e5e7eb;
    border-radius: 0.5rem;
}

.bd-invitees__row[b-xwiwpqxwbw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.3rem 0.5rem 0.3rem 0.65rem;
    border-top: 1px solid #f1f3f5;
}

.bd-invitees__row:first-child[b-xwiwpqxwbw] { border-top: none; }

.bd-invitees__who[b-xwiwpqxwbw] { display: flex; flex-direction: column; min-width: 0; }
.bd-invitees__name[b-xwiwpqxwbw] { font-weight: 600; font-size: 0.9rem; }
.bd-invitees__email[b-xwiwpqxwbw] { font-size: 0.78rem; color: #6b7280; overflow-wrap: anywhere; }

/* Removed rows stay visible rather than vanishing, so the commissioner can see (and undo) what they
   dropped instead of wondering where a name went. */
.bd-invitees__row.is-dropped[b-xwiwpqxwbw] { opacity: 0.45; }
.bd-invitees__row.is-dropped .bd-invitees__name[b-xwiwpqxwbw] { text-decoration: line-through; }

.bd-invitees__toggle[b-xwiwpqxwbw] { flex: none; padding: 0 0.25rem; font-size: 0.8rem; }

/* --- Create wizard ------------------------------------------------------------------------- */

/* Step chips. Purely an indicator of where you are and what's left -- navigation is the Back/Next
   buttons, so these aren't clickable and don't pretend to be. */
.bd-steps[b-xwiwpqxwbw] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1.25rem;
    list-style: none;
    margin: 0 0 1.25rem;
    padding: 0 0 0.9rem;
    border-bottom: 1px solid #e5e7eb;
}

.bd-steps__step[b-xwiwpqxwbw] { display: flex; align-items: center; gap: 0.45rem; color: #9aa5b4; font-size: 0.9rem; }

.bd-steps__num[b-xwiwpqxwbw] {
    display: inline-grid;
    place-items: center;
    width: 1.6rem;
    height: 1.6rem;
    flex: none;
    border-radius: 50%;
    border: 1px solid currentColor;
    font-size: 0.8rem;
    font-weight: 700;
}

.bd-steps__step.is-current[b-xwiwpqxwbw] { color: var(--bd-brand-strong); font-weight: 700; }
.bd-steps__step.is-current .bd-steps__num[b-xwiwpqxwbw] { background: var(--bd-brand); border-color: var(--bd-brand); color: #fff; }
.bd-steps__step.is-done[b-xwiwpqxwbw] { color: var(--bd-brand-strong); }
.bd-steps__step.is-done .bd-steps__num[b-xwiwpqxwbw] { background: var(--bd-brand-soft); border-color: var(--bd-brand-soft); }

/* Final-step summary of everything chosen earlier. */
.bd-review[b-xwiwpqxwbw] {
    margin-bottom: 1rem;
    padding: 0.85rem 1rem;
    background: #f8faf6;
    border: 1px solid #e5e7eb;
    border-radius: 0.6rem;
}

.bd-review__title[b-xwiwpqxwbw] { font-weight: 700; margin-bottom: 0.5rem; }
.bd-review__list[b-xwiwpqxwbw] { margin: 0; }

.bd-review__row[b-xwiwpqxwbw] {
    display: grid;
    grid-template-columns: 9rem 1fr;
    gap: 0.2rem 1rem;
    padding: 0.25rem 0;
}

.bd-review__row dt[b-xwiwpqxwbw] { color: #6b7280; font-size: 0.9rem; }
.bd-review__row dd[b-xwiwpqxwbw] { margin: 0; }

.bd-review__who > summary[b-xwiwpqxwbw] { cursor: pointer; font-size: 0.85rem; color: var(--bd-brand); }
.bd-review__who ul[b-xwiwpqxwbw] { margin: 0.35rem 0 0; padding-left: 1.1rem; font-size: 0.85rem; }

@media (max-width: 34rem) {
    .bd-review__row[b-xwiwpqxwbw] { grid-template-columns: 1fr; }
}

/* The commissioner responsibilities on the confirmation step. Spelled out as a list rather than a
   paragraph so the weight of the job is skimmable -- that's the point of the step. */
.bd-commishduties[b-xwiwpqxwbw] {
    margin: 0.4rem 0 1rem;
    padding-left: 1.2rem;
    color: #374151;
    font-size: 0.92rem;
    line-height: 1.5;
}

.bd-commishduties li[b-xwiwpqxwbw] { margin-bottom: 0.2rem; }

/* Wizard button row. Not defined globally -- the other pages using .bd-form__actions each style it
   in their own scoped sheet -- so the wizard's row is laid out here. */

/* The "join instead" alternative, set apart from the primary commitment beside it so the two don't
   read as a pair of equally-weighted next steps. */
.bd-form__alt[b-xwiwpqxwbw] { margin-left: 1.25rem; }

@media (max-width: 34rem) {
    /* Stacked on a phone, where the extra indent would just look like a stray offset. */
    .bd-form__alt[b-xwiwpqxwbw] { margin-left: 0; }
}
/* /Components/Pages/EntrySeason.razor.rz.scp.css */
.bd-entryp__sub[b-e7dggbbdyk] { display: flex; align-items: baseline; gap: 0.5rem; flex-wrap: wrap; }
.bd-entryp__dot[b-e7dggbbdyk] { opacity: 0.4; }
.bd-entryp__league[b-e7dggbbdyk] { text-decoration: none; color: inherit; opacity: 0.8; }
.bd-entryp__league:hover[b-e7dggbbdyk] { text-decoration: underline; }

/* One measure for the whole column -- see --bd-entryp-measure below. This list used to size itself
   to its widest row (width: fit-content), which meant its right edge moved with the longest dropdown
   label and could never line up with anything above it. */
.bd-entryp__weeks[b-e7dggbbdyk] {
    list-style: none;
    margin: 1rem 0 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.bd-entryp__week[b-e7dggbbdyk] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.55rem 0.9rem;
    border-radius: 0.55rem;
    border: 1px solid color-mix(in srgb, currentColor 10%, transparent);
    background: color-mix(in srgb, currentColor 3%, transparent);
}

.bd-entryp__wk[b-e7dggbbdyk] {
    font-weight: 700;
    min-width: 5rem;
    opacity: 0.8;
}

/* When the week label links to its pick sheet, keep it looking like the label -- underline on hover. */
.bd-entryp__wk--link[b-e7dggbbdyk] { color: inherit; text-decoration: none; }
.bd-entryp__wk--link:hover[b-e7dggbbdyk] { text-decoration: underline; color: var(--bd-brand, #3f7d1e); }

.bd-entryp__pending[b-e7dggbbdyk] { opacity: 0.7; font-style: italic; }
.bd-entryp__pending i[b-e7dggbbdyk] { margin-right: 0.35rem; opacity: 0.6; }
.bd-entryp__none[b-e7dggbbdyk] { opacity: 0.5; font-style: italic; }
.bd-entryp__miss[b-e7dggbbdyk] { color: #c0392b; }
.bd-entryp__miss i[b-e7dggbbdyk] { margin-right: 0.3rem; }

.bd-entryp__pick[b-e7dggbbdyk] { text-decoration: none; color: inherit; }
.bd-entryp__pick:hover[b-e7dggbbdyk] { text-decoration: underline; }

/* Pick badge (scoped: the shared one lives in Scoreboard.razor.css) */
.bd-pick[b-e7dggbbdyk] { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 600; }
.bd-pick__logo[b-e7dggbbdyk] { width: 1.6rem; height: 1.6rem; object-fit: contain; }
.bd-won[b-e7dggbbdyk] { color: #2e7d32; font-variant-numeric: tabular-nums; }
.bd-lost[b-e7dggbbdyk] { color: #c0392b; font-variant-numeric: tabular-nums; }

/* Entry motto, shown under the player/league line. */
.bd-entryp__motto[b-e7dggbbdyk] { font-style: italic; opacity: 0.75; margin: 0.25rem 0 0; }

.bd-entryp__msg[b-e7dggbbdyk] { margin: 0.5rem 0; }

/* Week row: [Week N] [pick / dropdown -- grows] [rank, right] */
.bd-entryp__cell[b-e7dggbbdyk] { flex: 1; display: inline-flex; align-items: center; gap: 0.5rem; min-width: 0; flex-wrap: wrap; }
.bd-entryp__select[b-e7dggbbdyk] { max-width: 16rem; }
.bd-entryp__lockhint[b-e7dggbbdyk] { font-size: 0.8rem; opacity: 0.6; white-space: nowrap; }
.bd-entryp__lockhint i[b-e7dggbbdyk] { margin-right: 0.25rem; }

/* Tiny logo of the slotted team, shown beside an editable week's dropdown. */
.bd-entryp__minilogo[b-e7dggbbdyk] { width: 1.4rem; height: 1.4rem; object-fit: contain; }

/* Special-game pill ("International Game", "NFL Kickoff", ...) beside a visible pick. */
.bd-entryp__special[b-e7dggbbdyk] {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--bd-ink, #10220b);
    background: color-mix(in srgb, var(--bd-brand, #3f7d1e) 12%, #fff);
    border: 1px solid color-mix(in srgb, var(--bd-brand, #3f7d1e) 35%, transparent);
}

/* Rank and rank-movement are separate fixed-width columns so each aligns down the list. */
.bd-entryp__rank[b-e7dggbbdyk] { min-width: 2.75rem; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bd-entryp__shift[b-e7dggbbdyk] { min-width: 2.75rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bd-entryp__shift i[b-e7dggbbdyk] { margin-right: 0.15rem; font-size: 0.8em; }
.bd-entryp__flat[b-e7dggbbdyk] { opacity: 0.4; }

/* Dropped (worst) week: its points don't count toward the season total. The whole row gets a
   washed-out, dashed "excluded" treatment; the struck margin pinpoints the excluded number; the
   pill names the state where tooltips can't be discovered (touch). */
.bd-entryp__week--dropped[b-e7dggbbdyk] {
    border-style: dashed;
    border-color: color-mix(in srgb, #c0392b 60%, transparent);
    opacity: 0.75;
}
.bd-entryp__droppedpts[b-e7dggbbdyk] { text-decoration: line-through; opacity: 0.55; cursor: help; }
.bd-entryp__droppedpill[b-e7dggbbdyk] {
    font-size: 0.7rem;
    font-weight: 600;
    color: inherit;
    background: color-mix(in srgb, currentColor 8%, transparent);
    border: 1px solid color-mix(in srgb, currentColor 25%, transparent);
    cursor: help;
}

/* Running season total through each locked week (right-most column). */
.bd-entryp__total[b-e7dggbbdyk] { min-width: 3rem; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; cursor: help; }

/* An unlocked (current/future) week that has a pick set -- reassuring green. */
.bd-entryp__week--set[b-e7dggbbdyk] {
    background: color-mix(in srgb, var(--bd-brand, #3f7d1e) 10%, transparent);
    border-color: color-mix(in srgb, var(--bd-brand, #3f7d1e) 30%, transparent);
}

/* The .bd-toast family moved to app.css when it became a shared Toast component: three pages render it
   now, and a scoped rule reaches only its own component. */

/* Loading skeleton placeholders (Bootstrap placeholder-glow). */
.bd-entryp__skel-crumb[b-e7dggbbdyk] { display: block; height: 0.8rem; margin-bottom: 0.5rem; border-radius: 0.3rem; }
.bd-entryp__skel-title[b-e7dggbbdyk] { display: block; height: 1.75rem; border-radius: 0.4rem; }
.bd-entryp__skel-pick[b-e7dggbbdyk] { height: 1.4rem; border-radius: 0.3rem; }

/* ----- One column, one width ---------------------------------------------------------------------
   The tile, the hint under it and the week list are one stacked column, so they share a single
   measure and their left AND right edges line up. Three different widths read as three unrelated
   things; one width reads as a column.

   30rem is where the list already sat (its old min-width), so the list doesn't move -- the tile grows
   into it and the hint stops running the full width of the page, which also keeps that sentence near
   a readable line length rather than sprawling.

   Deliberately not full-page width: the tile's panes are a logo, a team and a number, and stretching
   those apart would strand the number half a screen from what it belongs to. The measure is a
   variable so the three can never drift, and it's set on this page's own container rather than
   globally -- the scoped attribute keeps it off every other .bd-page. */
.bd-page[b-e7dggbbdyk] {
    --bd-entryp-measure: 30rem;
}

.bd-entryp__summary[b-e7dggbbdyk],
.bd-entryp__hint[b-e7dggbbdyk],
.bd-entryp__weeks[b-e7dggbbdyk] {
    width: 100%;
    max-width: var(--bd-entryp-measure);
}

.bd-entryp__summary[b-e7dggbbdyk] { margin-bottom: 1.25rem; }
/* Overrides .bd-page__lede's own bottom margin, which was spaced for a full-width paragraph. */
.bd-entryp__hint[b-e7dggbbdyk] { margin-bottom: 0.25rem; }

/* min-width:0 so a long pick label can't push the column wider than the page. */
.bd-entryp__main[b-e7dggbbdyk] { min-width: 0; }
/* /Components/Pages/EntryWeek.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

/* Shared page-header classes (.bd-page__head/__crumb/__title/__lede) live in app.css. */

/* --- Selected-pick hero (top of the sheet, so the current pick is visible without scrolling).
   Mirrors the team-tile look below it: Oswald text, uppercase nickname, Agdasima spread/margin. --- */
.bd-pickhero[b-bla763s117] {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    max-width: 800px;
    /* Reserve the selected-hero height (logo 165 + 2x 1rem padding) so the empty and selected states
       are the same height -- the tiles below don't jump when a pick is made. */
    min-height: 197px;
    box-sizing: border-box;
    background: #fff;
    border: 1px solid #d7ddd0;
    border-left: 6px solid var(--bd-brand, #3f7d1e);
    border-radius: 0.7rem;
    padding: 1rem 1.5rem;
    margin-bottom: 1.5rem;
    box-shadow: 0 2px 10px rgba(16, 34, 11, 0.06);
    font-family: "Oswald", system-ui, sans-serif;
}

/* Clear-pick control -- a quiet link under the game line, visible only while the pick is editable. */
.bd-pickhero__clear[b-bla763s117] {
    align-self: flex-start;
    margin-top: 0.6rem;
    padding: 0.25rem 0;
    background: none;
    border: none;
    color: #b3261e;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
}

.bd-pickhero__clear:hover:not(:disabled)[b-bla763s117] { text-decoration: underline; }
.bd-pickhero__clear:disabled[b-bla763s117] { opacity: 0.5; cursor: default; }
.bd-pickhero__clear i[b-bla763s117] { margin-right: 0.25rem; }

/* Desktop logo: ~2.4x the old cell so the pick reads at a glance ("REAL BIG"). Mobile shrinks below. */
.bd-pickhero__logo[b-bla763s117] {
    flex: 0 0 auto;
    width: 165px;
    height: 165px;
    border-radius: 0.7rem;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 14px;
}

.bd-pickhero__logo img[b-bla763s117] { max-width: 100%; max-height: 130px; object-fit: contain; }

.bd-pickhero__body[b-bla763s117] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    line-height: 1;
}

.bd-pickhero__eyebrow[b-bla763s117] {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--bd-brand, #3f7d1e);
    margin-bottom: 0.5rem;
}

.bd-pickhero__eyebrow i[b-bla763s117] { margin-right: 0.3rem; }

/* City + uppercase nickname, matching .tile__city / .tile__nick. */
.bd-pickhero__city[b-bla763s117] { font-size: 1.35rem; font-weight: 500; color: #111; }
.bd-pickhero__nick[b-bla763s117] {
    font-size: 3rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: -0.01em;
    color: #111;
    margin-top: 0.1rem;
}

/* Game description, matching .tile__meta. */
.bd-pickhero__game[b-bla763s117] { margin-top: 0.5rem; font-size: 0.9rem; color: #8a8a8a; }
/* Razor swallows the whitespace between the opponent abbreviation and the @if that emits this span, so
   THIS MARGIN is the only thing separating them -- there is no space character to fall back on. Which is
   also why the page reads "vs CLE· 30–33" when scraped: the gap is real but it isn't a text node. */
.bd-pickhero__kick[b-bla763s117] { margin-left: 0.15rem; }

/* Right-hand line (pre-lock) or margin (post-lock), matching .tile__spread's Agdasima face. */
.bd-pickhero__result[b-bla763s117] {
    flex: 0 0 auto;
    text-align: center;
    line-height: 1;
    padding-right: 0.5rem;
}

.bd-pickhero__num[b-bla763s117] {
    font-family: "Agdasima", "Oswald", sans-serif;
    font-size: 4rem;
    font-weight: 700;
    color: #444;
}

.bd-pickhero__num--fav[b-bla763s117] { color: var(--bd-win, #16a34a); }
.bd-pickhero__num--dog[b-bla763s117] { color: #9a9a9a; }
.bd-pickhero__num--muted[b-bla763s117] { color: #bcbcbc; }
.bd-pickhero__num--won[b-bla763s117] { color: var(--bd-win, #16a34a); }
.bd-pickhero__num--lost[b-bla763s117] { color: var(--bd-loss, #dc2626); }

.bd-pickhero__num-label[b-bla763s117] {
    display: block;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: #8a8a8a;
}

/* Empty state: no pick yet (or a locked week that was missed). */
.bd-pickhero--empty[b-bla763s117] { border-left-color: #c9c9c9; align-items: center; }
.bd-pickhero__hand[b-bla763s117] { font-size: 1.8rem; color: #b7c0ad; flex: 0 0 auto; }
.bd-pickhero__name[b-bla763s117] { font-size: 1.25rem; font-weight: 600; color: #111; }
.bd-pickhero--empty .bd-pickhero__game[b-bla763s117] { margin-top: 0.25rem; }

/* Mobile: the current (pre-hero) sizing works well -- shrink the big desktop logo/type back down. */
@media (max-width: 575.98px) {
    /* The compact mobile hero wraps to its natural height -- don't force the tall desktop reserve. */
    .bd-pickhero[b-bla763s117] { flex-wrap: wrap; gap: 1rem; padding: 0.9rem 1.1rem; min-height: 0; }
    .bd-pickhero__logo[b-bla763s117] { width: 68px; height: 68px; border-radius: 0.6rem; padding: 8px; }
    .bd-pickhero__logo img[b-bla763s117] { max-height: 52px; }
    .bd-pickhero__city[b-bla763s117] { font-size: 1rem; }
    .bd-pickhero__nick[b-bla763s117] { font-size: 1.7rem; }
    .bd-pickhero__num[b-bla763s117] { font-size: 2.5rem; }
}

/* Columns hug their content: each caps at a width just past the widest tile (logo + names + a
   3-rem spread), wraps on narrow screens, and slides left when a column (e.g. Underdogs on a week
   with none) isn't rendered. */
.pick-grid[b-bla763s117] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    gap: 1.25rem 2rem;
}

.pick-grid__col[b-bla763s117] {
    flex: 1 1 320px;
    max-width: 27rem;
    min-width: 0;
}

/* The games column is just abbreviations + logos + a kickoff line -- much narrower than the tiles. */
.pick-grid__col--games[b-bla763s117] {
    flex-basis: 250px;
    max-width: 250px;
}

.pick-col__head[b-bla763s117] {
    font-size: 1.05rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .03em;
    color: var(--bd-ink, #10220b);
    margin: 0 0 1rem;
}

/* A follow-on stack's heading (Pick 'em / No Line under Favorites) gets air above it. */
.pick-col + .pick-col__head[b-bla763s117] {
    margin-top: 2rem;
}

/* Post-lock, the stack under Winners holds everything that is neither a winner nor a loser -- ties, and
   games not yet played. It gets a rule rather than a heading on purpose: naming it would assert a category
   the results have dissolved, and the only thing true of all of it is "not in either column". Matches the
   air a follow-on heading would have had, so the column's rhythm doesn't change between the two states. */
.pick-col__rule[b-bla763s117] {
    margin: 2rem 0 1rem;
    border: 0;
    border-top: 1px solid var(--bd-line, #d8e2d0);
}

/* Vertical stack of tiles. The gap (and the top padding) leave room for each tile's fin, which is
   absolutely positioned ABOVE the tile -- so fins never overlap the tile above or the column head, and
   a tile keeps the same position whether or not it has a fin. */
.pick-col[b-bla763s117] {
    display: flex;
    flex-direction: column;
    gap: 2.4rem;
    padding-top: 1.9rem;
}

.pick-col__empty[b-bla763s117] {
    color: #999;
    font-style: italic;
}

/* Confirmation modal shown when picking a team that's currently drafted in another unlocked week.
   Fixed overlay + centered card; the three actions stack for easy tapping on mobile. */
.bd-confirm[b-bla763s117] {
    position: fixed;
    inset: 0;
    z-index: 1080;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
    background: rgba(15, 23, 42, 0.55);
}

.bd-confirm__card[b-bla763s117] {
    background: #fff;
    border-radius: 0.85rem;
    max-width: 32rem;
    width: 100%;
    padding: 1.5rem 1.5rem 1.25rem;
    box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
}

.bd-confirm__title[b-bla763s117] {
    margin: 0 0 0.5rem;
    font-size: 1.2rem;
}

.bd-confirm__body[b-bla763s117] {
    color: #4b5563;
    margin: 0 0 1.25rem;
}

.bd-confirm__actions[b-bla763s117] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

/* ---- Initial-load skeleton (Bootstrap placeholder-glow supplies the shimmer) ---- */
.bd-skel__head[b-bla763s117] { display: flex; flex-direction: column; gap: 0.5rem; width: 100%; max-width: 24rem; }
.bd-skel__crumb[b-bla763s117] { height: 0.9rem; border-radius: 0.3rem; }
.bd-skel__title[b-bla763s117] { height: 2rem; border-radius: 0.4rem; }

.bd-skel__tile[b-bla763s117] {
    display: block;
    width: 100%;
    height: 74px; /* matches a team tile's footprint so the layout doesn't jump on load */
    border-radius: 0.7rem;
}

/* The .bd-toast family moved to app.css when it became a shared Toast component: three pages render it
   now, and a scoped rule reaches only its own component. */
/* /Components/Pages/Home.razor.rz.scp.css */
/* Grass field as the home-page background (self-hosted). */
.bd-home[b-lc50px9lri] {
    background: url('/img/grass-background.jpg') center center / cover fixed, var(--bd-ink);
}

/* ---- Hero (text sits directly on the grass) ---- */
.bd-hero[b-lc50px9lri] {
    position: relative;
    text-align: center;
    color: #fff;
    padding: clamp(3rem, 9vw, 6.5rem) 0 clamp(2.5rem, 7vw, 5rem);
}

/* Darken the grass under the copy so white text stays legible. */
.bd-hero[b-lc50px9lri]::before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(8, 22, 5, 0.55), rgba(8, 22, 5, 0.32) 55%, rgba(8, 22, 5, 0.6));
}

.bd-hero__inner[b-lc50px9lri] {
    position: relative;
    max-width: 52rem;
    margin: 0 auto;
}

.bd-hero__title[b-lc50px9lri] {
    font-size: clamp(2.1rem, 4.8vw, 3.6rem);
    line-height: 1.05;
    margin: 1rem 0;
    text-shadow: 0 2px 12px rgba(0, 0, 0, 0.35);
}

.bd-hero__lede[b-lc50px9lri] {
    font-size: 1.18rem;
    color: rgba(255, 255, 255, 0.9);
    max-width: 36rem;
    margin: 0 auto 1.9rem;
    text-shadow: 0 1px 8px rgba(0, 0, 0, 0.35);
}

/* Offseason notice shown in place of the register button while registration is switched off. */
.bd-hero__closed[b-lc50px9lri] {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    background: rgba(8, 22, 5, 0.55);
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 999px;
    padding: 0.6rem 1.3rem;
    margin: 0 auto 1.4rem;
    color: rgba(255, 255, 255, 0.92);
    font-weight: 600;
}

.bd-hero__closed i[b-lc50px9lri] { color: var(--bd-accent); }

.bd-hero__cta[b-lc50px9lri] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.85rem;
    align-items: center;
    justify-content: center;
}

.bd-hero__trust[b-lc50px9lri] {
    display: flex;
    flex-wrap: wrap;
    gap: 1.25rem;
    justify-content: center;
    list-style: none;
    padding: 0;
    margin: 1.9rem 0 0;
    color: rgba(255, 255, 255, 0.85);
    font-weight: 600;
    font-size: 0.9rem;
}

.bd-hero__trust i[b-lc50px9lri] { color: #bff29a; margin-right: 0.35rem; }

/* ---- "How it works" panel (white sheet floating on the grass) ---- */
.bd-section[b-lc50px9lri] { padding: 0 0 clamp(2.5rem, 6vw, 4.5rem); }

.bd-panel[b-lc50px9lri] {
    background: #fff;
    border-radius: 1.25rem;
    padding: clamp(1.5rem, 4vw, 3rem);
    box-shadow: 0 24px 60px rgba(0, 0, 0, 0.28);
}

.bd-section__head[b-lc50px9lri] { text-align: center; max-width: 40rem; margin: 0 auto 2.25rem; }
.bd-section__head h2[b-lc50px9lri] { font-size: clamp(1.8rem, 3.5vw, 2.4rem); }
.bd-section__head p[b-lc50px9lri] { color: #5b6472; font-size: 1.1rem; }

.bd-step[b-lc50px9lri] { height: 100%; }
.bd-step[b-lc50px9lri] { padding: 1.6rem; }

.bd-step__num[b-lc50px9lri] {
    display: inline-grid;
    place-items: center;
    width: 2.2rem;
    height: 2.2rem;
    border-radius: 0.6rem;
    background: var(--bd-brand-soft);
    color: var(--bd-brand-strong);
    font-weight: 800;
    margin-bottom: 0.75rem;
}

.bd-step h3[b-lc50px9lri] { font-size: 1.2rem; display: flex; align-items: center; gap: 0.5rem; }
.bd-step h3 i[b-lc50px9lri] { color: var(--bd-brand); }
.bd-step p[b-lc50px9lri] { color: #5b6472; margin: 0.5rem 0 0; }

.bd-panel__more[b-lc50px9lri] { text-align: center; margin-top: 2.25rem; }

/* ---- CTA band ---- */
.bd-cta-band[b-lc50px9lri] { background: linear-gradient(135deg, var(--bd-brand), var(--bd-brand-strong)); color: #fff; }
.bd-cta-band__inner[b-lc50px9lri] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1.25rem;
    padding: 2.25rem 1rem;
}
.bd-cta-band h2[b-lc50px9lri] { font-size: 1.8rem; margin: 0; }
.bd-cta-band p[b-lc50px9lri] { margin: 0.25rem 0 0; color: rgba(255, 255, 255, 0.9); }

/* Stacked on narrow screens: center the pitch and give it breathing room. */
@media (max-width: 640px) {
    .bd-cta-band__inner[b-lc50px9lri] {
        flex-direction: column;
        justify-content: center;
        text-align: center;
        gap: 1.4rem;
        padding: 2.25rem 1.5rem;
    }
}
/* /Components/Pages/HowToPlay.razor.rz.scp.css */
/* The .bd-pagehead / .bd-article / .bd-rule family is shared with the legal pages, so it lives in
   app.css. (The old .bd-rule wa-callout rule went with it -- Web Awesome is long gone.)
   .bd-article__cta followed it there once Contribute started using it: a scoped rule would have left
   the other page's button unstyled without saying so. */
/* /Components/Pages/Hub.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

/* Recently-earned badges */
.bd-hub-badges[b-op67ser99o] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
}

.bd-hub-badge[b-op67ser99o] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.85rem;
    border: 1px solid #e5e7eb;
    border-radius: 0.75rem;
    background: #fff;
    cursor: default;
}

.bd-hub-badge__emoji[b-op67ser99o] { font-size: 1.5rem; line-height: 1; }
.bd-hub-badge__body[b-op67ser99o] { display: flex; flex-direction: column; line-height: 1.15; }
.bd-hub-badge__name[b-op67ser99o] { font-weight: 700; font-size: 0.9rem; }
.bd-hub-badge__ago[b-op67ser99o] { font-size: 0.75rem; color: #8a94a3; }

/* Section header. Only the badges section has one now -- the tiles above it need no heading, since
   each names its own league. */
.bd-hub-head[b-op67ser99o] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.75rem;
}
.bd-hub-head h2[b-op67ser99o] { margin: 0; }
/* The badges section sits below the tiles, so give its header breathing room. */
.bd-hub-head--badges[b-op67ser99o] { margin-top: 2.25rem; }

/* ----- No entries this season --------------------------------------------------------------------
   The one thing to do on an empty hub, sized like it. Centred rather than a left-aligned card,
   because there is nothing beside it to align to. */
.bd-hub-empty[b-op67ser99o] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.75rem;
    padding: 3rem 1.5rem 3.25rem;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 0.75rem;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
    margin-bottom: 1.5rem;
}

/* The wrapper carries the circle; the icon inside keeps its own 1em sizing. */
.bd-hub-empty__mark[b-op67ser99o] {
    display: grid;
    place-items: center;
    width: 3.5rem;
    height: 3.5rem;
    border-radius: 50%;
    background: var(--bd-brand-soft, #eaf3e0);
    color: var(--bd-brand, #3f7d1e);
    font-size: 1.4rem;
}

.bd-hub-empty__title[b-op67ser99o] { margin: 0.25rem 0 0; font-size: 1.4rem; text-wrap: balance; }

/* Held to a readable measure -- centred text runs long lines otherwise. */
.bd-hub-empty__lede[b-op67ser99o] {
    margin: 0 0 0.75rem;
    max-width: 46ch;
    color: #5b6672;
    font-size: 0.95rem;
}

/* ----- The grid the tiles sit in -----------------------------------------------------------------
   The tile itself is EntryTileCard, which owns its own rules -- this only arranges them. Reflows 1-3
   across; 300px is about the narrowest a pane's logo + team + margin row reads at. */
.bd-hub-tiles[b-op67ser99o] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 1rem;
    align-items: start;
    margin-bottom: 1.5rem;
}
/* /Components/Pages/Invitation.razor.rz.scp.css */
.bd-invite[b-g3qqe703k9] {
    padding-top: 2.5rem;
    padding-bottom: 2.5rem;
    max-width: 40rem;
}

.bd-invite__card[b-g3qqe703k9] { padding: 1.75rem 2rem; }

.bd-invite h1[b-g3qqe703k9] { font-size: 1.6rem; margin: 0 0 0.75rem; }
.bd-invite p[b-g3qqe703k9] { color: #4b5563; }

.bd-invite__actions[b-g3qqe703k9] {
    display: flex;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-top: 1.25rem;
}

.bd-invite__msg[b-g3qqe703k9] { display: block; margin: 0.5rem 0 1rem; }
.bd-invite .form-label[b-g3qqe703k9] { font-weight: 600; }
/* /Components/Pages/LeagueEmail.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

.bd-form[b-9oubgo5qpp] { max-width: 40rem; }

.bd-recipients[b-9oubgo5qpp] {
    margin-bottom: 1.25rem;
    font-size: 0.9rem;
}

.bd-recipients summary[b-9oubgo5qpp] {
    cursor: pointer;
    font-weight: 600;
    color: var(--bd-brand-strong);
}

/* The list was two CSS columns of bare names. It is now one column of checkbox rows: a row carries a
   control plus a name and an address, and a multi-column layout would both make those rows narrow
   enough to wrap and put the reading order down-then-across, which is the wrong order for hunting one
   person in a roster. */
.bd-recipients__list[b-9oubgo5qpp] {
    margin: 0.5rem 0 0;
    padding: 0;
    list-style: none;
    color: #4b5563;
    /* A long roster shouldn't push the Subject field off the page; ~10 rows then scroll. */
    max-height: 18rem;
    overflow-y: auto;
}

.bd-recipient[b-9oubgo5qpp] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.2rem 0;
    cursor: pointer;
}

/* The checkbox sits on the text baseline rather than the flex line's, so it lines up with the name
   next to it instead of floating above it. */
.bd-recipient input[b-9oubgo5qpp] { flex: none; align-self: center; }

.bd-recipient__name[b-9oubgo5qpp] { font-weight: 600; color: var(--bd-ink); }

/* Quieter than the name, and monospaced so a column of addresses reads as a column -- the reason to
   show them here is to tell two people apart and to check what gets copied. min-width:0 with the
   ellipsis so one very long address shortens itself rather than widening every row. */
.bd-recipient__email[b-9oubgo5qpp] {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.85rem;
    color: #6b7280;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bd-recipients__actions[b-9oubgo5qpp] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.5rem;
}

.bd-recipients__copied[b-9oubgo5qpp] { color: var(--bd-brand-strong); font-weight: 600; }

.bd-preview[b-9oubgo5qpp] {
    border: 1px solid #e5e7eb;
    border-radius: 0.5rem;
    padding: 0.25rem 1rem;
    background: #fafafa;
}

.bd-preview :first-child[b-9oubgo5qpp] { margin-top: 0.5rem; }
.bd-preview :last-child[b-9oubgo5qpp] { margin-bottom: 0.5rem; }

/* Markdown formatting toolbar (github markdown-toolbar-element) */
.bd-mdtoolbar[b-9oubgo5qpp] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-bottom: 0.4rem;
}

.bd-mdbtn[b-9oubgo5qpp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 2rem;
    height: 2rem;
    padding: 0 0.5rem;
    border: 1px solid #e5e7eb;
    border-radius: 0.4rem;
    background: #fff;
    color: #4b5563;
    cursor: pointer;
    font-size: 0.85rem;
}

.bd-mdbtn:hover[b-9oubgo5qpp] {
    border-color: var(--bd-brand);
    color: var(--bd-brand-strong);
    background: var(--bd-brand-soft);
}

.bd-mdtextarea[b-9oubgo5qpp] {
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.9rem;
}
/* /Components/Pages/LeagueHome.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

/* Slightly smaller than the shared .bd-pickstate: these sit inside a table row, not a callout. */
.bd-pickstate[b-qr4usrqo4p] { font-size: 0.9rem; }

/* Commissioner edit log */

.bd-editlog[b-qr4usrqo4p] { list-style: none; margin: 0.75rem 0 0; padding: 0; }
.bd-editlog__item[b-qr4usrqo4p] { padding: 0.75rem 0; border-top: 1px solid var(--bd-border, #e5e7eb); }
.bd-editlog__item:first-child[b-qr4usrqo4p] { border-top: none; }

.bd-editlog__meta[b-qr4usrqo4p] { display: flex; gap: 0.75rem; align-items: baseline; }
.bd-editlog__meta .bd-muted[b-qr4usrqo4p] { color: #6b7280; font-size: 0.85rem; }

.bd-editlog__changes[b-qr4usrqo4p] { margin: 0.35rem 0 0; padding-left: 1.1rem; color: #374151; font-size: 0.92rem; }

.bd-editlog__note[b-qr4usrqo4p] {
    margin: 0.5rem 0 0;
    padding: 0.4rem 0.75rem;
    border-left: 3px solid var(--bd-accent, #2563eb);
    background: rgba(37, 99, 235, 0.06);
    color: #374151;
    font-style: italic;
}

/* League settings: a read-only definition list of the league's rules, so members can see what
   they're playing under without asking the commissioner. Two columns on anything but a phone,
   where the value drops beneath its label rather than squeezing into a sliver. */
.bd-settings[b-qr4usrqo4p] { margin: 0.75rem 0 0; }

.bd-settings__row[b-qr4usrqo4p] {
    display: grid;
    grid-template-columns: 12rem 1fr;
    gap: 0.25rem 1rem;
    padding: 0.5rem 0;
    border-top: 1px solid var(--bd-border, #e5e7eb);
}

.bd-settings__row:first-child[b-qr4usrqo4p] { border-top: none; }

.bd-settings dt[b-qr4usrqo4p] { font-weight: 600; color: #374151; }
.bd-settings dd[b-qr4usrqo4p] { margin: 0; color: #111827; }
.bd-settings .bd-muted[b-qr4usrqo4p] { color: #6b7280; font-size: 0.9rem; }

@media (max-width: 34rem) {
    .bd-settings__row[b-qr4usrqo4p] { grid-template-columns: 1fr; }
}
/* /Components/Pages/LeagueInvite.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

.bd-form[b-sk7b1f0sdy] { max-width: 42rem; }

/* ---- "Bring in a roster" shortcuts -------------------------------------------------------------
   The two buttons above the address box. The class was in the markup but had no rule, so these were
   plain inline-blocks flowing after an inline label: on a phone the label took its own line and each
   button then wrapped to its own, at its own width. Three ragged rows for what is really one label
   and a pair of related actions. */
.bd-invite-shortcuts[b-sk7b1f0sdy] {
    display: flex;
    flex-wrap: wrap;
    /* 0.5rem rather than the 0.4 this started at: both buttons carry their own border, and at 6px the
       two outlines nearly touch and read as one segmented control instead of two separate actions. */
    gap: 0.5rem;
    align-items: center;
}

/* The label introduces BOTH buttons, so it takes the full row rather than competing with the first
   one for space and pushing it onto a line of its own. */
.bd-invite-shortcuts__label[b-sk7b1f0sdy] {
    flex: 0 0 100%;
    margin-bottom: 0.15rem;
}

/* Inline-flex so the icon and the label share a real gap instead of whatever whitespace the markup
   happened to leave, and so the icon stays on the text's centre line. */
.bd-invite-shortcuts .btn[b-sk7b1f0sdy] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}

@media (max-width: 575.98px) {
    /* Stacked full-width, which is what stops these reading as clutter: two buttons of EQUAL width
       read as two choices of one kind, where two different widths read as two unrelated controls.
       Left-aligned with the icons in the same place so both labels start at the same x -- centred
       labels of very different lengths ("...players (19)" against "...ever played (26)") were doing
       most of the work of making this look messy. */
    .bd-invite-shortcuts .btn[b-sk7b1f0sdy] {
        width: 100%;
        justify-content: flex-start;
    }
}

/* /Components/Pages/Leagues.razor.rz.scp.css */
/* The .bd-leaguehome__* card family this page shares with LeagueHome now lives in app.css, along with
   .bd-table, .bd-num, .bd-muted and the rest. Only what's genuinely specific to the directory is here. */

/* Status column: "Commissioner" / "Invited". Indicators, not controls, so they sit in their own
   column rather than trailing the league name. Left as a normal table-cell -- flex here would drop
   display:table-cell and break the row's vertical alignment; the badges space themselves instead. */
.bd-leaguehome__status[b-tr2opa4j2z] { white-space: nowrap; }

.bd-leaguehome__badge[b-tr2opa4j2z] {
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

/* Both badges can appear on one row, so separate them without relying on a flex gap. */
.bd-leaguehome__badge + .bd-leaguehome__badge[b-tr2opa4j2z] { margin-left: 0.3rem; }

/* Muted brand fill: a standing fact about the viewer's relationship to the league. */
.bd-leaguehome__badge--commish[b-tr2opa4j2z] { background: var(--bd-brand-soft); color: var(--bd-brand-strong); }

/* Accent fill: unlike the commissioner badge this one is waiting on an answer, so it should catch
   the eye and pair with the "Accept invitation" action alongside it. */
.bd-leaguehome__badge--invited[b-tr2opa4j2z] { background: rgba(255, 138, 30, 0.16); color: var(--bd-accent-strong); }

/* Action column: the single contextual link. Nowrap so an icon never separates from its label. */
.bd-leaguehome__actions[b-tr2opa4j2z] { white-space: nowrap; }

.bd-leaguehome__action[b-tr2opa4j2z] {
    font-size: 0.85rem;
    font-weight: 600;
    white-space: nowrap;
}
/* /Components/Pages/LeagueSettings.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

.bd-form[b-auyzyg9c5m] { max-width: 34rem; }

.form-check-label .bd-hint[b-auyzyg9c5m] { margin-top: 0; }

/* /Components/Pages/LeagueWeek.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

.bd-form__actions[b-1etme5l68r] { margin-top: 1rem; }

.bd-teamselect[b-1etme5l68r] { max-width: 22rem; font-weight: 600; }

.bd-weekselect[b-1etme5l68r] { max-width: 16rem; font-weight: 600; }

/* Sits under the save button, so it reads as that button's own progress rather than as a new
   section of the form. */
.bd-saveprogress[b-1etme5l68r] { margin-top: 0.75rem; max-width: 32rem; }
.bd-saveprogress .progress[b-1etme5l68r] { height: 0.5rem; }
.bd-saveprogress__step[b-1etme5l68r] { margin-top: 0.35rem; display: flex; justify-content: space-between; gap: 1rem; }
.bd-saveprogress__count[b-1etme5l68r] { white-space: nowrap; }
/* /Components/Pages/NflGameDetail.razor.rz.scp.css */
/* "Back to where you came from" link at the top of this dead-end page. Styled to read as a link even
   when rendered as a <button> (the history.back() fallback). */
.bd-backlink[b-lzlagaz8r9] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    margin-bottom: 1rem;
    padding: 0;
    border: none;
    background: none;
    font: inherit;
    font-weight: 600;
    color: var(--bd-brand, #3f7d1e);
    text-decoration: none;
    cursor: pointer;
}
.bd-backlink:hover[b-lzlagaz8r9] { color: var(--bd-brand-strong, #2c5614); text-decoration: underline; }

/* The game's special title, as the last step of the breadcrumb trail. Inherits the trail's own size and
   spacing and only takes the accent colour, so it reads as part of the trail rather than a label
   dropped into it. */
.bd-game__special[b-lzlagaz8r9] { color: var(--bd-accent-strong, #e6730a); font-weight: 700; }

/* ---- The scoreline tile -------------------------------------------------------------------------
   Capped at 60rem and left-aligned: at full desktop width the two teams drift far enough apart to stop
   reading as one game, and 60rem is where the longest nicknames ("Commanders", "Buccaneers") still fit
   their column without ellipsing. */
.bd-game__tile[b-lzlagaz8r9] {
    max-width: 60rem;
    margin-right: auto;
    padding: 1.1rem 1.5rem;
    background-color: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 0.75rem;
    /* The thick left and right edges are the two teams' primary colours. Painted as INSET SHADOWS, not
       as border-left/right: a real border eats into the content box and shifts the centre axis, which
       is precisely what has to stay put. */
    box-shadow:
        inset 0.4rem 0 0 -0.05rem var(--away, var(--bd-brand, #3f7d1e)),
        inset -0.4rem 0 0 -0.05rem var(--home, var(--bd-brand, #3f7d1e)),
        0 1px 2px rgba(16, 24, 40, 0.06),
        0 6px 18px rgba(16, 24, 40, 0.07);
}

/* The wash marks who is WINNING, so only one side ever carries it, and neither does while the game is
   level or unstarted -- a tie showing both would say the opposite of what it means. Fades to
   `transparent` rather than to white so it sits correctly on whatever is behind it, and stays at 20%
   because a secondary colour is often a saturated red or gold that at full strength fights the scores
   instead of framing them. */
.bd-game__tile--awaylead[b-lzlagaz8r9] {
    background-image: linear-gradient(to right, color-mix(in srgb, var(--away2) 20%, transparent), transparent 33%);
}
.bd-game__tile--homelead[b-lzlagaz8r9] {
    background-image: linear-gradient(to left, color-mix(in srgb, var(--home2) 20%, transparent), transparent 33%);
}

/* Five columns. The identity columns are minmax(0, 1fr), NOT 1fr: a bare 1fr floors at its content's
   own minimum, so a long nickname refuses to shrink and shoves the fixed score cells sideways. The two
   score cells are the same fixed width and both reserve a possession slot, which is what keeps the
   clock on the true centre axis whoever has the ball. */
.bd-game__score[b-lzlagaz8r9] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 5.5rem minmax(8rem, 10rem) 5.5rem minmax(0, 1fr);
    align-items: center;
    gap: 0.75rem;
}

/* Every item is placed explicitly: auto-placement flows AROUND explicitly-placed items, so pinning one
   of them silently re-flows the rest into the wrong cells. */
.bd-game__score > .bd-game__team[b-lzlagaz8r9] { grid-column: 1; grid-row: 1; }
.bd-game__score > .bd-game__pts--away[b-lzlagaz8r9] { grid-column: 2; grid-row: 1; }
.bd-game__score > .bd-game__clock[b-lzlagaz8r9] { grid-column: 3; grid-row: 1; }
.bd-game__score > .bd-game__pts--home[b-lzlagaz8r9] { grid-column: 4; grid-row: 1; }
.bd-game__score > .bd-game__team--home[b-lzlagaz8r9] { grid-column: 5; grid-row: 1; }

.bd-game__team[b-lzlagaz8r9] {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    column-gap: 0.85rem;
    align-items: stretch;
}
.bd-game__team--home[b-lzlagaz8r9] { grid-template-columns: minmax(0, 1fr) auto; }

/* The logo is a fixed square and the NAME STACK stretches to it -- city pinned to its top edge, record
   to its bottom, via space-between. The dependency runs this way round on purpose: sizing the square
   from the text instead (align-self: stretch + aspect-ratio) is circular once the box contains an
   <img>, because the auto column takes its width from the artwork's intrinsic size, which then feeds
   the height back through the ratio. It resolved to a 236px logo and a 0px name.

   grid-row is explicit on both this and the name because on the home side the logo sits in column 2;
   without it, auto-placement (which only moves forward) pushes the name into a second row. */
.bd-game__logo[b-lzlagaz8r9] {
    grid-column: 1;
    grid-row: 1;
    width: 4.5rem;
    height: 4.5rem;
    display: grid;
    place-items: center;
}
.bd-game__team--home .bd-game__logo[b-lzlagaz8r9] { grid-column: 2; }
.bd-game__logo img[b-lzlagaz8r9] { max-width: 100%; max-height: 100%; object-fit: contain; }

.bd-game__name[b-lzlagaz8r9] {
    grid-column: 2;
    grid-row: 1;
    display: flex;
    flex-direction: column;
    /* Spread across the logo's height, so the city's top and the record's bottom land on its edges. */
    justify-content: space-between;
    align-self: stretch;
    min-width: 0;
}
/* text-align, NOT align-items: flex-end. In a column flex container, flex-end makes the children
   shrink-to-fit their own content instead of stretching -- so the nickname would size to its text,
   ignore its track, and hang out over the score. */
.bd-game__team--home .bd-game__name[b-lzlagaz8r9] { grid-column: 1; text-align: right; }

.bd-game__city[b-lzlagaz8r9] { font-size: 0.9rem; opacity: 0.7; line-height: 1.2; }

.bd-game__nick[b-lzlagaz8r9] {
    font-family: "Oswald", system-ui, sans-serif;
    font-size: clamp(1.4rem, 2.8vw, 1.9rem);
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.015em;
    text-transform: uppercase;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    /* Symmetric padding buys the clip box vertical slack so the glyphs aren't shaved, and an equal
       negative margin takes that slack back out of the layout. */
    padding-block: 0.25em;
    margin-block: -0.25em;
}

.bd-game__record[b-lzlagaz8r9] { font-size: 0.92rem; font-weight: 600; opacity: 0.75; font-variant-numeric: tabular-nums; }

.bd-game__pts[b-lzlagaz8r9] {
    width: 5.5rem;
    display: flex;
    align-items: center;
    gap: 0.3rem;
    font-family: "Agdasima", "Oswald", sans-serif;
    font-size: 2.9rem;
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
}
/* Both scores hug the centre with the football outside, so the two gaps are equal. row-reverse puts the
   football on the far side without the markup needing to differ. */
.bd-game__pts--away[b-lzlagaz8r9] { justify-content: flex-end; }
.bd-game__pts--home[b-lzlagaz8r9] { justify-content: flex-end; flex-direction: row-reverse; }
.bd-game__pts--trail[b-lzlagaz8r9] { opacity: 0.55; }

/* Grey with the ball, red with it in the red zone -- and always rendered, hidden rather than removed,
   so neither cell can be wider than the other. */
.bd-game__poss[b-lzlagaz8r9] { font-size: 0.8rem; flex: 0 0 auto; color: #6b7566; }
.bd-game__poss--off[b-lzlagaz8r9] { visibility: hidden; }
.bd-game__poss--rz[b-lzlagaz8r9] { color: #c62828; }

.bd-game__clock[b-lzlagaz8r9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.1rem;
    /* Tightened so period, clock and down-and-distance all fit without pushing the row taller. */
    line-height: 1.15;
    text-align: center;
}
.bd-game__state[b-lzlagaz8r9] { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.6; }
.bd-game__state--live[b-lzlagaz8r9] { color: var(--bd-accent-strong, #e6730a); opacity: 1; }
.bd-game__time[b-lzlagaz8r9] { font-family: "Agdasima", "Oswald", sans-serif; font-size: 1.2rem; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.bd-game__dd[b-lzlagaz8r9] { font-size: 0.8rem; font-weight: 700; white-space: nowrap; }

.bd-game__meta[b-lzlagaz8r9] {
    max-width: 60rem;
    margin: 0.7rem auto 0 0;
    text-align: center;
    font-size: 0.84rem;
    opacity: 0.6;
    font-variant-numeric: tabular-nums;
}

/* ---- Draft rows --------------------------------------------------------------------------------- */

.bd-game__draft[b-lzlagaz8r9] {
    max-width: 60rem;
    margin: 1.2rem auto 0 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Buttons narrower than the halves they sit under, with the entry name taking the slack -- three
   stacked full-width bars would dominate the card. */
.bd-game__draftrow[b-lzlagaz8r9] {
    display: grid;
    grid-template-columns: minmax(7rem, 11rem) 1fr minmax(7rem, 11rem);
    align-items: stretch;
    gap: 0.5rem;
}

.bd-game__btn[b-lzlagaz8r9] {
    display: block;
    width: 100%;
    padding: 0.5rem 0.9rem;
    border: 0;
    border-radius: 0.25rem;
    font-family: "Oswald", system-ui, sans-serif;
    font-size: 0.95rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-align: center;
    cursor: pointer;
}
.bd-game__btn--draft[b-lzlagaz8r9] { background: var(--bd-brand, #3f7d1e); color: #fff; }
.bd-game__btn--draft:hover[b-lzlagaz8r9] { background: var(--bd-brand-strong, #2c5614); }
.bd-game__btn--off[b-lzlagaz8r9] { background: #d9d9d9; color: #8a8a8a; cursor: not-allowed; }
.bd-game__btn--ghost[b-lzlagaz8r9] { background: transparent; color: inherit; border: 1px solid #d0d4cc; }
.bd-game__btn:focus-visible[b-lzlagaz8r9] { outline: 2px solid var(--bd-accent-strong, #e6730a); outline-offset: 2px; }

.bd-game__entry[b-lzlagaz8r9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    padding: 0.25rem 0.5rem;
    line-height: 1.25;
}
.bd-game__entryname[b-lzlagaz8r9] { font-weight: 600; font-size: 0.9rem; }
.bd-game__entryleague[b-lzlagaz8r9] { font-size: 0.75rem; opacity: 0.6; }

.bd-game__error[b-lzlagaz8r9] {
    max-width: 60rem;
    margin: 0.8rem auto 0 0;
    padding: 0.6rem 0.8rem;
    border-left: 3px solid #c62828;
    background: color-mix(in srgb, #c62828 8%, transparent);
    font-size: 0.9rem;
}

/* ---- Picks -------------------------------------------------------------------------------------- */

.bd-game__rule[b-lzlagaz8r9] {
    max-width: 60rem;
    margin: 1.4rem auto 0 0;
    border: 0;
    border-top: 1px solid color-mix(in srgb, currentColor 14%, transparent);
}

.bd-game__note[b-lzlagaz8r9] { max-width: 60rem; margin: 1.1rem auto 0 0; opacity: 0.6; font-style: italic; font-size: 0.9rem; }

.bd-game__picks[b-lzlagaz8r9] {
    max-width: 60rem;
    margin: 1.1rem auto 0 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1.5rem;
}

.bd-game__picklab[b-lzlagaz8r9] { font-size: 0.66rem; font-weight: 700; letter-spacing: 0.12em; text-transform: uppercase; opacity: 0.6; margin-bottom: 0.3rem; }

/* The bar's track and readout are the shared .bd-wbar primitive from app.css; the segments are this
   page's own, because here they mean five different things rather than one repeated week.

   Visitors read left to right: spent earlier, taken here, spent later, missed the week -- and whatever
   track is left is everyone the team is still available to. Chronological, so the green sits between
   the two "already gone" shades rather than beside them. */
.bd-game__seg[b-lzlagaz8r9] { display: block; height: 100%; min-width: 0; }
.bd-game__seg--before[b-lzlagaz8r9] { background: #eab308; }  /* spent in an earlier locked week */
.bd-game__seg--here[b-lzlagaz8r9] { background: #16a34a; }    /* took it in this game */
.bd-game__seg--after[b-lzlagaz8r9] { background: #f97316; }   /* spent in a later locked week */
.bd-game__seg--nopick[b-lzlagaz8r9] { background: #dc2626; }  /* could have taken it and made no pick at all */

/* Only the mirroring is page-specific, so the two bars grow outward from the centre the way the scores
   do -- the home track runs its segments in reverse so the same order reads outward on its side. */
.bd-game__pickcol--home .bd-game__picklab[b-lzlagaz8r9],
.bd-game__pickcol--home .bd-game__picklist li[b-lzlagaz8r9] { text-align: right; }
.bd-game__pickcol--home .bd-wbar[b-lzlagaz8r9] { flex-direction: row-reverse; }
.bd-game__pickcol--home .bd-game__picklist li[b-lzlagaz8r9] { flex-direction: row-reverse; }

/* row-reverse ALONE. Pairing it with justify-content: flex-end was the bug: under row-reverse the main
   axis runs right-to-left, so flex-end is the LEFT edge -- the segments packed left and left the bare
   track (the "still available" grey) stranded on the inside, next to the scores. Default flex-start is
   the right edge here, which pins the segments to the outside and puts the grey where it belongs.
   Reading inward, the home bar is then the visitor bar's mirror: grey, red, orange, green, yellow. */
.bd-game__pickcol--home .bd-wbar__track[b-lzlagaz8r9] { flex-direction: row-reverse; }

.bd-game__picklist[b-lzlagaz8r9] { list-style: none; margin: 0.7rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.25rem; }
.bd-game__picklist li[b-lzlagaz8r9] { font-size: 0.85rem; display: flex; gap: 0.4rem; }
.bd-game__pickentry[b-lzlagaz8r9] { font-weight: 600; }
.bd-game__pickleague[b-lzlagaz8r9] { opacity: 0.6; }
.bd-game__pickempty[b-lzlagaz8r9] { font-size: 0.85rem; opacity: 0.6; font-style: italic; margin: 0.7rem 0 0; }

/* ---- Confirmation ------------------------------------------------------------------------------- */

.bd-game__dlgwrap[b-lzlagaz8r9] {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: grid;
    place-items: center;
    padding: 1rem;
    background: rgba(16, 24, 40, 0.45);
}

.bd-game__dlg[b-lzlagaz8r9] {
    width: min(27rem, 100%);
    background: #fff;
    border-radius: 0.5rem;
    padding: 1.05rem 1.15rem;
    display: flex;
    flex-direction: column;
    gap: 0.7rem;
    box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
}
.bd-game__dlgtitle[b-lzlagaz8r9] { font-family: "Oswald", system-ui, sans-serif; font-size: 1.2rem; font-weight: 600; margin: 0; }
.bd-game__dlgwho[b-lzlagaz8r9] { font-size: 0.86rem; opacity: 0.8; margin: 0; }

.bd-game__dlgwarn[b-lzlagaz8r9] {
    display: flex;
    gap: 0.6rem;
    align-items: flex-start;
    margin: 0;
    padding: 0.65rem 0.75rem;
    font-size: 0.85rem;
    line-height: 1.45;
    background: color-mix(in srgb, var(--bd-accent-strong, #e6730a) 12%, transparent);
    border-left: 3px solid var(--bd-accent-strong, #e6730a);
}
.bd-game__dlgwarnicon[b-lzlagaz8r9] { flex: 0 0 auto; color: var(--bd-accent-strong, #e6730a); }

.bd-game__dlgacts[b-lzlagaz8r9] { display: flex; justify-content: flex-end; gap: 0.55rem; margin-top: 0.1rem; }
.bd-game__dlgacts .bd-game__btn[b-lzlagaz8r9] { width: auto; padding: 0.45rem 1.1rem; }

/* Loading skeleton placeholders (Bootstrap placeholder-glow), matching EntrySeason's. Sized to the
   real header and scoreline so the page doesn't jump when the load lands. */
.bd-game__skel-crumb[b-lzlagaz8r9] { display: block; height: 0.8rem; margin-bottom: 0.5rem; border-radius: 0.3rem; }
.bd-game__skel-title[b-lzlagaz8r9] { display: block; height: 1.9rem; border-radius: 0.4rem; }
.bd-game__skel-score[b-lzlagaz8r9] { display: block; height: 4rem; border-radius: 0.5rem; }

@media (max-width: 700px) {
    .bd-game__picks[b-lzlagaz8r9] { grid-template-columns: 1fr; }
    .bd-game__pickcol--home .bd-game__picklab[b-lzlagaz8r9],
    .bd-game__pickcol--home .bd-game__picklist li[b-lzlagaz8r9] { text-align: left; }
    /* Stacked, so there is no centre to mirror about -- both bars read left to right like the visitor's. */
    .bd-game__pickcol--home .bd-wbar[b-lzlagaz8r9],
    .bd-game__pickcol--home .bd-wbar__track[b-lzlagaz8r9],
    .bd-game__pickcol--home .bd-game__picklist li[b-lzlagaz8r9] { flex-direction: row; }
}
/* /Components/Pages/NflTeamSeason.razor.rz.scp.css */
/* The .bd-stat / .bd-statgrid family is shared and lives in app.css. What's here is specific to this
   page's schedule table. */

.bd-teamhead__title[b-jkzmm708v7] { display: flex; align-items: center; gap: 0.6rem; }
.bd-teamhead__logo[b-jkzmm708v7] { width: 2.6rem; height: auto; }

/* --- Schedule table --- */
.bd-teamsched[b-jkzmm708v7] { padding: 0.25rem 0.5rem; }
.bd-teamsched__table[b-jkzmm708v7] { margin-bottom: 0; }
.bd-teamsched__wk[b-jkzmm708v7] { white-space: nowrap; font-weight: 600; }

/* .bd-teamsched__opp moved to app.css. Three stats pages render the same markup, and a scoped rule reaches
   only its own component -- so on those pages it was silently unstyled: no flex, no link colour, and no
   width on the logo, which is why they appeared at their natural 100px and upscaled on a HiDPI screen. */

.bd-teamsched__res[b-jkzmm708v7] { font-weight: 700; font-variant-numeric: tabular-nums; }

/* The blowout flag sits beside the score rather than replacing it -- the margin is the point, and the
   flag is why it's worth noticing. */
.bd-teamsched__flag[b-jkzmm708v7] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    margin-left: 0.5rem;
    padding: 0.05rem 0.4rem;
    border-radius: 0.3rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    white-space: nowrap;
}
.bd-teamsched__flag--win[b-jkzmm708v7] { background: #dcfce7; color: #14532d; }
.bd-teamsched__flag--loss[b-jkzmm708v7] { background: #fee2e2; color: #7f1d1d; }

/* A tinted left edge rather than a filled row: the table stays readable, and a run of blowouts is
   scannable down the margin. */
.bd-teamsched__row--blowout > td:first-child[b-jkzmm708v7] { box-shadow: inset 0.25rem 0 0 var(--bd-win, #16a34a); }
.bd-teamsched__row--blownout > td:first-child[b-jkzmm708v7] { box-shadow: inset 0.25rem 0 0 var(--bd-loss, #dc2626); }
.bd-teamsched__row--bye > td[b-jkzmm708v7] { color: #9aa5b4; }

.bd-teamsched__pct[b-jkzmm708v7] { white-space: nowrap; }
.bd-teamsched__for[b-jkzmm708v7] { font-weight: 800; font-variant-numeric: tabular-nums; }

/* The opponent's share, small and beneath -- legacy put it in red under the main figure, and the
   comparison is what makes either number mean anything. */
.bd-teamsched__against[b-jkzmm708v7] {
    display: block;
    font-size: 0.72rem;
    color: #9a3412;
    font-variant-numeric: tabular-nums;
}

.bd-teamsched__note[b-jkzmm708v7] { font-size: 0.85rem; margin-top: 0.75rem; }

/* The week and result cells are links now, but they shouldn't read as a wall of green -- the row's meaning
   is the score, not the fact it's clickable. Colour stays inherited; the underline appears on hover. */
.bd-teamsched__wk a[b-jkzmm708v7],
.bd-teamsched__result[b-jkzmm708v7] { color: inherit; text-decoration: none; }
.bd-teamsched__wk a:hover[b-jkzmm708v7],
.bd-teamsched__result:hover[b-jkzmm708v7] { text-decoration: underline; }
/* /Components/Pages/NflWeekSchedule.razor.rz.scp.css */
/* Page-level layout only. The tile owns its own look in NflScheduleTile.razor.css, so it renders
   styled wherever it's used; these classes arrange it and are named for this page rather than
   sounding like shared primitives. */

.bd-schedpage__controls[b-235y0skdwa] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.bd-schedpage__pick[b-235y0skdwa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0;
}

.bd-schedpage__picklabel[b-235y0skdwa] {
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: #8a94a3;
}

/* The select sizes to its content rather than filling the row -- "Preseason 1" is the widest label
   this will ever hold, and a full-width control would read as the page's main action. */
.bd-schedpage__pick .form-select[b-235y0skdwa] {
    width: auto;
    min-width: 10rem;
}

.bd-schedpage__statslink[b-235y0skdwa] {
    margin-left: auto;
    font-size: 0.9rem;
    text-decoration: none;
    color: var(--bd-brand, #3f7d1e);
    font-weight: 600;
}

.bd-schedpage__statslink:hover[b-235y0skdwa] {
    text-decoration: underline;
}

/* 16 games on a regular-season week; 260px is about the narrowest the logo + abbr + nickname + score
   row reads at once the nickname is in. Matches how the hub arranges its tiles. */
.bd-schedpage__grid[b-235y0skdwa] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 0.75rem;
}

@media (max-width: 480px) {
    .bd-schedpage__statslink[b-235y0skdwa] { margin-left: 0; }
}
/* /Components/Pages/Picks.razor.rz.scp.css */
/* Shared page-header classes (.bd-page__head/__title/__lede) live in app.css. */

/* Current-season entries: one card per entry with the week action + "view all picks". */
.bd-pickentries[b-incn3ls20i] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    margin-top: 0.5rem;
}

.bd-pickentry[b-incn3ls20i] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem 1rem;
}

.bd-pickentry__info[b-incn3ls20i] { display: flex; flex-direction: column; min-width: 0; }
.bd-pickentry__name[b-incn3ls20i] { font-weight: 700; font-size: 1.05rem; }
.bd-pickentry__league[b-incn3ls20i] { font-size: 0.85rem; color: #6b7280; }

.bd-pickentry__actions[b-incn3ls20i] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
/* A disabled "Drafted …" button should still read as success, just muted. */
.bd-pickentry__actions .btn:disabled[b-incn3ls20i] { opacity: 0.75; cursor: default; }

/* Previous seasons table. */
.bd-pickpast[b-incn3ls20i] { margin-top: 2.25rem; }
.bd-pickpast__h[b-incn3ls20i] {
    font-size: 1.05rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    opacity: 0.8;
    margin-bottom: 0.75rem;
}
.bd-pickpast__wrap[b-incn3ls20i] { overflow-x: auto; }
.bd-pickpast__table[b-incn3ls20i] { width: 100%; border-collapse: collapse; font-size: 0.92rem; }
.bd-pickpast__table th[b-incn3ls20i] {
    text-align: left;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    opacity: 0.7;
    padding: 0.35rem 0.6rem;
    border-bottom: 1px solid #e5e7eb;
    white-space: nowrap;
}
.bd-pickpast__table td[b-incn3ls20i] {
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid #eef0f2;
}
.bd-pickpast__table tr:last-child td[b-incn3ls20i] { border-bottom: none; }
.bd-pickpast__go[b-incn3ls20i] { text-align: right; white-space: nowrap; }
.bd-pickpast__go a[b-incn3ls20i] { color: var(--bd-brand, #3f7d1e); font-weight: 600; text-decoration: none; }
.bd-pickpast__go a:hover[b-incn3ls20i] { text-decoration: underline; }
/* /Components/Pages/Pick/GameScoreBox.razor.rz.scp.css */
.gamebox[b-qcow1imv49] {
    display: block;
    background: #fff;
    border: 1px solid #d0d0d0;
    padding: 8px 12px;
    text-decoration: none;
    color: #111;
    font-family: "Oswald", system-ui, sans-serif;
}

.gamebox:hover[b-qcow1imv49] {
    border-color: var(--bd-brand, #3f7d1e);
}

.gamebox__title[b-qcow1imv49] {
    font-size: .72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--bd-accent-strong, #e6730a);
    margin-bottom: 4px;
}

.gamebox__row[b-qcow1imv49] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 3px 0;
}

.gamebox__logo[b-qcow1imv49] {
    width: 24px;
    height: 24px;
    object-fit: contain;
}

.gamebox__abbr[b-qcow1imv49] {
    font-weight: 600;
}

/* Sits inline, directly after the abbreviation: "BUF (-1.5)". */
.gamebox__line[b-qcow1imv49] {
    font-family: "Agdasima", "Oswald", sans-serif;
    font-size: 1.15rem;
    font-weight: 700;
    color: #666;
}

/* Live/final scores keep the right-hand slot. */
.gamebox__score[b-qcow1imv49] {
    margin-left: auto;
    font-family: "Agdasima", "Oswald", sans-serif;
    font-size: 1.3rem;
    font-weight: 700;
    color: #111;
}

.gamebox__meta[b-qcow1imv49] {
    margin-top: 6px;
    font-size: .78rem;
    color: #8a8a8a;
}
/* /Components/Pages/Pick/TeamPickTile.razor.rz.scp.css */
.tile[b-8a29bffwz0] {
    position: relative;
    display: flex;
    align-items: stretch;
    background: #fff;
    border: 1px solid #d0d0d0;
    min-height: 84px;
    font-family: "Oswald", system-ui, sans-serif;
    /* Fin is absolutely positioned above the tile -- keep it visible, not clipped. */
    overflow: visible;
}

.tile--selectable[b-8a29bffwz0] {
    cursor: pointer;
}

.tile--selectable:hover[b-8a29bffwz0],
.tile--selectable:focus-visible[b-8a29bffwz0] {
    outline: none;
    box-shadow: 0 0 0 2px var(--bd-brand, #3f7d1e);
}

/* --- logo cell (team primary color) --- */
.tile__logo[b-8a29bffwz0] {
    flex: 0 0 84px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 8px;
}

.tile__logo img[b-8a29bffwz0] {
    max-width: 100%;
    max-height: 64px;
    object-fit: contain;
}

/* --- team text --- */
.tile__body[b-8a29bffwz0] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 6px 12px;
    min-width: 0;
}

.tile__names[b-8a29bffwz0] {
    display: flex;
    flex-direction: column;
    line-height: 1;
}

.tile__city[b-8a29bffwz0] {
    font-size: .95rem;
    font-weight: 500;
    color: #111;
}

.tile__nick[b-8a29bffwz0] {
    font-size: 1.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: -.01em;
    line-height: 1;
    color: #111;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.tile__meta[b-8a29bffwz0] {
    margin-top: 5px;
    font-size: .8rem;
    color: #8a8a8a;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* --- the spread (condensed Agdasima) --- */
.tile__spread[b-8a29bffwz0] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    padding: 0 16px 0 8px;
    font-family: "Agdasima", "Oswald", sans-serif;
    font-size: 3rem;
    font-weight: 700;
    line-height: 1;
}

.spread--fav[b-8a29bffwz0] {
    color: var(--bd-win, #16a34a);
}

.spread--dog[b-8a29bffwz0] {
    color: #9a9a9a;
}

.spread--muted[b-8a29bffwz0] {
    color: #bcbcbc;
}

/* Started-game result margin ("16 pts"): colored by outcome even on a greyscaled (locked) tile. */
.spread--won[b-8a29bffwz0] {
    color: var(--bd-win, #16a34a);
}

.spread--lost[b-8a29bffwz0] {
    color: var(--bd-loss, #dc2626);
}

.spread--tied[b-8a29bffwz0] {
    color: #777;
}

/* Locked (spent / early-game / week-locked, and not the selection): grey the logo. The spread is
   already muted via .spread--muted; the team text stays legible. */
.tile--locked .tile__logo[b-8a29bffwz0] {
    filter: grayscale(1);
}

/* --- the fin --- */
/* Anchored to the top edge of the tile and lifted fully out of the tile's box (bottom:100%), so a
   tile occupies the same footprint whether or not it has a fin, and toggling one never moves it.
   The parent column's gap is sized to leave room for the fin above each tile. */
.fin[b-8a29bffwz0] {
    position: absolute;
    left: 22%;
    right: 0;
    bottom: 100%;
    height: 1.9rem;
    display: flex;
    align-items: center;
    justify-content: flex-end;
    padding: 0 12px 0 28px;
    font-size: .92rem;
    font-weight: 600;
    color: #111;
    white-space: nowrap;
    overflow: hidden;
    /* slanted left edge */
    clip-path: polygon(1.6rem 0, 100% 0, 100% 100%, 0 100%);
}

.fin--sel[b-8a29bffwz0] {
    background: var(--bd-brand, #3f7d1e);
    color: #fff;
}

.fin--spent[b-8a29bffwz0],
.fin--info[b-8a29bffwz0] {
    background: #c9c9c9;
}

/* A team already drafted in another (still-unlocked) week -- yellow to flag that picking it here
   relocates it. */
.fin--reserved[b-8a29bffwz0] {
    background: #ffd23f;
}

.res--won[b-8a29bffwz0] {
    color: #0a7d2c;
    font-weight: 700;
}

.res--lost[b-8a29bffwz0] {
    color: #b3261e;
    font-weight: 700;
}

.res--tied[b-8a29bffwz0] {
    color: #555;
    font-weight: 700;
}

@media (max-width: 575.98px) {
    .tile__nick[b-8a29bffwz0] {
        font-size: 1.35rem;
    }

    .tile__spread[b-8a29bffwz0] {
        font-size: 2.3rem;
    }

    .tile__logo[b-8a29bffwz0] {
        flex-basis: 68px;
    }
}
/* /Components/Pages/Profile.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

.bd-profile__sub[b-118oocr995] {
    display: flex;
    gap: 0.75rem;
    align-items: baseline;
    flex-wrap: wrap;
}

.bd-profile__nick[b-118oocr995] {
    font-weight: 600;
}

.bd-profile__since[b-118oocr995] {
    opacity: 0.65;
    font-size: 0.9em;
}

/* --- Career scorecard: podium finishes + badge score, four columns across the top --- */
.bd-profile__scorecard[b-118oocr995] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.75rem;
    margin: 0.5rem 0 1.9rem;
}

.bd-profile__stat[b-118oocr995] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.25rem;
    padding: 0.9rem 0.75rem;
    border-radius: 0.7rem;
    border: 1px solid color-mix(in srgb, currentColor 12%, transparent);
    background: color-mix(in srgb, currentColor 3%, transparent);
}

.bd-profile__stat-emoji[b-118oocr995] {
    font-size: 2.4rem;
    line-height: 1;
    margin-bottom: 0.1rem;
}

.bd-profile__stat-head[b-118oocr995] {
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    opacity: 0.7;
    font-weight: 700;
}

.bd-profile__stat-value[b-118oocr995] {
    font-size: 2rem;
    font-weight: 800;
    line-height: 1.05;
}

.bd-profile__stat-seasons[b-118oocr995] {
    font-size: 0.78rem;
    opacity: 0.7;
    line-height: 1.3;
}

/* Skeleton placeholders (Bootstrap placeholder-glow). */
.bd-profile__skel-crumb[b-118oocr995] { display: block; height: 0.85rem; margin-bottom: 0.5rem; border-radius: 0.3rem; }
.bd-profile__skel-title[b-118oocr995] { display: block; height: 1.75rem; border-radius: 0.4rem; }
.bd-profile__skel-stat[b-118oocr995] { display: block; height: 2.5rem; border-radius: 0.4rem; }
.bd-profile__skel-tile[b-118oocr995] { display: inline-block; width: 100%; height: 6.5rem; border-radius: 0.7rem; }

/* "How you earned it" accordion wrapper. */
.bd-profile__earned[b-118oocr995] { margin: 0 0 1.9rem; }

/* Groups */
.bd-profile__group[b-118oocr995] {
    margin-bottom: 2rem;
}

.bd-profile__count[b-118oocr995] {
    opacity: 0.55;
    font-weight: 400;
    margin-left: 0.35rem;
}

.bd-profile__empty[b-118oocr995] {
    opacity: 0.6;
    font-style: italic;
}

/* --- Current-season entries as tiles --- */
.bd-profile__entrytiles[b-118oocr995] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 0.9rem;
}

.bd-profile__tile[b-118oocr995] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    padding: 0.9rem 1rem;
    border-radius: 0.7rem;
    border: 1px solid color-mix(in srgb, var(--bd-brand, #2f6feb) 45%, transparent);
    background: color-mix(in srgb, var(--bd-brand, #2f6feb) 8%, transparent);
}

.bd-profile__tile-league[b-118oocr995] {
    font-weight: 700;
    text-decoration: none;
    color: inherit;
}
.bd-profile__tile-league:hover[b-118oocr995] { text-decoration: underline; }

.bd-profile__tile-name[b-118oocr995] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.9rem;
    opacity: 0.85;
}
.bd-profile__tile-name a[b-118oocr995] { color: inherit; text-decoration: none; }
.bd-profile__tile-name a:hover[b-118oocr995] { text-decoration: underline; }

.bd-profile__tile-motto[b-118oocr995] {
    margin: 0;
    font-size: 0.85rem;
    font-style: italic;
    opacity: 0.7;
}

.bd-profile__tile-stats[b-118oocr995] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.9rem;
    margin-top: 0.35rem;
    white-space: nowrap;
}

.bd-profile__rank[b-118oocr995] {
    font-variant-numeric: tabular-nums;
    font-weight: 700;
}

/* Pre-season stand-in for the rank (league entry count) -- informational, so not bold. */
.bd-profile__rank--pre[b-118oocr995] {
    font-weight: 400;
    opacity: 0.75;
}

.bd-profile__pts[b-118oocr995] {
    font-variant-numeric: tabular-nums;
}

.bd-profile__pts-lbl[b-118oocr995] {
    opacity: 0.55;
    font-size: 0.75em;
    margin-left: 0.2rem;
}

/* --- Previous seasons as a single table --- */
.bd-profile__pasttable-wrap[b-118oocr995] { overflow-x: auto; }

.bd-profile__pasttable[b-118oocr995] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.92rem;
}

.bd-profile__pasttable th[b-118oocr995] {
    text-align: left;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    opacity: 0.7;
    padding: 0.35rem 0.6rem;
    border-bottom: 1px solid color-mix(in srgb, currentColor 20%, transparent);
    white-space: nowrap;
}

.bd-profile__pasttable td[b-118oocr995] {
    padding: 0.45rem 0.6rem;
    border-bottom: 1px solid color-mix(in srgb, currentColor 8%, transparent);
}

.bd-profile__pasttable tr:last-child td[b-118oocr995] { border-bottom: none; }

.bd-profile__pasttable a[b-118oocr995] { color: inherit; text-decoration: none; }
.bd-profile__pasttable a:hover[b-118oocr995] { text-decoration: underline; }

/* Past-seasons table: Finish + Rank centered; Points left-justified and bold. The th selector
   below carries an element, so qualify the centered header to out-specify its text-align: left. */
.bd-profile__center[b-118oocr995],
.bd-profile__pasttable th.bd-profile__center[b-118oocr995] {
    text-align: center;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.bd-profile__ptsval[b-118oocr995] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

@media (max-width: 640px) {
    .bd-profile__scorecard[b-118oocr995] { grid-template-columns: repeat(2, 1fr); }
}

/* --- self-service edit affordances --- */
.bd-controls[b-118oocr995] { display: flex; gap: 0.5rem; align-items: center; }

.bd-profile__edit[b-118oocr995] {
    border: none;
    background: none;
    color: #9aa5b4;
    cursor: pointer;
    padding: 0 0.35rem;
    font-size: 0.85rem;
}
.bd-profile__edit:hover[b-118oocr995] { color: var(--bd-brand, #3f7d1e); }

/* Lightweight modal (Blazor-controlled; no JS/web component) */
.bd-modal[b-118oocr995] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    background: rgba(16, 34, 11, 0.45);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1rem;
}

.bd-modal__panel[b-118oocr995] {
    background: #fff;
    border-radius: 0.75rem;
    padding: 1.5rem;
    width: 100%;
    max-width: 26rem;
    box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
    max-height: 90vh;
    overflow-y: auto;
}

.bd-modal__title[b-118oocr995] { margin: 0 0 1rem; font-size: 1.25rem; }

.bd-modal__field[b-118oocr995] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-bottom: 0.9rem;
    font-weight: 600;
    font-size: 0.9rem;
}

.bd-modal__errors[b-118oocr995] {
    background: #fdecec;
    border: 1px solid #f5c2c2;
    color: #b3261e;
    border-radius: 0.5rem;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.9rem;
    font-size: 0.9rem;
}

.bd-modal__actions[b-118oocr995] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
    margin-top: 1rem;
}

.bd-modal__check[b-118oocr995] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 0.9rem;
    font-size: 0.82rem;
    line-height: 1.4;
    color: #4b5563;
}
.bd-modal__check input[b-118oocr995] { margin-top: 0.2rem; flex-shrink: 0; }

/* Pick-reminder settings block in the edit-profile modal. */
.bd-modal__reminders[b-118oocr995] {
    border: 1px solid #e3e6ea;
    border-radius: 0.6rem;
    padding: 0.75rem 1rem 1rem;
    margin: 0.5rem 0;
}

.bd-modal__reminders > legend[b-118oocr995] {
    font-size: 0.9rem;
    font-weight: 700;
    padding: 0 0.4rem;
    width: auto;
}

.bd-reminder__when[b-118oocr995] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.15rem 0 0.6rem 1.75rem;
    font-size: 0.9rem;
    color: #4b5563;
}

.bd-reminder__when .form-select[b-118oocr995] { width: auto; }
/* /Components/Pages/Scoreboard.razor.rz.scp.css */
/* Shared primitives (.bd-form__msg/__actions, .bd-hint, .bd-table, .bd-muted, ...) live in
   app.css -- a scoped sheet can't reach the other components that use them. */

/* Shared page-header classes (.bd-page__head/__crumb/__title) now live in app.css so every
   dashboard page can use them; scoped CSS can't reach content projected through @Body. */

/* ---- League / week selectors ---- */
.bd-controls[b-xjzli10r36] { display: flex; gap: 0.6rem; flex-wrap: wrap; }
.bd-select[b-xjzli10r36] { width: auto; min-width: 9rem; font-weight: 600; }

/* ---- Standings ---- */
.bd-standings[b-xjzli10r36] { padding: 1.25rem 1.35rem; }
.bd-standings__head[b-xjzli10r36] { display: flex; align-items: baseline; justify-content: space-between; margin-bottom: 0.5rem; }
.bd-standings__head h2[b-xjzli10r36] { font-size: 1.25rem; margin: 0; }
.bd-standings__wk[b-xjzli10r36] { font-size: 0.85rem; color: #8a94a3; }

/* Uniform row height regardless of content (logo rows vs "No pick" rows differ otherwise). */
.bd-table tbody tr[b-xjzli10r36] { height: 3.25rem; }
.bd-table tbody td[b-xjzli10r36] { padding-top: 0.35rem; padding-bottom: 0.35rem; }
.bd-col-rank[b-xjzli10r36] { width: 4.25rem; text-align: center; font-weight: 800; color: #9aa5b4; white-space: nowrap; }

/* Rank number and rank movement are separate fixed-width slots so each aligns down the table. */
.bd-rank-num[b-xjzli10r36] { display: inline-block; min-width: 1.6rem; text-align: right; }
.bd-rank-move[b-xjzli10r36] { display: inline-block; min-width: 1.9rem; text-align: left; }
.bd-entry[b-xjzli10r36] { display: inline-flex; align-items: center; gap: 0.4rem; font-weight: 700; color: var(--bd-ink); }
.bd-col-player[b-xjzli10r36] { color: #6b7280; font-size: 0.9rem; }

.bd-tag[b-xjzli10r36] {
    font-size: 0.65rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.1rem 0.4rem;
    border-radius: 0.35rem;
    background: var(--bd-brand-soft);
    color: var(--bd-brand-strong);
}
.bd-tag--new[b-xjzli10r36] { background: #fff3e0; color: var(--bd-accent-strong); }
.bd-tag--commish[b-xjzli10r36] { background: var(--bd-ink); color: #fff; }

.bd-move[b-xjzli10r36] { font-size: 0.75rem; font-weight: 700; margin-left: 0.35rem; }
.bd-up[b-xjzli10r36] { color: var(--bd-win); }
.bd-down[b-xjzli10r36] { color: var(--bd-loss); }

.bd-pick[b-xjzli10r36] { display: inline-flex; align-items: center; gap: 0.5rem; font-weight: 600; }
.bd-pick__logo[b-xjzli10r36] { width: 1.75rem; height: 1.75rem; }
.bd-pick--miss[b-xjzli10r36] { color: #9aa5b4; font-style: italic; }

/* Pick-status view of a not-yet-locked week: only "in" vs "not yet", no picks revealed. */
.bd-picklock[b-xjzli10r36] { margin: 0 0 1rem; }
.bd-pickstatus[b-xjzli10r36] { font-weight: 600; white-space: nowrap; }
.bd-pickstatus--in[b-xjzli10r36] { color: var(--bd-win); }
.bd-pickstatus--out[b-xjzli10r36] { color: #9aa5b4; }

/* Badge-points board: the "This entry" column is the emphasis (styled as .bd-total); the career total
   sits alongside as muted context. */
.bd-col-career[b-xjzli10r36] { color: #9aa5b4; font-weight: 600; }

/* Clickable entry name, player name, and pick cell -- read as links only on hover. */
.bd-entry__name[b-xjzli10r36], .bd-col-player a[b-xjzli10r36], .bd-pick-link[b-xjzli10r36] { color: inherit; text-decoration: none; }
.bd-entry__name:hover[b-xjzli10r36], .bd-col-player a:hover[b-xjzli10r36], .bd-pick-link:hover[b-xjzli10r36] { text-decoration: underline; }
.bd-pick-link[b-xjzli10r36] { display: inline-block; }
.bd-won[b-xjzli10r36] { color: var(--bd-win); font-weight: 700; }
.bd-lost[b-xjzli10r36] { color: var(--bd-loss); font-weight: 700; }

.bd-total[b-xjzli10r36] { font-weight: 800; color: var(--bd-ink); }
.bd-dropped[b-xjzli10r36] { color: #b0b8c4; text-decoration: line-through; }

.bd-row-you[b-xjzli10r36] { background: var(--bd-brand-soft); }
.bd-row-you .bd-col-rank[b-xjzli10r36] { color: var(--bd-brand-strong); }

/* Action column on an unlocked week: only the viewer's own rows have a button, so keep the column
   tight against the right edge and stop the label wrapping mid-button. */
.bd-col-act[b-xjzli10r36] { width: 1%; white-space: nowrap; text-align: right; }

/* Sortable column headers. Rendered as buttons so they are reachable and operable from the keyboard --
   a <th> with a click handler is neither -- but styled to read as the header text they replace rather
   than as controls sitting inside the table. */
.bd-sort[b-xjzli10r36] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    color: inherit;
    cursor: pointer;
}
.bd-sort:hover[b-xjzli10r36] { color: var(--bd-brand, #3f7d1e); }
.bd-sort:focus-visible[b-xjzli10r36] { outline: 2px solid var(--bd-brand, #3f7d1e); outline-offset: 2px; }

/* The icon holds its space on every header, so the row doesn't reflow as the sort moves between
   columns. Faint until its column is the active one. */
.bd-sort__icon[b-xjzli10r36] { font-size: 0.75em; opacity: 0.3; }
.bd-sort--on[b-xjzli10r36] { color: var(--bd-brand, #3f7d1e); }
.bd-sort--on .bd-sort__icon[b-xjzli10r36] { opacity: 1; }

/* A right-aligned numeric column keeps its header against the same edge as its figures. */
.text-end .bd-sort[b-xjzli10r36] { justify-content: flex-end; width: 100%; }

/* The Game column: where each pick's game has got to. Quiet by default -- it's context for the number
   beside it, not a figure of its own -- and nowrap because "vs SEA · Q2 09:53" breaking across two lines
   would make a row taller than the ones around it as the clock ticks. */
.bd-col-game[b-xjzli10r36] { white-space: nowrap; }
.bd-disp[b-xjzli10r36] { color: var(--bd-muted, #6c757d); font-size: 0.875rem; }

/* A game actually in play is the one thing on this board that is still moving, and without emphasis its
   row is shaped exactly like a settled one -- so the number beside it reads as final when it isn't.
   Applied only while the ball is in play: at halftime nothing is changing. */
.bd-disp--live[b-xjzli10r36] {
    color: var(--bd-brand, #3f7d1e);
    font-weight: 600;
}

/* ---- Phones ----------------------------------------------------------------------------------
   Measured at 375px: the card's own padding leaves 298px for a table that wants 312px, so the
   unlocked-week board's action button was cut off 14px short -- the one control on the row, and the
   whole reason a player opens this page before kickoff. Trimming padding recovers about 12px, which
   the wider "Draft team" label spends again, so that isn't a fix.
   Instead this board stops being a table on a phone and becomes two lines per entry:

       Chubby Funster              ✓ In
       tom                   [ Edit team ]

   The settled-week board used to be left scrolling here, on the argument that seven mostly-numeric
   columns are a table on any screen and horizontal scroll is the honest answer for one. Reversed on
   2026-08-20: the scroll was long enough that Total -- the column the whole board is sorted by -- sat
   off-screen, so the honest answer cost you the headline number. It now drops the four columns that
   are either duplicated elsewhere on the row or recoverable in one tap, and stays a table. */
@media (max-width: 575.98px) {
    /* A little of the card's padding back, for every board on the page. */
    .bd-standings[b-xjzli10r36] { padding: 1rem 0.9rem; }

    /* ---- The standings board's phone columns ----
       What goes, and why each is the right thing to lose rather than just the easiest:
         Player  -- the entry name above it already identifies whose row this is.
         Pick abbreviation -- the logo says the same thing in less space, and carries it as alt text.
         Opponent -- kept as ".bd-disp__vs", so the cell still says Final/Q3 and only stops naming who.
         Wk pts  -- the pick badge on the same row already shows that margin (JAX +34 / 34).
       Rank, entry, pick and Total stay: that is the row's identity and the two figures it's ranked on.
       Scoped to .bd-table--standings so the pick-check and badge boards keep their own columns. */
    .bd-table--standings .bd-col-player[b-xjzli10r36],
    .bd-table--standings .bd-col-wk[b-xjzli10r36],
    .bd-table--standings .bd-pick__abbr[b-xjzli10r36],
    .bd-table--standings .bd-disp__vs[b-xjzli10r36] { display: none; }

    /* Dropping the columns is most of it but not all: measured at 360px the board still ran 72px past
       its wrapper, because what's left is five columns of incompressible content. These two trims are
       the ones that cost nothing visible -- 8px of cell padding either side is more air than a phone
       needs, and the rank slots were sized for a three-digit rank this board will never have.
       Together: 72px of scroll down to 33px at 360px, and none at 375px.
       Deliberately NOT done here: letting entry names break mid-word. It reaches zero scroll at any
       width, but squeezing that column to 65px turns "Gothenburg Wild Picks" into a 108px row beside
       60px neighbours, which trades a scroll you can flick for a board you have to read past. */
    .bd-table--standings th[b-xjzli10r36],
    .bd-table--standings td[b-xjzli10r36] { padding-left: 5px; padding-right: 5px; }

    /* Still fixed-width slots, so ranks stay aligned down the column -- just sized for two digits and
       a movement arrow rather than three. */
    .bd-table--standings .bd-rank-num[b-xjzli10r36] { min-width: 1.35rem; }
    .bd-table--standings .bd-rank-move[b-xjzli10r36] { min-width: 1.55rem; }

    .bd-table--pickcheck thead[b-xjzli10r36] { display: none; } /* the two-line shape labels itself */

    .bd-table--pickcheck tbody tr[b-xjzli10r36] {
        display: grid;
        grid-template-columns: minmax(0, 1fr) auto;
        /* start, not center: a name long enough to wrap would otherwise pull the pick status down the
           row and out of line with the name it belongs to. */
        align-items: start;
        gap: 0.3rem 0.75rem;
        height: auto; /* overrides the fixed row height the wide boards need */
        padding: 0.7rem 0.6rem;
        border-bottom: 1px solid var(--bd-line, #e5e7eb);
    }

    /* Cells have to go fully transparent here, and this is the whole reason the first attempt looked
       boxy: Bootstrap paints every cell with an opaque --bs-table-bg (#fff), which is invisible while
       the cells tile a real table row. Once the row is a grid they only cover their own areas, so the
       row's background -- green on your own entry -- showed through the gaps as white blocks with lines
       between them. The inset shadow goes too; it's what Bootstrap stripes and hovers rows with. */
    .bd-table--pickcheck tbody td[b-xjzli10r36] {
        border: 0;
        padding: 0;
        background-color: transparent;
        box-shadow: none;
    }

    /* Name and pick status share the first line, the two things you came to check. */
    .bd-table--pickcheck tbody td:nth-child(1)[b-xjzli10r36] { grid-area: 1 / 1; }
    .bd-table--pickcheck tbody td:nth-child(3)[b-xjzli10r36] { grid-area: 1 / 2; text-align: right; }
    /* Player and the action share the second, so the button has room for its label. */
    .bd-table--pickcheck tbody td:nth-child(2)[b-xjzli10r36] { grid-area: 2 / 1; }
    .bd-table--pickcheck tbody td:nth-child(4)[b-xjzli10r36] { grid-area: 2 / 2; width: auto; text-align: right; }

    /* A long entry name wraps rather than pushing the pick status off the row. */
    .bd-table--pickcheck .bd-entry[b-xjzli10r36] { flex-wrap: wrap; }

    /* The action sits directly under the pick status it relates to, so it needs a hair of separation
       from it rather than the tight line spacing the text pair above uses. */
    .bd-table--pickcheck tbody td:nth-child(4) .btn[b-xjzli10r36] { margin-top: 0.1rem; }

    /* Your own row is the one the button belongs to, so let its highlight read as a block: the padding
       above puts the text inside it rather than flush against the card's edge. */
    .bd-table--pickcheck tbody tr.bd-row-you[b-xjzli10r36] { border-radius: 0.4rem; }
}

/* ---- Loading skeleton ------------------------------------------------------------------------
   Widths, not content: Bootstrap's .placeholder is an inline-block that sizes from a col-* class or
   an explicit width, and these columns want widths that match what lands in them. Heights are set
   too, because a .placeholder with no text inside collapses to zero and the row would flatten.

   Every one is `width: 100%` capped by a max-width, and the pairing is the whole point. The first
   version set fixed rem widths, which a table cell treats as a minimum it must honour -- so the
   skeleton measured 111px past its wrapper on a 375px phone where the real board only runs 18px past.
   The loading state would have scrolled sideways further than the thing it stands in for. With
   width:100% the cells carry no intrinsic minimum, so the skeleton shrinks to whatever the wrapper
   allows, while max-width keeps the desktop proportions it was drawn for.

   Deliberately in this stylesheet rather than app.css: it's the standings board's own shape. A
   generic skeleton primitive is worth promoting when a second page wants one -- see READ ME FIRST on
   shared bd-* classes living in app.css. */
.bd-skel-head[b-xjzli10r36] { height: 1.15rem; width: 100%; max-width: 7rem; border-radius: 0.3rem; }
.bd-skel-wk[b-xjzli10r36] { height: 0.8rem; width: 100%; max-width: 9rem; border-radius: 0.3rem; }
.bd-skel-rank[b-xjzli10r36] { height: 0.9rem; width: 100%; max-width: 1.6rem; border-radius: 0.3rem; }
.bd-skel-entry[b-xjzli10r36] { height: 0.95rem; width: 100%; max-width: 8.5rem; border-radius: 0.3rem; }
.bd-skel-player[b-xjzli10r36] { height: 0.85rem; width: 100%; max-width: 4.5rem; border-radius: 0.3rem; }
.bd-skel-pick[b-xjzli10r36] { height: 1.4rem; width: 100%; max-width: 5rem; border-radius: 0.3rem; }
.bd-skel-game[b-xjzli10r36] { height: 0.85rem; width: 100%; max-width: 6rem; border-radius: 0.3rem; }
.bd-skel-num[b-xjzli10r36] { height: 0.9rem; width: 100%; max-width: 2.2rem; border-radius: 0.3rem; }

/* The head is a flex row in the real card; while loading its two bars need the same separation the
   title and the "Week 18 · 20 entries" line have. */
.bd-standings__head .placeholder[b-xjzli10r36] { display: inline-block; }
/* /Components/Pages/Series.razor.rz.scp.css */
.bd-series__scroll[b-4lz4itpmf8] { overflow-x: auto; }

.bd-series__table[b-4lz4itpmf8] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.95rem;
}

.bd-series__table th[b-4lz4itpmf8],
.bd-series__table td[b-4lz4itpmf8] {
    padding: 0.55rem 0.8rem;
    text-align: left;
    border-bottom: 1px solid color-mix(in srgb, currentColor 12%, transparent);
    white-space: nowrap;
}

.bd-series__table th[b-4lz4itpmf8] {
    font-size: 0.78rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    opacity: 0.7;
}

.bd-series__table tbody tr:hover[b-4lz4itpmf8] { background: color-mix(in srgb, currentColor 4%, transparent); }

.bd-series__season[b-4lz4itpmf8] { font-weight: 700; font-variant-numeric: tabular-nums; }
.bd-series__num[b-4lz4itpmf8] { text-align: right; font-variant-numeric: tabular-nums; }
.bd-series__empty[b-4lz4itpmf8] { opacity: 0.4; }

.bd-series__player[b-4lz4itpmf8] { display: block; font-weight: 600; }
.bd-series__entry[b-4lz4itpmf8] { display: block; font-size: 0.8rem; opacity: 0.7; }
/* /Components/Pages/StatsSeason.razor.rz.scp.css */
/* The .bd-stat / .bd-statgrid / .bd-statlist / .bd-statrow family moved to app.css once the stats hub
   started using it, and .bd-teamsched__opp / .bd-wbar are there for the same reason: a scoped rule reaches
   only its own component, so a shared class left here renders unstyled everywhere else -- silently.

   What remains is genuinely specific to this page's every-team table. */

.bd-seasontable[b-q8vr5e0n6l] { padding: 1rem 1.25rem 0.5rem; margin-top: 1.25rem; }
.bd-seasontable .bd-statlist__head[b-q8vr5e0n6l] { margin-bottom: 0.5rem; }

.bd-seasontable__table th[b-q8vr5e0n6l] { white-space: nowrap; vertical-align: bottom; }

/* Drafted-by leads the row and carries its weight, since it's the sort key. */
.bd-seasontable__pcthead[b-q8vr5e0n6l] { width: 6.5rem; }
.bd-seasontable__pct[b-q8vr5e0n6l] { white-space: nowrap; }
.bd-seasontable__pctnum[b-q8vr5e0n6l] {
    display: block;
    font-size: 1.6rem;
    font-weight: 800;
    line-height: 1.05;
    font-variant-numeric: tabular-nums;
    color: var(--bd-brand-strong);
}

/* Bigger than the 1.5rem the schedule tables use, and sourced from the 500px asset, so it stays crisp at
   2x. The name is allowed to wrap under a long city rather than forcing the column wider. */
.bd-seasontable__team img[b-q8vr5e0n6l] { width: 2.1rem; }
.bd-seasontable__team[b-q8vr5e0n6l] { max-width: 13rem; }

/* Record and margin on one line, then the two blowout tallies stacked -- each on its own line so the
   never-blown-out case can say so instead of trailing off. */
.bd-seasontable__season[b-q8vr5e0n6l] { white-space: nowrap; }
.bd-seasontable__rec[b-q8vr5e0n6l] { font-weight: 700; font-variant-numeric: tabular-nums; margin-right: 0.4rem; }

/* The two bar columns split the remaining width evenly, which keeps their tracks the same length -- if they
   differed, a reader would compare lengths across the pair, which is exactly what the differing scales make
   meaningless. */
.bd-seasontable__bar[b-q8vr5e0n6l] { width: 30%; min-width: 9rem; }
.bd-seasontable__nochart[b-q8vr5e0n6l] { font-size: 0.78rem; }

/* The scale each column is drawn against, under its heading, because "of 124" and "of 303" are the whole
   reason the two bars can't be compared to each other. */
.bd-seasontable__scale[b-q8vr5e0n6l] {
    display: block;
    font-size: 0.66rem;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: #9aa5b4;
}

/* Legend swatch in each heading, so the two colours don't need a sentence. */
.bd-chartkey[b-q8vr5e0n6l] {
    display: inline-block;
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 0.1rem;
    vertical-align: baseline;
}
.bd-chartkey--for[b-q8vr5e0n6l] { background: var(--bd-win, #16a34a); }
.bd-chartkey--against[b-q8vr5e0n6l] { background: var(--bd-loss, #dc2626); }
/* /Components/Shared/BadgeEarningsTable.razor.rz.scp.css */
/* Full width up to the container; the table inside sizes to its content (no fixed 44rem cap), so long
   league names don't wrap and every row is the same height. */
.bd-earned[b-7hu7amczfg] {
    max-width: 100%;
}

/* Let a very wide table scroll horizontally on narrow screens instead of overflowing the page. */
.bd-earned__scroll[b-7hu7amczfg] {
    overflow-x: auto;
}

.bd-earned__summary[b-7hu7amczfg] {
    cursor: pointer;
    font-weight: 600;
    padding: 0.5rem 0.25rem;
    list-style-position: inside;
}
.bd-earned[open] .bd-earned__summary[b-7hu7amczfg] { margin-bottom: 0.25rem; }

.bd-earned__table[b-7hu7amczfg] {
    width: auto;
    border-collapse: collapse;
    font-size: 0.9rem;
}

/* Keep each earning on one line so row heights stay uniform (the table now has room to grow). */
.bd-earned__table td[b-7hu7amczfg] { white-space: nowrap; }

.bd-earned__table th[b-7hu7amczfg] {
    text-align: left;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    opacity: 0.7;
    padding: 0.35rem 0.6rem;
    border-bottom: 1px solid color-mix(in srgb, currentColor 20%, transparent);
}

.bd-earned__table td[b-7hu7amczfg] {
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid color-mix(in srgb, currentColor 8%, transparent);
    vertical-align: top;
}

.bd-earned__table tr:last-child td[b-7hu7amczfg] { border-bottom: none; }

/* The name carries a hover tooltip (the badge description) -- hint it with a dotted underline. */
.bd-earned__name[b-7hu7amczfg] {
    cursor: help;
    text-decoration: underline dotted;
    text-underline-offset: 0.15em;
    text-decoration-color: color-mix(in srgb, currentColor 40%, transparent);
}

.bd-earned__num[b-7hu7amczfg] { text-align: right; font-variant-numeric: tabular-nums; }
.bd-earned__points[b-7hu7amczfg] { font-weight: 700; }
.bd-earned__emoji[b-7hu7amczfg] { margin-right: 0.25rem; }
.bd-earned__league[b-7hu7amczfg] { opacity: 0.6; font-size: 0.82rem; }
/* /Components/Shared/EntryTileCard.razor.rz.scp.css */
/* The entry tile. Scoped to this component, which is the point of moving it here: the markup and the
   rules travel together, so /hub and /entry/{ref} can't drift apart or render it unstyled. The grid
   that ARRANGES tiles belongs to whichever page is arranging them, and stays there.

   bd-won / bd-lost are global (app.css) -- they colour margins in several places. */

.bd-tile[b-vg2ezh214p] {
    display: flex;
    flex-direction: column;
    background: #fff;
    border: 1px solid #e5e7eb;
    border-radius: 0.75rem;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04);
    /* Clips the panes' own backgrounds (the amber "needs a pick" wash) to the rounded corners. */
    overflow: hidden;
}

/* --- Header: which entry this is (omitted on /entry, where the title says it) --------------- */
.bd-tile__head[b-vg2ezh214p] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.75rem;
    padding: 0.85rem 1rem;
}

.bd-tile__id[b-vg2ezh214p] { display: flex; flex-direction: column; min-width: 0; }

/* min-width:0 above plus these three let a long entry or league name ellipsize instead of forcing
   the tile wider than its grid track. */
.bd-tile__entry[b-vg2ezh214p] {
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    color: var(--bd-ink, #10220b);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bd-tile__entry:hover[b-vg2ezh214p] { color: var(--bd-brand, #3f7d1e); }

.bd-tile__league[b-vg2ezh214p] {
    font-size: 0.8rem;
    font-weight: 600;
    color: #6b7280;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.bd-tile__league:hover[b-vg2ezh214p] { color: var(--bd-brand, #3f7d1e); text-decoration: underline; }

/* Rank chip, and the tile's way through to the scoreboard. */
.bd-tile__rank[b-vg2ezh214p] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.3rem;
    flex: 0 0 auto;
    padding: 0.2rem 0.5rem;
    border: 1px solid #e5e7eb;
    border-radius: 0.5rem;
    background: #fbfcfa;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
    text-decoration: none;
    color: var(--bd-ink, #10220b);
}
.bd-tile__rank:hover[b-vg2ezh214p] {
    border-color: var(--bd-brand, #3f7d1e);
    background: var(--bd-brand-soft, #eaf3e0);
    color: var(--bd-brand-strong, #2c5614);
}
.bd-tile__place[b-vg2ezh214p] { font-size: 1rem; font-weight: 800; letter-spacing: -0.02em; }
.bd-tile__place sup[b-vg2ezh214p] { font-size: 0.6em; font-weight: 700; }
.bd-tile__of[b-vg2ezh214p] { font-size: 0.7rem; color: #8a94a3; font-weight: 600; }
.bd-tile__rank:hover .bd-tile__of[b-vg2ezh214p] { color: var(--bd-brand, #3f7d1e); }

/* --- The two panes ------------------------------------------------------------------------- */
.bd-tile__pane[b-vg2ezh214p] { padding: 0.85rem 1rem; border-top: 1px solid #eef0f3; }
/* No hairline above the first pane when the header isn't there to be divided from. */
.bd-tile__pane:first-child[b-vg2ezh214p] { border-top: 0; }

.bd-tile__label[b-vg2ezh214p] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.07em;
    text-transform: uppercase;
    color: #8a94a3;
    margin-bottom: 0.6rem;
}
.bd-tile__wk[b-vg2ezh214p] { color: #4b5563; }
/* Status and lock time sit hard right, and keep sentence case -- they're values, not labels. */
.bd-tile__when[b-vg2ezh214p] { margin-left: auto; text-transform: none; letter-spacing: 0.02em; font-weight: 600; }

.bd-tile__body[b-vg2ezh214p] { display: flex; align-items: center; gap: 0.7rem; }

.bd-tile__logo[b-vg2ezh214p] { flex: 0 0 auto; width: 2.75rem; height: 2.75rem; object-fit: contain; }

.bd-tile__team[b-vg2ezh214p] { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.bd-tile__name[b-vg2ezh214p] { font-weight: 700; font-size: 0.95rem; line-height: 1.2; }
.bd-tile__game[b-vg2ezh214p] { font-size: 0.8rem; color: #6b7280; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.bd-tile__game a[b-vg2ezh214p] { color: #6b7280; text-decoration: none; border-bottom: 1px dotted #c9d0c2; }
.bd-tile__game a:hover[b-vg2ezh214p] { color: var(--bd-brand, #3f7d1e); }

/* The margin. */
.bd-tile__pts[b-vg2ezh214p] {
    flex: 0 0 auto;
    font-size: 1.5rem;
    font-weight: 800;
    letter-spacing: -0.03em;
    font-variant-numeric: tabular-nums;
}

/* A penalty week: no team was picked, so there is no logo and no game to name. */
.bd-tile__pane--penalty .bd-tile__name[b-vg2ezh214p] { color: var(--bd-loss, #dc2626); }
.bd-tile__none[b-vg2ezh214p] {
    flex: 0 0 auto;
    width: 2.75rem;
    height: 2.75rem;
    border: 1px dashed #e3b9b9;
    border-radius: 0.5rem;
    display: grid;
    place-items: center;
    color: #d9a6a6;
}

/* --- The open pane when a pick is owed ----------------------------------------------------- */
/* The amber wash is the point of it: across a grid of tiles, the entries still owed a pick are
   findable without reading a word. Only applied when the viewer can actually make that pick. */
.bd-tile__pane--todo[b-vg2ezh214p] { background: #fff8ef; border-top-color: #ffd9ad; }
.bd-tile__pane--todo .bd-tile__label[b-vg2ezh214p],
.bd-tile__pane--todo .bd-tile__wk[b-vg2ezh214p] { color: var(--bd-accent-strong, #e6730a); }

.bd-tile__cta[b-vg2ezh214p] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    padding: 0.55rem 0.9rem;
    background: var(--bd-accent, #ff8a1e);
    border: 1px solid var(--bd-accent-strong, #e6730a);
    border-radius: 0.5rem;
    color: #3d2200;
    font-size: 0.92rem;
    font-weight: 800;
    letter-spacing: -0.01em;
    text-decoration: none;
}
.bd-tile__cta:hover[b-vg2ezh214p] { background: var(--bd-accent-strong, #e6730a); color: #fff; }

/* Changing a pick already made is secondary -- quiet, never a second amber button. */
.bd-tile__edit[b-vg2ezh214p] {
    flex: 0 0 auto;
    font-size: 0.78rem;
    font-weight: 700;
    color: #6b7280;
    text-decoration: none;
    white-space: nowrap;
}
.bd-tile__edit:hover[b-vg2ezh214p] { color: var(--bd-brand, #3f7d1e); }

/* What an outsider sees instead of a pick or a prompt: a statement, with nothing to click. */
.bd-tile__quiet[b-vg2ezh214p] { font-size: 0.85rem; color: #6b7280; display: flex; align-items: center; gap: 0.4rem; }
.bd-tile__quiet--none[b-vg2ezh214p] { color: #9aa5b4; }

/* --- One-pane tiles ------------------------------------------------------------------------ */
/* A tile showing only one week doesn't explain itself, so it carries a line saying which end of the
   season it's at. */
.bd-tile__note[b-vg2ezh214p] {
    padding: 0.85rem 1rem;
    border-top: 1px solid #eef0f3;
    font-size: 0.83rem;
    color: #6b7280;
}
.bd-tile__note strong[b-vg2ezh214p] { color: var(--bd-ink, #10220b); }
.bd-tile__note a[b-vg2ezh214p] { color: var(--bd-brand, #3f7d1e); font-weight: 700; }
/* /Components/Shared/NflScheduleTile.razor.rz.scp.css */
/* Scoped to the tile, so it renders styled on any page that uses it -- the hazard READ ME FIRST
   describes, and the arrangement EntryTileCard settled on. The class names are named for this
   component (bd-sched__*) rather than sounding like shared primitives. */

.bd-sched__tile[b-i64y2248ub] {
    display: block;
    background: #fff;
    border: 1px solid #d0d0d0;
    padding: 10px 12px;
    text-decoration: none;
    color: #111;
    font-family: "Oswald", system-ui, sans-serif;
}

.bd-sched__tile:hover[b-i64y2248ub] {
    border-color: var(--bd-brand, #3f7d1e);
}

.bd-sched__title[b-i64y2248ub] {
    font-size: .72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: .02em;
    color: var(--bd-accent-strong, #e6730a);
    margin-bottom: 4px;
}

.bd-sched__row[b-i64y2248ub] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 3px 0;
    /* The losing side stays legible rather than being greyed out: this is a schedule, not a verdict. */
    color: #555;
}

.bd-sched__row--lead[b-i64y2248ub] {
    color: #111;
    font-weight: 600;
}

.bd-sched__logo[b-i64y2248ub] {
    width: 24px;
    height: 24px;
    object-fit: contain;
    flex: 0 0 auto;
}

.bd-sched__abbr[b-i64y2248ub] {
    font-weight: 600;
    flex: 0 0 auto;
}

/* Drops out first when the tile is narrow -- the abbreviation and the logo already identify the team,
   so the nickname is the part that can go. */
.bd-sched__nick[b-i64y2248ub] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: .82rem;
    color: #8a8a8a;
    min-width: 0;
}

.bd-sched__score[b-i64y2248ub] {
    margin-left: auto;
    padding-left: 8px;
    font-family: "Agdasima", "Oswald", sans-serif;
    font-size: 1.3rem;
    font-weight: 700;
    flex: 0 0 auto;
}

.bd-sched__meta[b-i64y2248ub] {
    margin-top: 6px;
    font-size: .78rem;
    color: #8a8a8a;
}

.bd-sched__meta--live[b-i64y2248ub] {
    color: var(--bd-accent-strong, #e6730a);
    font-weight: 600;
}

@media (max-width: 420px) {
    .bd-sched__nick[b-i64y2248ub] { display: none; }
}
