/* /Components/Evaluations/EvaluationQuestionRenderer.razor.rz.scp.css */
.eval-help-block[b-6zmrzgpx51] {
    background: transparent;
}

[b-6zmrzgpx51] .eval-help-rich {
    color: var(--mud-palette-text-primary);
    font-size: 0.875rem;
    line-height: 1.4;
}

[b-6zmrzgpx51] .eval-help-rich p {
    margin: 0 0 0.4rem 0;
}

[b-6zmrzgpx51] .eval-help-rich p:last-child {
    margin-bottom: 0;
}

/* Quill 2.x emits indented list items as flat <li class="ql-indent-N"> siblings, not nested <ol>/<ul>.
   These rules mirror Quill's snow.css counter scheme so guidance renders nested outside the editor. */
[b-6zmrzgpx51] .eval-help-rich ol,
[b-6zmrzgpx51] .eval-help-rich ul {
    padding-inline-start: 0;
    margin: 0.25rem 0 0.5rem 0;
    list-style: none;
    counter-reset: list-0 list-1 list-2 list-3;
}

[b-6zmrzgpx51] .eval-help-rich li {
    margin-bottom: 0.15rem;
    position: relative;
    padding-left: 1.5em;
}

[b-6zmrzgpx51] .eval-help-rich ol > li {
    counter-increment: list-0;
    counter-reset: list-1 list-2 list-3;
}

[b-6zmrzgpx51] .eval-help-rich ol > li::before {
    content: counter(list-0, decimal) ". ";
    position: absolute;
    left: 0;
    width: 1.5em;
}

[b-6zmrzgpx51] .eval-help-rich ol > li.ql-indent-1 {
    counter-increment: list-1;
    counter-reset: list-2 list-3;
    padding-left: 3em;
}
[b-6zmrzgpx51] .eval-help-rich ol > li.ql-indent-1::before {
    content: counter(list-1, lower-alpha) ". ";
    left: 1.5em;
}

[b-6zmrzgpx51] .eval-help-rich ol > li.ql-indent-2 {
    counter-increment: list-2;
    counter-reset: list-3;
    padding-left: 4.5em;
}
[b-6zmrzgpx51] .eval-help-rich ol > li.ql-indent-2::before {
    content: counter(list-2, lower-roman) ". ";
    left: 3em;
}

[b-6zmrzgpx51] .eval-help-rich ol > li.ql-indent-3 {
    counter-increment: list-3;
    padding-left: 6em;
}
[b-6zmrzgpx51] .eval-help-rich ol > li.ql-indent-3::before {
    content: counter(list-3, decimal) ". ";
    left: 4.5em;
}

[b-6zmrzgpx51] .eval-help-rich ul > li::before {
    content: "\2022";
    position: absolute;
    left: 0;
    width: 1.5em;
}
[b-6zmrzgpx51] .eval-help-rich ul > li.ql-indent-1 {
    padding-left: 3em;
}
[b-6zmrzgpx51] .eval-help-rich ul > li.ql-indent-1::before {
    content: "\25E6";
    left: 1.5em;
}
[b-6zmrzgpx51] .eval-help-rich ul > li.ql-indent-2 {
    padding-left: 4.5em;
}
[b-6zmrzgpx51] .eval-help-rich ul > li.ql-indent-2::before {
    content: "\25AA";
    left: 3em;
}
[b-6zmrzgpx51] .eval-help-rich ul > li.ql-indent-3 {
    padding-left: 6em;
}
[b-6zmrzgpx51] .eval-help-rich ul > li.ql-indent-3::before {
    content: "\2022";
    left: 4.5em;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-x3wa80ksc2] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-x3wa80ksc2] {
    flex: 1;
}

.sidebar[b-x3wa80ksc2] {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.top-row[b-x3wa80ksc2] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-x3wa80ksc2]  a, .top-row[b-x3wa80ksc2]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-x3wa80ksc2]  a:hover, .top-row[b-x3wa80ksc2]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-x3wa80ksc2]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-x3wa80ksc2] {
        justify-content: space-between;
    }

    .top-row[b-x3wa80ksc2]  a, .top-row[b-x3wa80ksc2]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-x3wa80ksc2] {
        flex-direction: row;
    }

    .sidebar[b-x3wa80ksc2] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-x3wa80ksc2] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-x3wa80ksc2]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-x3wa80ksc2], article[b-x3wa80ksc2] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

[b-x3wa80ksc2] .appbar-search-field .mud-input-outlined .mud-input-outlined-border {
    border-color: rgba(255,255,255,0.4) !important;
}

[b-x3wa80ksc2] .appbar-search-field .mud-input-outlined:hover .mud-input-outlined-border {
    border-color: rgba(255,255,255,0.7) !important;
}

[b-x3wa80ksc2] .appbar-search-field .mud-input-slot input::placeholder {
    color: rgba(255,255,255,0.55);
}

[b-x3wa80ksc2] .appbar-search-field .mud-input-adornment {
    color: rgba(255,255,255,0.7);
}

[b-x3wa80ksc2] .appbar-search-field .mud-icon-button {
    color: rgba(255,255,255,0.7);
}

#blazor-error-ui[b-x3wa80ksc2] {
    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-x3wa80ksc2] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-ui5uxtlj81] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: white;
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}

.navbar-toggler:checked[b-ui5uxtlj81] {
    background-color: rgba(255, 255, 255, 0.5);
}

.top-row[b-ui5uxtlj81] {
    min-height: 3.5rem;
    background-color: rgba(0,0,0,0.4);
}

.navbar-brand[b-ui5uxtlj81] {
    font-size: 1.1rem;
}

.bi[b-ui5uxtlj81] {
    display: inline-block;
    position: relative;
    width: 1.25rem;
    height: 1.25rem;
    margin-right: 0.75rem;
    top: -1px;
    background-size: cover;
}

.bi-house-door-fill-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-house-door-fill' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 14.5v-3.505c0-.245.25-.495.5-.495h2c.25 0 .5.25.5.5v3.5a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5v-7a.5.5 0 0 0-.146-.354L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293L8.354 1.146a.5.5 0 0 0-.708 0l-6 6A.5.5 0 0 0 1.5 7.5v7a.5.5 0 0 0 .5.5h4a.5.5 0 0 0 .5-.5Z'/%3E%3C/svg%3E");
}

.bi-plus-square-fill-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-plus-square-fill' viewBox='0 0 16 16'%3E%3Cpath d='M2 0a2 2 0 0 0-2 2v12a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V2a2 2 0 0 0-2-2H2zm6.5 4.5v3h3a.5.5 0 0 1 0 1h-3v3a.5.5 0 0 1-1 0v-3h-3a.5.5 0 0 1 0-1h3v-3a.5.5 0 0 1 1 0z'/%3E%3C/svg%3E");
}

.bi-list-nested-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath fill-rule='evenodd' d='M4.5 11.5A.5.5 0 0 1 5 11h10a.5.5 0 0 1 0 1H5a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 3 7h10a.5.5 0 0 1 0 1H3a.5.5 0 0 1-.5-.5zm-2-4A.5.5 0 0 1 1 3h10a.5.5 0 0 1 0 1H1a.5.5 0 0 1-.5-.5z'/%3E%3C/svg%3E");
}

.bi-lock-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-list-nested' viewBox='0 0 16 16'%3E%3Cpath d='M8 1a2 2 0 0 1 2 2v4H6V3a2 2 0 0 1 2-2zm3 6V3a3 3 0 0 0-6 0v4a2 2 0 0 0-2 2v5a2 2 0 0 0 2 2h6a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2zM5 8h6a1 1 0 0 1 1 1v5a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V9a1 1 0 0 1 1-1z'/%3E%3C/svg%3E");
}

.bi-person-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person' viewBox='0 0 16 16'%3E%3Cpath d='M8 8a3 3 0 1 0 0-6 3 3 0 0 0 0 6Zm2-3a2 2 0 1 1-4 0 2 2 0 0 1 4 0Zm4 8c0 1-1 1-1 1H3s-1 0-1-1 1-4 6-4 6 3 6 4Zm-1-.004c-.001-.246-.154-.986-.832-1.664C11.516 10.68 10.289 10 8 10c-2.29 0-3.516.68-4.168 1.332-.678.678-.83 1.418-.832 1.664h10Z'/%3E%3C/svg%3E");
}

.bi-person-badge-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person-badge' viewBox='0 0 16 16'%3E%3Cpath d='M6.5 2a.5.5 0 0 0 0 1h3a.5.5 0 0 0 0-1h-3zM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0z'/%3E%3Cpath d='M4.5 0A2.5 2.5 0 0 0 2 2.5V14a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2V2.5A2.5 2.5 0 0 0 11.5 0h-7zM3 2.5A1.5 1.5 0 0 1 4.5 1h7A1.5 1.5 0 0 1 13 2.5v10.795a4.2 4.2 0 0 0-.776-.492C11.392 12.387 10.063 12 8 12s-3.392.387-4.224.803a4.2 4.2 0 0 0-.776.492V2.5z'/%3E%3C/svg%3E");
}

