/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-739djkm78g] {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

main[b-739djkm78g] {
    flex: 1;
}

#blazor-error-ui[b-739djkm78g] {
    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-739djkm78g] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.topbar[b-rg61plsfb0] {
    background-image: linear-gradient(90deg, rgb(5, 39, 103) 0%, #3a0647 100%);
    padding: 0.5rem 1rem;
    position: sticky;
    top: 0;
    z-index: 10;
}

.navbar-brand[b-rg61plsfb0] {
    font-size: 1.25rem;
    font-weight: 600;
    text-transform: none;
}

.navbar-nav[b-rg61plsfb0]  .nav-link {
    color: #d7d7d7;
    padding: 0.5rem 1rem;
}

.navbar-nav[b-rg61plsfb0]  .nav-link:hover {
    color: #fff;
}

.navbar-nav[b-rg61plsfb0]  a.active {
    color: #fff;
    font-weight: 600;
}

.logout-link[b-rg61plsfb0] {
    background: none;
    border: none;
    width: 100%;
    text-align: left;
}

@media (min-width: 768px) {
    .logout-link[b-rg61plsfb0] {
        width: auto;
        text-align: inherit;
    }
}

/* Flyout submenus (My Leagues -> each league -> Create Session / Sessions).
   Bootstrap's JS bundle isn't loaded in this app, so submenu open/close is
   driven entirely by Blazor state toggling the "show" class -- these rules
   just handle positioning the flyout once it's shown. */
.dropdown-submenu[b-rg61plsfb0] {
    position: relative;
}

.dropdown-submenu > .dropdown-menu[b-rg61plsfb0] {
    top: 0;
    left: 100%;
    margin-top: -0.25rem;
}

.submenu-toggle[b-rg61plsfb0] {
    background: none;
    border: none;
    color: inherit;
    padding: 0.25rem 0.5rem;
}

/* A full season can have 30+ sessions -- keep the flyout from running off the
   bottom of the screen. */
.sessions-flyout[b-rg61plsfb0] {
    max-height: 320px;
    overflow-y: auto;
}

@media (max-width: 767.98px) {
    /* The navbar collapses to a stacked list below md -- a flyout-to-the-right
       submenu would run off screen, so just indent it inline instead. */
    .dropdown-submenu > .dropdown-menu[b-rg61plsfb0] {
        position: static;
        left: 0;
        margin-left: 1rem;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-mzcemie4t6],
.components-reconnect-repeated-attempt-visible[b-mzcemie4t6],
.components-reconnect-failed-visible[b-mzcemie4t6],
.components-pause-visible[b-mzcemie4t6],
.components-resume-failed-visible[b-mzcemie4t6],
.components-rejoining-animation[b-mzcemie4t6] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-retrying[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-failed[b-mzcemie4t6],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-mzcemie4t6] {
    display: block;
}


#components-reconnect-modal[b-mzcemie4t6] {
    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-mzcemie4t6 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-mzcemie4t6 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-mzcemie4t6 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-mzcemie4t6]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-mzcemie4t6 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-mzcemie4t6 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-mzcemie4t6 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-mzcemie4t6 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-mzcemie4t6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-mzcemie4t6] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-mzcemie4t6] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-mzcemie4t6] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-mzcemie4t6] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-mzcemie4t6] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-mzcemie4t6] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-mzcemie4t6 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-mzcemie4t6] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-mzcemie4t6 {
    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/Home.razor.rz.scp.css */
/* Hero: the logo is a fixed backdrop, pinned to the same spot on screen for
   the entire page -- it never moves, scroll position or not. .home-pitch's
   actual text is a full viewport-height below it on load (off-screen until
   the visitor scrolls), then scrolls up over the logo like a curtain as they
   do.

   .home-logo uses position:fixed rather than sticky specifically so it's
   static from the very first pixel of scroll -- sticky still tracks normal
   document flow until it "catches" at its offset, which reads as the logo
   drifting upward before it locks in place. Fixed elements are removed from
   the document flow entirely, so .home-pitch doesn't need to account for the
   logo's height the way a sticky version would -- its own margin-top is
   enough on its own to push it below the initial full-viewport logo view.

   Fixed elements always stack purely by z-index against other positioned
   elements (nav bar included, itself position:sticky) rather than by DOM
   order -- the nav bar's z-index:10 vs. this element's z-index:0 is what
   keeps the nav on top, not scroll timing. */
.home-logo[b-l0gfn74exd] {
    position: fixed;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1.5rem;
    z-index: 0;
    pointer-events: none;
}

.home-logo img[b-l0gfn74exd] {
    width: 50vw;
    max-width: 700px;
    height: auto;
}

/* Sits in normal flex flow right under the logo (rather than pinned to the
   sticky box's own bottom edge) so it stays visible on load regardless of
   exactly how tall the nav bar above it renders. */
.home-scroll-cue[b-l0gfn74exd] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    color: #767676;
    font-size: 0.85rem;
    letter-spacing: 0.03em;
    animation: home-scroll-cue-bounce-b-l0gfn74exd 1.6s ease-in-out infinite;
}

