/* /Components/Account/Pages/Manage/Index.razor.rz.scp.css */
/*
    The "Edit Name", "Edit Email", … controls open a modal, so they are buttons, not links.
    They used to be <a href="javascript:void(0)">, which SortSite flagged under WCAG F73:
    .account-detail-row-link removes the underline, so colour alone marked them as
    interactive — unreadable for a colour-blind user. The rule only applies to links, and
    these were never really links, so making them buttons retires it honestly rather than
    by adding an underline nobody asked for.

    Everything below exists to strip the user-agent button chrome so a <button> renders
    pixel-identical to the <a> it replaced. Measured before the change: colour
    rgb(55,108,169), proxima-nova 16px/300, line-height 24px, no padding, no border,
    transparent background, cursor pointer. `font: inherit` reproduces the first three,
    because the <a> was simply inheriting them from the body.

    This lives here rather than beside .account-detail-row-link in site.scss so the reset
    cannot leak onto the two elements on this page that share the class and are NOT
    buttons: the "Manage MFA" anchor, which is a real navigation, and the locked-PPID span.
*/
button.account-detail-row-link[b-64a92kyq6l] {
    background: transparent;
    border: 0;
    padding: 0;
    font: inherit;
    color: var(--bs-link-color);
    cursor: pointer;
}

/* The <a> darkened on hover as well as underlining; keep that, or the hover would feel flatter. */
button.account-detail-row-link:hover[b-64a92kyq6l] {
    color: var(--bs-link-hover-color);
}
/* /Components/Layout/MainLayout - Old.razor.rz.scp.css */
.page[b-gkve5fdhhw] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-gkve5fdhhw] {
    flex: 1;
}

.sidebar[b-gkve5fdhhw] {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.top-row[b-gkve5fdhhw] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-gkve5fdhhw]  a, .top-row[b-gkve5fdhhw]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-gkve5fdhhw]  a:hover, .top-row[b-gkve5fdhhw]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-gkve5fdhhw]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-gkve5fdhhw] {
        justify-content: space-between;
    }

    .top-row[b-gkve5fdhhw]  a, .top-row[b-gkve5fdhhw]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-gkve5fdhhw] {
        flex-direction: row;
    }

    .sidebar[b-gkve5fdhhw] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-gkve5fdhhw] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-gkve5fdhhw]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-gkve5fdhhw], article[b-gkve5fdhhw] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

#blazor-error-ui[b-gkve5fdhhw] {
    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-gkve5fdhhw] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-roqqzubauv] {
    position: relative;
    display: flex;
    flex-direction: column;
}

main[b-roqqzubauv] {
    flex: 1;
}

.sidebar[b-roqqzubauv] {
    background-image: linear-gradient(180deg, rgb(5, 39, 103) 0%, #3a0647 70%);
}

.top-row[b-roqqzubauv] {
    background-color: #f7f7f7;
    border-bottom: 1px solid #d6d5d5;
    justify-content: flex-end;
    height: 3.5rem;
    display: flex;
    align-items: center;
}

    .top-row[b-roqqzubauv]  a, .top-row[b-roqqzubauv]  .btn-link {
        white-space: nowrap;
        margin-left: 1.5rem;
        text-decoration: none;
    }

    .top-row[b-roqqzubauv]  a:hover, .top-row[b-roqqzubauv]  .btn-link:hover {
        text-decoration: underline;
    }

    .top-row[b-roqqzubauv]  a:first-child {
        overflow: hidden;
        text-overflow: ellipsis;
    }

@media (max-width: 640.98px) {
    .top-row[b-roqqzubauv] {
        justify-content: space-between;
    }

    .top-row[b-roqqzubauv]  a, .top-row[b-roqqzubauv]  .btn-link {
        margin-left: 0;
    }
}

@media (min-width: 641px) {
    .page[b-roqqzubauv] {
        flex-direction: row;
    }

    .sidebar[b-roqqzubauv] {
        width: 250px;
        height: 100vh;
        position: sticky;
        top: 0;
    }

    .top-row[b-roqqzubauv] {
        position: sticky;
        top: 0;
        z-index: 1;
    }

    .top-row.auth[b-roqqzubauv]  a:first-child {
        flex: 1;
        text-align: right;
        width: 0;
    }

    .top-row[b-roqqzubauv], article[b-roqqzubauv] {
        padding-left: 2rem !important;
        padding-right: 1.5rem !important;
    }
}

#blazor-error-ui[b-roqqzubauv] {
    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-roqqzubauv] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* Scoped styles for the site navbar.

   Everything that used to live here from the Blazor project template - the
   .nav-scrollable sidebar, .top-row, the bi-*-nav-menu icon sprites and the
   ::deep .nav-link colour rules - was dead: this component renders a Bootstrap
   navbar, not the template's sidebar. The ::deep rules were not harmless dead
   weight either. They set `a.active { background-color: rgba(255,255,255,0.37) }`
   against site.scss's gold `.active` text, which composites to a 2.45:1 pair
   that accessibility checkers flag (WCAG 1.4.3); which of the two rules wins
   was down to scoped-CSS specificity. */

.navbar-toggler[b-3wbe1m389u] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: white;
    position: absolute;
    top: 0.75rem;
    right: 1rem;
    border: none;
    background: transparent;
    font-size: 1.5rem;
    display: flex;
    align-items: center;
    justify-content: center;
}

.navbar-toggler i[b-3wbe1m389u] {
    font-size: 2rem;
}

.navbar-brand[b-3wbe1m389u] {
    font-size: 1.1rem;
}

.nav-item[b-3wbe1m389u] {
    font-size: 0.9rem;
    padding-bottom: 0.5rem;
}

    .nav-item:first-of-type[b-3wbe1m389u] {
        padding-top: 1rem;
    }

    .nav-item:last-of-type[b-3wbe1m389u] {
        padding-bottom: 1rem;
    }

@media (min-width: 1200px) {
    .navbar-toggler[b-3wbe1m389u] {
        display: none;
    }
}
/* /Components/Pages/Admin/ClassTabs/ClassWaitlistTab.razor.rz.scp.css */
/* Shimmer rows while the queues load. A scoped stylesheet rather than an inline style: SortSite
   flags style="" attributes, and the SCSS bundle needs a node build this component does not. */
