/* /Components/Layout/CookieConsentBanner.razor.rz.scp.css */
/* Blocking consent popup in the disclaimer-modal style. Renders outside the
   layout's .dp-page, so fonts are set explicitly. Above page content and the
   Blazor error UI (z-index 1000). */

.cookie-consent-backdrop[b-itioeeiu3l] {
    position: fixed;
    inset: 0;
    z-index: 1100;
    background: rgba(46, 42, 34, .55);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.cookie-consent-popup[b-itioeeiu3l] {
    background: var(--dp-card);
    border-radius: var(--dp-radius-modal);
    max-width: 440px;
    padding: 26px 30px;
    box-shadow: var(--dp-shadow-modal);
    text-align: center;
    font-family: var(--dp-font-ui);
}

/* The illustration carries its own caption ("Will you accept the cookie?"),
   so it doubles as the popup heading. */
.cookie-consent-image[b-itioeeiu3l] {
    width: 200px;
    max-width: 100%;
    height: auto;
}

.cookie-consent-text[b-itioeeiu3l] {
    display: block;
    font-family: var(--dp-font-serif);
    font-size: 17px;
    line-height: 1.55;
    color: var(--dp-body);
    margin: 10px 0 20px;
}

.cookie-consent-actions[b-itioeeiu3l] {
    display: flex;
    justify-content: center;
    gap: 12px;
}

.cookie-consent-button[b-itioeeiu3l] {
    display: inline-block;
    padding: 12px 26px;
    border-radius: var(--dp-radius-btn);
    text-decoration: none;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 15px;
    line-height: 1.2;
    white-space: nowrap;
}

.cookie-consent-accept[b-itioeeiu3l] {
    background: var(--dp-teal);
    color: #fff;
}

.cookie-consent-accept:hover[b-itioeeiu3l] {
    filter: brightness(1.1);
    color: #fff;
    text-decoration: none;
}

.cookie-consent-reject[b-itioeeiu3l] {
    background: #fff;
    color: var(--dp-teal);
    border: 1.5px solid #CDBE9C;
}

.cookie-consent-reject:hover[b-itioeeiu3l] {
    background: var(--dp-hover-tint);
    color: var(--dp-teal);
    text-decoration: none;
}

@media (max-width: 400px) {
    .cookie-consent-popup[b-itioeeiu3l] {
        padding: 20px 18px;
    }

    .cookie-consent-image[b-itioeeiu3l] {
        width: 160px;
    }
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* Public shell: parchment page with one centered card holding the header,
   pill nav, and page body. Values come from the Phase 5 design mock; tokens
   live in wwwroot/theme.css. */

.dp-page[b-4pnc7hp1j9] {
    min-height: 100dvh;
    background: var(--dp-page-bg);
    padding: 48px 24px;
    display: flex;
    justify-content: center;
    font-family: var(--dp-font-ui);
    color: var(--dp-ink);
}

.dp-card[b-4pnc7hp1j9] {
    width: 1040px;
    max-width: 100%;
    background: var(--dp-card);
    border: 1px solid var(--dp-card-border);
    border-radius: var(--dp-radius-card);
    box-shadow: var(--dp-shadow-card);
    overflow: hidden;
    align-self: flex-start;
}

/* ---------- Header ---------- */

.dp-header[b-4pnc7hp1j9] {
    padding: 26px 34px 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
}

.dp-disclaimer-btn[b-4pnc7hp1j9] {
    position: absolute;
    top: 22px;
    right: 26px;
    display: flex;
    align-items: center;
    gap: 9px;
    background: var(--dp-red-soft);
    border: 1px solid var(--dp-red-soft-border);
    padding: 7px 12px 7px 14px;
    border-radius: var(--dp-radius-pill);
    cursor: pointer;
    color: var(--dp-red);
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 13px;
    line-height: 1.1;
}

.dp-disclaimer-btn-label[b-4pnc7hp1j9] {
    text-align: right;
}

.dp-disclaimer-btn-mascot[b-4pnc7hp1j9] {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    overflow: hidden;
    display: block;
    flex-shrink: 0;
}

    .dp-disclaimer-btn-mascot img[b-4pnc7hp1j9] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

/* The height sits on the img, not the wrapper, so a page that registers an
   empty logo section (NotFound) collapses the block entirely. */
.dp-logo[b-4pnc7hp1j9] {
    display: flex;
    align-items: center;
    justify-content: center;
}

    /* The logo img comes from a SectionContent (page-authored markup), so it
       needs ::deep to be reached from the layout's scope. */
    .dp-logo[b-4pnc7hp1j9]  img {
        height: 190px;
        width: auto;
        max-width: 100%;
        object-fit: contain;
    }

/* ---------- Page body ---------- */

.dp-content[b-4pnc7hp1j9] {
    padding: 30px 34px 38px;
}

/* ---------- Disclaimer modal body (rendered through DpModal) ---------- */

.dp-disclaimer[b-4pnc7hp1j9] {
    text-align: center;
}

.dp-disclaimer-mascot[b-4pnc7hp1j9] {
    width: 66px;
    height: 66px;
    margin: 0 auto 12px;
    border-radius: 50%;
    overflow: hidden;
    display: block;
}

    .dp-disclaimer-mascot img[b-4pnc7hp1j9] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

.dp-disclaimer h3[b-4pnc7hp1j9] {
    font-family: var(--dp-font-serif);
    font-weight: 500;
    font-size: 28px;
    color: var(--dp-red);
    margin: 0 0 10px;
}

.dp-disclaimer p[b-4pnc7hp1j9] {
    font-family: var(--dp-font-serif);
    font-size: 18px;
    line-height: 1.55;
    color: var(--dp-body);
    margin: 0 0 20px;
}

/* ---------- Responsive ---------- */

@media (max-width: 640px) {
    .dp-page[b-4pnc7hp1j9] {
        padding: 16px 10px;
    }

    .dp-card[b-4pnc7hp1j9] {
        border-radius: 18px;
    }

    /* Column flow instead of absolute positioning so nothing overlaps. */
    .dp-header[b-4pnc7hp1j9] {
        padding: 14px 16px 0;
    }

    .dp-disclaimer-btn[b-4pnc7hp1j9] {
        position: static;
        align-self: flex-end;
    }

    .dp-disclaimer-btn-label[b-4pnc7hp1j9] {
        font-size: 12px;
    }

    .dp-disclaimer-btn-mascot[b-4pnc7hp1j9] {
        width: 32px;
        height: 32px;
    }

    .dp-logo[b-4pnc7hp1j9]  img {
        height: 120px;
    }

    .dp-content[b-4pnc7hp1j9] {
        padding: 22px 14px 30px;
    }
}

/* ---------- Framework error bar (unchanged from the template) ---------- */

#blazor-error-ui[b-4pnc7hp1j9] {
    color-scheme: light only;
    /* Explicit face: the body no longer defines a font on public pages. */
    font-family: var(--dp-font-ui);
    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-4pnc7hp1j9] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/PublicNav.razor.rz.scp.css */
.dp-nav[b-z3teznqzq8] {
    margin-top: 18px;
    border-top: 1px solid var(--dp-panel-border);
    border-bottom: 1px solid var(--dp-panel-border);
    background: var(--dp-panel);
}

.dp-nav-rail[b-z3teznqzq8] {
    max-width: 640px;
    margin: 0 auto;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 6px;
    padding: 8px;
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-66fb2n98nh],
.components-reconnect-repeated-attempt-visible[b-66fb2n98nh],
.components-reconnect-failed-visible[b-66fb2n98nh],
.components-pause-visible[b-66fb2n98nh],
.components-resume-failed-visible[b-66fb2n98nh],
.components-rejoining-animation[b-66fb2n98nh] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-retrying[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-failed[b-66fb2n98nh],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-66fb2n98nh] {
    display: block;
}


#components-reconnect-modal[b-66fb2n98nh] {
    /* Explicit face: the body no longer defines a font on public pages. */
    font-family: var(--dp-font-ui);
    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-66fb2n98nh 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-66fb2n98nh 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-66fb2n98nh 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-66fb2n98nh]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-66fb2n98nh 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-66fb2n98nh {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-66fb2n98nh {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-66fb2n98nh {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-66fb2n98nh] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-66fb2n98nh] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-66fb2n98nh] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-66fb2n98nh] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-66fb2n98nh] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-66fb2n98nh] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-66fb2n98nh] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-66fb2n98nh 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-66fb2n98nh] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-66fb2n98nh {
    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/About.razor.rz.scp.css */
.dp-about[b-fug10nr6jp] {
    max-width: 652px;
    margin: 0 auto;
}

    .dp-about h1[b-fug10nr6jp] {
        font-family: var(--dp-font-serif);
        font-weight: 500;
        font-size: 42px;
        color: var(--dp-teal);
        margin: 0 0 18px;
        text-align: center;
    }

    .dp-about p[b-fug10nr6jp] {
        font-family: var(--dp-font-serif);
        font-size: 20px;
        line-height: 1.6;
        color: var(--dp-body);
    }

        /* Paragraph break wider than the line leading, so stacked intro
           paragraphs read as separate. Direct children only — the author
           card keeps its own tight `margin:0` paragraphs. */
        .dp-about > p + p[b-fug10nr6jp] {
            margin-top: 1em;
        }

.dp-about-author[b-fug10nr6jp] {
    display: flex;
    align-items: center;
    gap: 18px;
    background: #fff;
    border: 1px solid var(--dp-panel-border);
    border-radius: var(--dp-radius-panel);
    padding: 18px 20px;
    margin-top: 22px;
}

/* Bright gold ring — one-off mock hex, like the medal colors. */
.dp-about-author-photo[b-fug10nr6jp] {
    width: 76px;
    height: 76px;
    border-radius: 50%;
    overflow: hidden;
    flex-shrink: 0;
    display: block;
    border: 3px solid #F4C542;
    box-shadow: 0 0 0 1px var(--dp-panel-border);
}

    .dp-about-author-photo img[b-fug10nr6jp] {
        width: 100%;
        height: 100%;
        object-fit: cover;
        object-position: center 15%;
    }

.dp-about-author p[b-fug10nr6jp] {
    margin: 0;
    font-size: 18px;
    line-height: 1.55;
}

/* Container-scoped: must out-rank the `.dp-about p` serif recipe. */
.dp-about-author .dp-about-author-name[b-fug10nr6jp] {
    margin: 0 0 2px;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 17px;
    color: var(--dp-teal);
}

    .dp-about-author .dp-about-author-name span[b-fug10nr6jp] {
        font-weight: 600;
        color: #8A7F6B;
    }

/* ---------- Live counts ---------- */

.dp-about-stats[b-fug10nr6jp] {
    display: flex;
    gap: 14px;
    margin-top: 14px;
}

.dp-about-stat[b-fug10nr6jp] {
    flex: 1;
    background: var(--dp-teal);
    border-radius: var(--dp-radius-panel);
    padding: 20px 22px;
    text-align: center;
}

.dp-about-stat-value[b-fug10nr6jp] {
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 40px;
    line-height: 1;
    color: #F4C542;
}

.dp-about-stat-label[b-fug10nr6jp] {
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 14px;
    letter-spacing: .02em;
    color: #CFE3DF;
    margin-top: 6px;
}

/* ---------- Model card ---------- */

.dp-about-model[b-fug10nr6jp] {
    background: #fff;
    border: 1px solid var(--dp-panel-border);
    border-radius: var(--dp-radius-panel);
    padding: 22px 24px;
    margin-top: 14px;
}

    .dp-about-model h2[b-fug10nr6jp] {
        font-family: var(--dp-font-serif);
        font-weight: 500;
        font-size: 26px;
        color: var(--dp-teal);
        margin: 0 0 4px;
    }

    .dp-about-model .dp-about-model-sub[b-fug10nr6jp] {
        margin: 0 0 16px;
        font-size: 17px;
        line-height: 1.5;
        color: #8A7F6B;
    }

.dp-about-facts[b-fug10nr6jp] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
}