.home-scroll-cue svg[b-l0gfn74exd] {
    width: 1.25rem;
    height: 1.25rem;
}

@keyframes home-scroll-cue-bounce-b-l0gfn74exd {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(0.4rem); }
}

@media (prefers-reduced-motion: reduce) {
    .home-scroll-cue[b-l0gfn74exd] {
        animation: none;
    }
}

/* Translucent + blurred rather than a solid fill, so the fixed logo stays
   visible (softened, not sharp) behind the text for the whole rest of the
   scroll, instead of getting hidden the instant .home-pitch reaches it. */
.home-pitch[b-l0gfn74exd] {
    position: relative;
    z-index: 1;
    background-color: rgba(255, 255, 255, 0.55);
    backdrop-filter: blur(6px);
    -webkit-backdrop-filter: blur(6px);
    margin-top: 100vh;
    margin-top: 100dvh;
    max-width: 60rem;
    margin-left: auto;
    margin-right: auto;
    padding: 3rem 1rem 3rem;
    text-align: center;
}

.home-tagline[b-l0gfn74exd] {
    font-size: 1.25rem;
    font-weight: 500;
    color: #333;
    max-width: 42rem;
    margin: 0 auto 2rem;
}

/* Each callout is sized to its own text -- no forced full-screen height --
   but still reveals one at a time via a sticky reveal per callout. A naive
   version of this (just .home-point { position:sticky }, no wrapper) doesn't
   work: a sticky element's "stuck" range is bounded by its own PARENT's box,
   and every .home-point's parent would otherwise be .home-pitch itself --
   the one giant container spanning all the way to the CTA button. That would
   pin the last callout in place for the *entire remaining page*, permanently
   hiding the games section and CTA behind it.

   So each callout gets its own small wrapper (.home-point-wrap) taller than
   the callout itself -- that becomes the sticky element's containing block,
   giving it a bounded "dwell" range (stick, hold while the extra wrapper
   height scrolls by, then release) before the *next* wrapper's callout does
   the same and covers it. Translucent + blurred like .home-pitch, so the
   logo keeps showing through underneath the whole stack. */
.home-point-wrap[b-l0gfn74exd] {
    position: relative;
    min-height: 50vh;
    min-height: 50dvh;
}

.home-point-wrap-last[b-l0gfn74exd] {
    min-height: 10vh;
    min-height: 10dvh;
}

.home-point[b-l0gfn74exd] {
    position: sticky;
    top: 0;
    z-index: 1;
    max-width: 34rem;
    margin: 0 auto;
    background-color: rgba(255, 255, 255, 0.9);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: 0.75rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.08);
    padding: 2.25rem 1.75rem;
    text-align: center;
}

.home-point-tint[b-l0gfn74exd] {
    background-color: rgba(245, 245, 245, 0.9);
}

.home-point h3[b-l0gfn74exd] {
    font-size: 1.4rem;
    font-weight: 600;
    margin-bottom: 0.6rem;
}

.home-point p[b-l0gfn74exd] {
    margin: 0 auto;
    color: #495057;
    font-size: 1rem;
}

.home-point-upcoming[b-l0gfn74exd] {
    border-top: 3px dashed #adb5bd;
}

.home-point-upcoming h3[b-l0gfn74exd]::after {
    content: "Planned";
    display: inline-block;
    margin-left: 0.5rem;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #6c757d;
    background-color: #eee;
    border-radius: 0.25rem;
    padding: 0.1rem 0.4rem;
    vertical-align: middle;
}

.home-section-title[b-l0gfn74exd] {
    font-size: 1.3rem;
    font-weight: 600;
    margin-bottom: 1.25rem;
}