.waitlist-placeholder-row[b-xpcx71ohos] {
    height: 2rem;
}
/* /Components/Pages/Admin/CoursewareBuilder/CoursewareBuilder.razor.rz.scp.css */
[b-8rfu9iglvz] .rich-inline p { display: inline; margin: 0; padding: 0; }
[b-8rfu9iglvz] .rich-inline p + p { margin-left: 0.25rem; }
.builder-scroll-y[b-8rfu9iglvz] {
    overflow-y: auto;
}
.builder-alert-close[b-8rfu9iglvz] {
    font-size: 0.6rem;
}
/* Save status renders inside the (now light, no-background) cw-shell__header — dark colors for contrast. */
.builder-save-status[b-8rfu9iglvz] { font-size: 0.8rem; font-weight: 500; white-space: nowrap; }
.save-status-unsaved[b-8rfu9iglvz] { color: #6c757d; }
.save-status-saving[b-8rfu9iglvz]  { color: #6c757d; }
.save-status-saved[b-8rfu9iglvz]   { color: #198754; }
.save-status-failed[b-8rfu9iglvz]  { color: #dc3545; }
/* /Components/Pages/Admin/CoursewareCatalog/CoursewareCatalog.razor.rz.scp.css */
/*
    Only the page wrapper and empty state live here now. The toolbar, grid, card and pager moved to
    Components/Shared/Admin (AdminCatalog*) and carry their own scoped stylesheets, so editing them
    changes both the Courseware and Survey catalogs.
*/
.cw-catalog[b-j4i081mrlh] {
    padding-bottom: 1.5rem;
}

.cw-catalog__empty[b-j4i081mrlh] {
    text-align: center;
    padding: 3.5rem 1rem;
    color: #6b7480;
}

.cw-catalog__empty .bi[b-j4i081mrlh] {
    font-size: 2.5rem;
    display: block;
    margin-bottom: 0.75rem;
    color: #c2cad3;
}
/* /Components/Pages/Admin/SurveyBuilder/SurveyBuilder.razor.rz.scp.css */
/* Scrolling content pane inside the shell's fixed-height body. */
.sb-scroll[b-anhjh6hbbp] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* Load-failure card, rendered outside the shell because the shell's error slot is unreachable
   while the detail is null. */
.sb-load-fail[b-anhjh6hbbp] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem 1rem;
    min-height: 60vh;
}

.sb-load-fail__inner[b-anhjh6hbbp] {
    text-align: center;
    max-width: 32rem;
}

/* Content-tab editor column: the outline lives in the shell's nav slot. */
.sb-content[b-anhjh6hbbp] {
    padding: 1.25rem 1.5rem;
    max-width: 62rem;
}
/* /Components/Pages/Admin/SurveyCatalog/SurveyCatalog.razor.rz.scp.css */
/*
    Only the page wrapper and empty state live here. The toolbar, grid, card and pager are the shared
    AdminCatalog* components in Components/Shared/Admin, with their own scoped stylesheets.
*/
.sc[b-7nswbx4g76] {
    padding-bottom: 1.5rem;
}

.sc__empty[b-7nswbx4g76] {
    text-align: center;
    padding: 3.5rem 1rem;
    color: #6b7480;
}

.sc__empty .bi[b-7nswbx4g76] {
    font-size: 2.5rem;
    display: block;
    margin-bottom: 0.75rem;
    color: #c2cad3;
}
/* /Components/Pages/Admin/UnifiedAdmin.razor.rz.scp.css */
/*
    The one element the role="grid" conversion costs.

    AdminListPanel's container is role="grid", so each .list-group-item is a role="row" and
    everything it shows has to sit inside a role="gridcell". Before the conversion the row's
    contents — the Expand chevron, the icon, the title block, the badges, the Move up/down
    column — were direct flex children of the row itself. They are now one level deeper,
    inside this cell, so the cell has to reproduce exactly what the row was doing for them.

    min-width: 0 is the part that is easy to miss and expensive to get wrong. A flex item
    defaults to min-width: auto, which refuses to shrink below its content's intrinsic width.
    Without it the cell would refuse to narrow, .text-truncate on the framework and course
    titles would stop clipping, and the rows would overflow the list panel instead. Measured
    on /Admin/frameworks, where the titles do truncate at the default panel width.
*/
.admin-list-cell[b-ks4u12erfg] {
    display: flex;
    align-items: center;
    flex: 1 1 auto;
    min-width: 0;
}
/* /Components/Pages/Catalog/AssessmentNavigator.razor.rz.scp.css */
.sa-nav-progress[b-kc1j8226vg] {
    height: 8px;
}

.sa-nav-domains[b-kc1j8226vg] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: 0.5rem;
    margin-bottom: 2.5rem;
}

.sa-nav-domain[b-kc1j8226vg] {
    text-align: left;
    border: 1px solid var(--bs-border-color);
    border-radius: 0.675rem;
    background: var(--bs-body-bg);
    padding: 1.25rem;
    position: relative;
}

.sa-nav-domain .badge[b-kc1j8226vg] {
    background-color: #D5D5D5;
    color: #141414;
    position: absolute;
    top: 0;
    right: 0;
    font-weight: 600;
    border-radius: 0 .675rem;
    padding: .35rem 1rem;
    font-size: 1rem;
}

.sa-nav-domain-active[b-kc1j8226vg] {
    border-color: #D5D5D5;
    background-color: #E8F1FA;
}

.sa-nav-domain.sa-nav-domain-active .badge[b-kc1j8226vg] {
    background-color: #376BA8;
    color: #fff;
}

.sa-nav-domain-title[b-kc1j8226vg] {
    font-weight: 700;
    font-size: 1.125rem;
}

.sa-nav-markers[b-kc1j8226vg] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.4rem;
}

.sa-marker[b-kc1j8226vg] {
    min-width: 2.25rem;
    height: 2.25rem;
    padding: 0 0.5rem;
    border-radius: 1.25rem;
    border: 2px solid var(--bs-border-color);
    background: var(--bs-body-bg);
    color: var(--bs-secondary-color);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
}

.sa-marker-rated[b-kc1j8226vg] {
    border-color: var(--bs-success);
    color: var(--bs-success);
}

.sa-marker-current[b-kc1j8226vg] {
    border-color: var(--bs-primary);
    box-shadow: 0 0 0 0.15rem rgba(13, 110, 253, 0.3);
    color: var(--bs-primary);
}
/* /Components/Pages/Catalog/CompetencyRubric.razor.rz.scp.css */
/* Reboot floats a legend and gives it its own font size; the rating heading has to keep
   looking like the plain block label it replaced. */
.sa-rubric-fieldset[b-73s6iij6er] {
    min-width: 0;
    border: 0;
    padding: 0;
    margin: 0;
}

.sa-rubric-legend[b-73s6iij6er] {
    float: none;
    width: auto;
    padding: 0;
    margin-bottom: 0;
    line-height: inherit;
}

/* The radio is visually hidden, so its label is both the click target and the focus ring.
   These two selectors were `.sa-radio + .btn`, which could never match — the radio is the
   last child of the column and no sibling follows it, and the column was never a .btn. The
   card was clickable only because the label wrapped the whole column; now that the label is
   just the title (a label may not contain the <p> in the rubric bodies), the ::after overlay
   below is what makes the rest of the card a click target. */
.sa-col-label[b-73s6iij6er] {
    cursor: pointer;
    user-select: none;
}

/* The label stretches over the whole card so a click anywhere picks that rating. Going
   through the label rather than a separate handler keeps one code path: the browser checks
   the radio and moves focus to it, exactly as clicking the button does. */
.sa-col-label[b-73s6iij6er]::after {
    content: "";
    position: absolute;
    inset: 0;
}

.sa-radio:focus-visible + .btn[b-73s6iij6er] {
    outline: 2px solid #376CA9;
    outline-offset: 2px;
    box-shadow: 0 0 0 0.25rem #376CA9;
}

/* The radio lives inside the .sa-col label, so surface its focus state on the card
   itself for a visible keyboard focus indicator. */
.sa-col:has(.sa-radio:focus-visible)[b-73s6iij6er] {
    outline: 2px solid #376CA9;
    outline-offset: 2px;
    box-shadow: 0 0 0 0.25rem #376CA9;
}

.sa-rubric-grid[b-73s6iij6er] {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 0.75rem;
}

@media (max-width: 991.98px) {
    .sa-rubric-grid[b-73s6iij6er] {
        grid-template-columns: 1fr;
    }
}

.sa-col[b-73s6iij6er] {
    position: relative;
    display: flex;
    flex-direction: column;
    text-align: left;
    border: 2px solid #8890A0;
    border-radius: 0.625rem;
    background: var(--bs-body-bg);
    padding: 1.25rem;
    overflow: hidden;
    transition: box-shadow 0.15s ease, transform 0.05s ease;
}

.sa-col.sa-col-failing[b-73s6iij6er] {
    border-color: #FB2C37;
}

.sa-col.sa-col-failing:hover[b-73s6iij6er] {
    box-shadow: 0 0 0 3px #feb1b5;
}

.sa-col.sa-col-failing.sa-col-selected[b-73s6iij6er] {
    background-color: #FEF3F3;
}

.sa-col.sa-col-needsimprovement[b-73s6iij6er] {
    border-color: #D07D00;
}

.sa-col.sa-col-needsimprovement:hover[b-73s6iij6er] {
    box-shadow: 0 0 0 3px #ffd79b;
}

.sa-col.sa-col-needsimprovement.sa-col-selected[b-73s6iij6er] {
    background-color: #FFFBEA;
}

.sa-col.sa-col-proficient[b-73s6iij6er] {
    border-color: #00A743;
}

.sa-col.sa-col-proficient:hover[b-73s6iij6er] {
    box-shadow: 0 0 0 3px #beebca ;
}

.sa-col.sa-col-proficient.sa-col-selected[b-73s6iij6er] {
    background-color: #F3FEF6;
}

.sa-col.sa-col-distinguished[b-73s6iij6er] {
    border-color: #2B7FFF;
}

.sa-col.sa-col-distinguished:hover[b-73s6iij6er] {
    box-shadow: 0 0 0 3px #bcdaf4;
}

.sa-col.sa-col-distinguished.sa-col-selected[b-73s6iij6er] {
    background-color: #EBF7FD;
}

.sa-col:hover[b-73s6iij6er] {
    box-shadow: 0 0 0 3px #d8d8d8;
}

.sa-col-selected[b-73s6iij6er] {
    background-color: #FAFAFA;
}

.sa-col-body[b-73s6iij6er] {
    font-size: 1rem;
    flex: 1 1 auto;
}

.sa-col-check[b-73s6iij6er] {
    text-align: center;
    color: #8890A0;
    padding-bottom: 0.5rem;
    font-size: 1.75rem;
}

.sa-col-failing .sa-col-check[b-73s6iij6er] {
    color: #FB2C37;
}

.sa-col-needsimprovement .sa-col-check[b-73s6iij6er] {
    color: #D07D00;
}

.sa-col-proficient .sa-col-check[b-73s6iij6er] {
    color: #00A743;
}

.sa-col-distinguished .sa-col-check[b-73s6iij6er] {
    color: #2B7FFF;
}

[b-73s6iij6er] .sa-description,
[b-73s6iij6er] .sa-description * {
    overflow-wrap: break-word;
    word-break: normal;
}
/* /Components/Pages/Catalog/SelfAssessment.razor.rz.scp.css */
[b-fqmlkccw28] .sa-description,
[b-fqmlkccw28] .sa-description * {
    overflow-wrap: break-word;
    word-break: normal;
}

.progress-counter-container[b-fqmlkccw28] {
    color: #333333;
}

.progress-counter[b-fqmlkccw28] {
    border: 1px solid #B9B9B9;
    padding: .25rem .75rem;
    border-radius: 5px;
}

.self-assessment-card[b-fqmlkccw28] {
    flex: 1 1 0;
}

.self-assessment-card .card-header[b-fqmlkccw28] {
    background-color: #E8F1FA;
}

.card-header .badge[b-fqmlkccw28] {
    background-color: #2A517D;
    color: #fff;
    position: absolute;
    top: 0;
    right: 0;
    font-weight: 600;
    border-radius: 0 .675rem;
    padding: .35rem 1rem;
    font-size: 1rem;
}



.self-assessment-card .card-header[b-fqmlkccw28] {
    min-height: 100px;
}

.self-assessment-card .card-body .badge[b-fqmlkccw28] {
    width: fit-content;
}

.self-assessment-card .card-body ul li:last-child[b-fqmlkccw28] {
    border-bottom: none !important;
}

.self-assessment-card a[b-fqmlkccw28] {
    text-decoration: none;
}

.self-assessment-card a:hover[b-fqmlkccw28],
.self-assessment-card a:focus[b-fqmlkccw28] {
    text-decoration: underline;
}

.badge.bg-neutral[b-fqmlkccw28] {
    background-color: #fff !important;
    border:1px solid #737373;
    color: #737373;
}

.badge.bg-danger[b-fqmlkccw28] {
    background-color: #fff !important;
    border: 1px solid #C41A20;
    color: #C41A20;
}

.badge.bg-primary[b-fqmlkccw28] {
    background-color: #fff !important;
    border: 1px solid #0066FF;
    color: #0066FF;
}

.badge.bg-warning[b-fqmlkccw28] {
    background-color: #fff !important;
    border: 1px solid #FADE7E;
    color: #695A09 !important;
}

.badge.bg-success[b-fqmlkccw28] {
    background-color: #fff !important;
    border: 1px solid #166A1F;
    color: #166A1F;
}

/* Results list: the whole row links to that competency. The anchor holds only the name and
   stretches over the row with ::after, so the rating badge stays outside the link and keeps its
   own semantics as the link's description. */
.sa-result-item[b-fqmlkccw28] {
    position: relative;
}

.sa-result-item-link[b-fqmlkccw28] {
    text-decoration: none;
}

.sa-result-item-link:hover[b-fqmlkccw28],
.sa-result-item-link:focus-visible[b-fqmlkccw28] {
    text-decoration: underline;
}

.sa-result-item-link[b-fqmlkccw28]::after {
    content: "";
    position: absolute;
    inset: 0;
}

.sa-result-item:hover[b-fqmlkccw28] {
    background-color: #F5F7FA;
}

/* The ring is drawn on the stretched ::after, so it traces the whole row rather than the
   link's own text-sized box — and needs no :has(). */
.sa-result-item-link:focus-visible[b-fqmlkccw28] {
    outline: none;
}

.sa-result-item-link:focus-visible[b-fqmlkccw28]::after {
    outline: 2px solid #376CA9;
    outline-offset: -2px;
}


/* Loading shimmer: stands in for a rubric rating column until the assessment arrives. */
.sa-placeholder-level[b-fqmlkccw28] {
    height: 10rem;
}
/* /Components/Pages/SurveyViewer.razor.rz.scp.css */
/* Scrolling body inside the shell's fixed-height content pane. */
.sv-scroll[b-wurmmdsmvq] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

/* Reading column. The survey is a single-column instrument, so it stays narrow regardless of
   viewport width. */
.sv-page[b-wurmmdsmvq] {
    max-width: 720px;
    margin-inline: auto;
    padding: 1.5rem 1rem;
}

.sv-page--wide[b-wurmmdsmvq] {
    padding-block: 3rem;
}

.sv-outcome-icon[b-wurmmdsmvq] {
    font-size: 4rem;
}

.sv-progress[b-wurmmdsmvq] {
    height: 6px;
}

/* Square rating buttons, 1-5. */
.sv-rating-btn[b-wurmmdsmvq] {
    width: 40px;
    height: 40px;
}
/* /Components/Shared/Admin/AdminCatalogCard.razor.rz.scp.css */
.acc[b-qrs6cn23kg] {
    position: relative;
    display: flex;
    flex-direction: column;
    border: 1px solid #e3e6ea;
    overflow: hidden;
    background: #fff;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.12);
    min-height: 220px;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}

.acc:hover[b-qrs6cn23kg] {
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.12);
    transform: translateY(-2px);
}