.dp-about-fact[b-fug10nr6jp] {
    background: var(--dp-card);
    border-radius: 14px;
    padding: 14px 16px;
}

.dp-about-fact-value[b-fug10nr6jp] {
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 22px;
    color: var(--dp-teal);
}

.dp-about-fact-label[b-fug10nr6jp] {
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 13px;
    color: #8A7F6B;
    margin-top: 2px;
}

.dp-about-model .dp-about-model-note[b-fug10nr6jp] {
    margin: 14px 0 0;
    font-style: italic;
    font-size: 17px;
    line-height: 1.5;
}

@media (max-width: 640px) {
    .dp-about h1[b-fug10nr6jp] {
        font-size: 32px;
    }

    .dp-about p[b-fug10nr6jp] {
        font-size: 18px;
    }

    .dp-about-author[b-fug10nr6jp] {
        flex-direction: column;
        text-align: center;
    }

    /* Numbers are short — the two cards stay side by side. */
    .dp-about-stat-value[b-fug10nr6jp] {
        font-size: 32px;
    }
}
/* /Components/Pages/AdminLogin.razor.rz.scp.css */
.admin-login-form[b-47y4165npu] {
    display: flex;
    flex-direction: column;
    min-width: min(22rem, 80vw);
}

.admin-login-form label[b-47y4165npu] {
    margin-top: 0.75rem;
    margin-bottom: 0.25rem;
    font-size: 0.875rem;
}

.admin-login-form input:not([type="hidden"])[b-47y4165npu] {
    box-sizing: border-box;
    width: 100%;
    padding: 0.7rem;
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: var(--mud-default-borderradius);
    font: inherit;
}