.bi-person-fill-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-person-fill' viewBox='0 0 16 16'%3E%3Cpath d='M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1H3Zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6Z'/%3E%3C/svg%3E");
}

.bi-arrow-bar-left-nav-menu[b-ui5uxtlj81] {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='white' class='bi bi-arrow-bar-left' viewBox='0 0 16 16'%3E%3Cpath d='M12.5 15a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 1 0v13a.5.5 0 0 1-.5.5ZM10 8a.5.5 0 0 1-.5.5H3.707l2.147 2.146a.5.5 0 0 1-.708.708l-3-3a.5.5 0 0 1 0-.708l3-3a.5.5 0 1 1 .708.708L3.707 7.5H9.5a.5.5 0 0 1 .5.5Z'/%3E%3C/svg%3E");
}

.nav-item[b-ui5uxtlj81] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-ui5uxtlj81] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-ui5uxtlj81] {
        padding-bottom: 1rem;
    }

    .nav-item[b-ui5uxtlj81]  .nav-link {
        color: #d7d7d7;
        background: none;
        border: none;
        border-radius: 4px;
        height: 3rem;
        display: flex;
        align-items: center;
        line-height: 3rem;
        width: 100%;
    }

.nav-item[b-ui5uxtlj81]  a.active {
    background-color: rgba(255,255,255,0.37);
    color: white;
}

.nav-item[b-ui5uxtlj81]  .nav-link:hover {
    background-color: rgba(255,255,255,0.1);
    color: white;
}

.nav-scrollable[b-ui5uxtlj81] {
    display: none;
}

.navbar-toggler:checked ~ .nav-scrollable[b-ui5uxtlj81] {
    display: block;
}

@media (min-width: 641px) {
    .navbar-toggler[b-ui5uxtlj81] {
        display: none;
    }

    .nav-scrollable[b-ui5uxtlj81] {
        /* Never collapse the sidebar for wide screens */
        display: block;

        /* Allow sidebar to scroll for tall menus */
        height: calc(100vh - 3.5rem);
        overflow-y: auto;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-voynxiygyk],
.components-reconnect-repeated-attempt-visible[b-voynxiygyk],
.components-reconnect-failed-visible[b-voynxiygyk],
.components-reconnect-updated-visible[b-voynxiygyk],
.components-pause-visible[b-voynxiygyk],
.components-resume-failed-visible[b-voynxiygyk],
.components-rejoining-animation[b-voynxiygyk] {
    display: none;
}

/* "components-reconnect-updated" is set by ReconnectModal.razor.js, not by Blazor: it is the
   terminal state where we've decided to reload (server came back but the circuit is gone —
   normally a deployment). The JS clears Blazor's own state classes first, so this rule owns
   the dialog on its own. */
#components-reconnect-modal.components-reconnect-updated[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-updated .components-reconnect-updated-visible[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-updated .components-rejoining-animation[b-voynxiygyk] {
    display: block;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-retrying[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-failed[b-voynxiygyk],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-voynxiygyk] {
    display: block;
}


#components-reconnect-modal[b-voynxiygyk] {
    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-voynxiygyk 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-voynxiygyk 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-voynxiygyk 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-voynxiygyk]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-voynxiygyk 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-voynxiygyk {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-voynxiygyk {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-voynxiygyk {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-voynxiygyk] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-voynxiygyk] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-voynxiygyk] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-voynxiygyk] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-voynxiygyk] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-voynxiygyk] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-voynxiygyk] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-voynxiygyk 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-voynxiygyk] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-voynxiygyk {
    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/PrintableUserList.razor.rz.scp.css */
.users-print-page[b-gqcbsapx4l] {
    max-width: 960px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-gqcbsapx4l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.header-left[b-gqcbsapx4l] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-gqcbsapx4l] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-gqcbsapx4l] {
    display: flex;
    gap: 8px;
}

.print-only[b-gqcbsapx4l] {
    display: none;
}

.print-header[b-gqcbsapx4l] {
    padding: 8px 0;
    border-bottom: 2px solid var(--mud-palette-primary, #B3A369);
    margin-bottom: 12px;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
}

.print-date[b-gqcbsapx4l] {
    font-size: 0.85rem;
    color: #555;
}

.section-header[b-gqcbsapx4l] {
    background: var(--mud-palette-primary, #B3A369);
    color: #000;
    font-weight: 700;
    font-size: 0.95rem;
    text-transform: uppercase;
    padding: 6px 12px;
    letter-spacing: 0.08em;
    margin-top: 16px;
}

.users-table[b-gqcbsapx4l] {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.col-name[b-gqcbsapx4l]     { width: 160px; }
.col-email[b-gqcbsapx4l]    { width: 220px; }
.col-staff[b-gqcbsapx4l]    { }
.col-security[b-gqcbsapx4l] { width: 130px; }

.col-header-row th[b-gqcbsapx4l] {
    font-size: 0.7rem;
    color: #888;
    text-transform: uppercase;
    padding: 4px 8px;
    text-align: left;
    font-weight: 600;
    border-bottom: 1px solid #e0e0e0;
}

.user-row td[b-gqcbsapx4l] {
    font-size: 0.85rem;
    padding: 4px 8px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: middle;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.user-row td[b-gqcbsapx4l] {
    background: #fff;
}

.name-cell[b-gqcbsapx4l] {
    font-weight: 600;
}

.email-cell[b-gqcbsapx4l] {
    color: #333;
}

.staff-cell[b-gqcbsapx4l],
.security-cell[b-gqcbsapx4l] {
    white-space: nowrap;
}

/* /Components/Pages/Boards/BoardCard.razor.rz.scp.css */
.board-card[b-rwelpjjjat] {
    position: relative;
    background: var(--mud-palette-surface);
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 5px;
    padding: 6px 8px;
    margin-bottom: 6px;
    user-select: none;
    transition: box-shadow 0.15s ease;
}

.board-card:hover[b-rwelpjjjat] {
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.18);
}

/* The whole card body is a link to the player profile (opens in a new tab).
   draggable="false" on the anchor means the body never starts a drag — only the
   grip handle does (see site.js). */
.board-card-link[b-rwelpjjjat] {
    display: block;
    color: inherit;
    text-decoration: none;
    cursor: pointer;
}

/* Top-right cluster: drag grip + remove button, on one line. */
.board-card-actions[b-rwelpjjjat] {
    position: absolute;
    top: 2px;
    right: 2px;
    z-index: 2;
    display: flex;
    align-items: center;
    gap: 2px;
}

.board-drag-handle[b-rwelpjjjat] {
    cursor: grab;
    color: var(--mud-palette-text-secondary);
}

.board-drag-handle:active[b-rwelpjjjat] {
    cursor: grabbing;
}

/* Reserve space on the name row so it never slides under the top-right action
   cluster. Only the name line collides with it — the sub row below stays full
   width so the status icons can pin to the card's right edge. */
.board-card-editable .board-card-name[b-rwelpjjjat] {
    padding-right: 42px;
}

.board-card-head[b-rwelpjjjat] {
    display: flex;
    align-items: flex-start;
    gap: 6px;
}

.board-card-photo[b-rwelpjjjat] {
    width: 34px;
    height: 42px;
    object-fit: cover;
    object-position: top;
    border-radius: 4px;
    flex-shrink: 0;
}

.board-card-photo-empty[b-rwelpjjjat] {
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--mud-palette-background-grey);
}

.board-card-headinfo[b-rwelpjjjat] {
    flex: 1 1 auto;
    min-width: 0;
}

.board-card-name[b-rwelpjjjat] {
    font-weight: 700;
    font-size: 0.78rem;
    line-height: 1.1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.board-card-jersey[b-rwelpjjjat] {
    color: var(--mud-palette-primary);
    margin-right: 3px;
}

.board-card-sub[b-rwelpjjjat] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 3px;
    flex-wrap: wrap;
}

.board-card-chip[b-rwelpjjjat] {
    font-size: 0.6rem;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 8px;
    line-height: 1.3;
    text-transform: uppercase;
    white-space: nowrap;
}

/* Status icons (medical + scholarship) cluster tightly at the far right of the sub row. */
.board-card-statusicons[b-rwelpjjjat] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    flex: none;
}

.board-card-medstatus[b-rwelpjjjat],
.board-card-aid[b-rwelpjjjat] {
    display: inline-flex;
    align-items: center;
}

.board-card-remove[b-rwelpjjjat] {
    flex: none;
}

.board-card-rows[b-rwelpjjjat] {
    margin-top: 5px;
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.board-card-row[b-rwelpjjjat] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 6px;
    border-top: 1px solid var(--mud-palette-lines-default);
    padding-top: 1px;
}

.board-card-lbl[b-rwelpjjjat] {
    font-size: 0.55rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
    flex-shrink: 0;
}

.board-card-val[b-rwelpjjjat] {
    font-size: 0.68rem;
    font-weight: 600;
    text-align: right;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
/* /Components/Pages/Evaluations/FillEvaluation.razor.rz.scp.css */
/* Make the currently-selected player in the left-hand navigation pop more.
   Default MudList selected shading is too subtle to spot in a long list. */
[b-065xjflg5c] .fill-eval-player-list .mud-selected-item,
[b-065xjflg5c] .fill-eval-player-list .mud-list-item-clickable.mud-selected-item,
[b-065xjflg5c] .fill-eval-player-list .mud-list-item.mud-selected-item {
    background-color: rgba(186, 155, 55, 0.55) !important; /* UCF gold tint */
    border-left: 4px solid var(--mud-palette-primary);
}

[b-065xjflg5c] .fill-eval-player-list .mud-selected-item:hover,
[b-065xjflg5c] .fill-eval-player-list .mud-list-item-clickable.mud-selected-item:hover {
    background-color: rgba(186, 155, 55, 0.65) !important;
}

/* Bold + black name only when this row is selected */
[b-065xjflg5c] .fill-eval-player-list .mud-selected-item .fill-eval-player-name {
    color: #000 !important;
    font-weight: 700 !important;
}
/* /Components/Pages/Pff/PffGameDetail.razor.rz.scp.css */
/* ──── Game hero header ──── */
.game-hero[b-u1cc18hzjd] {
    position: relative;
    background: #000;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 0;
}

/* PFF website launcher, pinned bottom-LEFT opposite the game id. Sized to sit quietly on the
   hero's black rather than compete with the score, but a real target with a border and a hover
   state — it leaves the app, so it should not read as body text. */
.game-hero-pff[b-u1cc18hzjd] {
    position: absolute;
    left: 0.6rem;
    bottom: 0.35rem;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    padding: 2px 9px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, 0.35);
    background: rgba(255, 255, 255, 0.08);
    color: rgba(255, 255, 255, 0.85);
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-decoration: none;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.game-hero-pff:hover[b-u1cc18hzjd] {
    background: rgba(255, 255, 255, 0.18);
    border-color: rgba(255, 255, 255, 0.65);
    color: #fff;
}

/* Small PFF game ID in the bottom-right corner, for troubleshooting / auditing. */
.game-hero-pffid[b-u1cc18hzjd] {
    position: absolute;
    right: 0.6rem;
    bottom: 0.35rem;
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    color: rgba(255, 255, 255, 0.35);
    pointer-events: none;
}

.game-hero-content[b-u1cc18hzjd] {
    display: flex;
    align-items: stretch;
    justify-content: center;
    gap: 1rem;
    padding: 1rem 1.5rem;
}

.game-hero-team[b-u1cc18hzjd] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 1rem;
    border-radius: 8px;
}

.game-hero-team.away[b-u1cc18hzjd] { justify-content: flex-end; text-align: right; }
.game-hero-team.home[b-u1cc18hzjd] { justify-content: flex-start; text-align: left; }

/* Logo chip — a white circle keeps dark logos visible on the black hero; the logo is contained
   with padding so it never touches the edge. Works for any logo without per-team color logic. */
.game-hero-logo[b-u1cc18hzjd] {
    flex: none;
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: #fff;
    padding: 6px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.35);
}