/* Fills the card's top-right corner, so its own top-right radius has to match the card's. */
.acc__badge[b-qrs6cn23kg] {
    background-color: #2A517D;
    color: #fff;
    position: absolute;
    top: 0;
    right: 0;
    font-weight: 600;
    border-radius: 0 .625rem;
    padding: .5rem .75rem;
    font-size: .875rem;
    text-transform: uppercase;
}

/* Published keeps the base blue — it is the one status the design leaves undyed. */
.acc__badge--active[b-qrs6cn23kg] {
    background: #15691F;
}

.acc__badge--draft[b-qrs6cn23kg] {
    background: #E21E25;
}

.acc__badge--archived[b-qrs6cn23kg] {
    background: #737373;
}

.card-body[b-qrs6cn23kg] {
    padding: 1.25rem;
}

/*
    Holds one line even when empty. Courseware without a code has nothing to put here, and letting
    the paragraph collapse would pull that card's title up out of step with the rest of the grid.
*/
.acc__meta[b-qrs6cn23kg] {
    min-height: 1.5rem;
}

.acc__title[b-qrs6cn23kg] {
    font-size: 1.25rem;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.acc__dot[b-qrs6cn23kg] {
    margin: 0 .25rem 0 0;
}
/* /Components/Shared/Admin/AdminCatalogGrid.razor.rz.scp.css */
.acg[b-7v6ancgzo0] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 1.1rem;
}