.admin-login-form input:focus[b-47y4165npu] {
    border-color: var(--mud-palette-primary);
    outline: 1px solid var(--mud-palette-primary);
}
/* /Components/Pages/Admin/DashboardStats.razor.rz.scp.css */
.dashboard-stats[b-v7f6zyyg8u] {
    display: flex;
    gap: 24px;
}

.stats-column[b-v7f6zyyg8u] {
    flex: 1;
    min-width: 0;
}

.stat-grid[b-v7f6zyyg8u] {
    display: grid;
    grid-template-columns: 1fr auto;
    column-gap: 16px;
    row-gap: 8px;
}

/* MudText renders child-component elements, which plain scoped selectors can't reach. */
.stat-grid[b-v7f6zyyg8u]  .stat-value {
    text-align: right;
}
/* /Components/Pages/Admin/GenerationDetailDialog.razor.rz.scp.css */
.detail-loading[b-ysnmgsgu0m] {
    display: flex;
    justify-content: center;
    padding: 3rem;
}

/* Header: info + flag controls on the left, score summary on the right. */
.detail-header[b-ysnmgsgu0m] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1rem;
}

.detail-ids[b-ysnmgsgu0m] {
    display: flex;
    gap: 2.5rem;
    margin-bottom: 0.75rem;
}

/* The right margin keeps the block clear of the dialog's absolute-positioned close icon. */
.detail-scores[b-ysnmgsgu0m] {
    margin-right: 2.5rem;
}

.detail-scores > div[b-ysnmgsgu0m] {
    margin-bottom: 0.25rem;
}

.score-count[b-ysnmgsgu0m] {
    margin-left: 2rem;
}

.flag-row[b-ysnmgsgu0m] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 1rem;
}

/* Red-tinted "Flagged n times" box (wireframe colors). */
.flagged-box[b-ysnmgsgu0m] {
    background-color: #FADBD8;
    border: 1px solid #E57373;
    color: #A04000;
    border-radius: 8px;
    padding: 8px 16px;
}

/* Green "Marked as reviewed" box shown after Allow (or for already-reviewed rows). */
.reviewed-box[b-ysnmgsgu0m] {
    background-color: #D5F5E3;
    border: 1px solid #66BB6A;
    color: #1E8449;
    border-radius: 8px;
    padding: 8px 16px;
}

/* pre-wrap keeps CR/LF and space runs verbatim but soft-wraps long lines at the
   fixed width — vertical scrollbar only, like the Llm page's output textarea. */
.generation-text[b-ysnmgsgu0m] {
    white-space: pre-wrap;
    overflow-wrap: break-word;
    overflow-x: hidden;
    overflow-y: auto;
    max-height: 60vh;
    min-height: 300px;
    background-color: var(--mud-palette-background-gray);
    border: 1px solid var(--mud-palette-lines-inputs);
    border-radius: 4px;
    padding: 12px 16px;
}

.detail-footer[b-ysnmgsgu0m] {
    text-align: right;
    margin-top: 0.5rem;
}
/* /Components/Pages/Admin/Generations.razor.rz.scp.css */
/* Clickable sort headers (hand-rolled: MudTableSortLabel would client-sort the page). */
.sort-header[b-x8r9z67sxz] {
    cursor: pointer;
    user-select: none;
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
}

/* ::deep — the arrow is MudIcon-rendered markup inside the scoped span. */
.sort-header[b-x8r9z67sxz]  .sort-icon {
    margin-left: 2px;
}

/* Text is the table's one flexible column: width:100% + max-width:0 makes it
   absorb exactly the leftover width after the fixed columns, so a long preview
   ellipsizes instead of widening the table into horizontal scroll — at any
   viewport/drawer state. min-width keeps a readable floor (below it the
   container's own horizontal scroll takes over). Table mode only: the stacked
   card layout under 600px lays cells out vertically instead. */
@media (min-width: 600px) {
    .generations-table[b-x8r9z67sxz]  td.text-cell {
        width: 100%;
        max-width: 0;
        min-width: 200px;
    }
}

/* Double-click on a row opens the detail dialog — suppress the browser's
   default double-click word selection (the full text stays selectable in
   the dialog's text area). */
.generations-table[b-x8r9z67sxz]  tbody tr {
    user-select: none;
}

/* Single-line ellipsized previews in table mode; in stacked (phone) mode the
   nowrap would force ~500px-wide rows, so it gives way to normal wrapping. */
.text-preview[b-x8r9z67sxz] {
    white-space: nowrap;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
}

@media (max-width: 599.98px) {
    .text-preview[b-x8r9z67sxz] {
        white-space: normal;
    }
}

/* Empty-table message: bigger letters, faded gray, per spec. */
.generations-empty[b-x8r9z67sxz] {
    font-size: 1.5rem;
    color: var(--mud-palette-text-disabled);
    text-align: center;
    padding: 3rem 0;
}
/* /Components/Pages/Admin/HyperparameterScatterPlot.razor.rz.scp.css */
/* Hover behavior of one scatter dot: reveal its tooltip and solidify the mark.
   The tooltip group is emitted as raw markup (MarkupString), so it carries no
   scope attribute and must be reached through ::deep. */

.scatter-plot .dot[b-2omyhuxvmf]  .dot-tip {
    opacity: 0;
    transition: opacity 0.1s;
}

.scatter-plot .dot:hover[b-2omyhuxvmf]  .dot-tip {
    opacity: 1;
}

.scatter-plot .dot:hover .dot-mark[b-2omyhuxvmf] {
    fill-opacity: 0.9;
}

/* Empty-state box; sized inline to the plot dimensions so row heights stay aligned. */
.scatter-plot-empty[b-2omyhuxvmf] {
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px dashed var(--mud-palette-lines-default);
    border-radius: 4px;
}
/* /Components/Pages/Admin/HyperparameterScoreChart.razor.rz.scp.css */
/* Eight small plots in one left-aligned, non-wrapping row that scrolls horizontally
   instead of compressing on narrow viewports. The gaps within a group and between
   the Plausibility/Fun groups come inline from ChartConfig.Scatter; each plot sizes
   itself from the same config (fixed pixels, so SVG text matches CSS text). */

.hyperparameter-score-chart .scroll-container[b-3frs3yhiu0] {
    overflow-x: auto;
    padding-bottom: 4px; /* room for the scrollbar */
}

.hyperparameter-score-chart .groups[b-3frs3yhiu0] {
    display: flex;
    width: max-content; /* never compress the plots; scroll instead */
}

.hyperparameter-score-chart .plots[b-3frs3yhiu0] {
    display: flex;
}