.game-hero-logo img[b-u1cc18hzjd] {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

.game-hero-logo-fallback[b-u1cc18hzjd] {
    background: #222;
    color: var(--mud-palette-primary);
    font-weight: 700;
    font-size: 1rem;
}

.game-hero-team-info[b-u1cc18hzjd] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.game-hero-name[b-u1cc18hzjd] {
    font-size: 1.25rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.15;
}

.game-hero-record[b-u1cc18hzjd] {
    font-size: 0.78rem;
    color: rgba(255, 255, 255, 0.6);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Center column: big away score · line score · big home score. */
.game-hero-center[b-u1cc18hzjd] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    flex: 0 0 auto;
}

.game-hero-score-val[b-u1cc18hzjd] {
    font-size: 2.6rem;
    font-weight: 800;
    color: rgba(255, 255, 255, 0.85);
    line-height: 1;
    min-width: 2.5rem;
    text-align: center;
}

.game-hero-score-val.winner[b-u1cc18hzjd] { color: var(--mud-palette-primary); }

.game-hero-linescore[b-u1cc18hzjd] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.3rem;
}

.game-hero-status[b-u1cc18hzjd] {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: rgba(255, 255, 255, 0.85);
}

/* Compact per-quarter grid, ESPN-style. Muted quarter headers; white cells; bold total column. */
.ls-table[b-u1cc18hzjd] {
    border-collapse: collapse;
    color: rgba(255, 255, 255, 0.9);
    font-size: 0.78rem;
}

.ls-table th[b-u1cc18hzjd] {
    font-weight: 600;
    color: rgba(255, 255, 255, 0.5);
    text-align: center;
    padding: 0 0.45rem;
    min-width: 1.1rem;
}

.ls-table td[b-u1cc18hzjd] {
    text-align: center;
    padding: 0.05rem 0.45rem;
}

.ls-table .ls-abbr[b-u1cc18hzjd] {
    text-align: left;
    font-weight: 700;
    color: #fff;
    padding-right: 0.6rem;
}

.ls-table .ls-total[b-u1cc18hzjd] {
    font-weight: 800;
    color: #fff;
    border-left: 1px solid rgba(255, 255, 255, 0.18);
}

/* On narrow screens the per-quarter grid would crowd the scores — drop it and keep
   the big final score + status; the full grid is still on the Scoring tab. */
@media (max-width: 680px) {
    .game-hero-linescore .ls-table[b-u1cc18hzjd] { display: none; }
    .game-hero-name[b-u1cc18hzjd] { font-size: 1.05rem; }
    .game-hero-content[b-u1cc18hzjd] { gap: 0.5rem; padding: 0.75rem; }
    .game-hero-center[b-u1cc18hzjd] { gap: 0.5rem; }
}

.game-hero-sub[b-u1cc18hzjd] {
    text-align: center;
    color: rgba(255, 255, 255, 0.6);
    font-size: 0.8rem;
    padding: 0 1.5rem 0.6rem;
}

.game-hero-accent[b-u1cc18hzjd] {
    height: 4px;
    background: linear-gradient(90deg, var(--mud-palette-primary-darken), var(--mud-palette-primary), var(--mud-palette-primary-lighten));
}

/* ──── Action bar (back + prev/next) ──── */
.game-detail-actionbar[b-u1cc18hzjd] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.25rem 0;
}

/* ──── Team comparison rows ──── */
.cmp-row[b-u1cc18hzjd] {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 0.75rem;
    padding: 0.3rem 0;
}

.cmp-val[b-u1cc18hzjd] {
    font-weight: 700;
    font-size: 0.95rem;
    white-space: nowrap;
}

/* Push each team's number out toward its end of the row, away from the centered label. */
.cmp-val.away[b-u1cc18hzjd] { text-align: left; }
.cmp-val.home[b-u1cc18hzjd] { text-align: right; }
.cmp-val.lead[b-u1cc18hzjd] { font-size: 1.05rem; }

.cmp-label[b-u1cc18hzjd] {
    text-align: center;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--mud-palette-text-secondary);
    min-width: 110px;
}

.cmp-bar[b-u1cc18hzjd] {
    grid-column: 1 / -1;
    display: flex;
    height: 6px;
    border-radius: 3px;
    overflow: hidden;
    background: var(--mud-palette-lines-default);
}

.cmp-bar-seg[b-u1cc18hzjd] { box-sizing: border-box; }

/* The away (left) segment is hatched with diagonal translucent stripes over its team color
   (set inline as background-color), and a thin white divider sits at the away|home junction.
   Together these keep the two teams distinguishable even when their colors are similar. */
.cmp-bar-seg.away[b-u1cc18hzjd] {
    border-radius: 3px 0 0 3px;
    /* Lighten the away segment to a pale tint of its team color (white wash), then lay subtle dark
       diagonal stripes on top. The light, hatched away side reads clearly against the solid, dark
       home side even when both teams share a similar dark color. Layers paint top-to-bottom over the
       inline team background-color. */
    background-image:
        repeating-linear-gradient(45deg, rgba(0, 0, 0, 0.22) 0 2px, transparent 2px 7px),
        linear-gradient(rgba(255, 255, 255, 0.62), rgba(255, 255, 255, 0.62));
    border-right: 2px solid rgba(255, 255, 255, 0.9);
}

.cmp-bar-seg.home[b-u1cc18hzjd] { border-radius: 0 3px 3px 0; }

/* ──── Box-score / play tables ──── */
/* Horizontal-overflow behaviour is set globally in the page's <style> block (it differs by
   breakpoint: the table scrolls itself on mobile, the grid area owns the scroll on desktop). */
.pff-stat-table[b-u1cc18hzjd] {
    width: 100%;
}

/* ──── Drive summary card (ESPN-style collapsed header) ──── */
.pbp-quarter[b-u1cc18hzjd] {
    font-weight: 700;
    font-size: 0.75rem;
    letter-spacing: 0.06em;
    color: var(--mud-palette-text-secondary);
    margin: 0.75rem 0 0.25rem;
    padding-bottom: 0.2rem;
    border-bottom: 1px solid var(--mud-palette-lines-default);
}

.drive-card[b-u1cc18hzjd] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    width: 100%;
}

.drive-card-info[b-u1cc18hzjd] {
    flex: 1 1 0;
    min-width: 0;
}