.acg__add[b-7v6ancgzo0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.4rem;
    min-height: 220px;
    border: 2px dashed #D5D5D5;
    border-radius: 0.5rem;
    background: #fafbfc;
    color: #707070;
    font-weight: 500;
    font-size: 1.375rem;
    cursor: pointer;
    transition: border-color 0.15s ease, color 0.15s ease;
}

.acg__add:hover[b-7v6ancgzo0] {
    border-color: #0a6cf5;
    color: #0a6cf5;
}

.acg__add .bi[b-7v6ancgzo0] {
    font-size: 1.6rem;
}

/*
    Shimmer tile. Mirrors AdminCatalogCard: same footprint and border treatment, and bars standing in
    for the badge, meta line, title and open button. Changing the card's shape means changing these
    too, or the grid jumps when the query returns.
*/
.acg__placeholder[b-7v6ancgzo0] {
    min-height: 220px;
    padding: 1.25rem;
    border-color: #e3e6ea;
    box-shadow: 0 2px 5px rgba(0, 0, 0, 0.12);
}

.acg__placeholder .placeholder[b-7v6ancgzo0] {
    border-radius: 0.25rem;
}

.acg__placeholder-badge[b-7v6ancgzo0] {
    position: absolute;
    top: 0;
    right: 0;
    width: 4.5rem;
    height: 1.875rem;
    border-radius: 0 0.625rem;
}

.acg__placeholder-meta[b-7v6ancgzo0] {
    height: 1rem;
    margin-top: 1rem;
    margin-bottom: 0.75rem;
}

.acg__placeholder-title[b-7v6ancgzo0] {
    height: 1.25rem;
    margin-bottom: 0.4rem;
}

/* Same height as a real button, pinned to the bottom the way the card's open button is. */
.acg__placeholder-btn[b-7v6ancgzo0] {
    height: 2.5rem;
    margin-top: auto;
    border-radius: 0.375rem;
}
/* /Components/Shared/Admin/AdminCatalogPager.razor.rz.scp.css */
.acp[b-vp30z80dyr] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    margin-top: 1.5rem;
}
/* /Components/Shared/Admin/AdminCatalogToolbar.razor.rz.scp.css */
.act__bar[b-8v1dacp8cn] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1.25rem;
}

.act__title[b-8v1dacp8cn] {
    margin: 0;
    font-size: 1.5rem;
    /* Wraps rather than nowrap: a caller may pass a long title (the gradebook passes the class
       title), and a nowrap title ran past the panel and was clipped. */
    min-width: 0;
    overflow-wrap: anywhere;
}

.act__search[b-8v1dacp8cn] {
    position: relative;
    flex: 1 1 240px;
    min-width: 200px;
}

.act__search .fa-magnifying-glass[b-8v1dacp8cn] {
    position: absolute;
    top: 50%;
    left: 0.75rem;
    transform: translateY(-50%);
    color: #6b7480;
    pointer-events: none;
}

.act__search .form-control[b-8v1dacp8cn] {
    padding: .75rem 1rem .75rem 2.1rem;
}

/*
    Filter and action content comes from the caller's render fragments, so these need ::deep to be
    reachable. Callers opt in with the act-filter / act-action classes.
*/
[b-8v1dacp8cn] .act-filter {
    width: auto;
    min-width: 9.5rem;
    flex: 0 0 auto;
    padding: .75rem 1rem;
}

[b-8v1dacp8cn] .act-action {
    flex: 0 0 auto;
    white-space: nowrap;
    padding: 0.65rem 1rem;
    font-size: 1.125rem;
}
/* /Components/Shared/Admin/AdminDetailsPanel.razor.rz.scp.css */


.admin-detail-panel-heading[b-ybbnwze2xr] {
    font-size: 1.25rem;
} 

[b-ybbnwze2xr] .detail-tab-btn {
    white-space: nowrap;
}

[b-ybbnwze2xr] .detail-tab-btn .badge {
    font-size: .875rem;
}

[b-ybbnwze2xr] .detail-tab-btn:focus-visible {
    outline: 2px solid #376CA9;
    outline-offset: 2px;
    animation: focus-bulge-b-ybbnwze2xr 0.3s ease;
}

@keyframes focus-bulge-b-ybbnwze2xr {
    0%   { transform: scale(1); }
    40%  { transform: scale(1.03); }
    100% { transform: scale(1); }
}

[b-ybbnwze2xr] .detail-tab-btn.btn-primary {
    box-shadow: 0 1px 3px rgba(42, 81, 125, 0.25);
}

[b-ybbnwze2xr] .detail-tab-btn.btn-primary i {
    color: #fff !important;
}

/* ?? Tab menu dropdown buttons ??????????????????????????? */
[b-ybbnwze2xr] .tab-menu-dropdown {
    position: relative;
}

[b-ybbnwze2xr] .tab-menu-backdrop {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 1049;
}

[b-ybbnwze2xr] .tab-menu-btn {
    font-size: 0.875rem;
    padding: 0.4rem 0.85rem;
    min-height: 34px;
    border-radius: 6px;
    font-weight: 500;
    transition: all 0.15s ease;
    white-space: nowrap;
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
}

[b-ybbnwze2xr] .tab-menu-btn:focus-visible {
    outline: 2px solid #376CA9;
    outline-offset: 2px;
}

[b-ybbnwze2xr] .tab-menu-btn.btn-primary {
    box-shadow: 0 1px 3px rgba(42, 81, 125, 0.25);
}

[b-ybbnwze2xr] .tab-menu-btn.btn-secondary {
    background-color: #e9ecef;
    color: #495057;
    border-color: #ced4da;
}

[b-ybbnwze2xr] .tab-menu-btn.btn-secondary:hover {
    background: #e8f1fa;
    color: #2A517D;
    border-color: #2A517D;
}

[b-ybbnwze2xr] .tab-menu-dropdown-menu {
    min-width: 220px;
    max-height: 400px;
    overflow-y: auto;
    box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
    border-radius: 8px;
    padding: 0.25rem 0;
    z-index: 1050;
}

[b-ybbnwze2xr] .tab-menu-dropdown-menu .dropdown-item {
    font-size: 0.85rem;
    padding: 0.45rem 1rem;
    display: flex;
    align-items: center;
}

[b-ybbnwze2xr] .tab-menu-dropdown-menu .dropdown-item i {
    width: 1.25rem;
    text-align: center;
}

[b-ybbnwze2xr] .tab-menu-dropdown-menu .dropdown-item.active {
    background-color: #2A517D;
    color: #fff;
}

[b-ybbnwze2xr] .tab-menu-dropdown-menu .dropdown-item:not(.active):hover {
    background-color: #e8f1fa;
    color: #2A517D;
}

/* ?? Detail header ??????????????????????????????????????? */
[b-ybbnwze2xr] .admin-detail-header {
    background: #f8f9fb;
    border-bottom: 1px solid #e2e6ea;
}

/* ?? Empty state ????????????????????????????????????????? */
[b-ybbnwze2xr] .admin-empty-state {
    background-color: #e8f1fa;
    border-color: #d0e0f0;
    min-height: 350px;
    display: flex;
    align-items: center;
    justify-content: center;
}

[b-ybbnwze2xr] .admin-empty-state .card-body {
    max-width: 420px;
}

[b-ybbnwze2xr] .admin-empty-state .admin-empty-icon {
    background: url('../images/icons/icon-admin-search.svg') no-repeat 0 0;
    background-size: 160px 178px;
    width: 160px;
    height: 178px;
    display: block;
    margin: 0 auto;
}

[b-ybbnwze2xr] .admin-empty-state h3 {
    color: #212529;
    font-weight: 600;
    font-size: 2rem;
}

/* ?? Info banner ????????????????????????????????????????? */
[b-ybbnwze2xr] .alert-info {
    background-color: #ECF4FC;
    border-color: #CCD3DA;
    color: #2A517D;
}