.hyperparameter-score-chart[b-3frs3yhiu0]  .scatter-plot {
    flex: 0 0 auto;
}
/* /Components/Pages/Admin/VisitsVotingsChart.razor.rz.scp.css */
/* MudChart's default tooltip renders its text at 12px — too small on large
   displays. The tooltip background self-adjusts: the text is measured with
   getBBox after CSS applies, so only the font size needs overriding here. */
.visits-votings-chart[b-9yk1dleq2l]  svg .svg-tooltip text {
    font-size: 18px; /* ~1.5 × the 12px MudChart default */
}

/* The first rotated x label pivots at the plot's left edge and extends ~15px
   past the svg bounds; letting it spill into the card's padding avoids the clip. */
.visits-votings-chart[b-9yk1dleq2l]  svg {
    overflow: visible;
}
/* /Components/Pages/Error.razor.rz.scp.css */
/* Themed replacement for the template's Bootstrap text-danger headings; the
   rest of the page inherits the shell's fonts. */

h1[b-fuv04plpa5], h2[b-fuv04plpa5] {
    font-family: var(--dp-font-serif);
    font-weight: 500;
    color: var(--dp-red);
}
/* /Components/Pages/Leaderboard.razor.rz.scp.css */
/* "The Perch of Fame" leaderboard: centered head, board tabs, ranked list
   with medal badges, and the read-full modal body (rendered through DpModal,
   so its markup carries this component's scope). Values from the Phase 5
   design mock; tokens in wwwroot/theme.css. */

.dp-board-head[b-jtvqwmsrbo] {
    text-align: center;
    margin-bottom: 22px;
}

    .dp-board-head h1[b-jtvqwmsrbo] {
        font-family: var(--dp-font-serif);
        font-weight: 500;
        font-size: 42px;
        color: var(--dp-teal);
        margin: 0;
    }

.dp-board-sub[b-jtvqwmsrbo] {
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 18px;
    color: var(--dp-muted);
    margin: 6px 0 0;
}

/* Tabs — scoped, not .dp-pill: the brown board-tab recipe (white/bordered
   inactive, filled active) differs from the transparent nav pill. */
.dp-board-tabs[b-jtvqwmsrbo] {
    display: flex;
    justify-content: center;
    gap: 8px;
    margin-bottom: 20px;
}

.dp-board-tab[b-jtvqwmsrbo] {
    cursor: pointer;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 15px;
    padding: 10px 22px;
    border-radius: var(--dp-radius-pill);
    background: #fff;
    color: var(--dp-brown);
    border: 1.5px solid #D8C9A6;
}

    .dp-board-tab.active[b-jtvqwmsrbo] {
        background: var(--dp-brown);
        color: #fff;
        border-color: var(--dp-brown);
    }

/* ---------- Ranked list ---------- */

.dp-board-list[b-jtvqwmsrbo] {
    background: #fff;
    border: 1px solid var(--dp-panel-border);
    border-radius: var(--dp-radius-panel);
    overflow: hidden;
}

.dp-board-row[b-jtvqwmsrbo] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 16px 20px;
    border-bottom: 1px solid #F2E9D6;
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
}

    .dp-board-row:hover[b-jtvqwmsrbo] {
        background: var(--dp-card);
    }

/* Rank badges: filled medals for 1-3, dashed circles for the rest.
   box-sizing keeps the dashed variant at exactly 34px too. */
.dp-rank[b-jtvqwmsrbo] {
    width: 34px;
    height: 34px;
    box-sizing: border-box;
    flex-shrink: 0;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 15px;
    background: transparent;
    color: var(--dp-brown);
    border: 1.5px dashed #C9B98E;
}

.dp-rank--gold[b-jtvqwmsrbo] {
    background: #E8C24B;
    color: var(--dp-gold-ink);
    border: none;
}

.dp-rank--silver[b-jtvqwmsrbo] {
    background: #CBD0D6;
    color: var(--dp-gold-ink);
    border: none;
}

.dp-rank--bronze[b-jtvqwmsrbo] {
    background: #D9A06A;
    color: var(--dp-gold-ink);
    border: none;
}

/* 2-digit ranks: smaller number, same circle. */
.dp-rank--wide[b-jtvqwmsrbo] {
    font-size: 12px;
}

.dp-board-preview[b-jtvqwmsrbo] {
    flex: 1;
    min-width: 0;
}

    .dp-board-preview p[b-jtvqwmsrbo] {
        margin: 0;
        font-family: var(--dp-font-serif);
        font-size: 18px;
        line-height: 1.4;
        color: var(--dp-ink);
    }

.dp-board-score[b-jtvqwmsrbo] {
    text-align: right;
    flex-shrink: 0;
}

.dp-board-score-value[b-jtvqwmsrbo] {
    font-family: var(--dp-font-serif);
    font-size: 26px;
    color: var(--dp-teal);
    line-height: 1;
}

.dp-board-score-votes[b-jtvqwmsrbo] {
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 11px;
    color: var(--dp-faint);
}

/* Loading / failure / empty notes (off-mock additions). */
.dp-board-note[b-jtvqwmsrbo] {
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 18px;
    color: var(--dp-muted);
    text-align: center;
    margin: 0;
    padding: 36px 20px;
}

.dp-board-note--error[b-jtvqwmsrbo] {
    color: var(--dp-red);
    font-style: normal;
}

/* ---------- Read-full modal body ---------- */

.dp-read-head[b-jtvqwmsrbo] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.dp-read-label[b-jtvqwmsrbo] {
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 13px;
    letter-spacing: .04em;
    color: var(--dp-brown);
}

.dp-read-votes[b-jtvqwmsrbo] {
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 12px;
    color: var(--dp-faint);
    flex-shrink: 0;
}

/* Tag-formatted generation text (.dp-fmt in theme.css — MarkupString gets no
   scope attribute); pre-wrap keeps prose newlines; the scroll box caps long
   multi-paragraph texts (the mock never had those). */
.dp-read-text[b-jtvqwmsrbo] {
    margin: 0 0 22px;
    font-family: var(--dp-font-serif);
    font-size: 23px;
    line-height: 1.5;
    color: var(--dp-ink);
    white-space: pre-wrap;
    overflow-wrap: break-word;
    max-height: 60vh;
    overflow-y: auto;
    overflow-x: hidden;
    overscroll-behavior: contain;
}

/* Truncation note (TruncatedNote.razor child component) on the light modal. */
.dp-read[b-jtvqwmsrbo]  .dp-fmt-note {
    color: var(--dp-muted);
    margin-bottom: 22px;
}

.dp-read-note[b-jtvqwmsrbo] {
    margin: 0 0 22px;
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 18px;
    color: var(--dp-muted);
}

.dp-read-note--error[b-jtvqwmsrbo] {
    color: var(--dp-red);
    font-style: normal;
}

.dp-read-footer[b-jtvqwmsrbo] {
    text-align: right;
}

/* ---------- Responsive ---------- */