.home-games[b-l0gfn74exd] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1.25rem;
    text-align: left;
    margin-bottom: 2.5rem;
}

@media (max-width: 992px) {
    .home-games[b-l0gfn74exd] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 700px) {
    .home-games[b-l0gfn74exd] {
        grid-template-columns: 1fr;
    }
}

/* NavLink renders its own <a> internally, so plain scoped selectors here never
   match it -- Blazor CSS isolation doesn't cascade into a child component's own
   markup without ::deep (same reason SessionSubNav.razor.css needs it for its
   NavLink pills). */
.home-games[b-l0gfn74exd]  .home-game-card {
    display: block;
    background-color: #fff;
    border: 1px solid #dee2e6;
    border-top: 3px solid #0681a1;
    border-radius: 0.5rem;
    padding: 1.1rem 1.25rem;
    color: inherit;
    text-decoration: none;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.home-games[b-l0gfn74exd]  .home-game-card:hover {
    box-shadow: 0 0.35rem 0.75rem rgba(0, 0, 0, 0.12);
    transform: translateY(-2px);
    color: inherit;
}

.home-games[b-l0gfn74exd]  .home-game-card h3 {
    font-size: 1.05rem;
    font-weight: 600;
    margin-bottom: 0.4rem;
    color: #0681a1;
}

.home-games[b-l0gfn74exd]  .home-game-card p {
    margin-bottom: 0;
    color: #495057;
    font-size: 0.9rem;
}

.home-pitch[b-l0gfn74exd]  .home-cta {
    padding: 0.6rem 2rem;
    font-weight: 600;
}
/* /Components/Pages/Leagues/CreateLeague.razor.rz.scp.css */
.setup-warning-backdrop[b-0rvrsimqyu] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1050;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 4rem;
}

.setup-warning-dialog[b-0rvrsimqyu] {
    background-color: #fff;
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
    padding: 1.25rem;
    width: 100%;
    max-width: 28rem;
}
/* /Components/Pages/Leagues/EnterScores.razor.rz.scp.css */
/* Bootstrap's .table-responsive sets overflow-x: auto, and per the CSS overflow
   spec a non-"visible" overflow-x forces the computed overflow-y to "auto" too
   -- even though nothing ever actually scrolls inside this div (it has no
   max-height, so it's always exactly as tall as the table). That silently
   makes .table-responsive itself the "nearest scrolling ancestor" that
   `position: sticky` below measures against, instead of the page. Since that
   div's own scroll offset never moves (the *page* scrolls it, not the other
   way around), sticky had nothing to react to and the header just scrolled
   away with everything else. Turning off its overflow here restores the page
   as the sticky containing block; the tradeoff is this table no longer gets
   Bootstrap's automatic horizontal scrollbar on narrow screens. */
.table-responsive[b-qqx5q89ko7] {
    overflow: visible;
}

/* Keeps the column headers in view while scrolling through a long roster.
   top matches where SessionSubNav's own sticky bar ends (59px topbar + ~67.4px
   subnav, see SessionSubNav.razor.css for the topbar/subnav offsets) so the
   header settles directly under it with no gap and no overlap, and the body
   rows scroll on underneath it. z-index sits just below the subnav's (9) so
   the subnav still wins if they ever touch. */
.table-responsive thead th[b-qqx5q89ko7] {
    position: sticky;
    top: 127px;
    z-index: 8;
    background-color: #fff;
}
/* /Components/Pages/Leagues/SessionDetail.razor.rz.scp.css */
/* Bootstrap/Bootswatch Journal tints an expanded accordion-button with the
   theme's danger-ish accent (pale red background, dark red text/border) --
   fine for a genuine warning, but "Enter a Participant" isn't one. Swap the
   expanded-state colors back to a neutral gray so it reads as a normal
   section header, not an alert. */