/* ?? Badge styling in header ????????????????????????????? */
[b-ybbnwze2xr] .admin-detail-header .badge.bg-info {
    font-weight: 500;
}
/* /Components/Shared/Admin/AdminListPanel.razor.rz.scp.css */
/* Panel collapse button */
.admin-list-panel.collapsed[b-umeefg0cmu]  .collapsed-btn {
    width: 36px;
    padding: 0.25rem;
}

/* Keyboard navigation focus — outline applies whether tabindex sits on the .list-group-item itself or on an inner focusable child (e.g. ClassCard's .admin-card). */
[b-umeefg0cmu] .admin-list-interactive .list-group-item:focus-visible,
[b-umeefg0cmu] .admin-list-interactive .list-group-item [tabindex="0"]:focus-visible,
[b-umeefg0cmu] .admin-list-interactive .list-group-item [role="button"]:focus-visible,
[b-umeefg0cmu] .admin-list-interactive .list-group-item [role="option"]:focus-visible {
    outline: 2px solid #376CA9;
    outline-offset: -2px;
    z-index: 1;
    animation: focus-bulge-b-umeefg0cmu 0.3s ease;
}

@keyframes focus-bulge-b-umeefg0cmu {
    0%   { transform: scale(1); }
    40%  { transform: scale(1.03); }
    100% { transform: scale(1); }
}

/* ?? Card header ????????????????????????????????????????? */
[b-umeefg0cmu] .card-header {
    background: #f8f9fb;
    border-bottom: 1px solid #e2e6ea;
}

.admin-list-panel-heading[b-umeefg0cmu] {
    font-size: 1.25rem;
} 

/* Header count badge: outlined style matching screenshots */
[b-umeefg0cmu] .card-header .badge.bg-dark {
    background-color: #fff !important;
    color: #2E537F;
    border: 1.5px solid #2E537F;
    font-weight: 600;
    font-size: 0.875rem;
}

/* Search bar button styles live in site.scss (shared with AdminListView) */

/* ?? List items ?????????????????????????????????????????? */

/* Item name: primary blue link color when not selected */
[b-umeefg0cmu] .list-group-item:not(.active) .fw-semibold {
    color: var(--bs-primary);
}

/* Active list item: left border accent */
[b-umeefg0cmu] .list-group-item.active {
    border-left: 4px solid #1E3C60;
    background-color: #2E537F;
}

/* Active list item: flip status-colored icons/text to white so they remain legible against the blue background. */
[b-umeefg0cmu] .list-group-item.active .text-muted,
[b-umeefg0cmu] .list-group-item.active .text-success,
[b-umeefg0cmu] .list-group-item.active .text-danger,
[b-umeefg0cmu] .list-group-item.active .text-warning,
[b-umeefg0cmu] .list-group-item.active .text-info,
[b-umeefg0cmu] .list-group-item.active .text-primary,
[b-umeefg0cmu] .list-group-item.active .text-secondary,
[b-umeefg0cmu] .list-group-item.active .admin-card-status-dot {
    color: #fff !important;
}

/* Subtle hover on non-active items */
[b-umeefg0cmu] .list-group-item-action:not(.active):hover {
    background-color: #f0f5fa;
}

/* Lock icon styling (for system/protected items) */
[b-umeefg0cmu] .list-group-item:not(.active) .badge.bg-info {
    background-color: transparent !important;
    color: #dc3545;
    font-size: 0.875rem;
}

/* ?? Pagination footer ??????????????????????????????????? */
[b-umeefg0cmu] .pagination .page-link {
    border-radius: 4px;
    margin: 0 1px;
    color: #393A41BF;
}
/* /Components/Shared/Admin/AdminListView.razor.rz.scp.css */
/*
    Moved out of a <style> element that sat inside this component's own markup. A <style> is
    only valid in the <head>, and this component renders in the body, so every one of the 27
    admin pages that used it carried an HTML5 violation. A scoped stylesheet is where this
    belongs and the rendered result is identical.
*/
.admin-list-body[b-dogxdmz4rh] {
    transition: opacity 150ms ease;
}

.admin-list-body.is-reloading[b-dogxdmz4rh] {
    opacity: 0.55;
    pointer-events: none;
}
/* /Components/Shared/Admin/AdminRowList.razor.rz.scp.css */
.admin-row-clickable[b-1gzhsdcmma] {
    cursor: pointer;
    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
}

.admin-row-clickable:hover[b-1gzhsdcmma] {
    border-color: var(--bs-primary);
    box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
}

.admin-row-clickable:focus-visible[b-1gzhsdcmma] {
    outline: 2px solid #2A517D;
    outline-offset: 2px;
    border-color: var(--bs-primary);
}
/* /Components/Shared/Admin/Courseware/Builder/ActivityEditor.razor.rz.scp.css */
.builder-html-toggle[b-4cdo5zu0ub] {
    font-size: 0.75rem;
}
.builder-html-textarea[b-4cdo5zu0ub] {
    font-size: 0.8rem;
    white-space: pre-wrap;
}
.builder-badge-sm[b-4cdo5zu0ub] {
    font-size: 0.85rem;
}
/* /Components/Shared/Admin/Courseware/Builder/AnswerEditor.razor.rz.scp.css */
.builder-answer-icon[b-cwa3xkrqst] {
    font-size: 1.2rem;
}
/* /Components/Shared/Admin/Courseware/Builder/AnswerOptions.razor.rz.scp.css */
.builder-badge-sm[b-jlajq8wmue] {
    font-size: 0.85rem;
}
.builder-badge-xs[b-jlajq8wmue] {
    font-size: 0.75rem;
}
.builder-answer-row[b-jlajq8wmue] {
    cursor: pointer;
}
.builder-answer-marker[b-jlajq8wmue] {
    font-size: 1.3rem;
}
.builder-answer-rationale[b-jlajq8wmue] {
    font-size: 0.9rem;
}
.builder-move-btn[b-jlajq8wmue] {
    font-size: 0;
}
.builder-move-icon[b-jlajq8wmue] {
    font-size: 0.85rem;
}
/* /Components/Shared/Admin/Courseware/Builder/CompanionEditor.razor.rz.scp.css */
.form-check-label[b-d0bl0u08eq] { font-size: 0.8rem; }
/* /Components/Shared/Admin/Courseware/Builder/PublishReadinessPanel.razor.rz.scp.css */
/* The row container, its borders and the severity colours are AdminCheckerRow's now. What is
   left is the one thing specific to this panel: the jump control reads as a word, not a link. */
.readiness-jump[b-go47gbo5g2] {
    text-decoration: none;
}
/* /Components/Shared/Admin/Courseware/Builder/QuestionEditor.razor.rz.scp.css */
.builder-question-icon[b-1wbdaf81xu] {
    font-size: 1.2rem;
}
.builder-badge-sm[b-1wbdaf81xu] {
    font-size: 0.85rem;
}
.builder-order-item[b-1wbdaf81xu] {
    cursor: grab;
}
.builder-order-index[b-1wbdaf81xu] {
    min-width: 28px;
}
.builder-cloze-preview[b-1wbdaf81xu] {
    line-height: 2.6;
    font-size: 1.05rem;
}
.builder-cloze-blank[b-1wbdaf81xu] {
    min-width: 100px;
    min-height: 34px;
    vertical-align: middle;
    border-style: dashed !important;
    border-width: 2px !important;
    border-color: #adb5bd !important;
}
.builder-image-preview[b-1wbdaf81xu] {
    max-height: 180px;
}
/* /Components/Shared/Admin/Courseware/Builder/QuestionsPanel.razor.rz.scp.css */
.builder-questions-card[b-9wcbvdp2c7] {
    border-top: 0;
    border-right: 0;
    border-bottom: 0;
}
.builder-badge-sm[b-9wcbvdp2c7] {
    font-size: 0.85rem;
}
.builder-badge-xs[b-9wcbvdp2c7] {
    font-size: 0.75rem;
}
.builder-question-row[b-9wcbvdp2c7] {
    cursor: pointer;
}
.builder-question-icon[b-9wcbvdp2c7] {
    font-size: 1.3rem;
}
.builder-question-preview[b-9wcbvdp2c7] {
    font-size: 0.9rem;
}
.builder-move-btn[b-9wcbvdp2c7] {
    font-size: 0;
}
.builder-move-icon[b-9wcbvdp2c7] {
    font-size: 0.85rem;
}
/* /Components/Shared/Admin/Courseware/Builder/RubricEditor.razor.rz.scp.css */
.rubric-total[b-rcgrkkoc7z] {
    font-size: 0.85rem;
}