@media (max-width: 640px) {
    .dp-board-head h1[b-jtvqwmsrbo] {
        font-size: 34px;
    }

    .dp-board-sub[b-jtvqwmsrbo] {
        font-size: 16px;
    }

    .dp-board-row[b-jtvqwmsrbo] {
        gap: 12px;
        padding: 14px 14px;
    }

    .dp-rank[b-jtvqwmsrbo] {
        width: 28px;
        height: 28px;
        font-size: 13px;
    }

    .dp-rank--wide[b-jtvqwmsrbo] {
        font-size: 11px;
    }

    .dp-board-preview p[b-jtvqwmsrbo] {
        font-size: 16px;
    }

    .dp-board-score-value[b-jtvqwmsrbo] {
        font-size: 21px;
    }

    .dp-read-text[b-jtvqwmsrbo] {
        font-size: 19px;
        max-height: 56vh;
    }
}
/* /Components/Pages/LeaderVotingSection.razor.rz.scp.css */
/* "Parrot said" voting section: dashed divider, dark-blue candidate bubble,
   rating + flag/vote controls, and the flag modal body (rendered through
   DpModal, so its markup carries this component's scope). Values from the
   Phase 5 design mock; tokens in wwwroot/theme.css. */

.dp-said[b-3ftzx72s7s] {
    margin-top: 44px;
    border-top: 1px dashed #DBCDAF;
    padding-top: 30px;
}

.dp-said-head[b-3ftzx72s7s] {
    position: relative;
    text-align: center;
    margin-bottom: 16px;
}

    .dp-said-head h2[b-3ftzx72s7s] {
        font-family: var(--dp-font-serif);
        font-weight: 500;
        font-size: 34px;
        color: var(--dp-teal);
        margin: 0;
    }

.dp-said-sub[b-3ftzx72s7s] {
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 17px;
    color: var(--dp-muted);
    margin: 6px 0 0;
}

.dp-said-reload[b-3ftzx72s7s] {
    position: absolute;
    top: 6px;
    right: 0;
}

/* Consent note shown in place of the voting UI. */
.dp-said-note[b-3ftzx72s7s] {
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 18px;
    color: var(--dp-muted);
    text-align: center;
    margin: 0;
}

.dp-said-bubble[b-3ftzx72s7s] {
    background: var(--dp-blue-bubble);
    border-radius: 24px;
    padding: 30px 32px;
    min-height: 150px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* Left-aligned (owner rule, not the mock's centering); the content is
   tag-formatted markup (.dp-fmt in theme.css — MarkupString gets no scope
   attribute); pre-wrap keeps prose newlines; width 100% pins short texts left. */
.dp-said-text[b-3ftzx72s7s] {
    margin: 0;
    width: 100%;
    font-family: var(--dp-font-serif);
    font-size: 25px;
    line-height: 1.45;
    color: #EAF2F9;
    text-align: left;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.dp-said-empty[b-3ftzx72s7s] {
    margin: 0;
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 20px;
    color: #7FA8C9;
    text-align: center;
}

/* Truncation note (TruncatedNote.razor child component): the light tint of
   .dp-said-empty, readable on the dark bubble. */
.dp-said-bubble[b-3ftzx72s7s]  .dp-fmt-note {
    color: #7FA8C9;
}

.dp-said-controls[b-3ftzx72s7s] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
    justify-content: space-between;
    gap: 14px;
    margin-top: 18px;
}

.dp-said-ratings[b-3ftzx72s7s] {
    display: flex;
    align-items: flex-start;
    gap: 22px;
}

.dp-said-buttons[b-3ftzx72s7s] {
    display: flex;
    align-items: center;
    gap: 10px;
}

    /* Same size bump the Llm action buttons use over the shared .dp-btn. */
    .dp-said-buttons .dp-btn[b-3ftzx72s7s] {
        font-size: 16px;
        padding: 13px 24px;
        border-radius: 14px;
    }

/* Flag pill (explicit border/background counter the MudBlazor global reset). */
.dp-flag-btn[b-3ftzx72s7s] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--dp-chip);
    border: 1px solid #DDD0B4;
    padding: 8px 14px 8px 10px;
    border-radius: var(--dp-radius-pill);
    cursor: pointer;
    color: #8A6B3C;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 13px;
    line-height: 1.1;
}

    .dp-flag-btn:hover:not(:disabled)[b-3ftzx72s7s] {
        background: #EADFC5;
    }

    .dp-flag-btn:disabled[b-3ftzx72s7s] {
        opacity: .55;
        cursor: default;
    }

.dp-flag-btn-avatar[b-3ftzx72s7s] {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    overflow: hidden;
    display: block;
    flex-shrink: 0;
}

    .dp-flag-btn-avatar img[b-3ftzx72s7s] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

/* Same recipe as Llm's .dp-save-message (scoped there, duplicated here). */
.dp-said-message[b-3ftzx72s7s] {
    margin: 10px 0 0;
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 13px;
    color: var(--dp-teal);
}

/* ---------- Flag modal body ---------- */

.dp-flag[b-3ftzx72s7s] {
    text-align: center;
}

.dp-flag-mascot[b-3ftzx72s7s] {
    width: 86px;
    height: 86px;
    margin: 0 auto 12px;
    border-radius: 50%;
    overflow: hidden;
    display: block;
}

    .dp-flag-mascot img[b-3ftzx72s7s] {
        width: 100%;
        height: 100%;
        object-fit: cover;
    }

.dp-flag h3[b-3ftzx72s7s] {
    font-family: var(--dp-font-serif);
    font-weight: 500;
    font-size: 28px;
    color: var(--dp-brown);
    margin: 0 0 10px;
}

.dp-flag--done h3[b-3ftzx72s7s] {
    color: var(--dp-teal);
}

.dp-flag p[b-3ftzx72s7s] {
    font-family: var(--dp-font-serif);
    font-size: 18px;
    line-height: 1.55;
    color: var(--dp-body);
    margin: 0 0 18px;
}

.dp-flag--done p[b-3ftzx72s7s] {
    margin-bottom: 20px;
}

.dp-flag-actions[b-3ftzx72s7s] {
    display: flex;
    gap: 10px;
    justify-content: center;
}

/* ---------- Responsive ---------- */

