/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-6j6wl3hz7a] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* Full-width top header: brand left, account right */
.app-header[b-6j6wl3hz7a] {
    height: 3.5rem;
    background: var(--brand-page, #E9E9EB);
    border-bottom: 1px solid rgba(0, 0, 0, .10);
    display: flex;
    align-items: center;
    position: sticky;
    top: 0;
    z-index: 1030;
}

.app-title[b-6j6wl3hz7a] {
    font-family: 'Bebas Neue', system-ui, sans-serif;
    font-weight: 400;
    letter-spacing: 0.09em;
    font-size: 1.6rem;
    line-height: 1;
    color: var(--brand-copper);
    text-decoration: none;
    white-space: nowrap;
    position: relative;
    top: 3px; /* Bebas Neue sits high in its line-box; nudge to optical centre */
}

    .app-title:hover[b-6j6wl3hz7a] {
        color: var(--brand-copper);
        opacity: 0.85;
    }

.app-body[b-6j6wl3hz7a] {
    display: flex;
    flex: 1;
}

main[b-6j6wl3hz7a] {
    flex: 1;
    min-width: 0;
}

.sidebar[b-6j6wl3hz7a] {
    background-color: var(--brand-charcoal);
}

/* ===== Points balance (copper) — top bar on mobile, foot of the menu on desktop ===== */
/* Larger gap between the message/email icon cluster and the user circle. */
.header-cluster[b-6j6wl3hz7a] { gap: 1rem; }

.pts-balance[b-6j6wl3hz7a] {
    display: flex;
    flex-direction: column;
    line-height: 1.05;
}
.pts-balance-label[b-6j6wl3hz7a] {
    font-size: .6rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--brand-copper);
    opacity: .85;
}
.pts-balance-value[b-6j6wl3hz7a] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--brand-copper);
    font-variant-numeric: tabular-nums;
}

/* Mobile top-bar variant right-aligns its label under the number's column; desktop foot variant sits in the
   charcoal sidebar so it needs a touch more padding + separation. Visibility is toggled per breakpoint below. */
.pts-balance-top[b-6j6wl3hz7a] { text-align: right; align-items: flex-end; }
.pts-balance-side[b-6j6wl3hz7a] {
    padding: .75rem 1rem 1rem;
    border-top: 1px solid rgba(255,255,255,.10);
}
.pts-balance-side .pts-balance-value[b-6j6wl3hz7a] { font-size: 1.15rem; }

/* Show the right variant per breakpoint (default hidden; each media query re-shows its own). */
.pts-balance-top[b-6j6wl3hz7a], .pts-balance-side[b-6j6wl3hz7a] { display: none; }

article[b-6j6wl3hz7a] {
    padding-top: 1.25rem;
}

/* Bottom tab bar — hidden on desktop, shown on mobile */
.bottom-nav[b-6j6wl3hz7a] {
    display: none;
}

#blazor-error-ui[b-6j6wl3hz7a] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-6j6wl3hz7a] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

/* ===== Desktop (>= 992px): sidebar nav, no bottom bar ===== */
@media (min-width: 992px) {
    .sidebar[b-6j6wl3hz7a] {
        width: 250px;
        flex: 0 0 250px;
        position: sticky;
        top: 3.5rem;
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
        display: flex;            /* column so the balance can sit at the foot (mt-auto) */
        flex-direction: column;
    }

    article[b-6j6wl3hz7a] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }

    /* Desktop: balance at the foot of the left menu; hide the top-bar copy. */
    .pts-balance-side[b-6j6wl3hz7a] { display: flex; }
    .pts-balance-top[b-6j6wl3hz7a] { display: none; }
}