.rubric-row[b-rcgrkkoc7z] {
    width: 100%;
}
/* /Components/Shared/Admin/Courseware/Grading/StevieGradeSuggestionPanel.razor.rz.scp.css */
.stevie-panel[b-89m3sd07xw] {
    border: 1px solid #d7dde4;
    border-radius: 0.5rem;
    background: #f8fafc;
    padding: 0.85rem 1rem;
    margin-bottom: 1rem;
}

.stevie-panel__head[b-89m3sd07xw] {
    display: flex;
    align-items: center;
    font-weight: 600;
    color: #2A517D;
    margin-bottom: 0.6rem;
}

.stevie-panel__title[b-89m3sd07xw] {
    font-size: 0.95rem;
}

.stevie-panel__note[b-89m3sd07xw] {
    font-size: 0.9rem;
}

.stevie-panel__badge[b-89m3sd07xw] {
    font-size: 0.75rem;
}

.stevie-panel__total[b-89m3sd07xw] {
    font-size: 0.9rem;
}

.stevie-panel__conf[b-89m3sd07xw] {
    font-size: 0.8rem;
}

.stevie-crit__name[b-89m3sd07xw] {
    font-weight: 600;
    font-size: 0.9rem;
}

.stevie-crit__score[b-89m3sd07xw] {
    font-size: 0.85rem;
    white-space: nowrap;
}

.stevie-crit__rationale[b-89m3sd07xw] {
    font-size: 0.85rem;
    margin-top: 0.15rem;
}
/* /Components/Shared/Admin/Survey/Builder/SurveyBranchRulesPanel.razor.rz.scp.css */
.sbr[b-eezlqd74qa] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.sbr__row[b-eezlqd74qa] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
}

.sbr__row--selected[b-eezlqd74qa] {
    border-color: #0d6efd;
    background-color: rgba(13, 110, 253, 0.08);
}

.sbr__act[b-eezlqd74qa] {
    padding-block: 0;
    padding-inline: 0.25rem;
}
/* /Components/Shared/Admin/Survey/Builder/SurveyLinkedTargetsPanel.razor.rz.scp.css */
.slt[b-22zu7nsr9m] {
    padding: 1.25rem 1.5rem;
}

.slt__row[b-22zu7nsr9m] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.slt__name[b-22zu7nsr9m] {
    font-weight: 600;
    min-width: 12rem;
}

.slt__title-text[b-22zu7nsr9m] {
    min-width: 8rem;
}

.slt__trigger[b-22zu7nsr9m] {
    width: auto;
    min-width: 11rem;
}

.slt__title[b-22zu7nsr9m] {
    width: auto;
    min-width: 12rem;
}
/* /Components/Shared/Admin/Survey/Builder/SurveyOptionsList.razor.rz.scp.css */
.sol[b-5uxlfkh01q] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.sol__row[b-5uxlfkh01q] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem;
    border: 1px solid #dee2e6;
    border-radius: 0.375rem;
    cursor: pointer;
}

.sol__row--selected[b-5uxlfkh01q] {
    border-color: #0d6efd;
    background-color: rgba(13, 110, 253, 0.08);
}

.sol__ordinal[b-5uxlfkh01q] {
    min-width: 1.25rem;
    text-align: center;
}

.sol__remove[b-5uxlfkh01q] {
    padding-block: 0;
    padding-inline: 0.25rem;
}

/* ── Reordering (draft only). The grip and the drag states are shared: see _sortable.scss. ── */

/* Stacked move arrows, tight enough to fit the row height. */
.sol__moves[b-5uxlfkh01q] {
    line-height: 1;
}

.sol__move[b-5uxlfkh01q] {
    padding: 0;
    line-height: 1;
    text-decoration: none;
}
/* /Components/Shared/Admin/Survey/Builder/SurveyQuestionOutline.razor.rz.scp.css */
.sqo[b-ea5m5x70e9] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}

.sqo__head[b-ea5m5x70e9] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid #d5d5d5;
}

.sqo__scroll[b-ea5m5x70e9] {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overflow-x: hidden;
}

.sqo__row[b-ea5m5x70e9] {
    display: flex;
    align-items: center;
    cursor: pointer;
}

.sqo__row--option[b-ea5m5x70e9] {
    padding-left: 1.25rem;
}

.sqo__twisty[b-ea5m5x70e9] {
    padding: 0;
    margin-right: 0.25rem;
    border: 0;
    line-height: 1;
}

.sqo__twisty-spacer[b-ea5m5x70e9] {
    display: inline-block;
    width: 1.15rem;
    margin-right: 0.25rem;
}

/* Stacked move-up/down arrows: tight enough to fit one outline row. */
.sqo__move[b-ea5m5x70e9] {
    padding: 0;
    line-height: 1;
    text-decoration: none;
}

/* ── Drag-to-reorder (draft only). The grip and drag states are shared: see _sortable.scss. ── */
.sqo__grip[b-ea5m5x70e9] {
    margin-right: 0.15rem;
}
/* /Components/Shared/Admin/Survey/Builder/SurveyReadinessPanel.razor.rz.scp.css */
.srp[b-c4ri7kcju3] {
    max-width: 24rem;
}

.srp__list[b-c4ri7kcju3] {
    max-height: 16rem;
    overflow-y: auto;
}

.srp__item[b-c4ri7kcju3] {
    border-bottom: 1px solid var(--bs-border-color-translucent);
}

.srp__item:last-child[b-c4ri7kcju3] {
    border-bottom: 0;
}

.srp__icon--error[b-c4ri7kcju3] {
    color: var(--bs-danger);
}

.srp__icon--warning[b-c4ri7kcju3] {
    color: var(--bs-warning);
}

.srp__jump[b-c4ri7kcju3] {
    text-decoration: none;
}
/* /Components/Shared/Admin/Survey/Builder/SurveyResultsPanel.razor.rz.scp.css */
.srp[b-2hhi6p5sop] {
    padding: 1.25rem 1.5rem;
}

/* One response, laid out as a row rather than a table cell so it reflows on narrow widths. */
.srp__row[b-2hhi6p5sop] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.srp__student[b-2hhi6p5sop] {
    min-width: 5.5rem;
}

.srp__completed[b-2hhi6p5sop] {
    font-size: 0.85rem;
    min-width: 11rem;
}

/* One question's breakdown. Stacked rather than tabular: an option label can be a full sentence,
   and a table would either truncate it or force horizontal scrolling. */
.srp__q[b-2hhi6p5sop] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    width: 100%;
}

.srp__q-head[b-2hhi6p5sop] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.srp__q-text[b-2hhi6p5sop] {
    flex: 1 1 18rem;
    min-width: 0;
}

/* Label / bar / count. The bar is the only elastic column so the counts stay aligned down the list. */
.srp__opt[b-2hhi6p5sop] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding-left: 2rem;
}

.srp__opt-text[b-2hhi6p5sop] {
    flex: 0 0 14rem;
    min-width: 0;
    overflow-wrap: anywhere;
}

.srp__opt-bar[b-2hhi6p5sop] {
    flex: 1 1 auto;
    height: 0.75rem;
    min-width: 4rem;
}

.srp__opt-count[b-2hhi6p5sop] {
    flex: 0 0 5.5rem;
    text-align: right;
}

/* Free-text answers. Capped height so one chatty question cannot push the rest of the page away. */
.srp__texts[b-2hhi6p5sop] {
    margin: 0;
    padding-left: 3rem;
    max-height: 14rem;
    overflow-y: auto;
}