@media (max-width: 640px) {
    .dp-said[b-3ftzx72s7s] {
        margin-top: 32px;
        padding-top: 24px;
    }

    .dp-said-head h2[b-3ftzx72s7s] {
        font-size: 28px;
    }

    .dp-said-reload[b-3ftzx72s7s] {
        position: static;
        margin-top: 10px;
    }

    .dp-said-bubble[b-3ftzx72s7s] {
        padding: 20px 18px;
    }

    .dp-said-text[b-3ftzx72s7s] {
        font-size: 21px;
    }

    .dp-said-empty[b-3ftzx72s7s] {
        font-size: 18px;
    }

    .dp-said-controls[b-3ftzx72s7s] {
        flex-direction: column;
        align-items: stretch;
    }

    .dp-said-ratings[b-3ftzx72s7s] {
        justify-content: center;
    }

    .dp-said-buttons .dp-said-vote[b-3ftzx72s7s] {
        flex: 1;
    }

    .dp-flag-actions[b-3ftzx72s7s] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Llm.razor.rz.scp.css */
/* "Parrot says" page: heading, white sub-cards, teal speech bubble, actions.
   Values from the Phase 5 design mock; tokens in wwwroot/theme.css. */

.dp-page-head[b-u7ticy03tc] {
    text-align: center;
    margin-bottom: 22px;
}

    .dp-page-head h1[b-u7ticy03tc] {
        font-family: var(--dp-font-serif);
        font-weight: 500;
        font-size: 46px;
        line-height: 1;
        color: var(--dp-teal);
        margin: 0;
    }

.dp-page-sub[b-u7ticy03tc] {
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 19px;
    color: var(--dp-muted);
    margin: 8px 0 0;
}

/* ---------- White sub-cards ---------- */

.dp-panel[b-u7ticy03tc] {
    background: #fff;
    border: 1px solid var(--dp-panel-border);
    border-radius: var(--dp-radius-panel);
    margin-bottom: 14px;
}

.dp-panel-label[b-u7ticy03tc] {
    display: block;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 13px;
    color: var(--dp-brown);
    letter-spacing: .04em;
}

.dp-starter[b-u7ticy03tc] {
    padding: 16px 18px;
}

    .dp-starter .dp-panel-label[b-u7ticy03tc] {
        margin-bottom: 8px;
    }

/* Explicit border/background/appearance counter the MudBlazor global reset.
   The mock hides the native arrow but draws no replacement — the SVG chevron
   background fills that gap (right padding clears it). */
.dp-starter-select[b-u7ticy03tc] {
    width: 100%;
    font-family: var(--dp-font-serif);
    font-size: 20px;
    color: var(--dp-ink);
    padding: 12px 42px 12px 14px;
    border-radius: 14px;
    border: 1px solid #E0D3B8;
    background-color: var(--dp-card);
    cursor: pointer;
    -webkit-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Cpath d='M3 6l5 5 5-5' fill='none' stroke='%238A5A2B' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
}

.dp-params[b-u7ticy03tc] {
    padding: 18px;
}

.dp-params-head[b-u7ticy03tc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 16px;
}

/* .dp-chip-btn (Reload) is a shared class in theme.css. */

.dp-params-grid[b-u7ticy03tc] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(128px, 1fr));
    gap: 16px 18px;
}

/* ---------- Output speech bubble ---------- */

.dp-bubble[b-u7ticy03tc] {
    position: relative;
    background: var(--dp-teal);
    border-radius: 24px;
    padding: 28px 30px;
    min-height: 190px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.dp-bubble-tail[b-u7ticy03tc] {
    position: absolute;
    left: 44px;
    bottom: -14px;
    width: 28px;
    height: 28px;
    background: var(--dp-teal);
    border-radius: 0 0 0 8px;
    transform: rotate(45deg) skew(-6deg, -6deg);
}

.dp-bubble-empty[b-u7ticy03tc] {
    margin: 0;
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 22px;
    color: #6E9C90;
    text-align: center;
}

    .dp-bubble-empty b[b-u7ticy03tc] {
        color: var(--dp-gold);
        font-style: normal;
    }

.dp-thinking[b-u7ticy03tc] {
    display: flex;
    align-items: center;
    gap: 12px;
    color: #BBD9CF;
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 20px;
}

.dp-thinking-dots[b-u7ticy03tc] {
    display: inline-flex;
    gap: 5px;
    margin-left: 2px;
}

    .dp-thinking-dots span[b-u7ticy03tc] {
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: var(--dp-gold);
    }

    .dp-thinking-dots span:nth-child(2)[b-u7ticy03tc] {
        animation-delay: .18s;
    }

    .dp-thinking-dots span:nth-child(3)[b-u7ticy03tc] {
        animation-delay: .36s;
    }

/* Tag-formatted markup (.dp-fmt in theme.css — MarkupString gets no scope
   attribute); pre-wrap keeps the streamed prose newlines. */
.dp-output-text[b-u7ticy03tc] {
    margin: 0;
    font-family: var(--dp-font-serif);
    font-size: 26px;
    line-height: 1.4;
    color: var(--dp-card);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* Truncation note (TruncatedNote.razor child component): the light tint of
   .dp-thinking, readable on the teal bubble. */
.dp-bubble[b-u7ticy03tc]  .dp-fmt-note {
    color: #BBD9CF;
}

.dp-output-reaction[b-u7ticy03tc] {
    margin: 16px 0 0;
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 14px;
    color: var(--dp-gold);
}

/* ---------- Actions row ---------- */

.dp-actions[b-u7ticy03tc] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    margin-top: 18px;
}

.dp-actions-buttons[b-u7ticy03tc] {
    display: flex;
    gap: 10px;
}

    /* The mock's action buttons are a size up from the shared .dp-btn. */
    .dp-actions-buttons .dp-btn[b-u7ticy03tc] {
        font-size: 16px;
        padding: 13px 24px;
        border-radius: 14px;
    }

.dp-actions-ratings[b-u7ticy03tc] {
    display: flex;
    align-items: flex-start;
    gap: 22px;
}

.dp-save-message[b-u7ticy03tc] {
    margin: 10px 0 0;
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 13px;
    color: var(--dp-teal);
}

/* ---------- Responsive ---------- */

@media (max-width: 640px) {
    .dp-page-head h1[b-u7ticy03tc] {
        font-size: 34px;
    }

    .dp-page-sub[b-u7ticy03tc] {
        font-size: 17px;
    }

    .dp-starter-select[b-u7ticy03tc] {
        font-size: 18px;
    }

    .dp-bubble[b-u7ticy03tc] {
        padding: 20px 18px;
        min-height: 150px;
    }

    .dp-bubble-tail[b-u7ticy03tc] {
        left: 32px;
    }

    .dp-bubble-empty[b-u7ticy03tc] {
        font-size: 19px;
    }

    .dp-thinking[b-u7ticy03tc] {
        font-size: 18px;
    }

    .dp-output-text[b-u7ticy03tc] {
        font-size: 21px;
    }

    .dp-actions[b-u7ticy03tc] {
        flex-direction: column;
        align-items: stretch;
    }

    .dp-actions-buttons .dp-btn[b-u7ticy03tc] {
        flex: 1;
    }

    .dp-actions-ratings[b-u7ticy03tc] {
        justify-content: center;
    }
}
/* /Components/Pages/NotFound.razor.rz.scp.css */
.dp-notfound[b-kl3a90dvcv] {
    max-width: 560px;
    margin: 0 auto;
    text-align: center;
}

    .dp-notfound img[b-kl3a90dvcv] {
        width: 100%;
        max-width: 400px;
        height: auto;
    }

    /* The image is the visual heading; the h1 reads like a lead paragraph. */
    .dp-notfound h1[b-kl3a90dvcv] {
        font-family: var(--dp-font-serif);
        font-weight: 400;
        font-size: 22px;
        line-height: 1.55;
        color: var(--dp-body);
        margin: 10px 0 0;
    }

    .dp-notfound p[b-kl3a90dvcv] {
        font-family: var(--dp-font-serif);
        font-style: italic;
        font-size: 19px;
        line-height: 1.55;
        color: #8A7F6B;
        margin: 10px 0 0;
    }

/* Bright gold like the About author ring — not the --dp-gold action color.
   Hover is restated so the base .dp-btn:hover white text never wins. */
.dp-notfound-btn[b-kl3a90dvcv],
.dp-notfound-btn:hover:not(:disabled)[b-kl3a90dvcv] {
    --dp-btn-bg: #F4C542;
    --dp-btn-shadow: #D3A421;
    color: var(--dp-teal);
}

.dp-notfound-btn[b-kl3a90dvcv] {
    font-size: 16px;
    padding: 14px 26px;
    border-radius: 14px;
    margin-top: 24px;
}
/* /Components/Shared/DotRating.razor.rz.scp.css */
.dp-rating[b-3dxj2ofo4s] {
    text-align: center;
}

.dp-rating-label[b-3dxj2ofo4s] {
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 12px;
    color: var(--dp-brown);
    letter-spacing: .03em;
    margin-bottom: 5px;
}

.dp-rating-dots[b-3dxj2ofo4s] {
    display: flex;
    gap: 5px;
    align-items: center;
    justify-content: center;
}

/* Explicit border/background counter the MudBlazor global reset. */
.dp-rating-dot[b-3dxj2ofo4s] {
    width: 16px;
    height: 16px;
    border-radius: 50%;
    padding: 0;
    cursor: pointer;
    background: transparent;
    border: 1.5px solid #C9B98E;
}

.dp-rating-dot--filled[b-3dxj2ofo4s] {
    background: var(--dp-gold);
    border-color: var(--dp-gold);
}

.dp-rating-dot:disabled[b-3dxj2ofo4s] {
    opacity: .45;
    cursor: default;
}

/* Reserved height so the clear link appearing doesn't shift the layout. */
.dp-rating-clear-slot[b-3dxj2ofo4s] {
    height: 17px;
    margin-top: 4px;
}

.dp-rating-clear[b-3dxj2ofo4s] {
    border: none;
    background: none;
    cursor: pointer;
    color: #B0472F;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 11px;
    line-height: 17px;
    padding: 0;
}
/* /Components/Shared/DpModal.razor.rz.scp.css */
.dp-modal-backdrop[b-bmb3g87uj7] {
    position: fixed;
    inset: 0;
    background: rgba(46, 42, 34, .55);
    z-index: var(--dp-z-modal);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
}

.dp-modal-box[b-bmb3g87uj7] {
    background: var(--dp-card);
    border-radius: var(--dp-radius-modal);
    width: 100%;
    padding: 30px 30px 26px;
    box-shadow: var(--dp-shadow-modal);
}

@media (max-width: 400px) {
    .dp-modal-box[b-bmb3g87uj7] {
        padding: 24px 18px 20px;
    }
}
/* /Components/Shared/DpSlider.razor.rz.scp.css */
.dp-slider-top[b-nuar7spce8] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 6px;
}