.drive-card-result[b-u1cc18hzjd] {
    font-weight: 700;
    font-size: 0.95rem;
    line-height: 1.25;
}

.drive-card-sub[b-u1cc18hzjd] {
    font-size: 0.78rem;
    color: var(--mud-palette-text-secondary);
}

.drive-card-score[b-u1cc18hzjd] {
    flex: none;
}

.drive-card-score-row[b-u1cc18hzjd] {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
}

.drive-card-num[b-u1cc18hzjd] {
    width: 1.7rem;
    text-align: center;
    font-weight: 700;
    font-size: 1rem;
    line-height: 1.2;
}

.drive-card-abbr span[b-u1cc18hzjd] {
    width: 1.7rem;
    text-align: center;
    font-size: 0.62rem;
    color: var(--mud-palette-text-secondary);
}

/* Trim the default expansion-panel padding so drive rows stay dense. ::deep reaches the
   MudExpansionPanel's internal content element from this component's scoped stylesheet. */
.game-detail-grid-area[b-u1cc18hzjd]  .mud-expand-panel-content {
    padding: 0;
}

.play-scoring[b-u1cc18hzjd] { background-color: rgba(255, 201, 4, 0.14); }
.play-firstdown[b-u1cc18hzjd] { background-color: rgba(76, 175, 80, 0.08); }
.play-turnover[b-u1cc18hzjd] { background-color: rgba(244, 67, 54, 0.10); }
/* /Components/Pages/Pff/PffGradeGrid.razor.rz.scp.css */
/* The grade grid is a flex column: a bounded scroll region (.grade-grid-scroll) above an
   always-visible caption. The page side (.grade-tab-area) gives .grade-grid a definite height, so
   .grade-grid-scroll can flex to fill it and produce its OWN scrollbars at its visible edges — the
   sticky <th> (top) and sticky <tfoot> Total row (bottom) pin to those edges, and the horizontal bar
   sits at the region's bottom (just above the caption) instead of below all the data.
   NOTE: this requires the active MudTabs panel to be a real box — MudBlazor 9.6 sets it to
   display:contents, which collapses this to zero height; PffGameDetail's style block forces it back. */
.grade-grid[b-egqptnb7n1] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.grade-grid-scroll[b-egqptnb7n1] {
    flex: 1 1 0;
    min-height: 0;
    overflow: auto;
}

.grade-grid-caption[b-egqptnb7n1] {
    flex: none;
    padding: 0.25rem 0.25rem 0;
}
/* /Components/Pages/Pff/PffPlayerGradeGrid.razor.rz.scp.css */
/* Same flex-column-with-bounded-scroll-region layout as the game-centric PffGradeGrid: a scroll
   region (.grade-grid-scroll) above an always-visible caption. The page side (.grade-tab-area) hands
   .grade-grid a definite height, so .grade-grid-scroll flexes to fill it and produces its OWN
   scrollbars at its visible edges — the sticky <th> (top) and sticky <tfoot> Career row (bottom) pin
   to those edges. Scoped so these class names don't collide with the game grid's copy. */
.grade-grid[b-mzfhdqwxk6] {
    display: flex;
    flex-direction: column;
    min-height: 0;
    height: 100%;
}

.grade-grid-scroll[b-mzfhdqwxk6] {
    flex: 1 1 0;
    min-height: 0;
    overflow: auto;
}

.grade-grid-caption[b-mzfhdqwxk6] {
    flex: none;
    padding: 0.25rem 0.25rem 0;
}
/* /Components/Pages/Players/PlayerProfile.razor.rz.scp.css */
/* ──── Hero Banner ──── */
/*
 * Desktop layout (>960px): the banner is a fixed 260px tall (256px content +
 * 4px accent stripe).  This prevents the prev/next navigation buttons below
 * from jumping when switching between players whose content volume differs.
 *
 * Mobile/tablet (≤960px): we drop back to a fluid height because the banner
 * stacks vertically and a single fixed height cannot accommodate the range of
 * stacked content without either wasting space or clipping.
 */
.hero-banner[b-gc4h9f6ypv] {
    background: #000;
    border-radius: 12px;
    overflow: hidden;
    margin-bottom: 0;
}

.hero-content[b-gc4h9f6ypv] {
    position: relative;
    display: flex;
    align-items: flex-start;     /* anchor to top so sparse records don't add phantom bottom space */
    gap: 1.5rem;
    padding: 1rem 2rem;
    /* Fixed height on desktop: 288px content + 4px accent stripe = 292px total banner.
       Sized to fit name + quick-stats + the always-present agent row + the bottom-pinned
       eval-stat bars without clipping. */
    height: 288px;
    overflow: hidden;
}

/*
 * Team-aware accents. --hero-primary / --hero-accent / --hero-divider are set inline on
 * .hero-banner ONLY for athletes who play somewhere other than the managed team (see
 * TeamHeroBranding). Every rule below states the org-theme value as the var() fallback, so an
 * unbranded hero renders byte-identical to how it did before team branding existed.
 */
.hero-jersey-ghost[b-gc4h9f6ypv] {
    position: absolute;
    right: 3rem;
    top: 50%;
    transform: translateY(-50%);
    font-size: 8rem;
    font-weight: 900;
    color: var(--hero-primary, var(--mud-palette-primary));
    opacity: 0.15;
    line-height: 1;
    pointer-events: none;
    user-select: none;
    z-index: 0;
}

.hero-headshot[b-gc4h9f6ypv] {
    position: relative;
    z-index: 1;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    /* Wider than the 120px headshot so the school mark above it has room for a logo + name on one
       line. The image stays 120px and centres in the column, so no headshot is re-cropped. */
    width: 160px;
}

.headshot-img[b-gc4h9f6ypv] {
    width: 120px;
    height: 148px;
    object-fit: cover;
    border: 3px solid var(--hero-primary, var(--mud-palette-primary));
    border-radius: 12px;
}

/* School mark, stacked directly above the headshot inside .hero-headshot (which is widened to
   160px to hold it). Wraps rather than truncating — "Southern Mississippi" is a real school name
   and an ellipsis there reads as a bug. */
.hero-team[b-gc4h9f6ypv] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.4rem;
    width: 100%;
    margin-bottom: 0.45rem;
    pointer-events: none;
}

.hero-team-logo[b-gc4h9f6ypv] {
    height: 26px;
    width: auto;
    object-fit: contain;
    flex: none;
}

.hero-team-name[b-gc4h9f6ypv] {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    text-align: center;
    line-height: 1.25;
    color: var(--hero-primary, var(--mud-palette-primary));
}

.hero-info[b-gc4h9f6ypv] {
    position: relative;
    z-index: 1;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    /* Fill remaining width; clip if the stacked rows somehow exceed the fixed banner height */
    flex: 1 1 0;
    min-width: 0;
    overflow: hidden;
}

.hero-name[b-gc4h9f6ypv] {
    font-size: 1.8rem;
    font-weight: 800;
    color: #fff;
    line-height: 1.1;
    letter-spacing: -0.01em;
    /* Prevent a long name from reflowing into two lines and pushing content down.
     * Names truncate with ellipsis; tooltip on the element is set in Razor. */
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.hero-social[b-gc4h9f6ypv] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.1rem;
    margin-top: 0.4rem;
    width: 100%;
}

.hero-quick-stats[b-gc4h9f6ypv] {
    display: flex;
    flex-wrap: wrap;
    gap: 0;
    margin-top: 0.35rem;
}

.hero-stat-item[b-gc4h9f6ypv] {
    display: flex;
    flex-direction: column;
    padding: 0 1.25rem 0 0;
    margin-right: 1.25rem;
    border-right: 1px solid var(--hero-divider, rgba(255, 201, 4, 0.3));
}

.hero-stat-item:last-child[b-gc4h9f6ypv] {
    border-right: none;
    padding-right: 0;
    margin-right: 0;
}

.hero-stat-val[b-gc4h9f6ypv] {
    font-size: 1.05rem;
    font-weight: 700;
    color: var(--hero-primary, var(--mud-palette-primary));
    line-height: 1.2;
}

.hero-stat-unit[b-gc4h9f6ypv] {
    font-size: 0.75rem;
    font-weight: 400;
    color: rgba(255, 255, 255, 0.5);
}

.hero-stat-lbl[b-gc4h9f6ypv] {
    font-size: 0.65rem;
    font-weight: 600;
    color: rgba(255, 255, 255, 0.5);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 0.1rem;
}

/* Labeled hero indicator (AID / MED STATUS) — mirrors PlayerBadgeRow's .pbr-labeled-chip */
.hero-labeled[b-gc4h9f6ypv] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1px;
}

.hero-chip-label[b-gc4h9f6ypv] {
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1;
    color: rgba(255, 255, 255, 0.55);
}

/*
 * International marker. Mirrors the outlined fallback PlayerBadgeRow.ChipStyle() uses for a lookup
 * with no colour of its own on a dark surface, so it sits beside the POS/YEAR/STATUS chips as a
 * peer rather than competing with them. Deliberately not a flag emoji: Windows ships no flag
 * glyphs, so a country flag renders as bare letter pairs in Chrome.
 */