.srp__texts li[b-2hhi6p5sop] {
    font-size: 0.9rem;
    overflow-wrap: anywhere;
}
/* /Components/Shared/Admin/Survey/Builder/SurveySettingsPanel.razor.rz.scp.css */
.sset[b-plkzg3s9hi] {
    padding: 1.25rem 1.5rem;
    max-width: 62rem;
}

.sset__heading[b-plkzg3s9hi] {
    font-size: 1.05rem;
    font-weight: 600;
    color: #1f2d3d;
}
/* /Components/Shared/Admin/Survey/Catalog/AddSurveyLinkTargetModal.razor.rz.scp.css */
.aslt-results[b-du0julgiaj] {
    max-height: 13rem;
    overflow-y: auto;
    border: 1px solid #dee2e6;
    border-top: 0;
    border-radius: 0 0 0.375rem 0.375rem;
}

.aslt-results:empty[b-du0julgiaj] {
    display: none;
}

.aslt-result[b-du0julgiaj] {
    display: block;
    width: 100%;
    text-align: left;
    border: 0;
    background: transparent;
    padding: 0.4rem 0.6rem;
    font-size: 0.9rem;
}

.aslt-result:hover[b-du0julgiaj],
.aslt-result:focus-visible[b-du0julgiaj] {
    background: #eaf1f8;
    outline: none;
}
/* /Components/Shared/Admin/Survey/Catalog/NewSurveyModal.razor.rz.scp.css */
.nsm-backdrop[b-3ru488penj] {
    background: rgba(0, 0, 0, 0.5);
}
/* /Components/Shared/Registration/EnrollmentProgressScreen.razor.rz.scp.css */
.enrollment-progress-screen[b-r8nowsgctk] {
    animation: fadeIn-b-r8nowsgctk 0.3s ease-in;
}