.dp-slider-name[b-nuar7spce8] {
    font-family: var(--dp-font-ui);
    font-weight: 700;
    font-size: 15px;
    color: var(--dp-ink);
}

.dp-slider-value[b-nuar7spce8] {
    font-family: var(--dp-font-serif);
    font-size: 17px;
    color: var(--dp-teal);
}

.dp-slider-caption[b-nuar7spce8] {
    font-family: var(--dp-font-ui);
    font-size: 11px;
    font-weight: 600;
    color: var(--dp-faint);
}

/* Explicit border/padding/appearance counter the MudBlazor global reset. */
input[type="range"][b-nuar7spce8] {
    -webkit-appearance: none;
    appearance: none;
    width: 100%;
    margin-top: 7px;
    height: 8px;
    border: none;
    padding: 0;
    border-radius: 999px;
    background: rgba(0, 0, 0, .10);
    outline: none;
    cursor: pointer;
    accent-color: var(--dp-gold);
}

input[type="range"][b-nuar7spce8]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    background: var(--dp-gold);
    border: 2px solid var(--dp-card);
    box-shadow: 0 2px 5px rgba(74, 54, 20, .35);
    cursor: pointer;
    margin-top: -6px;
}

input[type="range"][b-nuar7spce8]::-moz-range-thumb {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: var(--dp-gold);
    border: 2px solid var(--dp-card);
    box-shadow: 0 2px 5px rgba(74, 54, 20, .35);
    cursor: pointer;
}

input[type="range"][b-nuar7spce8]::-webkit-slider-runnable-track {
    height: 8px;
    border-radius: 999px;
}

input[type="range"][b-nuar7spce8]::-moz-range-track {
    height: 8px;
    border-radius: 999px;
    background: rgba(0, 0, 0, .10);
}
/* /Components/Shared/OldStudentVerificationModal.razor.rz.scp.css */
.dp-student-gate[b-z9k99lg6ej] {
    text-align: center;
}

.dp-student-gate-mascot[b-z9k99lg6ej] {
    width: 118px;
    height: 118px;
    margin: 0 auto 6px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dp-student-gate-mascot--wrong[b-z9k99lg6ej] {
    width: 112px;
    height: 112px;
}

.dp-student-gate-mascot img[b-z9k99lg6ej] {
    width: 100%;
    height: 100%;
    object-fit: contain;
}

.dp-student-gate h3[b-z9k99lg6ej] {
    margin: 0 0 10px;
    color: var(--dp-teal);
    font-family: var(--dp-font-serif);
    font-size: 28px;
    font-weight: 500;
}

.dp-student-gate--wrong h3[b-z9k99lg6ej] {
    color: var(--dp-red);
}

.dp-student-gate > p[b-z9k99lg6ej] {
    margin: 0 0 20px;
    color: var(--dp-body);
    font-family: var(--dp-font-serif);
    font-size: 17px;
    line-height: 1.55;
}

.dp-student-fields[b-z9k99lg6ej] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 20px;
    text-align: left;
}

.dp-student-fields label[b-z9k99lg6ej] {
    color: var(--dp-brown);
    font-family: var(--dp-font-ui);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .03em;
}

.dp-student-fields input[b-z9k99lg6ej] {
    box-sizing: border-box;
    display: block;
    width: 100%;
    margin-top: 5px;
    padding: 11px 14px;
    border: 1.5px solid #E0D2B4;
    border-radius: 12px;
    outline: none;
    background: #fff;
    color: var(--dp-body);
    font-family: var(--dp-font-serif);
    font-size: 17px;
}