/* ===== Mobile/tablet (< 992px): hide sidebar, show bottom tab bar ===== */
@media (max-width: 991.98px) {
    .sidebar[b-6j6wl3hz7a] {
        display: none;
    }

    /* Mobile: balance in the top bar beside the email notification; the sidebar copy is hidden with the sidebar. */
    .pts-balance-top[b-6j6wl3hz7a] { display: flex; }
    .pts-balance-side[b-6j6wl3hz7a] { display: none; }

    article[b-6j6wl3hz7a] {
        padding-bottom: calc(5rem + env(safe-area-inset-bottom)); /* clear the fixed bottom bar (now taller by the safe-area inset) */
    }

    .bottom-nav[b-6j6wl3hz7a] {
        display: flex;
        position: fixed;
        bottom: 0;
        left: 0;
        right: 0;
        /* Content strip is a constant 4rem; the safe-area inset EXTENDS the bar downward rather
           than eating into it (the padding-bottom is matched by the added height). This keeps the
           icons a fixed distance from the top border in every orientation. Previously the inset ate
           into a fixed 4rem, so the strip — and the icons — shifted on rotate, because the iOS
           home-indicator inset is larger in portrait than landscape. */
        /* Only add HALF the home-indicator inset below the icons — the full inset left too big a gap
           under the bar. Icons still clear the indicator; the empty charcoal margin is much smaller. */
        height: calc(3.4rem + env(safe-area-inset-bottom) * 0.5);
        background: var(--brand-charcoal);
        border-top: 1px solid rgba(255, 255, 255, 0.12);
        z-index: 1000;
        padding-bottom: calc(env(safe-area-inset-bottom) * 0.5);
        box-sizing: border-box;
        overflow: hidden;            /* keep tab content inside the bar; the inner scroller handles overflow */
        /* NOTE: do NOT add transform/filter/will-change/backdrop-filter here (or to any ancestor: .page,
           .app-body, main, article). On iOS Safari a compositing-layer promotion on a position:fixed bar
           makes it DETACH from the viewport and drift/scroll with the page — the exact "nav floats mid-content
           on scroll" bug. A transform on an ANCESTOR is just as bad: it becomes the containing block, so the
           bar's bottom:0 resolves to that element, not the viewport. Keep this element and its ancestors
           transform-free so the fixed positioning stays anchored to the viewport. */
    }

    /* The tabs live in this inner row, which scrolls sideways when they don't all fit (a role with more
       items than a phone shows comfortably, ~5). When they DO fit, the tabs flex to fill the bar as before. */
    .bottom-nav[b-6j6wl3hz7a]  .bottom-nav-scroller {
        flex: 1;
        display: flex;
        align-items: stretch;
        overflow-x: auto;
        overflow-y: hidden;
        scrollbar-width: none;                 /* Firefox — hide the scrollbar */
        -webkit-overflow-scrolling: touch;
    }
    .bottom-nav[b-6j6wl3hz7a]  .bottom-nav-scroller::-webkit-scrollbar { display: none; }  /* iOS/Safari/Chrome */

    /* Left/right chevrons (added by bottom-nav-scroll.js), pinned over the bar edges. Hidden by default;
       the script shows one only when there's more to scroll that way. */
    .bottom-nav[b-6j6wl3hz7a]  .bottom-nav-chevron {
        display: none;
        position: absolute;
        top: 0;
        height: 3.4rem;                        /* match the content strip (not the safe-area extension) */
        width: 2rem;
        align-items: center;
        justify-content: center;
        border: none;
        background: var(--brand-charcoal);
        color: var(--brand-copper);
        cursor: pointer;
        z-index: 1;
    }
    .bottom-nav[b-6j6wl3hz7a]  .bottom-nav-chevron .bi { font-size: 1.15rem; line-height: 1; }
    .bottom-nav[b-6j6wl3hz7a]  .bottom-nav-chevron-left { left: 0; box-shadow: 6px 0 6px -4px rgba(0,0,0,0.5); }
    .bottom-nav[b-6j6wl3hz7a]  .bottom-nav-chevron-right { right: 0; box-shadow: -6px 0 6px -4px rgba(0,0,0,0.5); }

    .bottom-nav[b-6j6wl3hz7a]  .tab {
        /* Grow to share the bar when items fit, but never shrink below a tappable width — past ~5 items the
           row overflows and scrolls instead of squashing. */
        flex: 1 0 auto;
        min-width: 4.5rem;
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        gap: 3px;
        color: #cfd6de;
        text-decoration: none;
        font-size: 0.7rem;
        background: none;
        border: none;
        cursor: pointer;
        padding: 0 2px;
    }

    .bottom-nav[b-6j6wl3hz7a]  .tab .bi {
        font-size: 1.25rem;
        line-height: 1;
    }

    /* Football (Games / My games) icon — size it to match the .bi icons exactly. It's an inline SVG
       in a child component, so without this explicit rule it sizes unpredictably (too big / overflowing). */
    .bottom-nav[b-6j6wl3hz7a]  .tab .football-icon {
        width: 1.25rem;
        height: 1.25rem;
        flex-shrink: 0;
        display: block;
    }

    .bottom-nav[b-6j6wl3hz7a]  .tab.active {
        color: var(--brand-copper);
    }
}