@keyframes fadeIn-b-r8nowsgctk {
    from { opacity: 0; transform: translateY(8px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* ── Shared container ── */

.loader-container[b-r8nowsgctk] {
    position: relative;
    width: 72px;
    height: 72px;
    margin: 0 auto;
}

/* ════════════════════════════════════════
   Animation 0: Orbital
   ════════════════════════════════════════ */

.orbital-ring[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    border-radius: 50%;
}

.orbital-dot[b-r8nowsgctk] {
    position: absolute;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    top: -5px;
    left: calc(50% - 5px);
}

.ring-1[b-r8nowsgctk] {
    animation: orbit-b-r8nowsgctk 2.4s linear infinite;
}
.ring-1 .orbital-dot[b-r8nowsgctk] {
    background: var(--bs-primary, #0d6efd);
    box-shadow: 0 0 8px color-mix(in srgb, var(--bs-primary, #0d6efd) 50%, transparent);
}

.ring-2[b-r8nowsgctk] {
    inset: 10px;
    animation: orbit-b-r8nowsgctk 1.8s linear infinite reverse;
}
.ring-2 .orbital-dot[b-r8nowsgctk] {
    width: 8px;
    height: 8px;
    top: -4px;
    left: calc(50% - 4px);
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 70%, white);
    box-shadow: 0 0 6px color-mix(in srgb, var(--bs-primary, #0d6efd) 35%, transparent);
}

.ring-3[b-r8nowsgctk] {
    inset: 20px;
    animation: orbit-b-r8nowsgctk 1.2s linear infinite;
}
.ring-3 .orbital-dot[b-r8nowsgctk] {
    width: 6px;
    height: 6px;
    top: -3px;
    left: calc(50% - 3px);
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 45%, white);
    box-shadow: 0 0 4px color-mix(in srgb, var(--bs-primary, #0d6efd) 25%, transparent);
}

.orbital-core[b-r8nowsgctk] {
    position: absolute;
    width: 10px;
    height: 10px;
    top: calc(50% - 5px);
    left: calc(50% - 5px);
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
    animation: pulse-b-r8nowsgctk 2s ease-in-out infinite;
}

@keyframes orbit-b-r8nowsgctk {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

@keyframes pulse-b-r8nowsgctk {
    0%, 100% { opacity: 0.4; transform: scale(0.8); }
    50%      { opacity: 1;   transform: scale(1.2); }
}

/* ════════════════════════════════════════
   Animation 1: Morphing Shape
   ════════════════════════════════════════ */

.morph-shape[b-r8nowsgctk] {
    position: absolute;
    width: 40px;
    height: 40px;
    top: calc(50% - 20px);
    left: calc(50% - 20px);
    background: var(--bs-primary, #0d6efd);
    animation: morph-b-r8nowsgctk 3s ease-in-out infinite;
    box-shadow: 0 0 16px color-mix(in srgb, var(--bs-primary, #0d6efd) 40%, transparent);
}

@keyframes morph-b-r8nowsgctk {
    0%   { border-radius: 50%;  transform: rotate(0deg)   scale(1);   opacity: 0.9; }
    25%  { border-radius: 20%;  transform: rotate(90deg)  scale(1.1); opacity: 1;   }
    50%  { border-radius: 50%;  transform: rotate(180deg) scale(0.9); opacity: 0.7; }
    75%  { border-radius: 4px;  transform: rotate(270deg) scale(1.1); opacity: 1;   }
    100% { border-radius: 50%;  transform: rotate(360deg) scale(1);   opacity: 0.9; }
}

/* ════════════════════════════════════════
   Animation 2: DNA Helix
   ════════════════════════════════════════ */

.helix-strand[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
}

.helix-dot[b-r8nowsgctk] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
    animation-duration: 1.6s;
    animation-timing-function: ease-in-out;
    animation-iteration-count: infinite;
    animation-delay: calc(var(--i) * 0.2s);
}

.helix-dot.dot-a[b-r8nowsgctk] {
    animation-name: helixA-b-r8nowsgctk;
    box-shadow: 0 0 6px color-mix(in srgb, var(--bs-primary, #0d6efd) 50%, transparent);
}

.helix-dot.dot-b[b-r8nowsgctk] {
    animation-name: helixB-b-r8nowsgctk;
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 55%, white);
    box-shadow: 0 0 6px color-mix(in srgb, var(--bs-primary, #0d6efd) 30%, transparent);
}

@keyframes helixA-b-r8nowsgctk {
    0%, 100% { transform: translateX(-14px) scale(1);   opacity: 1;   }
    50%      { transform: translateX(14px)  scale(0.6); opacity: 0.4; }
}

@keyframes helixB-b-r8nowsgctk {
    0%, 100% { transform: translateX(14px)  scale(0.6); opacity: 0.4; }
    50%      { transform: translateX(-14px) scale(1);   opacity: 1;   }
}

/* ════════════════════════════════════════
   Animation 3: Ripple
   ════════════════════════════════════════ */

.ripple-ring[b-r8nowsgctk] {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 0;
    height: 0;
    border: 2px solid var(--bs-primary, #0d6efd);
    border-radius: 50%;
    transform: translate(-50%, -50%);
    animation: ripple-b-r8nowsgctk 2.4s ease-out infinite;
}

.ripple-2[b-r8nowsgctk] { animation-delay: 0.8s; }
.ripple-3[b-r8nowsgctk] { animation-delay: 1.6s; }

.ripple-core[b-r8nowsgctk] {
    position: absolute;
    width: 10px;
    height: 10px;
    top: calc(50% - 5px);
    left: calc(50% - 5px);
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
    animation: ripplePulse-b-r8nowsgctk 2.4s ease-in-out infinite;
}

@keyframes ripple-b-r8nowsgctk {
    0%   { width: 0;    height: 0;    opacity: 0.8; border-width: 3px; }
    100% { width: 72px; height: 72px; opacity: 0;   border-width: 1px; }
}

@keyframes ripplePulse-b-r8nowsgctk {
    0%, 100% { transform: scale(1);   opacity: 0.8; }
    50%      { transform: scale(1.3); opacity: 1;   }
}

/* ════════════════════════════════════════
   Animation 4: Constellation
   ════════════════════════════════════════ */

.constellation-group[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    animation: constellationSpin-b-r8nowsgctk 8s linear infinite;
}

.constellation-lines[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
}

.constellation-lines line[b-r8nowsgctk] {
    stroke: color-mix(in srgb, var(--bs-primary, #0d6efd) 30%, transparent);
    stroke-width: 1.5;
    stroke-dasharray: 4 3;
    animation: dashDrift-b-r8nowsgctk 2s linear infinite;
}

.constellation-dot[b-r8nowsgctk] {
    position: absolute;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
    box-shadow: 0 0 8px color-mix(in srgb, var(--bs-primary, #0d6efd) 50%, transparent);
    animation: constellationPulse-b-r8nowsgctk 2.4s ease-in-out infinite;
}

.cdot-1[b-r8nowsgctk] { top: -1px;  left: calc(50% - 5px); animation-delay: 0s;   }
.cdot-2[b-r8nowsgctk] { top: calc(50% - 5px); right: -1px; animation-delay: 0.6s; }
.cdot-3[b-r8nowsgctk] { bottom: -1px; left: calc(50% - 5px); animation-delay: 1.2s; }
.cdot-4[b-r8nowsgctk] { top: calc(50% - 5px); left: -1px;  animation-delay: 1.8s; }

@keyframes constellationSpin-b-r8nowsgctk {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

@keyframes constellationPulse-b-r8nowsgctk {
    0%, 100% { transform: scale(0.7); opacity: 0.4; }
    50%      { transform: scale(1.2); opacity: 1;   }
}

@keyframes dashDrift-b-r8nowsgctk {
    from { stroke-dashoffset: 0; }
    to   { stroke-dashoffset: 14; }
}

/* ════════════════════════════════════════
   Animation 5: Pendulum (Newton's cradle bars)
   ════════════════════════════════════════ */

.pendulum[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 5px;
}

.pendulum-bar[b-r8nowsgctk] {
    width: 6px;
    height: 32px;
    border-radius: 3px;
    background: var(--bs-primary, #0d6efd);
    animation: pendulumSwing-b-r8nowsgctk 1.2s ease-in-out infinite;
    animation-delay: calc(var(--i) * 0.1s);
    transform-origin: top center;
}

@keyframes pendulumSwing-b-r8nowsgctk {
    0%, 100% { transform: scaleY(1)   rotate(0deg);   opacity: 0.5; }
    25%      { transform: scaleY(1.4) rotate(-8deg);   opacity: 1;   }
    50%      { transform: scaleY(1)   rotate(0deg);    opacity: 0.5; }
    75%      { transform: scaleY(1.4) rotate(8deg);    opacity: 1;   }
}

/* ════════════════════════════════════════
   Animation 6: 3D Wireframe Cube
   ════════════════════════════════════════ */

.cube-scene[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    perspective: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cube[b-r8nowsgctk] {
    width: 32px;
    height: 32px;
    position: relative;
    transform-style: preserve-3d;
    animation: cubeRotate-b-r8nowsgctk 4s linear infinite;
}

.cube-face[b-r8nowsgctk] {
    position: absolute;
    width: 32px;
    height: 32px;
    border: 2px solid var(--bs-primary, #0d6efd);
    border-radius: 2px;
    background: color-mix(in srgb, var(--bs-primary, #0d6efd) 8%, transparent);
    box-shadow: inset 0 0 8px color-mix(in srgb, var(--bs-primary, #0d6efd) 12%, transparent);
}

.cube-face.front[b-r8nowsgctk]  { transform: translateZ(16px); }
.cube-face.back[b-r8nowsgctk]   { transform: rotateY(180deg) translateZ(16px); }
.cube-face.left[b-r8nowsgctk]   { transform: rotateY(-90deg) translateZ(16px); }
.cube-face.right[b-r8nowsgctk]  { transform: rotateY(90deg) translateZ(16px); }
.cube-face.top[b-r8nowsgctk]    { transform: rotateX(90deg) translateZ(16px); }
.cube-face.bottom[b-r8nowsgctk] { transform: rotateX(-90deg) translateZ(16px); }

@keyframes cubeRotate-b-r8nowsgctk {
    0%   { transform: rotateX(0deg)   rotateY(0deg); }
    25%  { transform: rotateX(90deg)  rotateY(90deg); }
    50%  { transform: rotateX(180deg) rotateY(180deg); }
    75%  { transform: rotateX(270deg) rotateY(270deg); }
    100% { transform: rotateX(360deg) rotateY(360deg); }
}

/* ════════════════════════════════════════
   Animation 7: Staircase (stepping blocks)
   ════════════════════════════════════════ */

.staircase[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 3px;
    padding-bottom: 12px;
}

.stair-block[b-r8nowsgctk] {
    width: 10px;
    border-radius: 2px;
    background: var(--bs-primary, #0d6efd);
    animation: stairStep-b-r8nowsgctk 2s ease-in-out infinite;
    animation-delay: calc(var(--i) * 0.15s);
    box-shadow: 0 2px 6px color-mix(in srgb, var(--bs-primary, #0d6efd) 30%, transparent);
}

@keyframes stairStep-b-r8nowsgctk {
    0%, 100% { height: 10px; opacity: 0.4; }
    20%      { height: calc(12px + var(--i) * 8px); opacity: 1; }
    40%      { height: calc(12px + var(--i) * 8px); opacity: 1; }
    60%      { height: 48px; opacity: 0.8; }
    80%      { height: 10px; opacity: 0.4; }
}

/* ════════════════════════════════════════
   Animation 8: Pinwheel (rotating blades)
   ════════════════════════════════════════ */

.pinwheel[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    animation: pinwheelSpin-b-r8nowsgctk 3s linear infinite;
}

.pinwheel-blade[b-r8nowsgctk] {
    position: absolute;
    width: 0;
    height: 0;
    top: 50%;
    left: 50%;
    border-left: 8px solid transparent;
    border-right: 8px solid transparent;
    border-bottom: 28px solid var(--bs-primary, #0d6efd);
    transform-origin: center bottom;
    transform: translate(-8px, -28px) rotate(calc(var(--i) * 90deg));
    animation: bladePulse-b-r8nowsgctk 2s ease-in-out infinite;
    animation-delay: calc(var(--i) * 0.5s);
    filter: drop-shadow(0 0 4px color-mix(in srgb, var(--bs-primary, #0d6efd) 40%, transparent));
}

@keyframes pinwheelSpin-b-r8nowsgctk {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

@keyframes bladePulse-b-r8nowsgctk {
    0%, 100% { opacity: 0.35; }
    50%      { opacity: 1;    }
}

/* ════════════════════════════════════════
   Animation 9: Bounce Grid (3x3 wave)
   ════════════════════════════════════════ */

.bounce-grid[b-r8nowsgctk] {
    position: absolute;
    inset: 0;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 8px;
    padding: 14px;
    align-items: center;
    justify-items: center;
}

.bounce-dot[b-r8nowsgctk] {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--bs-primary, #0d6efd);
    animation: bounceWave-b-r8nowsgctk 1.6s ease-in-out infinite;
    animation-delay: calc(var(--d) * 0.15s);
    box-shadow: 0 0 6px color-mix(in srgb, var(--bs-primary, #0d6efd) 40%, transparent);
}

@keyframes bounceWave-b-r8nowsgctk {
    0%, 100% { transform: scale(0.5); opacity: 0.3; }
    50%      { transform: scale(1.3); opacity: 1;   }
}
/* /Components/Shared/Registration/RegClassItem.razor.rz.scp.css */
/* The restriction line under a closed cohort's button. Body size (it is the one line that says
   what to do, so it is not shrunk), and narrow enough that a long reason wraps beside the
   button rather than stretching the card. */
.reg-class-item-restriction[b-uzmbadv6u8] {
    line-height: 1.3;
    max-width: 18rem;
}