.dp-student-fields input:focus[b-z9k99lg6ej] {
    border-color: var(--dp-gold);
}

.dp-student-fields input:disabled[b-z9k99lg6ej] {
    opacity: .65;
}

.dp-student-actions[b-z9k99lg6ej] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.dp-student-link[b-z9k99lg6ej] {
    border: none;
    background: none;
    color: #8A7F6B;
    cursor: pointer;
    font-family: var(--dp-font-ui);
    font-size: 14px;
    font-weight: 800;
    padding: 6px;
}

.dp-student-link:hover:not(:disabled)[b-z9k99lg6ej] {
    color: var(--dp-teal);
}

.dp-student-link:disabled[b-z9k99lg6ej] {
    cursor: default;
    opacity: .55;
}

.dp-student-error[b-z9k99lg6ej] {
    color: var(--dp-red) !important;
    font-family: var(--dp-font-ui) !important;
    font-size: 13px !important;
    font-style: normal !important;
    font-weight: 700;
}

@media (max-width: 400px) {
    .dp-student-gate-mascot[b-z9k99lg6ej] {
        width: 96px;
        height: 96px;
    }

    .dp-student-gate h3[b-z9k99lg6ej] {
        font-size: 25px;
    }
}
/* /Components/Shared/SquawkLimitPanel.razor.rz.scp.css */
.dp-quota-panel[b-hujbjlu5z8] {
    width: 100%;
    display: flex;
    align-items: center;
    gap: 14px;
    text-align: left;
    cursor: pointer;
    margin: 0 0 14px;
    border-radius: 20px;
    padding: 11px 15px;
    font: inherit;
    transition: background-color .15s ease;
}

.dp-quota-panel--available[b-hujbjlu5z8] {
    border: 1px solid var(--dp-panel-border);
    background: var(--dp-card);
}

    .dp-quota-panel--available:hover[b-hujbjlu5z8] {
        background: #F6EEDC;
    }

.dp-quota-panel--limited[b-hujbjlu5z8] {
    border: 1px solid #F1D6AE;
    background: #FCF1E1;
}

    .dp-quota-panel--limited:hover[b-hujbjlu5z8] {
        background: #FAEAD3;
    }

.dp-quota-panel-icon[b-hujbjlu5z8] {
    width: 46px;
    height: 46px;
    flex: 0 0 46px;
    display: flex;
    align-items: center;
    justify-content: center;
}

    .dp-quota-panel-icon img[b-hujbjlu5z8],
    .dp-quota-modal-image img[b-hujbjlu5z8] {
        width: 100%;
        height: 100%;
        object-fit: contain;
    }

.dp-quota-panel-copy[b-hujbjlu5z8] {
    flex: 1;
    min-width: 0;
}

.dp-quota-panel-title[b-hujbjlu5z8],
.dp-quota-panel-subtitle[b-hujbjlu5z8] {
    display: block;
}

.dp-quota-panel-title[b-hujbjlu5z8] {
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 15px;
    color: var(--dp-teal);
}

.dp-quota-panel-subtitle[b-hujbjlu5z8] {
    margin-top: 1px;
    font-family: var(--dp-font-serif);
    font-style: italic;
    font-size: 15px;
    color: #8A7F6B;
}

.dp-quota-panel--limited .dp-quota-panel-title[b-hujbjlu5z8],
.dp-quota-panel--limited[b-hujbjlu5z8]  .dp-countdown {
    color: #9A5A1E;
}

.dp-quota-panel--limited .dp-quota-panel-subtitle[b-hujbjlu5z8] {
    color: #B08A5A;
}

.dp-quota-dots[b-hujbjlu5z8] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 5px;
    max-width: 75px;
    flex-shrink: 0;
    margin-right: 2px;
}

.dp-quota-dot[b-hujbjlu5z8] {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    background: transparent;
    border: 2px solid #E0CFA8;
    box-sizing: border-box;
}

.dp-quota-dot--filled[b-hujbjlu5z8] {
    background: var(--dp-gold);
    border: 0;
}

.dp-quota-info[b-hujbjlu5z8] {
    width: 22px;
    height: 22px;
    flex: 0 0 22px;
    border-radius: 50%;
    background: var(--dp-panel-border);
    color: var(--dp-brown);
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 13px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dp-quota-panel--limited .dp-quota-info[b-hujbjlu5z8] {
    background: #F1D6AE;
    color: #9A5A1E;
}

.dp-quota-modal[b-hujbjlu5z8] {
    text-align: center;
}

.dp-quota-modal-image[b-hujbjlu5z8] {
    width: 96px;
    height: 96px;
    margin: 0 auto 8px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dp-quota-modal h2[b-hujbjlu5z8] {
    margin: 0 0 10px;
    font-family: var(--dp-font-serif);
    font-weight: 500;
    font-size: 28px;
    color: var(--dp-teal);
}

.dp-quota-modal .dp-quota-modal-heading--limited[b-hujbjlu5z8] {
    color: #9A5A1E;
}

.dp-quota-modal p[b-hujbjlu5z8] {
    margin: 0 0 18px;
    font-family: var(--dp-font-serif);
    font-size: 18px;
    line-height: 1.55;
    color: #3A342A;
}

.dp-quota-modal strong[b-hujbjlu5z8],
.dp-quota-modal[b-hujbjlu5z8]  .dp-countdown {
    font-family: var(--dp-font-ui);
    font-weight: 800;
    color: var(--dp-teal);
}

.dp-quota-modal-heading--limited + p[b-hujbjlu5z8]  .dp-countdown {
    color: #9A5A1E;
}

.dp-quota-modal-close[b-hujbjlu5z8] {
    border: 0;
    cursor: pointer;
    background: var(--dp-teal);
    color: #fff;
    font-family: var(--dp-font-ui);
    font-weight: 800;
    font-size: 15px;
    padding: 12px 22px;
    border-radius: 12px;
}

@media (max-width: 520px) {
    .dp-quota-panel[b-hujbjlu5z8] {
        align-items: flex-start;
        gap: 10px;
        padding: 10px 12px;
    }

    .dp-quota-panel-icon[b-hujbjlu5z8] {
        width: 40px;
        height: 40px;
        flex-basis: 40px;
    }

    .dp-quota-dots[b-hujbjlu5z8] {
        display: none;
    }

    .dp-quota-info[b-hujbjlu5z8] {
        margin-top: 9px;
    }

    .dp-quota-panel-subtitle[b-hujbjlu5z8] {
        font-size: 14px;
    }

    .dp-quota-modal h2[b-hujbjlu5z8] {
        font-size: 25px;
    }

    .dp-quota-modal p[b-hujbjlu5z8] {
        font-size: 17px;
    }
}