/* Landscape phones have very little vertical room, so the bottom bar felt too thick. Shrink the
   content strip and tighten the icons/labels there (the safe-area inset still extends it downward). */
@media (max-width: 991.98px) and (orientation: landscape) {
    .bottom-nav[b-6j6wl3hz7a] {
        height: calc(2.9rem + env(safe-area-inset-bottom) * 0.5);
    }

    .bottom-nav[b-6j6wl3hz7a]  .tab {
        font-size: 0.62rem;
        gap: 1px;
    }

    .bottom-nav[b-6j6wl3hz7a]  .tab .bi {
        font-size: 1.05rem;
    }

    .bottom-nav[b-6j6wl3hz7a]  .tab .football-icon {
        width: 1.05rem;
        height: 1.05rem;
    }

    article[b-6j6wl3hz7a] {
        padding-bottom: calc(4.2rem + env(safe-area-inset-bottom));
    }
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* Sidebar nav (desktop). Icons come from the Bootstrap Icons font. */

.bi[b-nhi5xjhu2w] {
    margin-right: 0.6rem;
}

.nav-item[b-nhi5xjhu2w] {
    font-size: 0.95rem;
    padding-bottom: 0.25rem;
}

    .nav-item:first-of-type[b-nhi5xjhu2w] {
        padding-top: 1rem;
    }

    .nav-item[b-nhi5xjhu2w]  .nav-link {
        color: #cfd6de;
        border-radius: 6px;
        height: 2.75rem;
        display: flex;
        align-items: center;
        width: 100%;
    }

.nav-item[b-nhi5xjhu2w]  a.active {
    background-color: rgba(255, 255, 255, 0.15);
    color: #fff;
}

.nav-item[b-nhi5xjhu2w]  .nav-link:hover {
    background-color: rgba(255, 255, 255, 0.08);
    color: #fff;
}

.nav-scrollable[b-nhi5xjhu2w] {
    padding-top: 0.5rem;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-ey87pksu2q],
.components-reconnect-repeated-attempt-visible[b-ey87pksu2q],
.components-reconnect-failed-visible[b-ey87pksu2q],
.components-pause-visible[b-ey87pksu2q],
.components-resume-failed-visible[b-ey87pksu2q],
.components-rejoining-animation[b-ey87pksu2q] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-retrying[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-failed[b-ey87pksu2q],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-ey87pksu2q] {
    display: block;
}


#components-reconnect-modal[b-ey87pksu2q] {
    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-ey87pksu2q 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-ey87pksu2q 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-ey87pksu2q 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-ey87pksu2q]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-ey87pksu2q 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-ey87pksu2q {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-ey87pksu2q {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-ey87pksu2q {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-ey87pksu2q] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-ey87pksu2q] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-ey87pksu2q] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-ey87pksu2q] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-ey87pksu2q] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-ey87pksu2q] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-ey87pksu2q] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-ey87pksu2q 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-ey87pksu2q] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-ey87pksu2q {
    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/Games/CreateGame.razor.rz.scp.css */
/* Step 0 — game-type picker cards. Selectable cards lift + take a copper accent on hover;
   "coming soon" cards are muted and non-interactive. */
.gt-card[b-8iwih8j1fm] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.35rem;
    width: 100%;
    height: 100%;
    text-align: left;
    padding: 1.1rem 1.15rem;
    border: 1px solid var(--bs-border-color, #dee2e6);
    border-radius: 0.6rem;
    background: var(--bs-body-bg, #fff);
}

.gt-card--pick[b-8iwih8j1fm] {
    cursor: pointer;
    transition: border-color .12s ease, box-shadow .12s ease, transform .12s ease;
}

.gt-card--pick:hover[b-8iwih8j1fm],
.gt-card--pick:focus-visible[b-8iwih8j1fm] {
    border-color: var(--brand-copper);
    box-shadow: 0 2px 10px rgba(224, 122, 63, 0.18);
    transform: translateY(-2px);
    outline: none;
}

.gt-card--soon[b-8iwih8j1fm] {
    opacity: .65;
    cursor: not-allowed;
}

.gt-icon[b-8iwih8j1fm] {
    font-size: 2rem;
    line-height: 1;
    color: var(--brand-copper);
}

.gt-card--soon .gt-icon[b-8iwih8j1fm] {
    color: var(--brand-grey);
}

.gt-title[b-8iwih8j1fm] {
    font-weight: 600;
    font-size: 1.05rem;
}

.gt-desc[b-8iwih8j1fm] {
    color: var(--brand-grey);
    font-size: .875rem;
}

.gt-soon-badge[b-8iwih8j1fm] {
    margin-top: .15rem;
}

/* Chosen game type shown as a header on the form step. */
.gt-header-icon[b-8iwih8j1fm] {
    font-size: 1.5rem;
    line-height: 1;
    color: var(--brand-copper);
}
/* /Components/Pages/Games/GameCard.razor.rz.scp.css */
/* Shared game card — copper-bordered, copper-wash panel used by the Lobby and My-games. */
.game-card[b-v7j9awqot6] {
    display: flex;
    flex-direction: column;
    background: var(--brand-copper-wash);
    color: var(--brand-charcoal);
    border: 1px solid var(--brand-copper);
    border-radius: 14px;
}

.game-card-body[b-v7j9awqot6] {
    padding: .85rem 1rem;
    flex: 1 1 auto;
}

/* Header: genre logo + copper type name / game name, with a status pill (My-games) or a Private
   badge (Lobby) pinned top-right. */
.game-card-head[b-v7j9awqot6] {
    display: flex;
    align-items: flex-start;
    gap: .7rem;
    margin-bottom: .35rem;
}
.game-card-titles[b-v7j9awqot6] { margin-right: auto; min-width: 0; }
.game-card-type[b-v7j9awqot6] { font-size: 1.1rem; line-height: 1.15; margin: 0; }
.game-card-name[b-v7j9awqot6] { font-size: .82rem; color: var(--brand-grey); }
.game-genre-icon[b-v7j9awqot6] {
    color: var(--brand-charcoal);
    flex: 0 0 auto;
    font-size: 2rem;
    line-height: 1;
    display: flex;
    align-items: center;
}

/* Compact info / prize lines. */
.game-line[b-v7j9awqot6] {
    display: flex;
    align-items: center;
    font-size: .8rem;
    color: #3a3a40;
    margin-top: .35rem;
}
.game-line .bi[b-v7j9awqot6] { color: var(--brand-grey); }

/* Next-action row: the line + a compact pick chip. */
.game-next[b-v7j9awqot6] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem .6rem;
    margin-top: .35rem;
}

/* Top-right status pill — transparent, icon + coloured text only (like the pick chips). The Private
   badge (Lobby) keeps a subtle grey fill, set after so it wins over the transparent default. */
.game-pill-top[b-v7j9awqot6] { background: transparent; font-weight: 600; flex: 0 0 auto; align-self: flex-start; padding: 0; }
.game-pill-private[b-v7j9awqot6] { background: #EDEDEE; color: #555; padding: .35em .55em; }

/* Pick chips — NO fill, just icon + coloured text (owner is colour-blind: icon + text always). */
.game-chip[b-v7j9awqot6] {
    display: inline-flex;
    align-items: center;
    font-size: .72rem;
    font-weight: 600;
    white-space: nowrap;
    padding: 0;
    background: transparent;
}
.game-chip-ok[b-v7j9awqot6]   { color: var(--brand-green); }
.game-chip-need[b-v7j9awqot6] { color: #B23A2E; }

/* Footer — Rules + Join / Joined / Open game; pinned to the bottom by the body's flex-grow. */
.game-card-footer[b-v7j9awqot6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .65rem 1rem;
    border-top: 1px solid rgba(31, 31, 35, .14);
}

/* Copper action buttons (Join / Open game / Joined). */
.game-btn[b-v7j9awqot6] {
    background-color: var(--brand-copper);
    border-color: var(--brand-copper);
    color: #fff;
}
.game-btn:hover[b-v7j9awqot6], .game-btn:focus[b-v7j9awqot6], .game-btn:active[b-v7j9awqot6] {
    background-color: var(--brand-copper-2);
    border-color: var(--brand-copper-2);
    color: #fff;
}

/* Status pill colours (My-games) — text/icon only; the pill itself is transparent. */
.game-pill-in[b-v7j9awqot6]        { color: #2E6B30; }
.game-pill-elim[b-v7j9awqot6]      { color: #6B6B73; }
.game-pill-won[b-v7j9awqot6]       { color: #B5611F; }
.game-pill-nowin[b-v7j9awqot6]     { color: #34527E; }
.game-pill-cancelled[b-v7j9awqot6] { color: #B23A2E; }

.game-entry-note[b-v7j9awqot6] { color: #B23A2E; }
.game-entry-note .bi[b-v7j9awqot6] { color: #B23A2E; }
/* /Components/Pages/Games/MyGames.razor.rz.scp.css */
/* Subtle section headers for the Live / Recent / Completed groups — a thin copper vertical bar
   before a quiet uppercase label, so the groups read as distinct areas without heavy dividers. */
.section-head[b-6091g0w7pm] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 1.5rem 0 0.75rem;
}

.section-head:first-of-type[b-6091g0w7pm] {
    margin-top: 0.5rem;
}

.section-bar[b-6091g0w7pm] {
    width: 3px;
    height: 1.05rem;
    border-radius: 2px;
    background: var(--brand-copper);
    display: inline-block;
}

.section-title[b-6091g0w7pm] {
    font-size: 0.78rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--brand-grey);
}
/* /Components/Shared/MatchDisplay.razor.rz.scp.css */
/* Shared MatchDisplay control. Uses the global brand.css variables (--brand-*). Colour-blind safe: every
   state carries an icon + text; copper is reinforcement only. Fluid variant resizes to its container via CSS
   container queries. */

.md[b-f2t6ugi4zk] {
    --badge: 34px;
    --score: 1.6rem;
    --name: .95rem;
    --pad: 14px 16px;
    font-family: inherit;
    background: var(--brand-white, #fff);
    border: 1px solid var(--brand-copper-wash, #e6ddd2);
    border-radius: 12px;
    color: var(--brand-charcoal, #1F1F23);
    overflow: hidden;
}

.md-main[b-f2t6ugi4zk] { display: flex; align-items: center; gap: 10px; padding: var(--pad); }
.md-team[b-f2t6ugi4zk] { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; text-align: center; }
/* Explicit min/max as well as width/height so the badge NEVER renders at the image's intrinsic size (the badge
   endpoint serves 96px PNGs) — a flex child with only width can still overflow to its intrinsic size. */
.md-badge[b-f2t6ugi4zk] { width: var(--badge); height: var(--badge); min-width: var(--badge); max-width: var(--badge); object-fit: contain; flex: 0 0 var(--badge); }
.md-name[b-f2t6ugi4zk] { font-size: var(--name); font-weight: 600; line-height: 1.15; max-width: 100%; overflow: hidden; text-overflow: ellipsis; }
.md-centre[b-f2t6ugi4zk] { flex: 0 0 auto; min-width: 5rem; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 5px; }
.md-score[b-f2t6ugi4zk] { font-size: var(--score); font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: .01em; line-height: 1; }
.md-score.pending[b-f2t6ugi4zk] { color: var(--brand-grey, #6B6B73); font-weight: 600; }

.md-pill[b-f2t6ugi4zk] {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: .72rem; font-weight: 600;
    border: 1px solid var(--brand-copper-wash, #e6ddd2); color: var(--brand-grey, #6B6B73);
    border-radius: 20px; padding: 2px 9px; white-space: nowrap;
}
.md-pill.live[b-f2t6ugi4zk] { color: var(--brand-copper, #E07A3F); border-color: var(--brand-copper, #E07A3F); background: rgba(224, 122, 63, .10); }
.md-pill.live .dot[b-f2t6ugi4zk] { width: 6px; height: 6px; border-radius: 50%; background: var(--brand-copper, #E07A3F); animation: md-pulse-b-f2t6ugi4zk 1.1s ease-in-out infinite; }
.md-pill .ic[b-f2t6ugi4zk] { font-weight: 700; font-size: .8em; }
@keyframes md-pulse-b-f2t6ugi4zk { 0%, 100% { opacity: 1; } 50% { opacity: .3; } }
@media (prefers-reduced-motion: reduce) { .md-pill.live .dot[b-f2t6ugi4zk] { animation: none; } }

/* scorers */
.md-goals[b-f2t6ugi4zk] { display: flex; border-top: 1px dashed var(--brand-copper-wash, #e6ddd2); padding: 10px 16px 13px; gap: 24px; }
/* Both columns left-aligned so the goal lines form a straight left edge under each team's half. */
.md-goalcol[b-f2t6ugi4zk] { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; gap: 3px; text-align: left; }
.md-goal[b-f2t6ugi4zk] { font-size: .8rem; color: var(--brand-charcoal, #1F1F23); line-height: 1.3; }
.md-goal .scorer[b-f2t6ugi4zk] { font-weight: 600; }
.md-goal .min[b-f2t6ugi4zk] { color: var(--brand-grey, #6B6B73); font-variant-numeric: tabular-nums; margin-left: .25em; }

/* league-tag footer (LMS) */
.md-foot[b-f2t6ugi4zk] { font-size: .72rem; color: var(--brand-grey, #6B6B73); text-align: center; padding: 0 16px 10px; margin-top: -4px; }
/* inline-flex + centred so the 2-letter code (PL/CH/L1…) sits dead-centre. letter-spacing removed: it added a
   trailing gap only after the last letter, nudging the text visually left inside the pill. line-height:1 keeps it
   vertically centred rather than sitting high. */
.md-ltag[b-f2t6ugi4zk] { display: inline-flex; align-items: center; justify-content: center; line-height: 1; padding: .15rem .45rem; border-radius: .75rem; font-size: .62rem; font-weight: 600; background: var(--brand-grey, #6B6B73); color: #fff; margin-left: 5px; }
.md-ltag.l1[b-f2t6ugi4zk] { background: var(--brand-copper, #E07A3F); }
.md-ltag.l2[b-f2t6ugi4zk] { background: #185FA5; }

/* ---- VARIANT: Tile (compact game-card face) ---- */
.md.v-tile[b-f2t6ugi4zk] { --badge: 36px; --score: 1.05rem; --name: .8rem; --pad: 10px 12px; }
.md.v-tile .md-pill[b-f2t6ugi4zk] { font-size: .66rem; padding: 1px 7px; }

/* ---- VARIANT: Row (fixtures-list line — matches the LMS list) ---- */
.md.v-row[b-f2t6ugi4zk] { border: 0; border-bottom: 1px solid var(--brand-copper-wash, #e6ddd2); border-radius: 0; background: transparent; }
.md.v-row .md-main[b-f2t6ugi4zk] { padding: 9px 4px; gap: 8px; }
.md.v-row .md-team[b-f2t6ugi4zk] { flex-direction: row; gap: 6px; --badge: 28px; }
.md.v-row .md-team.home[b-f2t6ugi4zk] { justify-content: flex-end; text-align: right; }
.md.v-row .md-team.away[b-f2t6ugi4zk] { justify-content: flex-start; text-align: left; }
.md.v-row .md-name[b-f2t6ugi4zk] { font-size: .9rem; font-weight: 500; }
.md.v-row .md-centre[b-f2t6ugi4zk] { flex: 0 0 88px; min-width: 88px; }
.md.v-row .md-score[b-f2t6ugi4zk] { font-size: 1rem; font-weight: 600; }
.md.v-row .md-pill[b-f2t6ugi4zk] { border: 0; background: none; padding: 0; color: var(--brand-grey, #6B6B73); font-weight: 500; }
.md.v-row .md-pill.live[b-f2t6ugi4zk] { color: var(--brand-copper, #E07A3F); background: none; }
/* Goals mirror the .md-main 3-column layout (home flex:1 · 88px score spacer · away flex:1) so each column
   sits directly under its team. Home goals hug the centre (right-aligned, ending near the score); away goals
   start near the score (left-aligned) — so they never strand at the page edges on a wide desktop row. */
.md.v-row .md-goals[b-f2t6ugi4zk] { padding: 6px 4px 9px; gap: 8px; }
.md.v-row .md-goalcol[b-f2t6ugi4zk] { flex: 1 1 0; }
.md.v-row .md-goalcol.home[b-f2t6ugi4zk] { text-align: right; }
.md.v-row .md-goalcol.away[b-f2t6ugi4zk] { text-align: left; }
.md.v-row .md-goals[b-f2t6ugi4zk]::before { content: ""; order: 0; flex: 0 0 88px; }   /* spacer matching the score column */
.md.v-row .md-goalcol.home[b-f2t6ugi4zk] { order: -1; }   /* home before the spacer, away after */
.md.v-row .md-goalcol.away[b-f2t6ugi4zk] { order: 1; }

/* ---- VARIANT: Board (big single-fixture scoreboard — GS Live) ---- */
.md.v-board[b-f2t6ugi4zk] { --badge: 52px; --score: 2.3rem; --name: 1.05rem; background: var(--brand-copper-wash, #FAF0E9); }
.md.v-board .md-main[b-f2t6ugi4zk] { padding: 22px 20px 18px; gap: 14px; }
.md.v-board .md-centre[b-f2t6ugi4zk] { min-width: 6.5rem; }

/* ---- FLUID: resize to the container (container queries) ----
   The wrapper .md-host is the query context (an element can't query its own size); the .md card inside sizes
   to the space the caller gives .md-host. */
.md-host[b-f2t6ugi4zk] { container-type: inline-size; width: 100%; }
.md.v-fluid[b-f2t6ugi4zk] { --badge: 44px; --score: 1.9rem; --name: 1rem; }
@container (max-width: 440px) {
    .md.v-fluid[b-f2t6ugi4zk] { --badge: 30px; --score: 1.35rem; --name: .85rem; --pad: 11px 12px; }
    .md.v-fluid .md-goals[b-f2t6ugi4zk] { flex-direction: column; gap: 8px; }
    .md.v-fluid .md-goalcol.away[b-f2t6ugi4zk] { text-align: left; }
}
@container (max-width: 300px) {
    .md.v-fluid[b-f2t6ugi4zk] { --badge: 24px; --score: 1.1rem; --name: .76rem; }
    .md.v-fluid .md-team[b-f2t6ugi4zk] { gap: 3px; }
}