.hero-intl-chip[b-gc4h9f6ypv] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 1;
    white-space: nowrap;
    color: #fff;
    background-color: transparent;
    border: 1px solid var(--hero-accent, rgba(255, 201, 4, 0.55));
}

/* Branded: accent → primary → accent. Unbranded, each var() falls through to the org theme and
   reproduces the original darken → primary → lighten sweep exactly. */
.hero-accent-stripe[b-gc4h9f6ypv] {
    height: 4px;
    background: linear-gradient(90deg,
        var(--hero-accent, var(--mud-palette-primary-darken)),
        var(--hero-primary, var(--mud-palette-primary)),
        var(--hero-accent, var(--mud-palette-primary-lighten)));
}

/* ──── Action Bar ──── */
.action-bar[b-gc4h9f6ypv] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.25rem 0;
}

/* ──── Responsive: Tablet (≤960px) ──── */
@media (max-width: 960px) {
    .hero-content[b-gc4h9f6ypv] {
        flex-direction: column;
        align-items: center;     /* restore centering for the stacked column layout */
        text-align: center;
        padding: 2rem 1.5rem;
        /* Drop the fixed height — stacked column layout can be taller or shorter
         * than the desktop value.  Jitter is acceptable on tablet/mobile because
         * the prev/next buttons are below the fold or less prominent. */
        height: auto;
        overflow: visible;
    }

    .hero-info[b-gc4h9f6ypv] {
        align-items: center;
        overflow: visible;       /* restore — no fixed height to clip against */
    }

    .hero-name[b-gc4h9f6ypv] {
        /* Allow wrapping again on tablet — no fixed height constraint means wrapping
         * is fine; truncation at desktop was only to protect the fixed-height slot. */
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
    }

    .hero-quick-stats[b-gc4h9f6ypv] {
        justify-content: center;
    }

    .hero-jersey-ghost[b-gc4h9f6ypv] {
        right: 50%;
        transform: translate(50%, -50%);
        font-size: 10rem;
    }

}

/* ──── Responsive: Mobile (≤600px) ──── */
@media (max-width: 600px) {
    .hero-content[b-gc4h9f6ypv] {
        padding: 1.5rem 1rem;
    }

    .headshot-img[b-gc4h9f6ypv] {
        width: 140px;
        height: 170px;
    }

    .hero-headshot[b-gc4h9f6ypv] {
        /* Mobile: the headshot itself grows to 140px, so the column grows with it to keep both the
           social row and the school mark wrapping inside rather than against the image edge. */
        width: 170px;
    }

    .hero-name[b-gc4h9f6ypv] {
        font-size: 1.75rem;
    }

    .hero-jersey-ghost[b-gc4h9f6ypv] {
        font-size: 7rem;
    }
}

/* Layout-only wrapper that pins the LatestEvalStat row to the bottom of the hero banner.
 * Visual styling for individual stat cards lives in app.css (.eval-stat / .eval-stat--dark). */
.hero-eval-stats[b-gc4h9f6ypv] {
    margin-top: auto;
    padding-top: 0.4rem;
    z-index: 1;
}

@media (max-width: 600px) {
    .hero-eval-stats[b-gc4h9f6ypv] {
        display: none;
    }
}
/* /Components/Pages/Players/Tabs/PlayerEvaluationsTab.razor.rz.scp.css */
.eval-summary-strip[b-b93hy3kang] {
    background: rgba(255, 255, 255, 0.02);
}

.eval-summary-cell[b-b93hy3kang] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.eval-summary-label[b-b93hy3kang] {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
    margin-bottom: 2px;
}

/* .eval-grade-pill* classes moved to wwwroot/app.css so they're available
   to dialogs and pages outside this component (EvaluationAssignmentProfileDialog,
   FillEvaluation). Keep this comment so future readers know where to edit. */

.eval-summary-card[b-b93hy3kang] {
    background: rgba(255, 255, 255, 0.02);
    min-width: 220px;
    border-top-width: 3px !important;
}

[b-b93hy3kang] .eval-row-scheduled {
    background: rgba(255, 193, 7, 0.08);
    border-left: 3px solid var(--mud-palette-warning);
}

/* Force every group's table to share the same column widths so the Date,
   Eval Type, Season, Grade, and Status columns line up vertically across groups.
   Evaluator has no fixed width and absorbs the remaining space. */
[b-b93hy3kang] .eval-log-table table {
    table-layout: fixed;
}

/* Mobile group header: title takes the full width and wraps as one block;
   AVG pill drops to a second line so it isn't fighting the title for space. */
[b-b93hy3kang] .eval-mobile-group-header {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    margin-bottom: 4px;
}

[b-b93hy3kang] .eval-mobile-group-title {
    line-height: 1.25;
    word-break: normal;
    overflow-wrap: anywhere;
}

[b-b93hy3kang] .eval-mobile-group-avg {
    flex: none;
}

/* Labeled grade-line classes (.eval-grade-line, .eval-grade-line-label) live
   in wwwroot/app.css so they're shared with PlayerEvaluationProfileDialog. */

[b-b93hy3kang] .eval-mobile-evaluator {
    min-width: 0;
    overflow-wrap: anywhere;
}
/* /Components/Pages/Players/Tabs/PlayerGeneralTab.razor.rz.scp.css */
/* ──── Info Cards ──── */
.info-card[b-xljk1ivw87] {
    height: 100%;
}

.bio-table td[b-xljk1ivw87] {
    border-bottom: none !important;
}

.label-cell[b-xljk1ivw87] {
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    width: 120px;
}

.bio-grid[b-xljk1ivw87] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 16px;
    row-gap: 4px;
    padding: 4px 0;
}

.bio-cell[b-xljk1ivw87] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    column-gap: 8px;
    font-size: 0.875rem;
    line-height: 1.6;
}

.bio-label[b-xljk1ivw87] {
    flex: 0 0 110px;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.bio-cell > span:not(.bio-label)[b-xljk1ivw87] {
    flex: 1 1 140px;
    min-width: 0;
}

@media (max-width: 599px) {
    .bio-grid[b-xljk1ivw87] {
        grid-template-columns: 1fr;
    }
}

.elig-label-cell[b-xljk1ivw87] {
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
    vertical-align: middle;
    width: 1%;
    padding-right: 4px !important;
}

/* ──── Measurables Grid ──── */
.measurables-grid[b-xljk1ivw87] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(68px, 1fr));
    gap: 0.5rem;
}

.stat-box[b-xljk1ivw87] {
    text-align: center;
    padding: 0.4rem 0.35rem;
    background: var(--mud-palette-background-gray);
    border-radius: 6px;
    border: 1px solid var(--mud-palette-lines-default);
}

.stat-value[b-xljk1ivw87] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--mud-palette-text-primary);
    line-height: 1.2;
}

.stat-unit[b-xljk1ivw87] {
    font-size: 0.65rem;
    font-weight: 400;
    color: var(--mud-palette-text-secondary);
}

.stat-label[b-xljk1ivw87] {
    font-size: 0.55rem;
    font-weight: 600;
    color: var(--mud-palette-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    margin-top: 0.15rem;
}

/* ──── Contact ──── */
.contact-row[b-xljk1ivw87] {
    display: flex;
    align-items: center;
    padding: 0.5rem 0;
}

/* ──── Responsive: Mobile (≤600px) ──── */
@media (max-width: 600px) {
    .measurables-grid[b-xljk1ivw87] {
        grid-template-columns: repeat(3, 1fr);
    }

    .stat-value[b-xljk1ivw87] {
        font-size: 0.8rem;
    }
}
/* /Components/Pages/Roster/PrintableRoster.razor.rz.scp.css */
.roster-print-page[b-jkl5nluyki] {
    max-width: 960px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-jkl5nluyki] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.header-left[b-jkl5nluyki] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-jkl5nluyki] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-jkl5nluyki] {
    display: flex;
    gap: 8px;
}

.print-only[b-jkl5nluyki] {
    display: none;
}