.entry-accordion-button:not(.collapsed)[b-uw38h8zr13] {
    background-color: var(--bs-tertiary-bg, #f5f5f5);
    color: var(--bs-body-color, #212529);
    box-shadow: inset 0 -1px 0 var(--bs-border-color, #dee2e6);
}

.entry-accordion-button:not(.collapsed)[b-uw38h8zr13]::after {
    /* Reuse the same chevron used in the collapsed state instead of
       Bootstrap's active-state icon, which is tinted to match the accent
       color being overridden above. */
    background-image: var(--bs-accordion-btn-icon);
}

/* SubmitEntries scrolls here (#enter-a-participant) after every save, via a
   plain #fragment navigation -- the browser's native anchor-scroll puts the
   target's top edge at viewport y:0, which is exactly where it'd end up
   hidden behind the two stacked sticky bars above it (.topbar, 59px, then
   .session-subnav, ~67px more). scroll-margin-top reserves that same space
   so the anchor-scroll stops with the form actually visible below both bars
   instead of tucked behind them. */
#enter-a-participant[b-uw38h8zr13] {
    scroll-margin-top: 130px;
}

/* Same modal treatment as SessionSubNav's Print Scoresheet dialog -- a
   centered card over a dimmed backdrop -- shown when the operator tries to
   leave the currently-viewed event (or step) with its payout still
   unaccepted. */
.setup-warning-backdrop[b-uw38h8zr13] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1050;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 4rem;
}

.setup-warning-dialog[b-uw38h8zr13] {
    background-color: #fff;
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
    padding: 1.25rem;
    width: 100%;
    max-width: 28rem;
}
/* /Components/Pages/Leagues/ViewBrackets.razor.rz.scp.css */
.bracket-filter[b-bgud20wod6] {
    display: flex;
    align-items: center;
}

.bracket-filter select[b-bgud20wod6] {
    max-width: 18rem;
}

.bracket-nav[b-bgud20wod6] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.bracket-nav-btn[b-bgud20wod6] {
    flex: 0 0 auto;
    font-size: 1.25rem;
    line-height: 1;
    padding: 0.5rem 0.9rem;
}

.bracket-sheet[b-bgud20wod6] {
    flex: 1 1 auto;
    min-width: 0;
    overflow-x: auto;
}

.bracket-sheet-header[b-bgud20wod6] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.5rem;
}

.bracket-sheet-title[b-bgud20wod6] {
    font-weight: 600;
    font-size: 1.05rem;
}

.bracket-sheet-count[b-bgud20wod6] {
    color: #6c757d;
    font-size: 0.9rem;
}

/* Sits above the final round's own column (see ViewBrackets.razor) rather
   than as a sheet-wide banner -- the "Round N" title/matches below it are the
   same column width, so this naturally stays within that column. */
.bracket-round-results[b-bgud20wod6] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    margin-bottom: 0.5rem;
    font-size: 0.95rem;
}

/* Sits below whichever round's matches it explains (see ViewBrackets.razor),
   inside that same .bracket-round column, so it wraps within that column's
   width instead of spanning the whole sheet. */
.bracket-tiebreak-note[b-bgud20wod6] {
    margin: 0.5rem 0 0;
    font-size: 0.8rem;
    color: #495057;
    font-style: italic;
}

.bracket-tree[b-bgud20wod6] {
    display: flex;
    align-items: stretch;
    gap: 2.5rem;
    padding-bottom: 0.5rem;
}

.bracket-round[b-bgud20wod6] {
    display: flex;
    flex-direction: column;
    min-width: 15rem;
}

.bracket-round-title[b-bgud20wod6] {
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    margin-bottom: 0.5rem;
    white-space: nowrap;
}

.bracket-matches[b-bgud20wod6] {
    display: flex;
    flex-direction: column;
    justify-content: space-around;
    flex: 1;
    gap: 1.5rem;
}

.bracket-match[b-bgud20wod6] {
    position: relative;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    background: #fff;
}

.bracket-seat[b-bgud20wod6] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.35rem 0.6rem;
    font-size: 0.9rem;
}

.bracket-seat:first-child[b-bgud20wod6] {
    border-bottom: 1px solid #eee;
}

.bracket-name[b-bgud20wod6] {
    font-weight: 500;
    flex: 1 1 auto;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bracket-name-highlight[b-bgud20wod6] {
    background-color: #fff3cd;
    border-radius: 0.2rem;
    padding: 0 0.25rem;
    margin: 0 -0.25rem;
}

.bracket-score[b-bgud20wod6] {
    color: #495057;
    font-size: 0.82rem;
    white-space: nowrap;
}

.bracket-bye[b-bgud20wod6],
.bracket-tbd[b-bgud20wod6] {
    color: #adb5bd;
    font-style: italic;
    padding: 0.35rem 0.6rem;
}

.bracket-seat-tbd[b-bgud20wod6] {
    padding: 0;
}

/* Elbow connector from each match's right edge into the next round -- only
   visible once round 2+ exists (round-advancement isn't built yet), but costs
   nothing to have ready for when it is. */
.bracket-round:not(:last-child) .bracket-match[b-bgud20wod6]::after {
    content: "";
    position: absolute;
    top: 50%;
    right: -1.25rem;
    width: 1.25rem;
    height: 1px;
    background: #adb5bd;
}
/* /Components/Pages/Leagues/ViewEliminator.razor.rz.scp.css */
.eliminator-game-picker[b-k1knkr669i] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.eliminator-carousel[b-k1knkr669i] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.eliminator-nav-btn[b-k1knkr669i] {
    flex: 0 0 auto;
    font-size: 1.25rem;
    line-height: 1;
    padding: 0.5rem 0.9rem;
}

.eliminator-game[b-k1knkr669i] {
    flex: 1 1 auto;
    min-width: 0;
}

.eliminator-game-header[b-k1knkr669i] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.5rem;
}

.eliminator-game-title[b-k1knkr669i] {
    font-weight: 600;
    font-size: 1.05rem;
}

.eliminator-game-count[b-k1knkr669i] {
    color: #6c757d;
    font-size: 0.9rem;
}

.eliminator-table[b-k1knkr669i] {
    max-width: 40rem;
}

.eliminator-cut-line-row td[b-k1knkr669i] {
    padding: 0.35rem 0;
    border: none;
}

/* Real CSS dotted borders here, unlike EliminatorPdfGenerator's PDF version --
   QuestPDF's public API has no dashed/dotted line support (see that file's own
   remarks), but plain CSS does, so the on-screen cut line doesn't need the
   repeated-character workaround. */
.eliminator-cut-line[b-k1knkr669i] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.eliminator-cut-line-leader[b-k1knkr669i] {
    flex: 1 1 auto;
    border-top: 2px dotted #6c757d;
}

.eliminator-cut-line-label[b-k1knkr669i] {
    flex: 0 0 auto;
    font-weight: 600;
    font-size: 0.85rem;
    color: #495057;
    white-space: nowrap;
}
/* /Components/Pages/Leagues/ViewMysteryScore.razor.rz.scp.css */
.mysteryscore-table[b-azrpw7qvej] {
    max-width: 40rem;
}
/* /Components/Pages/Leagues/ViewSidePots.razor.rz.scp.css */
.sidepot-event-picker[b-qjv48g2lxq],
.sidepot-game-picker[b-qjv48g2lxq] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.sidepot-carousel[b-qjv48g2lxq] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.sidepot-nav-btn[b-qjv48g2lxq] {
    flex: 0 0 auto;
    font-size: 1.25rem;
    line-height: 1;
    padding: 0.5rem 0.9rem;
}

.sidepot-game[b-qjv48g2lxq] {
    flex: 1 1 auto;
    min-width: 0;
}

.sidepot-game-header[b-qjv48g2lxq] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 0.5rem;
}

.sidepot-game-title[b-qjv48g2lxq] {
    font-weight: 600;
    font-size: 1.05rem;
}

.sidepot-game-count[b-qjv48g2lxq] {
    color: #6c757d;
    font-size: 0.9rem;
}

.sidepot-table[b-qjv48g2lxq] {
    max-width: 40rem;
}

.sidepot-separator-row td[b-qjv48g2lxq],
.sidepot-cut-line-row td[b-qjv48g2lxq] {
    padding: 0.35rem 0;
    border: none;
}

/* Real CSS dotted borders here, unlike SidePotPdfGenerator's PDF version --
   QuestPDF's public API has no dashed/dotted line support (see that file's own
   remarks), but plain CSS does, so the on-screen separator/cut line don't need
   the repeated-character workaround -- same reasoning as ViewEliminator.razor.css. */
.sidepot-separator[b-qjv48g2lxq],
.sidepot-cut-line[b-qjv48g2lxq] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.sidepot-separator-leader[b-qjv48g2lxq],
.sidepot-cut-line-leader[b-qjv48g2lxq] {
    flex: 1 1 auto;
    border-top: 2px dotted #6c757d;
}

.sidepot-separator-label[b-qjv48g2lxq],
.sidepot-cut-line-label[b-qjv48g2lxq] {
    flex: 0 0 auto;
    font-weight: 600;
    font-size: 0.85rem;
    color: #495057;
    white-space: nowrap;
}
/* /Components/Shared/PageTour.razor.rz.scp.css */
.tour-help-backdrop[b-hoyk25clss] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1050;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 4rem;
}