.print-header[b-jkl5nluyki] {
    padding: 8px 0;
    border-bottom: 2px solid var(--mud-palette-primary, #B3A369);
    margin-bottom: 12px;
}

.filter-summary[b-jkl5nluyki] {
    font-size: 0.85rem;
    color: #555;
    font-style: italic;
    margin: 0 0 12px;
    padding: 4px 0;
}

.section-header[b-jkl5nluyki] {
    background: var(--mud-palette-primary, #B3A369);
    color: #000;
    font-weight: 700;
    font-size: 0.95rem;
    text-transform: uppercase;
    padding: 6px 12px;
    letter-spacing: 0.08em;
    margin-top: 16px;
}

.roster-table[b-jkl5nluyki] {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 0;
    table-layout: fixed;
}

.col-pos[b-jkl5nluyki]      { width: 60px; }
.col-num[b-jkl5nluyki]      { width: 40px; }
.col-name[b-jkl5nluyki]     { }
.col-yr[b-jkl5nluyki]       { width: 65px; }
.col-ht[b-jkl5nluyki]       { width: 60px; }
.col-wt[b-jkl5nluyki]       { width: 55px; }
.col-hand[b-jkl5nluyki]     { width: 55px; }
.col-arm[b-jkl5nluyki]      { width: 55px; }
.col-wing[b-jkl5nluyki]     { width: 55px; }
.col-hometown[b-jkl5nluyki] { width: 200px; }

.col-header-row th[b-jkl5nluyki] {
    font-size: 0.7rem;
    color: #888;
    text-transform: uppercase;
    padding: 2px 6px;
    text-align: left;
    font-weight: 600;
    border-bottom: 1px solid #e0e0e0;
}

.col-header-row th:nth-child(2)[b-jkl5nluyki],
.col-header-row th:nth-child(4)[b-jkl5nluyki],
.col-header-row th:nth-child(5)[b-jkl5nluyki],
.col-header-row th:nth-child(6)[b-jkl5nluyki],
.col-header-row th:nth-child(7)[b-jkl5nluyki],
.col-header-row th:nth-child(8)[b-jkl5nluyki],
.col-header-row th:nth-child(9)[b-jkl5nluyki] {
    text-align: center;
}

.player-row td[b-jkl5nluyki] {
    font-size: 0.9rem;
    padding: 4px 6px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: middle;
}

.player-row td[b-jkl5nluyki] {
    background: #fff;
}

.pos-cell[b-jkl5nluyki] {
    font-size: 1.8rem;
    font-weight: 900;
    color: var(--mud-palette-primary, #B3A369);
    text-align: center;
    vertical-align: middle;
    line-height: 1;
    border-right: 1px solid #e0e0e0;
}

.num-cell[b-jkl5nluyki] {
    text-align: center;
    font-weight: 600;
}

.yr-cell[b-jkl5nluyki],
.ht-cell[b-jkl5nluyki],
.wt-cell[b-jkl5nluyki],
.hand-cell[b-jkl5nluyki],
.arm-cell[b-jkl5nluyki],
.wing-cell[b-jkl5nluyki] {
    text-align: center;
    white-space: nowrap;
}

.yr-pill[b-jkl5nluyki] {
    display: inline-block;
    min-width: 48px;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 700;
    text-align: center;
    line-height: 1.4;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.name-cell[b-jkl5nluyki] {
    font-weight: 500;
}
/* /Components/Pages/Roster/PrintableRosterAcademic.razor.rz.scp.css */
.roster-print-page[b-hb910l5evf] {
    max-width: 1280px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-hb910l5evf] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.header-left[b-hb910l5evf] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-hb910l5evf] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-hb910l5evf] {
    display: flex;
    gap: 8px;
}

.print-only[b-hb910l5evf] {
    display: none;
}

.print-header[b-hb910l5evf] {
    padding: 8px 0;
    border-bottom: 2px solid var(--mud-palette-primary, #B3A369);
    margin-bottom: 12px;
}

.roster-table[b-hb910l5evf] {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 0;
    table-layout: fixed;
}

.col-num[b-hb910l5evf]     { width: 38px; }
.col-name[b-hb910l5evf]    { width: 150px; }
.col-pos[b-hb910l5evf]     { width: 50px; }
.col-yr[b-hb910l5evf]      { width: 62px; }
.col-sch[b-hb910l5evf]     { width: 120px; }
.col-schpct[b-hb910l5evf]  { width: 58px; }
.col-term[b-hb910l5evf]    { width: 84px; }
.col-major[b-hb910l5evf]   { width: 200px; }
.col-gpa[b-hb910l5evf]     { width: 52px; }
.col-credits[b-hb910l5evf] { width: 62px; }

.col-header-row th[b-hb910l5evf] {
    font-size: 0.7rem;
    color: #888;
    text-transform: uppercase;
    padding: 2px 6px;
    text-align: left;
    font-weight: 600;
    border-bottom: 1px solid #e0e0e0;
}

.col-header-row th.sortable[b-hb910l5evf] {
    cursor: pointer;
    user-select: none;
}

.col-header-row th.sortable:hover[b-hb910l5evf] {
    color: var(--mud-palette-primary, #B3A369);
}

.sort-arrow[b-hb910l5evf] {
    font-size: 0.65rem;
}

/* Center everything except Name (2nd), Scholarship type (5th) and Major (10th) */
.col-header-row th:nth-child(1)[b-hb910l5evf],
.col-header-row th:nth-child(3)[b-hb910l5evf],
.col-header-row th:nth-child(4)[b-hb910l5evf],
.col-header-row th:nth-child(6)[b-hb910l5evf],
.col-header-row th:nth-child(7)[b-hb910l5evf],
.col-header-row th:nth-child(8)[b-hb910l5evf],
.col-header-row th:nth-child(9)[b-hb910l5evf],
.col-header-row th:nth-child(11)[b-hb910l5evf],
.col-header-row th:nth-child(12)[b-hb910l5evf] {
    text-align: center;
}

.player-row td[b-hb910l5evf] {
    font-size: 0.9rem;
    padding: 4px 6px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: middle;
    background: #fff;
}

.num-cell[b-hb910l5evf] {
    text-align: center;
    font-weight: 600;
}

.name-cell[b-hb910l5evf] {
    font-weight: 500;
}

.pos-cell-sm[b-hb910l5evf] {
    text-align: center;
}

.yr-cell[b-hb910l5evf],
.schpct-cell[b-hb910l5evf],
.term-cell[b-hb910l5evf],
.gpa-cell[b-hb910l5evf],
.credits-cell[b-hb910l5evf] {
    text-align: center;
    white-space: nowrap;
}

.major-cell[b-hb910l5evf] {
    white-space: normal;
    overflow-wrap: anywhere;
    word-break: break-word;
}

.total-row td[b-hb910l5evf] {
    font-size: 0.85rem;
    padding: 6px;
    border-top: 2px solid #101820;
    font-weight: 700;
    background: #fff;
}

.total-label[b-hb910l5evf] {
    text-align: right;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #555;
}

.total-val[b-hb910l5evf] {
    text-align: center;
}

.yr-pill[b-hb910l5evf] {
    display: inline-block;
    min-width: 48px;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 700;
    text-align: center;
    line-height: 1.4;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
/* /Components/Pages/Roster/PrintableRosterByEligibility.razor.rz.scp.css */
.rbe-print-page[b-rrbiw86kbu] {
    max-width: 1200px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-rrbiw86kbu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.header-left[b-rrbiw86kbu] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-rrbiw86kbu] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-rrbiw86kbu] {
    display: flex;
    gap: 8px;
}

.title-bar[b-rrbiw86kbu] {
    background: #000;
    color: #BA9B37;
    font-weight: 800;
    font-size: 1.4rem;
    letter-spacing: 0.08em;
    text-align: center;
    padding: 8px 12px;
    border: 1px solid #000;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.rbe-grid[b-rrbiw86kbu] {
    display: grid;
    /* grid-template-columns is set inline on the element so the column count
       can match however many AcademicYears actually appear in the roster. */
    border-left: 1px solid #ccc;
    border-top: none;
}

/* Single-line grid: each cell draws only its right + bottom edge so adjacent
   cells never stack two borders. The grid's left edge + the title bar supply
   the outer top/left. */
.year-header[b-rrbiw86kbu],
.group-label[b-rrbiw86kbu],
.empty-cell[b-rrbiw86kbu],
.column-cell[b-rrbiw86kbu],
.goal-header[b-rrbiw86kbu],
.goal-cell[b-rrbiw86kbu],
.total-label[b-rrbiw86kbu],
.total-count[b-rrbiw86kbu] {
    border-right: 1px solid #ccc;
    border-bottom: 1px solid #ccc;
    box-sizing: border-box;
}

/* Thin separator between players stacked in one column; none after the last
   (the column-cell's own bottom border closes it off). */
.column-cell .player-cell:not(:last-child)[b-rrbiw86kbu] {
    border-bottom: 1px solid #ccc;
}

.year-header[b-rrbiw86kbu] {
    text-align: center;
    font-weight: 800;
    font-size: 0.9rem;
    padding: 4px 6px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.group-label[b-rrbiw86kbu] {
    background: #BFBFBF;
    text-align: center;
    font-weight: 800;
    font-size: 1.2rem;
    padding: 8px 4px;
    writing-mode: horizontal-tb;
    display: flex;
    align-items: center;
    justify-content: center;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.column-cell[b-rrbiw86kbu] {
    display: flex;
    flex-direction: column;
    padding: 0;
}

.player-cell[b-rrbiw86kbu] {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 4px;
    padding: 3px 6px;
    font-weight: 700;
    font-size: 0.78rem;
    line-height: 1.15;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.player-name[b-rrbiw86kbu] {
    text-align: left;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.player-elig[b-rrbiw86kbu] {
    text-align: center;
    font-weight: 600;
    font-size: 0.72rem;
    opacity: 0.85;
}

.empty-cell[b-rrbiw86kbu] {
    background: #fff;
}

.goal-header[b-rrbiw86kbu] {
    background: #BA9B37;
    color: #000;
    text-align: center;
    font-weight: 800;
    font-size: 0.85rem;
    padding: 4px 6px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.goal-cell[b-rrbiw86kbu] {
    background: #FFFBEA;
    text-align: center;
    font-weight: 700;
    font-size: 0.95rem;
    padding: 6px;
    display: flex;
    align-items: center;
    justify-content: center;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.goal-cell.over[b-rrbiw86kbu],
.total-count.over[b-rrbiw86kbu] {
    color: #B71C1C;
}

.total-label[b-rrbiw86kbu] {
    background: #000;
    color: #fff;
    text-align: center;
    font-weight: 800;
    font-size: 0.95rem;
    padding: 6px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.total-count[b-rrbiw86kbu] {
    background: #000;
    color: #fff;
    text-align: center;
    font-weight: 800;
    font-size: 1.05rem;
    padding: 6px;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.empty-state[b-rrbiw86kbu] {
    max-width: 640px;
    margin: 40px auto;
    text-align: center;
}

.empty-state-actions[b-rrbiw86kbu] {
    margin-top: 16px;
    display: flex;
    justify-content: center;
    gap: 12px;
}
/* /Components/Pages/Roster/PrintableRosterByGrades.razor.rz.scp.css */
.grades-print-page[b-viab2i8sz0] {
    max-width: 1200px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-viab2i8sz0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 12px;
    border-radius: 4px;
}

.header-left[b-viab2i8sz0] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-viab2i8sz0] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-viab2i8sz0] {
    display: flex;
    gap: 8px;
}

.filter-bar[b-viab2i8sz0] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
}

.print-only[b-viab2i8sz0] {
    display: none;
}

.print-header[b-viab2i8sz0] {
    padding: 8px 0;
    border-bottom: 2px solid var(--mud-palette-primary, #B3A369);
    margin-bottom: 12px;
}

.section-header[b-viab2i8sz0] {
    background: var(--mud-palette-primary, #B3A369);
    color: #000;
    font-weight: 700;
    font-size: 0.95rem;
    text-transform: uppercase;
    padding: 6px 12px;
    letter-spacing: 0.08em;
    margin-top: 16px;
}

.grade-table[b-viab2i8sz0] {
    width: 100%;
    border-collapse: collapse;
    margin-bottom: 0;
}

.col-pos[b-viab2i8sz0]  { width: 60px; }
.col-num[b-viab2i8sz0]  { width: 40px; }
.col-yr[b-viab2i8sz0]   { width: 65px; }
.col-type[b-viab2i8sz0] { width: 90px; }

.season-row th[b-viab2i8sz0] {
    font-size: 0.75rem;
    color: #555;
    text-transform: uppercase;
    padding: 2px 6px;
    text-align: left;
    font-weight: 700;
    border-bottom: 1px solid #e0e0e0;
}

.season-header[b-viab2i8sz0] {
    text-align: center !important;
    color: #000 !important;
    background: #f2ecd6;
    border: 1px solid #d8cfa8;
    letter-spacing: 0.04em;
}

.sub-row th[b-viab2i8sz0] {
    font-size: 0.65rem;
    color: #888;
    text-transform: uppercase;
    padding: 1px 6px;
    font-weight: 600;
    border-bottom: 1px solid #e0e0e0;
}

.grade-sub[b-viab2i8sz0] {
    text-align: center !important;
    width: 52px;
}

.grade-row td[b-viab2i8sz0] {
    font-size: 0.9rem;
    padding: 4px 6px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: middle;
    background: #fff;
}

.pos-cell[b-viab2i8sz0] {
    font-size: 1.6rem;
    font-weight: 900;
    color: var(--mud-palette-primary, #B3A369);
    text-align: center;
    vertical-align: middle;
    line-height: 1;
    border-right: 1px solid #e0e0e0;
}

.num-cell[b-viab2i8sz0] {
    text-align: center;
    font-weight: 600;
    border-right: 1px solid #f0f0f0;
}

.name-cell[b-viab2i8sz0] {
    font-weight: 500;
}

.yr-cell[b-viab2i8sz0] {
    text-align: center;
    white-space: nowrap;
    border-right: 1px solid #f0f0f0;
}

.yr-pill[b-viab2i8sz0] {
    display: inline-block;
    min-width: 48px;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.7rem;
    font-weight: 700;
    text-align: center;
    line-height: 1.4;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.type-cell[b-viab2i8sz0] {
    text-align: center;
    border-right: 1px solid #e0e0e0;
}

.type-cell span[b-viab2i8sz0] {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.grade-cell[b-viab2i8sz0] {
    text-align: center;
    font-weight: 500;
    font-variant-numeric: tabular-nums;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

/* Divider after each season's Proj column so Cur/Proj pairs read as a unit. */
.grade-proj[b-viab2i8sz0] {
    border-right: 1px solid #cfcfcf;
}
/* /Components/Pages/Roster/PrintableRosterCheatSheet.razor.rz.scp.css */
.csheet-page[b-dnm47kh7ve] {
    max-width: 960px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-dnm47kh7ve] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.header-left[b-dnm47kh7ve] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-dnm47kh7ve] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-dnm47kh7ve] {
    display: flex;
    gap: 8px;
}

/* One side of the two-sided card. Shrink-wrap to the two columns so the side header bar spans
   exactly the combined column width. Keep a side together; the back side starts a fresh page. */
.cheat-side[b-dnm47kh7ve] {
    width: fit-content;
    break-inside: avoid;
    page-break-inside: avoid;
}

.csheet-side-break[b-dnm47kh7ve] {
    page-break-before: always;
    break-before: page;
}

.csheet-side-header[b-dnm47kh7ve] {
    background: var(--mud-palette-primary, #B3A369);
    color: #000;
    font-weight: 800;
    font-size: calc(7pt + 2px);
    text-transform: uppercase;
    letter-spacing: 0.1em;
    padding: 1px 0;
    margin-bottom: 0;
    text-align: center;
}

/* Position-group boxes are distributed into two balanced columns (in code) to match the
   dense practice card and keep each side on a single page. */
.csheet-cols[b-dnm47kh7ve] {
    display: flex;
    gap: 18px;
    align-items: flex-start;
}

/* Columns hug their (fixed-width) tables so the two sit close together, like the paper card. */
.csheet-col[b-dnm47kh7ve] {
    flex: 0 0 auto;
}

.csheet-group[b-dnm47kh7ve] {
    break-inside: avoid;
    page-break-inside: avoid;
    margin-bottom: 0;
}

.csheet-group-header[b-dnm47kh7ve] {
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    font-weight: 800;
    font-size: 8pt;
    letter-spacing: 0.04em;
    padding: 0 6px;
    line-height: 1.5;
    text-align: center;
    text-transform: uppercase;
}

/* Fixed, narrow table with a DEFINITE width so table-layout:fixed is actually enforced and
   every group/column table is identical (with width:auto, long names in one column widen that
   table and the columns end up mismatched). Width = sum of the column widths below. */
.csheet-table[b-dnm47kh7ve] {
    width: 250px;
    border-collapse: collapse;
    table-layout: fixed;
}

.csheet-table th[b-dnm47kh7ve] {
    font-size: 8pt;
    background: var(--mud-palette-primary, #B3A369);
    color: #101820;
    text-transform: uppercase;
    font-weight: 700;
    text-align: center;
    padding: 0 2px;
    line-height: 1.35;
    border: 1px solid #9c9060;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}

.csheet-table td[b-dnm47kh7ve] {
    font-size: 8pt;
    padding: 1px 2px;
    line-height: 1.25;
    border: 1px solid #bcbcbc;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.c-num[b-dnm47kh7ve]  { width: 20px; font-weight: 700; }
.c-name[b-dnm47kh7ve] { width: 142px; text-align: left !important; font-weight: 500; }
/* Eligibility is a solid-colored cell (no pill) holding one digit — seasons remaining. Narrower
   than the class-year code it replaced (38px held "RSO"), which hands the slack to the name. */
.c-elig[b-dnm47kh7ve] {
    width: 26px;
    font-weight: 700;
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
}
.c-ht[b-dnm47kh7ve]   { width: 34px; }
.c-wt[b-dnm47kh7ve]   { width: 28px; }

/* Screen only: visually separate the two sides. Print uses a hard page break (below),
   so this margin never affects the printed output. */
@media screen {
    .csheet-side-break[b-dnm47kh7ve] {
        margin-top: 28px;
    }
}
/* /Components/Pages/StrengthConditioning/PrintableWeightChange.razor.rz.scp.css */
.wcr-page[b-ygy2ian90l] {
    max-width: 960px;
    margin: 0 auto;
    font-family: system-ui, -apple-system, sans-serif;
}

.page-header[b-ygy2ian90l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    padding: 12px 20px;
    margin-bottom: 16px;
    border-radius: 4px;
}

.header-left[b-ygy2ian90l] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.header-title[b-ygy2ian90l] {
    font-size: 1.3rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--mud-palette-primary, #B3A369);
}

.header-actions[b-ygy2ian90l] {
    display: flex;
    align-items: center;
    gap: 8px;
}

/* Printed title: the screen header is no-print, so the sheet needs its own caption saying which
   season and period the numbers belong to. */
.wcr-title[b-ygy2ian90l] {
    font-weight: 800;
    font-size: 10pt;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 6px;
}

/* Offense left, defense/special teams right — the shape of the spreadsheet this replaces. Groups
   are not balanced across the two columns: which side a group belongs to is meaningful. */
.wcr-cols[b-ygy2ian90l] {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    width: fit-content;
}

.wcr-col[b-ygy2ian90l] {
    flex: 0 0 auto;
}

.wcr-group[b-ygy2ian90l] {
    break-inside: avoid;
    page-break-inside: avoid;
    margin-bottom: 6px;
}

/* The position group's name, on its own bar above its rows — the column's date headers are printed
   once at the top rather than repeated over every group. */
.wcr-group-header[b-ygy2ian90l] {
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    font-weight: 800;
    font-size: 8pt;
    letter-spacing: 0.04em;
    padding: 0 6px;
    line-height: 1.5;
    text-align: center;
    text-transform: uppercase;
}

/* Definite width so table-layout:fixed is enforced and every group's columns line up; without it a
   long name widens one table and the two columns stop matching. Width = sum of the columns below. */
.wcr-table[b-ygy2ian90l] {
    width: 340px;
    border-collapse: collapse;
    table-layout: fixed;
}

/* The group name lives in the first header cell, the way the source spreadsheet does it — one row
   of chrome per group instead of a separate title bar plus a header row.

   Headers run a size smaller than the data they label, and every one is a fixed string, so the
   columns stay sized for the numbers rather than for their labels. Which training period the
   session is is named in the title line above the tables, not in the column head — an
   operator-authored period name never has to fit a weight column. */
.wcr-table th[b-ygy2ian90l] {
    font-size: 7pt;
    background: #101820;
    color: var(--mud-palette-primary, #B3A369);
    text-transform: uppercase;
    font-weight: 800;
    text-align: center;
    padding: 1px 2px;
    line-height: 1.35;
    /* Gold, not the header's own #101820 — a border the same colour as the background it sits on is
       no border at all, which left the header reading as one unbroken bar while the data below it
       had a visible grid. Matches the header text, so the columns are separated in the report's own
       accent rather than by a stray grey line. */
    border: 1px solid var(--mud-palette-primary, #B3A369);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.wcr-table th.c-name[b-ygy2ian90l] {
    text-align: left;
    letter-spacing: 0.04em;
}

/* "SESSION CHANGE" is two words and does not fit 74px on one line. Wrapping it onto two costs one
   line of header per group and keeps the label whole; widening the column instead would push the
   pair of tables past the printable width. The dates above stay nowrap — a date broken at its
   hyphen into "26-" / "JAN" reads worse than a clipped one. */
.wcr-table th.c-change[b-ygy2ian90l] {
    white-space: normal;
    line-height: 1.15;
}

.wcr-table td[b-ygy2ian90l] {
    font-size: 8pt;
    padding: 1px 3px;
    line-height: 1.3;
    border: 1px solid #bcbcbc;
    text-align: center;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.c-name[b-ygy2ian90l] {
    width: 128px;
    text-align: left !important;
    font-weight: 500;
}

/* Wide enough that "NO CHANGE" sits on one line — the only data value here that is a word. */
.c-change[b-ygy2ian90l] {
    width: 74px;
    font-weight: 700;
    font-size: 7.5pt;
}

.c-wt[b-ygy2ian90l] {
    width: 46px;
}
/* /Components/Shared/FramingWeightBar.razor.rz.scp.css */
/* Framing-weight band + current-weight marker. State colors come from the MudBlazor palette so
   the bar tracks the app theme (and its dark mode) instead of hard-coding hexes. */

.fw-bar[b-m76ve56yjh] {
    --fw-accent: var(--mud-palette-primary);
    display: inline-flex;
    flex-direction: column;
    gap: 0.25rem;
    min-width: 260px;
    max-width: 420px;
    padding: 0.4rem 0.6rem;
    border: 1px solid var(--mud-palette-lines-default);
    border-radius: 8px;
    background: var(--mud-palette-surface);
}

.fw-in[b-m76ve56yjh] { --fw-accent: var(--mud-palette-success); }
.fw-under[b-m76ve56yjh] { --fw-accent: var(--mud-palette-warning); }
.fw-over[b-m76ve56yjh] { --fw-accent: var(--mud-palette-warning); }
.fw-none[b-m76ve56yjh] { --fw-accent: var(--mud-palette-text-disabled); }

.fw-head[b-m76ve56yjh] {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
}

.fw-title[b-m76ve56yjh] {
    font-size: 0.62rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--mud-palette-text-secondary);
}

.fw-current[b-m76ve56yjh] {
    margin-left: auto;
    font-size: 0.72rem;
    color: var(--mud-palette-text-secondary);
    white-space: nowrap;
}

.fw-current strong[b-m76ve56yjh] { color: var(--mud-palette-text-primary); }

.fw-track-row[b-m76ve56yjh] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.fw-end[b-m76ve56yjh] {
    font-size: 0.68rem;
    font-weight: 700;
    color: var(--mud-palette-text-secondary);
    font-variant-numeric: tabular-nums;
}

/* The track spans past both band edges, so an out-of-band marker reads as outside it. */
.fw-track[b-m76ve56yjh] {
    position: relative;
    flex: 1 1 auto;
    height: 10px;
    border-radius: 999px;
    background: var(--mud-palette-action-disabled-background);
    overflow: hidden;
}

.fw-band[b-m76ve56yjh] {
    position: absolute;
    top: 0;
    bottom: 0;
    background: var(--fw-accent);
    opacity: 0.55;
}

/* The goal tick shares the track with the current-weight marker, so it has to read as a different
   kind of thing: info-blue and dashed against the marker's solid text-primary bar. Blue also stays
   clear of the band's own success/warning accent. */
.fw-goal[b-m76ve56yjh] {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 3px;
    margin-left: -1.5px;   /* center the tick on its value */
    background: repeating-linear-gradient(
        to bottom,
        var(--mud-palette-info) 0 3px,
        transparent 3px 5px);
}

.fw-marker[b-m76ve56yjh] {
    position: absolute;
    top: -3px;
    bottom: -3px;
    width: 3px;
    margin-left: -1.5px;   /* center the marker on its value */
    border-radius: 2px;
    background: var(--mud-palette-text-primary);
    box-shadow: 0 0 0 1px var(--mud-palette-surface);
}

.fw-status[b-m76ve56yjh] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--fw-accent);
}

/* The goal line sits under the band status and carries the tick's color, not the band accent —
   the two readings are independent (a player can be in range and still off his goal). */
.fw-goal-status[b-m76ve56yjh] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--mud-palette-info);
}

/* ::deep — MudIcon renders its own <svg>, which doesn't carry this component's scope attribute. */
.fw-status[b-m76ve56yjh]  .fw-status-icon,
.fw-goal-status[b-m76ve56yjh]  .fw-status-icon {
    font-size: 0.95rem;
    width: 0.95rem;
    height: 0.95rem;
}

.fw-partial .fw-current[b-m76ve56yjh] { color: var(--mud-palette-text-primary); font-weight: 600; }
/* /Components/Shared/PlayerBadgeRow.razor.rz.scp.css */
/* ──── Player Badge Row ──── */
.pbr-row[b-8fdlnv5bsj] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.4rem;
}

/* Jersey badge tile — stretches full row height with number centered */
.pbr-jersey-tile[b-8fdlnv5bsj] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.1em;
    background: var(--mud-palette-primary);
    color: #000;
    border-radius: 5px;
    padding: 2px 10px;
    font-weight: 800;
    line-height: 1;
    box-shadow: inset 0 -2px 4px rgba(0, 0, 0, 0.15);
    align-self: stretch;
}

.pbr-jersey-hash[b-8fdlnv5bsj] {
    font-size: 0.75em;
    font-weight: 700;
    opacity: 0.7;
}

.pbr-jersey-num[b-8fdlnv5bsj] {
    font-size: 1.25rem;
}

/* Small size variant */
.pbr-small .pbr-jersey-num[b-8fdlnv5bsj] {
    font-size: 1rem;
}

.pbr-small .pbr-chip[b-8fdlnv5bsj] {
    height: 20px;
    font-size: 0.7rem;
}

.pbr-small .pbr-jersey-tile[b-8fdlnv5bsj] {
    padding: 0 6px;
}

/* Labeled chip group */
.pbr-labeled-chip[b-8fdlnv5bsj] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1px;
}

.pbr-chip-label[b-8fdlnv5bsj] {
    font-size: 0.6rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    line-height: 1;
}

/* Divider */
.pbr-divider[b-8fdlnv5bsj] {
    width: 1px;
    height: 28px;
    align-self: center;
    margin: 0 2px;
}

.pbr-dark .pbr-divider[b-8fdlnv5bsj] {
    background: rgba(255, 255, 255, 0.2);
}

.pbr-light .pbr-divider[b-8fdlnv5bsj] {
    background: var(--mud-palette-lines-default);
}

/* Label colors per surface */
.pbr-dark .pbr-chip-label[b-8fdlnv5bsj] {
    color: rgba(255, 255, 255, 0.55);
}

.pbr-light .pbr-chip-label[b-8fdlnv5bsj] {
    color: var(--mud-palette-text-secondary);
}