.tour-help-dialog[b-hoyk25clss] {
    background-color: #fff;
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
    padding: 1.25rem;
    width: 100%;
    max-width: 28rem;
}
/* /Components/Shared/SessionSubNav.razor.rz.scp.css */
.session-subnav[b-y2007cgjos] {
    background-color: #f5f5f5;
    border-bottom: 1px solid #dee2e6;
    padding: 0.3rem 1rem;
    /* Locks in place right below the topbar (which is sticky at top:0) so the
       two nav bars stay stacked and visible together while the page content
       underneath scrolls -- like a frozen header row in a spreadsheet. */
    position: sticky;
    top: 59px;
    z-index: 9;
    /* Bleeds out to the same edge-to-edge width as the topbar above it and
       butts directly against it, with no gap and no side inset -- cancels
       the page's own top padding (app.css .content: 1.1rem) and side padding
       (MainLayout's px-4: 1.5rem) so the two bars read as one continuous
       stacked header instead of an indented card floating below the navbar. */
    margin: -1.1rem -1.5rem 0.5rem;
}

.session-subnav-labels[b-y2007cgjos] {
    font-weight: 600;
    margin-bottom: 0.15rem;
}

.session-subnav-sep[b-y2007cgjos] {
    margin: 0 0.35rem;
    opacity: 0.5;
}

.session-subnav-pills .nav-link[b-y2007cgjos],
.session-subnav-pills[b-y2007cgjos]  .nav-link {
    padding: 0.2rem 0.6rem;
}

.session-subnav-pills .nav-link.disabled[b-y2007cgjos] {
    color: #adb5bd;
}

/* A plain <button>, not an <a href="#">, on purpose -- an anchor with a
   fragment-only href here got hijacked by Blazor's enhanced-navigation script
   into a full page navigation instead of running @onclick, even with
   @onclick:preventDefault set. A <button> has no default navigation behavior
   at all, so there's nothing for it to intercept. Just strips the browser's
   default button chrome so it reads identically to the other nav-link pills. */
.nav-link-button[b-y2007cgjos] {
    background: none;
    border: none;
    font: inherit;
}

/* Flyout submenu (Print -> Entry Sheets -> Blank/Bowler Sheets). Duplicated
   from NavMenu.razor.css rather than shared -- Blazor's scoped-CSS isolation
   means a rule defined there doesn't apply to markup rendered by this
   component. Same positioning-only rules, same reasoning: Bootstrap's JS
   bundle isn't loaded, so open/close is Blazor state toggling "show". */
.dropdown-submenu[b-y2007cgjos] {
    position: relative;
}

.dropdown-submenu > .dropdown-menu[b-y2007cgjos] {
    top: 0;
    left: 100%;
    margin-top: -0.25rem;
}

@media (max-width: 767.98px) {
    .dropdown-submenu > .dropdown-menu[b-y2007cgjos] {
        position: static;
        left: 0;
        margin-left: 1rem;
    }
}

/* Invisible click-catcher behind the nav bar while any dropdown is open (see
   the razor file's CloseAllMenus) -- .session-subnav itself is z-index:9
   (sticky header) and stays above this, so the nav buttons and any open
   dropdown/submenu remain directly clickable; everything else on the page
   sits below this and a click there closes every open menu instead. z-index
   1 keeps it above ordinary static page content (z-index:auto) without
   coming anywhere near the print dialog's modal backdrop (1050). */
.nav-dropdown-backdrop[b-y2007cgjos] {
    position: fixed;
    inset: 0;
    z-index: 1;
    background: transparent;
}

/* No Bootstrap JS bundle in this app (established convention) -- this modal is
   plain Blazor conditional rendering + CSS, not data-bs-toggle. z-index 1050
   matches Bootstrap's own .modal convention so it reliably sits above the
   sticky topbar (10) and subnav (9). */
.print-dialog-backdrop[b-y2007cgjos] {
    position: fixed;
    inset: 0;
    background-color: rgba(0, 0, 0, 0.5);
    z-index: 1050;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding-top: 4rem;
}

.print-dialog[b-y2007cgjos] {
    background-color: #fff;
    border-radius: 0.5rem;
    box-shadow: 0 0.5rem 1.5rem rgba(0, 0, 0, 0.3);
    padding: 1.25rem;
    width: 100%;
    max-width: 26rem;
}
