/* /Components/Layout/AppHeader.razor.rz.scp.css */
.app-header[b-eriw9url3i] {
    background: #fff;
    border-bottom: 1px solid var(--asl-border);
    box-shadow: 0 1px 2px rgba(5, 20, 45, 0.05);
    height: var(--header-height);
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 1.5rem 0 0;
    position: sticky;
    top: 0;
    z-index: 10;
    flex-shrink: 0;
}

.app-header__brand[b-eriw9url3i] {
    display: flex;
    align-items: center;
    text-decoration: none;
    color: var(--asl-navy);
    align-self: stretch;
}

    .app-header__brand:hover[b-eriw9url3i] {
        text-decoration: none;
        color: var(--asl-navy);
    }

    /* The brand fills the header's full height from the left viewport edge, so an outside ring
       would be clipped; draw it inside instead. */
    .app-header__brand:focus-visible[b-eriw9url3i] {
        outline-offset: var(--asl-focus-ring-offset-inset);
    }

/* Logo column matches the admin sidebar width so the mark sits centered directly
   above the nav, keeping header and sidebar on one vertical rhythm. */
.app-header__logo-wrap[b-eriw9url3i] {
    width: 250px;
    flex-shrink: 0;
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0 1rem;
}

.app-header__logo[b-eriw9url3i] {
    max-height: 4.5rem;
    max-width: 100%;
    width: auto;
    display: block;
}

.app-header__title[b-eriw9url3i] {
    font-size: 1.1rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--asl-navy);
}

.app-header__user[b-eriw9url3i] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    min-width: 0;
}

.app-header__user-info[b-eriw9url3i] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    line-height: 1.3;
    min-width: 0;
}

.app-header__user-name[b-eriw9url3i] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--asl-text-dark);
}

.app-header__user-company[b-eriw9url3i] {
    font-size: 0.8rem;
    color: var(--asl-text-muted);
}

/* Long names/companies must never force horizontal page scroll. */
.app-header__user-name[b-eriw9url3i],
.app-header__user-company[b-eriw9url3i] {
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

@media (max-width: 767.98px) {
    .app-header__brand[b-eriw9url3i] {
        align-self: center;
        gap: 0.5rem;
    }

    .app-header__logo-wrap[b-eriw9url3i] {
        width: auto;
        padding: 0 0 0 0.75rem;
    }

    .app-header__logo[b-eriw9url3i] {
        max-height: 2.25rem;
    }

    .app-header__title[b-eriw9url3i],
    .app-header__user-company[b-eriw9url3i] {
        display: none;
    }
}

/* Height may only shrink below 992px — from there up the sticky sidebar offsets
   by the desktop --header-height (MainLayout.razor.css) and must stay in sync. */
@media (max-width: 640.98px) {
    .app-header[b-eriw9url3i] {
        height: auto;
        min-height: 3.5rem;
        flex-wrap: wrap;
        row-gap: 0.25rem;
        padding: 0.25rem 16px;
    }

    /* The phone gutter lives on the header now; the logo column's own inset would double it. */
    .app-header__logo-wrap[b-eriw9url3i] {
        padding: 0;
    }

    .app-header__user[b-eriw9url3i] {
        max-width: 100%;
    }

    .app-header__user .btn[b-eriw9url3i] {
        flex-shrink: 0;
    }
}
/* /Components/Layout/DevPersonaBar.razor.rz.scp.css */
.dev-persona-bar[b-kuicy1ahp0] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    padding: 0.35rem 1rem;
    background: #1f2937;
    color: #e5e7eb;
    font-size: 0.78rem;
}

.dev-persona-bar__label[b-kuicy1ahp0] {
    font-weight: 700;
    letter-spacing: 0.08em;
    color: #f59e0b;
}

.dev-persona-bar__current[b-kuicy1ahp0] {
    margin-right: 0.5rem;
    opacity: 0.85;
}

.dev-persona-bar__mode[b-kuicy1ahp0] {
    opacity: 0.6;
    font-style: italic;
}

.dev-persona-bar__group[b-kuicy1ahp0] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.dev-persona-bar__sep[b-kuicy1ahp0] {
    width: 1px;
    align-self: stretch;
    margin: 0.1rem 0.3rem;
    background: #4b5563;
}

.dev-persona-bar form[b-kuicy1ahp0] {
    margin: 0;
}

.dev-persona-bar__btn[b-kuicy1ahp0] {
    border: 1px solid #4b5563;
    background: transparent;
    color: #e5e7eb;
    border-radius: 4px;
    padding: 0.15rem 0.55rem;
    cursor: pointer;
    font-size: 0.78rem;
}

.dev-persona-bar__btn:hover[b-kuicy1ahp0] {
    background: #374151;
}

.dev-persona-bar__btn.is-active[b-kuicy1ahp0] {
    background: #f59e0b;
    border-color: #f59e0b;
    color: #1f2937;
    font-weight: 600;
}

/* Reset is an action, not a persona — green to set it apart from the amber persona toggles. */
.dev-persona-bar__btn--reset[b-kuicy1ahp0] {
    border-color: #34d399;
    color: #34d399;
}

.dev-persona-bar__btn--reset:hover[b-kuicy1ahp0] {
    background: #064e3b;
}

.dev-persona-bar__btn--reset.is-active[b-kuicy1ahp0] {
    background: #34d399;
    border-color: #34d399;
    color: #1f2937;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.page[b-etpsqiwzji] {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

.content-area[b-etpsqiwzji] {
    display: flex;
    flex: 1;
}

main[b-etpsqiwzji] {
    flex: 1;
    /* A column, so the footer sits at the bottom of a short page. */
    display: flex;
    flex-direction: column;
    /* Without this, a flex item's min-width:auto lets wide content (e.g. a table's intrinsic
       width) blow the layout out past the viewport instead of scrolling inside its own
       .table-responsive wrapper. */
    min-width: 0;
}

main > article[b-etpsqiwzji] {
    flex: 1;
}

@media (max-width: 991.98px) {
    .content-area[b-etpsqiwzji] {
        flex-direction: column;
    }
}

@media (min-width: 992px) {
    .content-area[b-etpsqiwzji] {
        padding-left: 0 !important;
        padding-right: 0 !important;
    }
}

#blazor-error-ui[b-etpsqiwzji] {
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    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-etpsqiwzji] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/Layout/NavMenu.razor.rz.scp.css */
.navbar-toggler[b-ii1mgh7j40] {
    appearance: none;
    cursor: pointer;
    width: 3.5rem;
    height: 2.5rem;
    color: white;
    /* Resolves against .sidebar, which StaffSidebar makes position:relative on mobile. */
    position: absolute;
    top: 0.5rem;
    right: 1rem;
    z-index: 1;
    border: 1px solid rgba(255, 255, 255, 0.1);
    background: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e") no-repeat center/1.75rem rgba(255, 255, 255, 0.1);
}

.navbar-toggler:checked[b-ii1mgh7j40] {
    background-color: rgba(255, 255, 255, 0.5);
}


/* Icons are rendered by the Bootstrap Icons webfont (loaded in App.razor).
   Size and space the glyph here; color is inherited from the nav link. */
.bi[b-ii1mgh7j40] {
    display: inline-flex;
    justify-content: center;
    width: 1.25rem;
    margin-right: 0.75rem;
    font-size: 1.05rem;
    line-height: 1;
    flex-shrink: 0;
}

.nav[b-ii1mgh7j40] {
    --nav-row-h: 2.2667rem;                         /* 34px (Compact) */
    --nav-row-gap: 0.3rem;                          /* 4.5px */
    --nav-label-mt: 0.375rem;                       /* 5.625px */
    --nav-label-pad: 0.3rem;                        /* 4.5px */
    --nav-pad-block: 0.8rem;                        /* 12px */
    /* Replaces .nav-item:first-of-type / :last-of-type, which counted divs, so the first row under
       Accounting's Finance label got an extra 15px. */
    padding-block: var(--nav-pad-block);
}

.nav-item[b-ii1mgh7j40] {
    font-size: 0.9rem;                              /* 13.5px, unchanged */
    padding: 0 1rem var(--nav-row-gap);             /* was px-3 + padding-bottom: .5rem */
}

    .nav-item[b-ii1mgh7j40]  a {
        color: rgba(255, 255, 255, 0.78);
        border-radius: 0.375rem;
        height: var(--nav-row-h);
        display: flex;
        align-items: center;
        line-height: var(--nav-row-h);
        font-weight: 500;
        padding: 0 1rem 0 0.75rem;                  /* padding-right was Bootstrap .nav-link's 1rem */
        min-width: 0;
        transition: background-color 0.15s ease, color 0.15s ease;
    }

.nav-item[b-ii1mgh7j40]  a.active {
    /* ASL interactive blue (--asl-blue) */
    background-color: #1a56db;
    color: #fff;
    box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.25);
}

.nav-item[b-ii1mgh7j40]  a:hover {
    background-color: rgba(255, 255, 255, 0.12);
    color: #fff;
}

.nav-item[b-ii1mgh7j40]  a.active:hover {
    background-color: #1741b0; /* --asl-blue-hover */
    color: #fff;
}

/* Bootstrap's `.nav-link:focus-visible { outline: 0; box-shadow: … }` (1.32:1) and `.navbar-toggler:focus`
   outrank the global ring in theme.css, so restate it here. The colour is the inherited token, which
   .sidebar (StaffSidebar.razor.css) points at the inverse ring: 9.9:1 on navy, 4.35:1 on the active blue. */
.nav-item[b-ii1mgh7j40]  a:focus-visible,
.navbar-toggler:focus-visible[b-ii1mgh7j40] {
    outline: var(--asl-focus-ring-width) solid var(--asl-focus-ring-color);
    outline-offset: var(--asl-focus-ring-offset);
    box-shadow: none;
}

/* Guard only: no label truncates at 250px today (prototype-measured, "Participant dashboard" included). */
.nav-label[b-ii1mgh7j40] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* h2: overrides theme.css's h1–h6 colour, letter-spacing and line-height and Bootstrap's h2 size and margin. */
.nav-group-label[b-ii1mgh7j40] {
    margin: var(--nav-label-mt) 1rem 0;
    padding: var(--nav-label-pad) 0.75rem;
    font-size: 0.75rem;                             /* 11.25px */
    line-height: 1.2;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: rgba(255, 255, 255, 0.6);                /* 5.93:1 on #052767, 6.57:1 on #041d4d */
}

.nav-rail-sep[b-ii1mgh7j40],
.nav-rail-foot[b-ii1mgh7j40] {
    display: none;
}

.nav-scrollable[b-ii1mgh7j40] {
    display: none;
}

.navbar-toggler:checked ~ .nav-scrollable[b-ii1mgh7j40] {
    display: block;
}

@media (max-width: 991.98px) {
    .nav[b-ii1mgh7j40] {
        --nav-row-h: 2.4rem;                        /* flat mobile list: never below 36px */
        /* Clears the absolutely positioned toggler (top .5rem + height 2.5rem = 45px) with the same
           52.5px the collapsed bar has (StaffSidebar min-height 3.5rem). */
        padding-top: 3.5rem;
    }

    /* Flat list in grouped order: labels are visually hidden, not display:none, so screen-reader users
       keep the group headings. */
    .nav-group-label[b-ii1mgh7j40] {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }
}

@media (min-width: 992px) {
    .navbar-toggler[b-ii1mgh7j40] {
        display: none;
    }

    .nav-scrollable[b-ii1mgh7j40] {
        display: block;
        /* Fills the flex-column .sidebar (StaffSidebar) above the pinned footer. This replaces
           height: calc(100vh - var(--header-height)), which would push the footer off-screen. */
        flex: 1 1 auto;
        min-height: 0;
        overflow-y: auto;
        overflow-x: hidden;
    }

    /* Rail: no scrollbar gutter, so the 64px column keeps its 44px cells. Wheel, touchpad and keyboard
       (focus scrolls a link into view) still scroll it. */
    .nav-scrollable--rail[b-ii1mgh7j40] {
        scrollbar-width: none;
    }

        .nav-scrollable--rail[b-ii1mgh7j40]::-webkit-scrollbar {
            display: none;
        }

    /* ---- pinned footer + toggle ---- */
    .nav-rail-foot[b-ii1mgh7j40] {
        display: block;
        flex-shrink: 0;
        border-top: 1px solid rgba(255, 255, 255, 0.12);
        padding: 0.4rem 1rem;                       /* 6px 15px */
    }

    .nav-rail-toggle[b-ii1mgh7j40] {
        appearance: none;
        display: flex;
        align-items: center;
        justify-content: flex-start;                /* MudBlazor.min.css centres every <button> */
        width: 100%;
        height: 2.1333rem;                          /* 32px */
        padding: 0 0.75rem;
        background: none;
        border: 0;
        border-radius: 0.375rem;
        color: rgba(255, 255, 255, 0.78);
        font-size: 0.9rem;
        font-weight: 500;
        cursor: pointer;
        transition: background-color 0.15s ease, color 0.15s ease;
    }

        .nav-rail-toggle:hover[b-ii1mgh7j40] {
            background-color: rgba(255, 255, 255, 0.12);
            color: #fff;
        }

    /* ---- rail (64px sidebar, 44px-wide targets) ---- */
    .nav--rail .nav-item[b-ii1mgh7j40],
    .nav-rail-foot--rail[b-ii1mgh7j40] {
        padding-inline: 0.6667rem;                  /* 10px each side → 44px cells */
    }

    .nav--rail .nav-item[b-ii1mgh7j40]  a,
    .nav-rail-foot--rail .nav-rail-toggle[b-ii1mgh7j40] {
        justify-content: center;
        padding: 0;
    }

    .nav--rail .bi[b-ii1mgh7j40],
    .nav-rail-foot--rail .bi[b-ii1mgh7j40] {
        margin-right: 0;
    }

    /* Visually hidden, still the accessible name / still in heading navigation. */
    .nav--rail .nav-label[b-ii1mgh7j40],
    .nav--rail .nav-group-label[b-ii1mgh7j40],
    .nav-rail-foot--rail .nav-label[b-ii1mgh7j40] {
        position: absolute;
        width: 1px;
        height: 1px;
        padding: 0;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
        border: 0;
    }

    .nav--rail .nav-rail-sep[b-ii1mgh7j40] {
        display: block;
        height: 0;
        margin: calc(var(--nav-label-mt) * 0.5) 1.0667rem calc(var(--nav-label-mt) * 1.5);  /* 2.8 / 16 / 8.4px */
        border: 0;
        border-top: 1px solid rgba(255, 255, 255, 0.15);
        opacity: 1;                                 /* Bootstrap hr sets .25 */
    }

        .nav--rail .nav-rail-sep:first-child[b-ii1mgh7j40] {
            display: none;                          /* Accounting: no rule above Finance */
        }
}
/* /Components/Layout/PortalLayout.razor.rz.scp.css */
.portal-layout[b-8dyggsbn3u] {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

.portal-layout--landing[b-8dyggsbn3u] {
    background:
        radial-gradient(circle at top, rgba(26, 86, 219, 0.10), transparent 38%),
        linear-gradient(180deg, #f8fafc 0%, #eef3f8 100%);
}

.portal-layout--content main[b-8dyggsbn3u] {
    flex: 1;
}

/* Phone gutter, matching the header (AppHeader.razor.css). */
@media (max-width: 640.98px) {
    .portal-layout--content main .container[b-8dyggsbn3u] {
        padding-left: 16px;
        padding-right: 16px;
    }
}
/* /Components/Layout/StaffSidebar.razor.rz.scp.css */
/* Moved from MainLayout.razor.css. */
.sidebar[b-qaln98bilg] {
    /* ASL navy brand gradient (--asl-navy → deeper navy) */
    background-image: linear-gradient(180deg, #052767 0%, #041d4d 100%);
    /* Every control on the navy gets the light ring. The theme branch's global focus rules read this
       token, and the fallback is --asl-blue-mid, which is on master today. */
    --asl-focus-ring-color: var(--asl-focus-ring-color-inverse, var(--asl-blue-mid));
}

@media (max-width: 991.98px) {
    .sidebar[b-qaln98bilg] {
        width: 100%;
        /* Positioning context for the hamburger toggler (NavMenu.razor.css),
           plus a visible collapsed bar for it to sit in. */
        position: relative;
        min-height: 3.5rem;
    }
}

@media (min-width: 992px) {
    .sidebar[b-qaln98bilg] {
        width: 250px;
        height: calc(100vh - var(--header-height));
        position: sticky;
        top: var(--header-height);
        display: flex;                              /* nav scrolls, footer stays pinned */
        flex-direction: column;
        /* Keeps the pinned rail toggle (and its focus ring) above the fixed cookie-consent banner while it
           is shown; wwwroot/js/cookieConsent.js publishes the banner's height, and removes it on a choice. */
        padding-bottom: var(--cookie-consent-height, 0px);
    }

    .sidebar--rail[b-qaln98bilg] {
        width: 64px;
    }

    /* Only after a click. The restore on first render snaps without animating. */
    .sidebar--animate[b-qaln98bilg] {
        transition: width 0.18s ease;
    }
}

@media (prefers-reduced-motion: reduce) {
    .sidebar--animate[b-qaln98bilg] {
        transition: none;
    }
}
/* /Components/Pages/Admin/ActiveUsers.razor.rz.scp.css */
/* Two-level table: a user row, then one indented row per circuit they hold. The visual weight has to
   make that nesting obvious at a glance, since both levels share the same columns. */

.active-users-table thead th[b-wd5dw7rhi7] {
    font-size: 0.8125rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--asl-text-muted, #64748b);
}

.user-row td[b-wd5dw7rhi7] {
    border-top: 1px solid var(--asl-border, #e2e8f0);
    background-color: var(--asl-surface, #fff);
}

/* Signed-out visitors are a bucket, not a person — muted so they don't read as a named user. */
.user-row.anonymous td[b-wd5dw7rhi7] {
    color: var(--asl-text-muted, #64748b);
    font-style: italic;
}

/* Secondary to the name it trails, so "Sarah Okafor" reads first and "(Acme Capital)" qualifies it. */
.user-org[b-wd5dw7rhi7] {
    margin-left: 0.375rem;
    font-size: 0.875rem;
    color: var(--asl-text-muted, #64748b);
}

.user-email[b-wd5dw7rhi7] {
    font-size: 0.875rem;
    color: var(--asl-text-muted, #64748b);
}

/* The email column drops out below 1200px rather than letting the table scroll sideways.
   Deliberately NOT Bootstrap's `d-none d-xl-table-cell`: MudBlazor.min.css loads after
   bootstrap.min.css and defines BOTH .d-none and .d-xl-table-cell unconditionally with !important
   (no media query at all, since Mud's breakpoint scale differs), with .d-none later in the file — so
   that pair renders an element permanently hidden at every width. Verified: computed display stayed
   `none` at a 1280px viewport. Scoped component CSS wins cleanly here because it loads last and its
   selectors carry the extra [b-*] attribute, so no !important is needed. */
.email-col[b-wd5dw7rhi7] {
    display: none;
}

@media (min-width: 1200px) {
    .email-col[b-wd5dw7rhi7] {
        display: table-cell;
    }
}

.circuit-row td[b-wd5dw7rhi7] {
    border-top: none;
    padding-top: 0.25rem;
    padding-bottom: 0.25rem;
    font-size: 0.875rem;
    color: var(--asl-text-muted, #64748b);
}

.circuit-page[b-wd5dw7rhi7] {
    padding-left: 1.5rem;
}

.state-badge[b-wd5dw7rhi7] {
    display: inline-flex;
    align-items: center;
    font-size: 0.8125rem;
    font-weight: 600;
    white-space: nowrap;
}

.state-badge .bi[b-wd5dw7rhi7] {
    font-size: 0.5rem;
}

.state-badge.connected[b-wd5dw7rhi7] {
    color: #16a34a;
}

/* Amber, not red: a dropped browser inside the retention window is normal, not a fault. */
.state-badge.disconnected[b-wd5dw7rhi7] {
    color: #d97706;
}
/* /Components/Pages/Admin/AdminDashboard.razor.rz.scp.css */
.action-list[b-4v8crp0tkm] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.action-row[b-4v8crp0tkm] {
    display: flex;
    align-items: center;
    /* Wrap so the fixed-width button drops below long labels when tight. */
    flex-wrap: wrap;
    gap: 0.5rem 1rem;
    padding: 0.75rem 0;
    border-bottom: 1px solid var(--asl-border, #e2e8f0);
}

.action-row:last-child[b-4v8crp0tkm] {
    border-bottom: none;
}

.action-count[b-4v8crp0tkm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 0.375rem;
    font-size: 1.125rem;
    font-weight: 700;
    flex-shrink: 0;
    border: 1.5px solid currentColor;
}

.count-green[b-4v8crp0tkm] {
    color: #16a34a;
    border-color: #16a34a;
}

.count-red[b-4v8crp0tkm] {
    color: #dc2626;
    border-color: #dc2626;
}

/* Informational counts (no action urgency) — neutral, never red/green. */
.count-black[b-4v8crp0tkm] {
    color: var(--asl-text-dark, #1e293b);
    border-color: var(--asl-text-dark, #1e293b);
}

.action-label[b-4v8crp0tkm] {
    flex: 1;
    font-weight: 500;
    color: var(--asl-text-dark, #1e293b);
}

.action-btn[b-4v8crp0tkm] {
    flex-shrink: 0;
}

.count-legend[b-4v8crp0tkm] {
    display: flex;
    gap: 1.5rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--asl-border, #e2e8f0);
}

.legend-item[b-4v8crp0tkm] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.legend-badge[b-4v8crp0tkm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.75rem;
    height: 1.75rem;
    padding: 0 0.25rem;
    border-radius: 0.25rem;
    font-size: 0.8125rem;
    font-weight: 700;
    border: 1.5px solid currentColor;
}

.alert-panel[b-4v8crp0tkm] {
    border: 1px solid var(--asl-border, #e2e8f0);
}

.alert-section-title[b-4v8crp0tkm] {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--asl-blue, #1a56db);
    text-transform: uppercase;
}

.alert-section[b-4v8crp0tkm] {
    border: 1px solid var(--asl-border, #e2e8f0);
    border-radius: 0.5rem;
    padding: 0.75rem;
}

.alert-section-count[b-4v8crp0tkm] {
    color: var(--asl-text-muted, #64748b);
    font-weight: 600;
    margin-left: 0.35rem;
}

.alert-count-bubble[b-4v8crp0tkm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.9rem;
    height: 1.9rem;
    padding: 0 0.3rem;
    border-radius: 0.5rem;
    background: #dc2626;
    color: #fff;
    font-weight: 700;
    font-size: 1rem;
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}

.alert-count-bubble.zero[b-4v8crp0tkm] {
    background: #cbd5e1;
}

.alert-empty[b-4v8crp0tkm] {
    color: var(--asl-text-muted, #64748b);
    font-size: 0.85rem;
    padding: 0.25rem 0.125rem;
}

.loan-group[b-4v8crp0tkm] {
    padding: 0.375rem 0.125rem;
}

.loan-group + .loan-group[b-4v8crp0tkm] {
    border-top: 1px solid var(--asl-border-subtle, #f1f5f9);
}

.loan-group-head[b-4v8crp0tkm] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-size: 0.9rem;
    margin-bottom: 0.125rem;
}

.loan-link[b-4v8crp0tkm] {
    color: var(--asl-blue, #1a56db);
    font-weight: 600;
    text-decoration: none;
}

.loan-link:hover[b-4v8crp0tkm] {
    text-decoration: underline;
}

.loan-group-name[b-4v8crp0tkm] {
    color: var(--asl-text-subtle, #9ca3af);
    font-size: 0.78rem;
}

.alert-entry[b-4v8crp0tkm] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.85rem;
    padding: 0.2rem 0 0.2rem 0.25rem;
    color: var(--asl-text-body, #374151);
}

.alert-entry-icon[b-4v8crp0tkm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.4rem;
    height: 1.4rem;
    border-radius: 0.375rem;
    font-size: 0.8rem;
    flex-shrink: 0;
    margin-top: 0.05rem;
}

.alert-entry-text[b-4v8crp0tkm] {
    flex: 1;
    min-width: 0;
}

.alert-entry-when[b-4v8crp0tkm] {
    margin-left: auto;
    font-size: 0.74rem;
    color: var(--asl-text-subtle, #9ca3af);
    white-space: nowrap;
    padding-top: 0.125rem;
    font-variant-numeric: tabular-nums;
}

.alert-overflow[b-4v8crp0tkm] {
    font-size: 0.8rem;
    color: var(--asl-text-muted, #64748b);
    padding: 0.375rem 0.125rem 0;
}

.alert-panel-foot[b-4v8crp0tkm] {
    padding-top: 0.75rem;
    margin-top: 0.75rem;
    border-top: 1px solid var(--asl-border-subtle, #f1f5f9);
}

.alert-panel-foot a[b-4v8crp0tkm] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--asl-blue, #1a56db);
    text-decoration: none;
}

.alert-panel-foot a:hover[b-4v8crp0tkm] {
    text-decoration: underline;
}

/* Event icon tints — class names come from ActivityDisplay.IconColorClass. */
.activity-ico-elec[b-4v8crp0tkm] { color: #16a34a; background: #f0fdf4; }
.activity-ico-doc[b-4v8crp0tkm]  { color: #6d28d9; background: #f5f3ff; }
.activity-ico-co[b-4v8crp0tkm]  { color: var(--asl-text-muted, #64748b); background: var(--asl-border-subtle, #f1f5f9); }
.activity-ico-bad[b-4v8crp0tkm]  { color: #dc2626; background: #fef2f2; }
/* /Components/Pages/Admin/AlertsHistory.razor.rz.scp.css */
.activity-search[b-gi3hv64mre] {
    position: relative;
    flex: 1 1 220px;
    max-width: 320px;
}

.activity-search .bi-search[b-gi3hv64mre] {
    position: absolute;
    left: 0.75rem;
    top: 50%;
    transform: translateY(-50%);
    color: var(--asl-text-subtle, #9ca3af);
    pointer-events: none;
}

.activity-search input[b-gi3hv64mre] {
    padding-left: 2.25rem;
}

.activity-chips[b-gi3hv64mre] {
    display: flex;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.activity-chip[b-gi3hv64mre] {
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    border: 1px solid var(--asl-border, #e2e8f0);
    background: #fff;
    color: var(--asl-text-muted, #64748b);
    border-radius: 99px;
    padding: 0.25rem 0.75rem;
    transition: color 0.15s, border-color 0.15s, background 0.15s;
}

.activity-chip:hover[b-gi3hv64mre] {
    border-color: var(--asl-blue-mid, #bfdbfe);
    color: var(--asl-blue, #1a56db);
}

.activity-chip.on[b-gi3hv64mre] {
    background: var(--asl-blue-light, #eff6ff);
    border-color: var(--asl-blue-mid, #bfdbfe);
    color: var(--asl-blue, #1a56db);
}

.activity-only-new[b-gi3hv64mre] {
    display: inline-flex;
    align-items: center;
    gap: 0.45rem;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--asl-text-body, #374151);
    cursor: pointer;
    user-select: none;
    margin-bottom: 0;
}

.activity-only-new input[b-gi3hv64mre] {
    accent-color: var(--asl-blue, #1a56db);
    cursor: pointer;
}

.activity-when[b-gi3hv64mre] {
    white-space: nowrap;
    color: var(--asl-text-muted, #64748b);
    font-variant-numeric: tabular-nums;
}

.activity-new-dot[b-gi3hv64mre] {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--asl-blue, #1a56db);
    margin-right: 0.45rem;
    vertical-align: 1px;
}

.activity-new-dot.seen[b-gi3hv64mre] {
    visibility: hidden;
}

.activity-new-badge[b-gi3hv64mre] {
    font-size: 0.64rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--asl-blue, #1a56db);
    background: var(--asl-blue-light, #eff6ff);
    border: 1px solid var(--asl-blue-mid, #bfdbfe);
    border-radius: 0.25rem;
    padding: 0.05rem 0.375rem;
    margin-left: 0.5rem;
    vertical-align: 1px;
}

.activity-row-new td[b-gi3hv64mre] {
    background: #f7faff;
}

.activity-event[b-gi3hv64mre] {
    min-width: 280px;
}

.activity-event > span:last-child[b-gi3hv64mre] {
    vertical-align: middle;
}

.activity-opp[b-gi3hv64mre] {
    white-space: nowrap;
}

.activity-opp-name[b-gi3hv64mre] {
    color: var(--asl-text-subtle, #9ca3af);
    font-size: 0.82rem;
}

.loan-link[b-gi3hv64mre] {
    color: var(--asl-blue, #1a56db);
    font-weight: 600;
    text-decoration: none;
}

.loan-link:hover[b-gi3hv64mre] {
    text-decoration: underline;
}

/* Event icon chip — same visual language as the dashboard alert panel. */
.alert-entry-icon[b-gi3hv64mre] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 0.375rem;
    font-size: 0.85rem;
    flex-shrink: 0;
    margin-right: 0.5rem;
    vertical-align: middle;
}

.activity-ico-elec[b-gi3hv64mre] { color: #16a34a; background: #f0fdf4; }
.activity-ico-doc[b-gi3hv64mre]  { color: #6d28d9; background: #f5f3ff; }
.activity-ico-co[b-gi3hv64mre]  { color: var(--asl-text-muted, #64748b); background: var(--asl-border-subtle, #f1f5f9); }
.activity-ico-bad[b-gi3hv64mre]  { color: #dc2626; background: #fef2f2; }
/* /Components/Pages/Admin/Audiences.razor.rz.scp.css */
/* The toolbar wraps, and every control takes a full line at 390 px. */
.assignments-toolbar[b-q951wacfwt]  .toolbar-search {
    flex: 1 1 16rem;
    min-width: 0;
}

.assignments-toolbar[b-q951wacfwt]  .toolbar-select {
    flex: 1 1 12rem;
    min-width: 0;
}

@media (max-width: 575.98px) {
    .assignments-toolbar[b-q951wacfwt]  .toolbar-search,
    .assignments-toolbar[b-q951wacfwt]  .toolbar-select {
        flex-basis: 100%;
    }
}

.audience-list-col[b-q951wacfwt] {
    border-right: 1px solid var(--asl-border);
    min-height: 28rem;
}

@media (max-width: 767.98px) {
    .audience-list-col[b-q951wacfwt] {
        border-right: none;
        border-bottom: 1px solid var(--asl-border);
        min-height: 0;
    }
}

.new-audience-row[b-q951wacfwt] {
    background: var(--asl-surface);
}

.audience-row[b-q951wacfwt] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    min-width: 0;
}

.audience-row-name[b-q951wacfwt] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    max-width: 100%;
    min-width: 0;
}

/* Retired rows are muted (never --asl-text-subtle, which is 2.54:1) — but not on the active blue row. */
.audience-row.is-retired:not(.active)[b-q951wacfwt] {
    color: var(--asl-text-muted);
}
/* /Components/Pages/Admin/CapitalCalls/CapitalCalls.razor.rz.scp.css */
/* Money and dates line up column-wise. The rest of this table's styling is the app-wide
   .asl-list-table rules in app.css. */
.capital-call-table td[b-1hwi6hlxuj] {
    font-variant-numeric: tabular-nums;
}
/* /Components/Pages/Admin/CapitalCalls/Sections/BreakdownSection.razor.rz.scp.css */
.capital-call-figure[b-19mpzl5mth] {
    font-variant-numeric: tabular-nums;
}

.capital-call-locked[b-19mpzl5mth] {
    display: flex;
    align-items: center;
    padding: 1rem;
    border: 1px dashed #cbd5e1;
    border-radius: 0.375rem;
    background: #f8fafc;
    color: var(--asl-text-muted, #64748b);
    font-size: 0.875rem;
}

.capital-call-table th[b-19mpzl5mth] {
    font-weight: 600;
    color: var(--bs-secondary-color, #6c757d);
    border-bottom-width: 1px;
    white-space: nowrap;
}

.capital-call-toggle-col[b-19mpzl5mth] {
    width: 1%;
    white-space: nowrap;
    padding-right: 0;
}

td.capital-call-name-col[b-19mpzl5mth] {
    max-width: 0;
}

.capital-call-name-col[b-19mpzl5mth] {
    width: 100%;
}

.capital-call-name-col > div[b-19mpzl5mth] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

table.capital-call-subitems > :not(caption) > * > *[b-19mpzl5mth] {
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
}

td.capital-call-item-col[b-19mpzl5mth] {
    max-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.capital-call-item-col[b-19mpzl5mth] {
    width: 100%;
}

.capital-call-asl-row[b-19mpzl5mth] {
    background: var(--asl-blue-light, #eff6ff);
}

.capital-call-detail-row > td[b-19mpzl5mth] {
    background: #f8fafc;
}
/* /Components/Pages/Admin/CapitalCalls/Sections/CallSetupSection.razor.rz.scp.css */
.capital-call-figure[b-v0iiys1qnw] {
    font-variant-numeric: tabular-nums;
}

.capital-call-locked[b-v0iiys1qnw] {
    display: flex;
    align-items: center;
    padding: 1rem;
    border: 1px dashed #cbd5e1;
    border-radius: 0.375rem;
    background: #f8fafc;
    color: var(--asl-text-muted, #64748b);
    font-size: 0.875rem;
}

table.capital-call-items > :not(caption) > * > *[b-v0iiys1qnw] {
    padding-top: 0.2rem;
    padding-bottom: 0.2rem;
    padding-left: 0.35rem;
    padding-right: 0.35rem;
}

.capital-call-items[b-v0iiys1qnw]  .mud-input-control {
    margin-top: 2px;
    margin-bottom: 2px;
}

.capital-call-description-col[b-v0iiys1qnw] {
    max-width: 0;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
}

.capital-call-amount-col[b-v0iiys1qnw] {
    width: 12rem;
    min-width: 12rem;
}

.capital-call-items[b-v0iiys1qnw]  .mud-icon-button {
    padding: 6px;
}

.capital-call-remove-col[b-v0iiys1qnw] {
    width: 1%;
    white-space: nowrap;
}
/* /Components/Pages/Admin/CapitalCalls/Sections/CollectWiresSection.razor.rz.scp.css */
.capital-call-figure[b-cs54q77rqr] {
    font-variant-numeric: tabular-nums;
}

.capital-call-locked[b-cs54q77rqr] {
    display: flex;
    align-items: center;
    padding: 1rem;
    border: 1px dashed #cbd5e1;
    border-radius: 0.375rem;
    background: #f8fafc;
    color: var(--asl-text-muted, #64748b);
    font-size: 0.875rem;
}

td.capital-call-name-col[b-cs54q77rqr] {
    max-width: 0;
}

.capital-call-name-col[b-cs54q77rqr] {
    width: 100%;
}

.capital-call-name-col > div[b-cs54q77rqr] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.capital-call-table th[b-cs54q77rqr] {
    font-weight: 600;
    color: var(--bs-secondary-color, #6c757d);
    border-bottom-width: 1px;
    white-space: nowrap;
}

.capital-call-asl-row[b-cs54q77rqr] {
    background: var(--asl-blue-light, #eff6ff);
}
/* /Components/Pages/Admin/CompanyManagement.razor.rz.scp.css */
.company-mgmt[b-fhbfx126po] {
    position: relative;
}

.company-mgmt-list[b-fhbfx126po] {
    max-width: 760px;
}

/* Column header above each section's rows */
.company-row-header[b-fhbfx126po] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 1.25rem;
    background-color: var(--asl-surface);
    border-bottom: 1px solid var(--asl-border);
    font-size: 0.8125rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--asl-text-muted);
}

/* Rows behave like buttons */
.company-row[b-fhbfx126po] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    cursor: pointer;
    transition: background-color 0.12s ease-in-out;
}

/* Fixed trailing column so the header "Vendor #" aligns over the row values */
.row-chevron[b-fhbfx126po] {
    flex: 0 0 1rem;
    text-align: right;
}

/* Dedicated LPA-status column, fixed so pills line up down the list */
.lpa-status[b-fhbfx126po] {
    flex: 0 0 11rem;
    font-size: 0.875rem;
}

/* Linked-logins count column, fixed so tallies line up down the list */
.logins[b-fhbfx126po] {
    flex: 0 0 4.5rem;
    font-size: 0.875rem;
}

.login-count[b-fhbfx126po] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-variant-numeric: tabular-nums;
    color: var(--asl-text-dark);
}

.login-count-zero[b-fhbfx126po] {
    color: var(--asl-text-muted);
}

.company-row:hover[b-fhbfx126po] {
    background-color: var(--asl-blue-light);
}

.company-row.selected[b-fhbfx126po] {
    background-color: var(--asl-blue-light);
    box-shadow: inset 3px 0 0 var(--asl-blue);
}

/* Column widths shared by the header and the rows so cells line up down each column */
.company-row .company-name[b-fhbfx126po],
.company-row-header .company-name[b-fhbfx126po] {
    flex: 1 1 auto;
}

.company-row .vendor[b-fhbfx126po],
.company-row-header .vendor[b-fhbfx126po] {
    flex: 0 0 6rem;
}

.company-row .company-name[b-fhbfx126po] {
    font-weight: 500;
    color: var(--asl-text-dark);
}

.company-row .vendor[b-fhbfx126po] {
    font-size: 0.875rem;
}

/* Companies nested under an asset manager are indented */
.managed-row[b-fhbfx126po] {
    padding-left: 2.5rem !important;
}

.managed-row[b-fhbfx126po]::before {
    content: "";
    position: absolute;
    left: 1.4rem;
    top: 0;
    bottom: 50%;
    border-left: 1px solid var(--asl-border);
    border-bottom: 1px solid var(--asl-border);
    width: 0.7rem;
}

.managed-row[b-fhbfx126po] {
    position: relative;
}

/* Slide-out edit panel */
.edit-panel-backdrop[b-fhbfx126po] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.25);
    z-index: 1040;
}

.edit-panel[b-fhbfx126po] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 520px;
    background: #ffffff;
    border-left: 1px solid var(--asl-border);
    box-shadow: -8px 0 24px rgba(15, 23, 42, 0.12);
    z-index: 1050;
    display: flex;
    flex-direction: column;
}

.edit-panel-header[b-fhbfx126po] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--asl-border);
}

.edit-panel-body[b-fhbfx126po] {
    padding: 1.5rem;
    overflow-y: auto;
    flex: 1 1 auto;
}

/* LPA file slots */
.lpa-slots[b-fhbfx126po] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.lpa-slot-label[b-fhbfx126po] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--asl-text-muted);
    margin-bottom: 0.375rem;
}

.lpa-file-card[b-fhbfx126po] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.75rem;
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    background: #ffffff;
}

.lpa-file-icon[b-fhbfx126po] {
    flex: 0 0 auto;
    font-size: 1.75rem;
    line-height: 1;
    color: #dc2626;
}

.lpa-file-meta[b-fhbfx126po] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.lpa-file-name[b-fhbfx126po] {
    font-weight: 500;
    color: var(--asl-text-dark);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lpa-file-sub[b-fhbfx126po] {
    font-size: 0.75rem;
    color: var(--asl-text-muted);
}

.lpa-file-actions[b-fhbfx126po] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
}

/* Empty slot: a dashed dropzone that both reads as "a file goes here" and accepts a dropped file.
   The transparent file input is stretched over the whole zone (below), so a drop lands on it. */
.lpa-empty[b-fhbfx126po] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    width: 100%;
    padding: 1rem 0.75rem;
    border: 1px dashed var(--asl-border);
    border-radius: var(--bs-border-radius);
    background: var(--asl-surface);
    color: var(--asl-text-muted);
    font-size: 0.875rem;
    transition: border-color 0.12s ease-in-out, color 0.12s ease-in-out, background-color 0.12s ease-in-out;
}

/* :focus-within covers keyboard focus on the input; :hover fires while dragging a file over the zone. */
.lpa-empty:hover[b-fhbfx126po],
.lpa-empty:focus-within[b-fhbfx126po] {
    border-color: var(--asl-blue);
    color: var(--asl-blue);
    background: var(--asl-blue-light);
}

/* ::deep because InputFile renders the <input> as a child component — it doesn't carry this
   component's scoped attribute, so a plain .lpa-empty-input rule would never match it. */
.lpa-empty[b-fhbfx126po]  .lpa-empty-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    margin: 0;
    opacity: 0;
    cursor: pointer;
    font-size: 0;
}

.lpa-empty.disabled[b-fhbfx126po] {
    opacity: 0.6;
}

.lpa-empty.disabled[b-fhbfx126po]  .lpa-empty-input {
    pointer-events: none;
    cursor: default;
}

.lpa-empty-icon[b-fhbfx126po] {
    font-size: 1.125rem;
}

.lpa-empty-hint[b-fhbfx126po] {
    color: var(--asl-text-muted);
}

.lpa-empty:hover .lpa-empty-hint[b-fhbfx126po],
.lpa-empty:focus-within .lpa-empty-hint[b-fhbfx126po] {
    color: inherit;
}
/* /Components/Pages/Admin/CreateCompany.razor.rz.scp.css */
.create-company[b-v972hp8b1t] {
    max-width: 1100px;
}

/* Company type selector cards */
.type-card[b-v972hp8b1t] {
    display: flex;
    align-items: flex-start;
    gap: 0.625rem;
    height: 100%;
    padding: 0.875rem 1rem;
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    cursor: pointer;
    transition: border-color 0.12s ease-in-out, background-color 0.12s ease-in-out;
}

.type-card:hover[b-v972hp8b1t] {
    border-color: var(--asl-blue-mid);
}

.type-card.selected[b-v972hp8b1t] {
    border-color: var(--asl-blue);
    background-color: var(--asl-blue-light);
}

.type-radio[b-v972hp8b1t] {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    margin-top: 0.15rem;
    border: 2px solid var(--asl-text-subtle);
    border-radius: 50%;
    position: relative;
}

.type-card.selected .type-radio[b-v972hp8b1t] {
    border-color: var(--asl-blue);
}

.type-card.selected .type-radio[b-v972hp8b1t]::after {
    content: "";
    position: absolute;
    inset: 2px;
    background-color: var(--asl-blue);
    border-radius: 50%;
}

.type-title[b-v972hp8b1t] {
    font-weight: 600;
    color: var(--asl-text-dark);
    line-height: 1.2;
}

.type-desc[b-v972hp8b1t] {
    font-size: 0.8125rem;
    color: var(--asl-text-muted);
    margin-top: 0.15rem;
}

/* Conditional fund-manager section */
.conditional-section[b-v972hp8b1t] {
    background: var(--asl-surface);
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    padding: 1rem;
}

/* About-types info card */
.info-card[b-v972hp8b1t] {
    background: var(--asl-surface);
}

.info-type-icon[b-v972hp8b1t] {
    color: var(--asl-blue);
    font-size: 1.1rem;
    line-height: 1.4;
}
/* /Components/Pages/Admin/LinkedLoginsSection.razor.rz.scp.css */
/* Rendered inside LoginAudienceMatrix through RowActions, but defined here, so it takes this scope. */
.btn-unlink[b-gxfff9x72q] {
    flex: 0 0 auto;
    border: none;
    background: transparent;
    color: var(--asl-text-muted);
    padding: 0.25rem;
    line-height: 1;
    border-radius: var(--bs-border-radius);
    cursor: pointer;
    transition: color 0.12s ease-in-out, background-color 0.12s ease-in-out;
}

.btn-unlink:hover[b-gxfff9x72q] {
    color: var(--asl-error, #dc2626);
    background-color: var(--asl-border-subtle);
}
/* /Components/Pages/Admin/MessageTemplates.razor.rz.scp.css */
.template-list-col[b-cy5lqhvqlh] {
    border-right: 1px solid var(--asl-border);
    min-height: 32rem;
}

.new-template-row[b-cy5lqhvqlh] {
    background: var(--asl-surface);
}

.template-editor-col[b-cy5lqhvqlh] {
    min-height: 32rem;
}

.composer-sidebar[b-cy5lqhvqlh] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    border: 1px solid var(--asl-border);
    border-radius: 0.25rem;
    background: var(--asl-surface);
    padding: 1rem;
}

.composer-fixed-block[b-cy5lqhvqlh] {
    flex: 0 0 auto;
}

.template-editor-main[b-cy5lqhvqlh] {
    display: flex;
    flex-direction: column;
    width: 100%;
}

.template-body-editor-wrap[b-cy5lqhvqlh] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}
/* /Components/Pages/Admin/Opportunity/Sections/AllocationSection.razor.rz.scp.css */
/* U-12: the Company / Vendor column stays beside the Actions button after horizontal scroll. */
.allocation-table th:first-child[b-sfl04ks6yt],
.allocation-table td:first-child[b-sfl04ks6yt] {
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--bs-body-bg);
}

/* An allocation under the wire money already recorded against it. Outlined red so the field itself
   carries the refusal, since MudNumericField owns its own Error state and overwrites ours. */
[b-sfl04ks6yt] .allocation-below-received .mud-input-outlined-border {
    border-color: var(--mud-palette-error) !important;
    border-width: 2px;
}
/* /Components/Pages/Admin/Opportunity/Sections/CloseoutSection.razor.rz.scp.css */
/* The final "read-only" notice borders in the darkest phase shade (100% navy) so the lock visually
   reads as the terminal, fully-closed state. */
.alert-locked[b-gcigzekat0] {
    background: var(--phase-1);
    border: 1px solid var(--phase-5);
    color: var(--phase-ink);
    border-radius: .5rem;
    padding: .75rem 1rem;
}

/* Derived wire-receipt cell. The "Received in full" tick sits outside the text flow so the label
   stays on the same centre line as the amount beneath it — inline, its width pushed the text right. */
.wire-receipt-heading[b-gcigzekat0] {
    position: relative;
    display: inline-block;
}

.wire-receipt-tick[b-gcigzekat0] {
    position: absolute;
    right: 100%;
    margin-right: 0.25rem;
}

/* Part received is orange: money short of the allocation is the state an admin chases. */
.wire-receipt-partial[b-gcigzekat0] {
    color: var(--bs-orange, #fd7e14);
}
/* /Components/Pages/Admin/Opportunity/Sections/LoanSyncPanel.razor.rz.scp.css */
.opp-loan-field[b-bg26gsaca1] {
    width: 11rem;
}

[b-bg26gsaca1] .opp-sync-button {
    height: 100%;
}
/* /Components/Pages/Admin/Opportunity/Sections/OpportunityFundedSummary.razor.rz.scp.css */
/* U-12: the Company / Vendor column stays beside the Actions button after horizontal scroll. */
.funded-allocations-table th:first-child[b-gt0p9l2mzw],
.funded-allocations-table td:first-child[b-gt0p9l2mzw] {
    position: sticky;
    left: 0;
    z-index: 1;
    background: var(--bs-body-bg);
}
/* /Components/Pages/Admin/Reporting/DeclineBarList.razor.rz.scp.css */
/* CSS bar lists (§10.5): MudBlazor 9.5 has no horizontal bar chart. At md and up one line per row —
   label, bar, count; below md the label takes its own line. */
.decline-bar-row[b-rdmq205vvq] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.25rem 0.75rem;
    width: 100%;
    padding: 0.375rem 0.25rem;
    border: 0;
    border-radius: 0.375rem;
    background: transparent;
    color: var(--bs-body-color);
    text-align: left;
}

button.decline-bar-row:hover[b-rdmq205vvq] {
    background: #f8fafc;
}

button.decline-bar-row:focus-visible[b-rdmq205vvq] {
    outline: var(--asl-focus-ring-width, 2px) solid var(--asl-focus-ring-color, var(--asl-blue));
    outline-offset: var(--asl-focus-ring-offset, 2px);
}

.decline-bar-label[b-rdmq205vvq] {
    flex: 1 1 100%;
}

.decline-bar-track[b-rdmq205vvq] {
    flex: 1 1 auto;
    height: 0.625rem;
    border-radius: 999px;
    background: var(--asl-border);
    overflow: hidden;
}

.decline-bar-fill[b-rdmq205vvq] {
    display: block;
    height: 100%;
    background: var(--asl-blue);
}

.decline-bar-hatched[b-rdmq205vvq] {
    background: repeating-linear-gradient(45deg, var(--asl-text-muted) 0 4px, transparent 4px 8px);
}

/* A selected reason or company: only the OTHER rows' bar fill dims; no text is dimmed. */
.decline-bar-dim .decline-bar-fill[b-rdmq205vvq] {
    opacity: 0.4;
}

.decline-bar-count[b-rdmq205vvq] {
    flex: none;
    text-align: right;
    white-space: nowrap;
}

@media (min-width: 768px) {
    .decline-bar-row[b-rdmq205vvq] {
        flex-wrap: nowrap;
    }

    .decline-bar-label[b-rdmq205vvq] {
        flex: 0 1 40%;
    }

    .decline-bar-track[b-rdmq205vvq] {
        flex: 1 1 30%;
        min-width: 30%;
    }
}
/* /Components/Pages/Admin/Reporting/DeclineReportFilters.razor.rz.scp.css */
/* Group headings: the same small uppercase grey heading and thin rule as the admin opportunity detail
   page's .loan-detail-group (OpportunityAdmin.razor.css), so the two pages group fields the same way.
   The rule sits on the row, not the h2, so a link such as "Last 12 months" can share the row without
   becoming part of the heading's accessible name. Every group's row is the same height, so headings and
   the fields under them line up across the grid (decline-reasons.md §10.3). */
.decline-filter-group[b-arsqkw6bi1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    font-size: .75rem;
    font-weight: 700;
    line-height: 1.2;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--asl-muted, #64748b);
    margin-bottom: .75rem;
    padding-bottom: .4rem;
    border-bottom: 1px solid var(--asl-border, #e2e8f0);
}

.decline-filter-group h2[b-arsqkw6bi1] {
    font: inherit;
    line-height: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    color: inherit;
    margin: 0;
}

/* A small text link at the right end of the heading row. line-height 1 and no border keep its box
   (~13px) under the heading's 14.4px line, so it adds no height to the row. The ::after bleed gives it a
   >=24px hit target (WCAG 2.5.8) without widening its visible box or the row's layout height, since an
   absolutely positioned pseudo-element takes no space in flow. MudBlazor.min.css sets
   button:focus { outline: none }, so it needs its own focus-visible ring. */
.decline-last-12-months[b-arsqkw6bi1] {
    position: relative;
    flex: none;
    border: 0;
    font-size: .8125rem;
    font-weight: 400;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
}

.decline-last-12-months[b-arsqkw6bi1]::after {
    content: "";
    position: absolute;
    inset: -6px -6px;
}

.decline-last-12-months:focus-visible[b-arsqkw6bi1] {
    outline: var(--asl-focus-ring-width, 2px) solid var(--asl-focus-ring-color, var(--asl-blue));
    outline-offset: var(--asl-focus-ring-offset, 2px);
}
/* /Components/Pages/Admin/Reporting/DeclineReportTable.razor.rz.scp.css */
/* The note cell (§10.6): the full text is always in the DOM; the clamp only hides overflow. */
.decline-note[b-gugwmuh82y] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    max-width: 24rem;
}

.decline-note-clamp[b-gugwmuh82y] {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
/* /Components/Pages/Admin/UnassignedLogins.razor.rz.scp.css */
/* Registration table */
.unassigned-table th[b-x5emg0bl25] {
    font-size: 0.8125rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--asl-text-muted);
}

.login-row[b-x5emg0bl25] {
    cursor: pointer;
    transition: background-color 0.12s ease-in-out;
}

.login-row:hover[b-x5emg0bl25] {
    background-color: var(--asl-blue-light);
}

.login-row.selected[b-x5emg0bl25] {
    background-color: var(--asl-blue-light);
    box-shadow: inset 3px 0 0 var(--asl-blue);
}

/* Link panel */
.link-panel[b-x5emg0bl25] {
    position: sticky;
    top: 1rem;
}

.avatar[b-x5emg0bl25] {
    flex: 0 0 auto;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--asl-blue-light);
    color: var(--asl-blue);
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
}

.onboarding-info[b-x5emg0bl25] {
    background: var(--asl-surface);
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    padding: 1rem;
}

/* Two-column definition list for the onboarding info */
.info-grid[b-x5emg0bl25] {
    display: grid;
    grid-template-columns: minmax(120px, auto) 1fr;
    row-gap: 0.6rem;
    column-gap: 1rem;
}

.info-grid dt[b-x5emg0bl25] {
    font-weight: 400;
    color: var(--asl-text-muted);
}

.info-grid dd[b-x5emg0bl25] {
    margin: 0;
    color: var(--asl-text-dark);
    font-weight: 500;
}

/* Search results */
.target-list[b-x5emg0bl25] {
    max-height: 220px;
    overflow-y: auto;
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
}

.target-option[b-x5emg0bl25] {
    display: flex;
    align-items: center;
    width: 100%;
    margin: 0;
    padding: 0.625rem 0.75rem;
    cursor: pointer;
    border-bottom: 1px solid var(--asl-border-subtle);
}

.target-option:last-child[b-x5emg0bl25] {
    border-bottom: none;
}

.target-option:hover[b-x5emg0bl25] {
    background-color: var(--asl-blue-light);
}

.target-option.selected[b-x5emg0bl25] {
    background-color: var(--asl-blue-light);
}

/* "or" separator */
.separator[b-x5emg0bl25] {
    display: flex;
    align-items: center;
    text-align: center;
    color: var(--asl-text-muted);
    font-size: 0.875rem;
}

.separator[b-x5emg0bl25]::before,
.separator[b-x5emg0bl25]::after {
    content: "";
    flex: 1;
    border-bottom: 1px solid var(--asl-border);
}

.separator span[b-x5emg0bl25] {
    padding: 0 0.75rem;
}
/* /Components/Pages/Admin/Users.razor.rz.scp.css */
.user-mgmt[b-yzc7f82kob] {
    position: relative;
}

.search-box[b-yzc7f82kob] {
    max-width: 420px;
}

.user-table th[b-yzc7f82kob] {
    font-size: 0.8125rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--asl-text-muted);
}

.user-row[b-yzc7f82kob] {
    cursor: pointer;
    transition: background-color 0.12s ease-in-out;
}

.user-row:hover[b-yzc7f82kob] {
    background-color: var(--asl-blue-light);
}

.user-row.selected[b-yzc7f82kob] {
    background-color: var(--asl-blue-light);
    box-shadow: inset 3px 0 0 var(--asl-blue);
}

/* Slide-out edit panel */
.edit-panel-backdrop[b-yzc7f82kob] {
    position: fixed;
    inset: 0;
    background: rgba(15, 23, 42, 0.25);
    z-index: 1040;
}

.edit-panel[b-yzc7f82kob] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    width: 100%;
    max-width: 420px;
    background: #ffffff;
    border-left: 1px solid var(--asl-border);
    box-shadow: -8px 0 24px rgba(15, 23, 42, 0.12);
    z-index: 1050;
    display: flex;
    flex-direction: column;
}

.edit-panel-header[b-yzc7f82kob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--asl-border);
}

.edit-panel-body[b-yzc7f82kob] {
    padding: 1.5rem;
    overflow-y: auto;
    flex: 1 1 auto;
}
/* /Components/Pages/Home.razor.rz.scp.css */
.landing-wrap[b-h6i57k0aww] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: 3rem 1.25rem;
}

.landing-shell[b-h6i57k0aww] {
    width: 100%;
    max-width: 560px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

.landing-card[b-h6i57k0aww] {
    background: #ffffff;
    border-radius: 0;
    padding: 3rem 3.5rem;
    max-width: 560px;
    width: 100%;
    box-shadow: 0 1px 1px rgba(0, 0, 0, 0.06), 0 4px 10px rgba(0, 0, 0, 0.06);
    border: 1px solid rgba(15, 23, 42, 0.06);
}

.landing-logo[b-h6i57k0aww] {
    max-width: 320px;
    width: 100%;
    height: auto;
    object-fit: contain;
}

.landing-subtitle[b-h6i57k0aww] {
    max-width: 28rem;
    font-size: 0.9375rem;
    line-height: 1.6;
    color: #475569;
}

.button-row[b-h6i57k0aww] {
    display: flex;
    gap: 0.875rem;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 1.75rem;
}

.primary-button[b-h6i57k0aww],
.secondary-button[b-h6i57k0aww] {
    min-width: 11.5rem;
    height: 44px;
    padding: 0 1.5rem;
    border-radius: 0.75rem;
    font-weight: 600;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.primary-button[b-h6i57k0aww] {
    box-shadow: 0 8px 20px rgba(26, 86, 219, 0.18);
}

.primary-button:hover[b-h6i57k0aww],
.primary-button:focus-visible[b-h6i57k0aww] {
    box-shadow: 0 10px 24px rgba(26, 86, 219, 0.24);
}

.secondary-button:hover[b-h6i57k0aww],
.secondary-button:focus-visible[b-h6i57k0aww] {
    background-color: rgba(26, 86, 219, 0.08);
    border-color: #1a56db;
    color: #1a56db;
}

.trust-line[b-h6i57k0aww] {
    margin-top: 1.5rem;
    color: #64748b;
    font-size: 0.875rem;
}

.landing-footer[b-h6i57k0aww] {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: #64748b;
    text-align: center;
}

.landing-footer a[b-h6i57k0aww] {
    color: #475569;
    text-decoration: none;
}

.landing-footer a:hover[b-h6i57k0aww],
.landing-footer a:focus-visible[b-h6i57k0aww] {
    color: #1a56db;
    text-decoration: underline;
}

.footer-divider[b-h6i57k0aww] {
    color: #94a3b8;
}
/* /Components/Pages/Onboarding/AwaitingApproval.razor.rz.scp.css */
.await-card[b-rs71383dd6] {
    width: 100%;
    max-width: 480px;
}
/* /Components/Pages/Onboarding/Onboarding.razor.rz.scp.css */
.onboarding-wrap[b-xt4y1ka924] {
    display: flex;
    justify-content: center;
    padding: 2rem 1rem;
}

/* Constrain the themed .card; visual styling comes from theme.css */
.onboarding-card[b-xt4y1ka924] {
    width: 100%;
    max-width: 820px;
}

/* Vertical divider between the contact and company columns (md+ only) */
@media (min-width: 768px) {
    .contact-col[b-xt4y1ka924] {
        border-right: 1px solid var(--asl-border);
    }
}

/* Company signers section */
.signer-section[b-xt4y1ka924] {
    background: var(--asl-surface);
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    padding: 1.25rem;
}

/* Welcome logo */
.onboarding-logo[b-xt4y1ka924] {
    display: block;
    margin-left: auto;
    margin-right: auto;
    /* Capped to the asset's own width so it is never upscaled — asl-logo.png is 560px wide, and this
       card is a wide two-column form. Matches .landing-logo, which caps the same asset. */
    max-width: 320px;
    width: 100%;
    height: auto;
    object-fit: contain;
}
/* /Components/Pages/Participant/LoanOpportunityDetail.razor.rz.scp.css */
/* Page-specific only. The back link, page header, per-company section shell and stat tiles are the
   shared participant detail vocabulary: they live in theme.css beside overview-*, and the section
   shell is rendered by ParticipantCompanySection, so this page and My Capital Call cannot drift. */

/* ── Participant stage track ───────────────────────────────────────────
   Hidden below 576px (iPhone SE and similar): four steps with a label under each cannot fit that
   width, and the connecting lines pushed the row past the card edge. The actionable information
   survives without it — the next-steps card names the one thing they can do, which is what the track
   was pointing at. What is lost is the sense of progress through the four stages, which is worth less
   on a phone than a card that fits inside it. */
@media (max-width: 575.98px) {
    .participant-section-track[b-jtytwwr9gw],
    .participant-stage-track[b-jtytwwr9gw] {
        display: none;
    }
}
/* ── Participant stage track ─────────────────────────────────────────── */
.participant-stage-track[b-jtytwwr9gw] {
    display: flex;
    align-items: flex-start;
}

.p-stage-item[b-jtytwwr9gw] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.375rem;
    flex-shrink: 0;
    width: 5rem;
}

.p-stage-circle[b-jtytwwr9gw] {
    width: 2rem;
    height: 2rem;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 0.8125rem;
}

.p-stage-label[b-jtytwwr9gw] {
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
    text-align: center;
}

.p-stage-line[b-jtytwwr9gw] {
    flex: 1;
    height: 2px;
    margin-top: 1rem;
    min-width: 1.5rem;
}

.p-stage-done .p-stage-circle[b-jtytwwr9gw]  { background: #16a34a; color: #fff; }
.p-stage-active .p-stage-circle[b-jtytwwr9gw] { background: var(--asl-navy, #052767); color: #fff; }
.p-stage-locked .p-stage-circle[b-jtytwwr9gw] { background: #e2e8f0; color: #94a3b8; }

.p-stage-done .p-stage-label[b-jtytwwr9gw]   { color: #16a34a; }
.p-stage-active .p-stage-label[b-jtytwwr9gw]  { color: var(--asl-navy, #052767); font-weight: 700; }
.p-stage-locked .p-stage-label[b-jtytwwr9gw]  { color: #94a3b8; }

.p-stage-line-done[b-jtytwwr9gw]   { background: #16a34a; }
.p-stage-line-locked[b-jtytwwr9gw] { background: #e2e8f0; }

/* ── Loan Overview key terms tiles (mirrors the list page's expandable panel) ─ */
/* Each term is its own tile with the label stacked directly above its value, so a value can never
   be misread against a neighbouring column's heading. The grid reflows on available width alone
   (auto-fill + minmax) — 4→3→2→1 tiles across as the viewport narrows, no media queries needed. */
/* ── Election status cards ───────────────────────────────────────────── */
.election-status[b-jtytwwr9gw] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.875rem 1rem;
    border-radius: 0.5rem;
    font-size: 0.9375rem;
}

.election-status-submitted[b-jtytwwr9gw] {
    background: #f0fdf4;
    border: 1px solid #bbf7d0;
    color: #15803d;
}

.election-status-declined[b-jtytwwr9gw] {
    background: #eff6ff;
    border: 1px solid #bfdbfe;
    color: #1d4ed8;
}

.election-status-expired[b-jtytwwr9gw] {
    background: #fff7ed;
    border: 1px solid #fed7aa;
    color: #c2410c;
}

.election-status .bi[b-jtytwwr9gw] {
    font-size: 1.25rem;
    margin-top: 0.0625rem;
}

/* ── Election form ───────────────────────────────────────────────────── */
.election-amount-field[b-jtytwwr9gw] {
    max-width: 22rem;
}

.election-reason-field[b-jtytwwr9gw] {
    max-width: 36rem;
}

/* ── Small screens ───────────────────────────────────────────────────── */
@media (max-width: 575.98px) {
    /* Multi-word stage labels ("Investment Available") wrap within their 5rem slot
       instead of overlapping neighbouring stages. */
    .p-stage-label[b-jtytwwr9gw] {
        white-space: normal;
    }
}

/* ── Per-company section header (LPC/Wire and Funded) ────────────────── */
/* ── Per-participant section ───────────────────────────────
   One shell per acting company, tinted so it separates itself from the page and from the next
   company's shell, with plain white cards inside — the same figure/ground relationship the Loan
   Overview card has with its key-terms tiles.

   This replaced a centred name bar that sat ABOVE a company's cards rather than around them: with
   several companies stacked (an asset-manager login sees one section per company) there was nothing
   to say where one ended and the next began, and the bar read as a divider rather than a heading. */

/* The track's end labels are centred under their circles and overhang them, so without this the
   first one starts left of the cards below it and the section looks ragged down its left edge. */
.participant-section-track[b-jtytwwr9gw] {
    padding: 0 1.25rem;
}

/* Names the prose under the Property pairs, so it doesn't read as an unlabelled tail of the list.
   Weighted like a pair's label rather than like the group heading above it. */
.overview-subhead[b-jtytwwr9gw] {
    color: var(--asl-text-muted, #64748b);
    font-size: 0.875rem;
    font-weight: 600;
    margin: 0.75rem 0 0.25rem;
}

.overview-terms-body.is-clamped[b-jtytwwr9gw] {
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 6;
    line-clamp: 6;
    overflow: hidden;
}

.description-disclosure[b-jtytwwr9gw] {
    background: none;
    border: 0;
    color: var(--asl-blue, #1a56db);
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    font-size: 0.875rem;
    font-weight: 600;
    padding: 0;
}

.description-disclosure:hover[b-jtytwwr9gw] {
    text-decoration: underline;
}
/* /Components/Pages/Participant/MessagesYouReceiveCard.razor.rz.scp.css */
/* The card body is a fieldset for its group of checkboxes; reset it and its legend so the card looks
   like the page's other cards and the h5 inside the legend stays a heading. */
.audience-fieldset[b-5h7q6hbfmv] {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}

.audience-legend[b-5h7q6hbfmv] {
    float: none;
    width: auto;
    margin: 0;
    padding: 0;
    font-size: inherit;
}
/* /Components/Pages/Participant/MyCapitalCall.razor.rz.scp.css */

.itemisation-table .col-amount[b-za1hb1rq13] {
    width: 1%;
    white-space: nowrap;
    font-variant-numeric: tabular-nums;
}

.itemisation-table .col-fill[b-za1hb1rq13] {
    max-width: 0;
    width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
/* /Components/Pages/Participant/Profile.razor.rz.scp.css */
/* LPA document file cards (download-only, participant side) */
.lpa-files[b-sraottjcqr] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    max-width: 520px;
}

.lpa-file-card[b-sraottjcqr] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    padding: 0.75rem 0.875rem;
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    background: #ffffff;
}

.lpa-file-icon[b-sraottjcqr] {
    flex: 0 0 auto;
    font-size: 1.875rem;
    line-height: 1;
    color: #dc2626;
}

.lpa-file-meta[b-sraottjcqr] {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.lpa-file-eyebrow[b-sraottjcqr] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    color: var(--asl-text-muted);
}

.lpa-file-name[b-sraottjcqr] {
    font-weight: 500;
    color: var(--asl-text-dark);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.lpa-file-sub[b-sraottjcqr] {
    font-size: 0.75rem;
    color: var(--asl-text-muted);
}

.lpa-file-download[b-sraottjcqr] {
    flex: 0 0 auto;
    white-space: nowrap;
}
/* /Components/Shared/AdminDetailLayout.razor.rz.scp.css */
.admin-detail[b-nd63talxp9] {
    --app-header-height: 5.5rem;
    --admin-anchor-offset: calc(var(--app-header-height) + var(--admin-header-height) + 1rem);
    --stage-rail-top: var(--admin-anchor-offset);
}

.admin-detail-header[b-nd63talxp9] {
    position: sticky;
    top: var(--app-header-height);
    z-index: 1030; /* above cards/inputs, below MudBlazor popovers (1200+) */
    background: #fff;
    margin: -1.1rem -16px 1.5rem;
    padding: .65rem 16px;
    border-bottom: 1px solid var(--asl-mid, #bfdbfe);
    box-shadow: 0 2px 8px rgba(5, 39, 103, .07);
}

[b-nd63talxp9] .back-link {
    color: var(--bs-secondary-color, #6c757d);
}

[b-nd63talxp9] .back-link:hover {
    color: var(--bs-primary, #1a56db);
}

.admin-detail-sections[b-nd63talxp9] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}
/* /Components/Shared/AppFooter.razor.rz.scp.css */
.app-footer[b-1fjjtoxbxb] {
    flex-shrink: 0;
    background: #fff;
    border-top: 1px solid var(--asl-border);
    padding: 1rem 1.5rem;
}

.app-footer__inner[b-1fjjtoxbxb] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.5rem 1.25rem;
    max-width: 1300px;
    margin: 0 auto;
    font-size: 0.8125rem;
    color: var(--asl-text-muted);
}

.app-footer__links[b-1fjjtoxbxb] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1.25rem;
}

.app-footer__links a[b-1fjjtoxbxb] {
    color: var(--asl-text-body);
    text-decoration: none;
}

.app-footer__links a:hover[b-1fjjtoxbxb],
.app-footer__links a:focus-visible[b-1fjjtoxbxb] {
    color: var(--asl-blue);
    text-decoration: underline;
}

@media (max-width: 575.98px) {
    .app-footer__inner[b-1fjjtoxbxb] {
        justify-content: center;
        text-align: center;
    }
}
/* /Components/Shared/CookieConsent.razor.rz.scp.css */
/* Fixed bottom banner, matching americansavingslife.com's .cookie-consent, styled with the portal's
   own brand tokens (theme.css). Buttons reuse the global .btn styles. */
.cookie-consent[b-13s1e8u9om] {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 2000;
    padding: 0.85rem 1rem;
    background: #fff;
    border-top: 1px solid var(--asl-border);
    box-shadow: 0 -2px 8px rgba(5, 20, 45, 0.08);
}

/* Explicit so it wins over any author display; the JS toggles the [hidden] attribute. */
.cookie-consent[hidden][b-13s1e8u9om] {
    display: none;
}

.cookie-consent__inner[b-13s1e8u9om] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: nowrap;
    max-width: 1300px;
    margin: 0 auto;
}

.cookie-consent__text[b-13s1e8u9om] {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--asl-text-body);
}

.cookie-consent__text a[b-13s1e8u9om] {
    color: var(--asl-blue);
    text-decoration: underline;
}

.cookie-consent__text a:hover[b-13s1e8u9om],
.cookie-consent__text a:focus[b-13s1e8u9om] {
    color: var(--asl-navy);
}

.cookie-consent__actions[b-13s1e8u9om] {
    display: flex;
    gap: 0.5rem;
    flex: 0 0 auto;
    margin-left: auto;
}

@media (max-width: 640px) {
    .cookie-consent__inner[b-13s1e8u9om] {
        flex-wrap: wrap;
        justify-content: space-between;
    }

    .cookie-consent__actions[b-13s1e8u9om] {
        margin-left: 0;
        width: 100%;
        justify-content: flex-end;
    }
}
/* /Components/Shared/Documents/AdminPrivateDocumentFolders.razor.rz.scp.css */
/* Mirrors DocumentNavigator.razor.css / PrivateDocumentNavigator.razor.css's Win11 Explorer-style
   table — kept as a separate, CSS-isolated copy since Blazor scopes each component's stylesheet
   independently. */
.document-table[b-ehejr7bthx] {
    width: 100%;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.document-table thead th[b-ehejr7bthx] {
    position: relative;
    text-align: left;
    font-weight: 600;
    color: var(--bs-secondary-color, #64748b);
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--bs-border-color, #e2e8f0);
    user-select: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Files count leads the row, so it's left-aligned (unlike the trailing size column elsewhere). */
.document-table .col-size[b-ehejr7bthx] { width: 8rem; }
.document-table .col-name[b-ehejr7bthx] { width: 24rem; }

.document-table tbody td[b-ehejr7bthx] {
    padding: 0.3rem 0.6rem;
    border-bottom: 1px solid var(--bs-border-color, #f1f5f9);
    color: var(--bs-body-color, #1e293b);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
}

.document-table tbody tr.doc-row:hover[b-ehejr7bthx] {
    background-color: rgba(26, 86, 219, 0.06);
}

.document-table .name-cell[b-ehejr7bthx] {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    background: none;
    border: none;
    padding: 0;
    color: inherit;
    text-align: left;
    cursor: pointer;
}

.document-table .name-text[b-ehejr7bthx] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.document-table .col-size[b-ehejr7bthx] {
    color: var(--bs-secondary-color, #64748b);
}
/* /Components/Shared/Documents/DocumentNavigator.razor.rz.scp.css */
.document-breadcrumb[b-pueuej0rxf] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.35rem;
    font-size: 0.9rem;
    flex: 1 1 auto;
    min-width: 0;
}

.document-breadcrumb .breadcrumb-link[b-pueuej0rxf] {
    background: none;
    border: none;
    padding: 0;
    color: var(--bs-primary, #1a56db);
    cursor: pointer;
}

.document-breadcrumb .breadcrumb-link:hover[b-pueuej0rxf] {
    text-decoration: underline;
}

.document-breadcrumb .breadcrumb-current[b-pueuej0rxf] {
    font-weight: 600;
    color: var(--bs-body-color, #1e293b);
}

.document-breadcrumb .breadcrumb-sep[b-pueuej0rxf] {
    color: var(--bs-secondary-color, #6c757d);
}

/* Empty-location upload affordance (only shown when the folder has no contents). */
.document-empty-drop[b-pueuej0rxf] {
    border: 2px dashed var(--bs-border-color, #dee2e6);
    border-radius: 0.5rem;
    padding: 2.25rem 1.5rem;
    text-align: center;
    color: var(--bs-secondary-color, #6c757d);
    cursor: pointer;
    transition: border-color 0.15s ease-in-out, background-color 0.15s ease-in-out;
}

.document-empty-drop:hover[b-pueuej0rxf] {
    border-color: var(--bs-primary, #1a56db);
    background-color: rgba(26, 86, 219, 0.04);
}

/* Full-component drag overlay. Hidden until .drag-active is toggled on the card-body
   from documentUpload.js. pointer-events:none so it never interferes with the drag. */
.document-drop-overlay[b-pueuej0rxf] {
    position: absolute;
    inset: 0;
    display: none;
    z-index: 5;
    pointer-events: none;
    align-items: center;
    justify-content: center;
    border-radius: var(--bs-card-inner-border-radius, 0.5rem);
    background-color: rgba(26, 86, 219, 0.08);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    border: 2px dashed var(--bs-primary, #1a56db);
}

.card-body.drag-active .document-drop-overlay[b-pueuej0rxf] {
    display: flex;
}

.document-drop-overlay-inner[b-pueuej0rxf] {
    text-align: center;
    color: var(--bs-primary, #1a56db);
}

.document-progress[b-pueuej0rxf] {
    border: 1px solid var(--bs-border-color, #e2e8f0);
    border-radius: 0.5rem;
    padding: 0.75rem 1rem;
    background-color: var(--bs-tertiary-bg, #f8fafc);
}

/* Command bar holding New folder / Add files / Add folder. */
.document-toolbar[b-pueuej0rxf] {
    border: 1px solid var(--bs-border-color, #e2e8f0);
    border-radius: 0.5rem;
    padding: 0.35rem 0.5rem;
    background-color: var(--bs-tertiary-bg, #f8fafc);
}

.document-toolbar .toolbar-sep[b-pueuej0rxf] {
    width: 1px;
    align-self: stretch;
    margin: 0.15rem 0.25rem;
    background-color: var(--bs-border-color, #e2e8f0);
}

/* Borderless command-bar / row actions — icon + text, subtle hover (Win11-style). */
.doc-action[b-pueuej0rxf] {
    text-decoration: none;
    border-radius: 0.375rem;
}

.doc-action:hover[b-pueuej0rxf] {
    background-color: rgba(15, 23, 42, 0.06);
    text-decoration: none;
}

/* Win11 Explorer-style file table. */
.document-table[b-pueuej0rxf] {
    width: 100%;
    /* Fixed columns total 48rem; the floor reserves ~5rem for the unspecified actions
       column, which otherwise collapses to zero once the card is narrower than the sum
       (the wrapper scrolls instead). */
    min-width: 53rem;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.document-table thead th[b-pueuej0rxf] {
    position: relative;
    text-align: left;
    font-weight: 600;
    color: var(--bs-secondary-color, #64748b);
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--bs-border-color, #e2e8f0);
    user-select: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* Fixed starting widths for the leading columns; the last (actions) column has no
   width so it absorbs the remaining horizontal space. */
.document-table .col-name[b-pueuej0rxf] { width: 22rem; }
.document-table .col-date[b-pueuej0rxf] { width: 11rem; }
.document-table .col-type[b-pueuej0rxf] { width: 9rem; }
.document-table .col-size[b-pueuej0rxf] { width: 6rem; text-align: right; }

.document-table tbody td[b-pueuej0rxf] {
    padding: 0.3rem 0.6rem;
    border-bottom: 1px solid var(--bs-border-color, #f1f5f9);
    color: var(--bs-body-color, #1e293b);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
}

.document-table tbody tr.doc-row:hover[b-pueuej0rxf] {
    background-color: rgba(26, 86, 219, 0.06);
}

/* Drag handle on the right edge of each header cell. */
.document-table th .col-resizer[b-pueuej0rxf] {
    position: absolute;
    top: 0;
    right: 0;
    width: 6px;
    height: 100%;
    cursor: col-resize;
}

.document-table th .col-resizer:hover[b-pueuej0rxf] {
    background-color: var(--bs-primary, #1a56db);
    opacity: 0.4;
}

/* Name cell: icon + ellipsised name; folders are clickable. */
.document-table .name-cell[b-pueuej0rxf] {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    background: none;
    border: none;
    padding: 0;
    color: inherit;
    text-align: left;
}

.document-table button.name-cell[b-pueuej0rxf] {
    cursor: pointer;
}

.document-table button.name-cell:hover .name-text[b-pueuej0rxf] {
    text-decoration: underline;
}

.document-table .name-text[b-pueuej0rxf] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.document-table .col-size[b-pueuej0rxf] {
    color: var(--bs-secondary-color, #64748b);
}

/* Row tools appear on hover (Win11-like), but stay visible on focus for a11y. */
.document-table .row-tools[b-pueuej0rxf] {
    display: inline-flex;
    gap: 0.15rem;
    opacity: 0;
    transition: opacity 0.1s ease-in-out;
}

.document-table tbody tr.doc-row:hover .row-tools[b-pueuej0rxf],
.document-table .row-tools:focus-within[b-pueuej0rxf] {
    opacity: 1;
}

/* Safety net so a wide table scrolls inside the card instead of the page. */
.document-table-wrap[b-pueuej0rxf] {
    overflow-x: auto;
}

/* Touch devices: no hover means no drag-resize and no hover-reveal — show tools, hide handles. */
@media (hover: none) {
    .document-table th .col-resizer[b-pueuej0rxf] {
        display: none;
    }

    .document-table .row-tools[b-pueuej0rxf] {
        opacity: 1;
    }
}

/* Narrow phones: keep all columns at compact widths; the wrapper scrolls the overflow.
   !important so inline widths persisted by columnResize.js can't force a wider table here. */
@media (max-width: 575.98px) {
    .document-table[b-pueuej0rxf] {
        min-width: 39rem;
    }

    .document-table .col-name[b-pueuej0rxf] { width: 14rem !important; }
    .document-table .col-date[b-pueuej0rxf] { width: 9.5rem !important; }
    .document-table .col-type[b-pueuej0rxf] { width: 6rem !important; }
    .document-table .col-size[b-pueuej0rxf] { width: 4.5rem !important; }
}
/* /Components/Shared/Documents/PrivateDocumentNavigator.razor.rz.scp.css */
/* Mirrors DocumentNavigator.razor.css's Win11 Explorer-style table — kept as a separate,
   CSS-isolated copy since Blazor scopes each component's stylesheet independently. */
.document-table[b-vz98i911zq] {
    width: 100%;
    /* Fixed columns total 51rem; the floor reserves ~5rem for the unspecified actions
       column, which otherwise collapses to zero once the card is narrower than the sum
       (the wrapper scrolls instead). */
    min-width: 56rem;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.document-table thead th[b-vz98i911zq] {
    position: relative;
    text-align: left;
    font-weight: 600;
    color: var(--bs-secondary-color, #64748b);
    padding: 0.4rem 0.6rem;
    border-bottom: 1px solid var(--bs-border-color, #e2e8f0);
    user-select: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.document-table .col-name[b-vz98i911zq] { width: 24rem; }
.document-table .col-uploader[b-vz98i911zq] { width: 10rem; color: var(--bs-secondary-color, #64748b); }
.document-table .col-date[b-vz98i911zq] { width: 11rem; }
.document-table .col-size[b-vz98i911zq] { width: 6rem; text-align: right; }

.document-table tbody td[b-vz98i911zq] {
    padding: 0.3rem 0.6rem;
    border-bottom: 1px solid var(--bs-border-color, #f1f5f9);
    color: var(--bs-body-color, #1e293b);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    vertical-align: middle;
}

.document-table tbody tr.doc-row:hover[b-vz98i911zq] {
    background-color: rgba(26, 86, 219, 0.06);
}

.document-table .name-cell[b-vz98i911zq] {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    background: none;
    border: none;
    padding: 0;
    color: inherit;
    text-align: left;
}

.document-table .name-text[b-vz98i911zq] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.document-table .col-size[b-vz98i911zq] {
    color: var(--bs-secondary-color, #64748b);
}

/* Row tools appear on hover (Win11-like), but stay visible on focus for a11y. */
.document-table .row-tools[b-vz98i911zq] {
    display: inline-flex;
    align-items: center;
    gap: 0.15rem;
    opacity: 0;
    transition: opacity 0.1s ease-in-out;
}

.document-table tbody tr.doc-row:hover .row-tools[b-vz98i911zq],
.document-table .row-tools:focus-within[b-vz98i911zq] {
    opacity: 1;
}

/* Safety net so a wide table scrolls inside the card instead of the page. */
.document-table-wrap[b-vz98i911zq] {
    overflow-x: auto;
}

/* Touch devices: no hover means no hover-reveal — keep row tools visible. */
@media (hover: none) {
    .document-table .row-tools[b-vz98i911zq] {
        opacity: 1;
    }
}

/* Narrow phones: keep all columns at compact widths; the wrapper scrolls the overflow. */
@media (max-width: 575.98px) {
    .document-table[b-vz98i911zq] {
        min-width: 41rem;
    }

    .document-table .col-name[b-vz98i911zq] { width: 14rem; }
    .document-table .col-uploader[b-vz98i911zq] { width: 8rem; }
    .document-table .col-date[b-vz98i911zq] { width: 9.5rem; }
    .document-table .col-size[b-vz98i911zq] { width: 4.5rem; }
}

.doc-action[b-vz98i911zq] {
    text-decoration: none;
    border-radius: 0.375rem;
    cursor: pointer;
}

.doc-action:hover[b-vz98i911zq] {
    background-color: rgba(15, 23, 42, 0.06);
    text-decoration: none;
}

/* Single whole-panel drag/drop target (replaces the prior per-row targets) — mirrors
   DocumentNavigator's .drag-active convention, scoped to this one wrapper element. */
.private-doc-droptarget[b-vz98i911zq] {
    outline: 2px dashed transparent;
    outline-offset: -2px;
    border-radius: 0.375rem;
    transition: outline-color 0.1s ease-in-out, background-color 0.1s ease-in-out;
}

.private-doc-droptarget.drag-active[b-vz98i911zq] {
    outline-color: var(--bs-primary, #1a56db);
    background-color: rgba(26, 86, 219, 0.08);
}

/* Always-visible click-or-drop affordance beneath the file list. */
.private-doc-dropzone-hint[b-vz98i911zq] {
    display: block;
    margin-top: 0.5rem;
    padding: 0.75rem;
    text-align: center;
    color: var(--bs-secondary-color, #64748b);
    font-size: 0.85rem;
    border: 1px dashed var(--bs-border-color, #cbd5e1);
    border-radius: 0.375rem;
    cursor: pointer;
}

.private-doc-dropzone-hint:hover[b-vz98i911zq] {
    background-color: rgba(15, 23, 42, 0.04);
}
/* /Components/Shared/ErrorPageContent.razor.rz.scp.css */
.error-page[b-d3nkhb1hfk] {
    display: flex;
    justify-content: center;
    padding: 2rem 0 3rem;
}

.error-page__card[b-d3nkhb1hfk] {
    width: 100%;
    max-width: 520px;
}

.error-page__code[b-d3nkhb1hfk] {
    font-size: 4.5rem;
    font-weight: 700;
    line-height: 1;
    color: var(--bs-primary, #0d3b66);
    opacity: 0.35;
    margin-bottom: 0.5rem;
}

.error-page__actions[b-d3nkhb1hfk] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
    justify-content: center;
}
/* /Components/Shared/InfoPopover.razor.rz.scp.css */
/* The trigger sits inline in a table header, so it must not inherit the header's uppercase/letter
   spacing treatment or add height to the row. */
.info-pop[b-a2jon6wilb] {
    position: relative;
    display: inline-block;
    margin-left: 0.35rem;
    line-height: 1;

    /* `vertical-align: middle` centres against the baseline plus half the x-height — where the middle
       of LOWERCASE text sits. Every label these sit beside is uppercased by the table header style,
       and capitals reach well above the x-height, so plain `middle` leaves the icon visibly low
       (2px on a 9px cap height, which is what made it read as misaligned). The icon glyph is also
       taller than the caps and not centred on the text baseline within its own box, so the
       correction is not simply half the cap/x-height difference. -0.18em is measured: it puts the
       painted circle exactly on the centre of the painted capitals at the 0.8rem header size. */
    vertical-align: middle;
    top: -0.18em;
}

.info-pop-trigger[b-a2jon6wilb] {
    border: 0;
    background: none;
    padding: 0;
    cursor: pointer;
    color: var(--asl-muted, #64748b);
    font-size: 0.875rem;
    line-height: 1;
    text-transform: none;
    letter-spacing: normal;
}

.info-pop-trigger:hover[b-a2jon6wilb],
.info-pop-trigger[aria-expanded="true"][b-a2jon6wilb] {
    color: var(--asl-navy, #052767);
}

.info-pop-trigger:focus-visible[b-a2jon6wilb] {
    outline: var(--asl-focus-ring-width) solid var(--asl-focus-ring-color);
    outline-offset: var(--asl-focus-ring-offset);
    border-radius: 2px;
}

/* Catches the next click anywhere. Transparent, so nothing dims — this is a legend, not a modal. */
.info-pop-backdrop[b-a2jon6wilb] {
    position: fixed;
    inset: 0;
    z-index: 1080;
}

.info-pop-panel[b-a2jon6wilb] {
    position: absolute;
    z-index: 1081;
    top: calc(100% + 0.5rem);
    left: 0;
    width: max-content;
    max-width: 22rem;
    padding: 0.75rem 0.875rem;
    background: #fff;
    border: 1px solid var(--asl-border, #e2e8f0);
    border-radius: 0.5rem;
    box-shadow: 0 8px 24px rgb(15 23 42 / 12%);
    text-align: left;
    text-transform: none;
    letter-spacing: normal;
    font-weight: 400;
    white-space: normal;
    cursor: default;
}

/* Near the right edge of a table the panel would otherwise overflow; flipping it is cheaper than
   measuring, and these only ever appear in a handful of known columns. */
.info-pop-panel.info-pop-end[b-a2jon6wilb] {
    left: auto;
    right: 0;
}

.info-pop-title[b-a2jon6wilb] {
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--asl-muted, #64748b);
    margin-bottom: 0.5rem;
}
/* /Components/Shared/Integration/LoanStageLegend.razor.rz.scp.css */
/* Shared by both legends: chip in the left column, meaning in the right, aligned on their first line
   so a two-line description doesn't drag its chip to the middle. */
.legend[b-x03gtyy7eg] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.5rem 0.75rem;
    margin: 0;
    font-size: 0.8125rem;
}

.legend dt[b-x03gtyy7eg] {
    font-weight: 400;
}

.legend dd[b-x03gtyy7eg] {
    margin: 0;
    color: var(--asl-muted, #475569);
    line-height: 1.45;
}
/* /Components/Shared/Integration/OriginatorLoanLink.razor.rz.scp.css */
/* P1 inline link: quiet accent link that reads as part of the surrounding text, underlining only on
   hover/focus. Weight and color match the other in-app links; the trailing icon signals leaving the
   portal. Inherits font-size from its context so it fits both header rows and small status lines. */
.originator-loan-link[b-m13hu0e0rb] {
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
    color: var(--bs-primary, #0d6efd);
    font-weight: 600;
    text-decoration: none;
}

.originator-loan-link:hover[b-m13hu0e0rb],
.originator-loan-link:focus-visible[b-m13hu0e0rb] {
    text-decoration: underline;
}

.originator-loan-link .bi[b-m13hu0e0rb] {
    font-size: 0.85em;
}
/* /Components/Shared/Lists/CollapsibleSection.razor.rz.scp.css */
[b-noi7ze6dj1] .section-disclosure {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    background: none;
    border: 0;
    padding: 0;
    color: inherit;
    font: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
}

[b-noi7ze6dj1] .section-disclosure:hover {
    color: var(--asl-navy, #052767);
}

/* The ring itself comes from the global button:focus-visible rule (theme.css); this only rounds it. */
[b-noi7ze6dj1] .section-disclosure:focus-visible {
    border-radius: 0.25rem;
}

[b-noi7ze6dj1] .section-disclosure-chevron {
    font-size: 0.75rem;
    width: 0.75rem;
    display: inline-block;
    text-align: center;
}

[b-noi7ze6dj1] .section-disclosure-count {
    background: var(--asl-surface, #f1f5f9);
    border: 1px solid var(--asl-border, #e2e8f0);
    border-radius: 999px;
    padding: 0.05rem 0.45rem;
    font-size: 0.6875rem;
    font-weight: 600;
    line-height: 1.5;
    color: var(--asl-text-muted, #64748b);
    letter-spacing: 0;
}
/* /Components/Shared/Messaging/AudienceLine.razor.rz.scp.css */
.audience-line[b-0wu6lojx9c] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
    margin-top: 0.75rem;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--asl-border);
    border-radius: var(--bs-border-radius);
    background: var(--bs-body-bg);
}

.audience-line-label[b-0wu6lojx9c] {
    color: var(--asl-text-dark);
}

/* A 100-character name truncates with an ellipsis (full name in title); the count never does. */
.audience-chip[b-0wu6lojx9c] {
    display: inline-flex;
    align-items: center;
    max-width: 100%;
    gap: 0.15rem;
}

.audience-chip-name[b-0wu6lojx9c] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.audience-chip-count[b-0wu6lojx9c] {
    flex: 0 0 auto;
    white-space: nowrap;
}

/* At least 24 × 24 px of hit area, without making the chip taller. */
.audience-chip-remove[b-0wu6lojx9c] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    min-width: 24px;
    min-height: 24px;
    margin: -0.3rem -0.4rem -0.3rem 0;
    padding: 0;
    border: none;
    border-radius: 0.25rem;
    background: transparent;
    color: inherit;
    line-height: 1;
    cursor: pointer;
}

.audience-chip-remove:hover[b-0wu6lojx9c] {
    background-color: var(--asl-border-subtle);
}

/* Pushed right when it fits; wraps onto its own line when it doesn't. */
.audience-line-match[b-0wu6lojx9c] {
    margin-left: auto;
}
/* /Components/Shared/Messaging/LoginAudienceMatrix.razor.rz.scp.css */
/* The only scroll container. Sideways always; both ways when the host bounds the height. */
.audience-matrix-scroll[b-29z8d5df60] {
    max-width: 100%;
    overflow-x: auto;
}

.audience-matrix-scroll.is-bounded[b-29z8d5df60] {
    overflow-y: auto;
}

/* Fixed layout: the login column is fixed and the audience columns (no width of their own) share the
   rest equally. The inline min-width (MinWidth: this login width plus a 7rem floor per audience) keeps
   a narrow screen scrolling sideways rather than squeezing them. */
.audience-matrix[b-29z8d5df60] {
    --audience-matrix-login-width: 20rem;
    width: 100%;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.875rem;
}

.col-login[b-29z8d5df60] {
    width: var(--audience-matrix-login-width);
}

.col-actions[b-29z8d5df60] {
    width: 2.5rem;
}

@media (max-width: 575.98px) {
    .audience-matrix[b-29z8d5df60] {
        --audience-matrix-login-width: 10rem;
    }
}

.audience-matrix th[b-29z8d5df60],
.audience-matrix td[b-29z8d5df60] {
    padding: 0.4rem 0.5rem;
    border-bottom: 1px solid var(--asl-border-subtle);
    vertical-align: middle;
    background: var(--bs-body-bg);
}

.audience-matrix thead th[b-29z8d5df60] {
    background: var(--asl-surface);
    border-bottom: 1px solid var(--asl-border);
    font-weight: 600;
    color: var(--asl-text-dark);
}

/* Sticky cells carry opaque backgrounds so scrolled cells never show through. */
.is-bounded .audience-matrix thead th[b-29z8d5df60] {
    position: sticky;
    top: 0;
    z-index: 2;
}

.login-cell[b-29z8d5df60] {
    position: sticky;
    left: 0;
    z-index: 1;
    text-align: left;
    font-weight: 400;
}

/* The group header <th> now spans the whole row (colspan in the markup), so the cell itself is not
   sticky — only its inner .group-line is (below), matching how .login-cell stays pinned. Its own
   padding is zero so .group-line's padding sits exactly where a login row's own padding would. */
.audience-matrix .group-cell[b-29z8d5df60] {
    text-align: left;
    padding: 0;
}

.audience-matrix thead th.corner[b-29z8d5df60] {
    position: sticky;
    left: 0;
    z-index: 3;
    text-align: left;
}

.is-bounded .audience-matrix thead th.corner[b-29z8d5df60] {
    top: 0;
}

/* A section heading, not a data row: a faint full-width band with a rule above it. The spanned <th>
   itself carries both, so they read full width without a separate band cell. */
.group-row > th[b-29z8d5df60] {
    background: var(--asl-surface);
    border-top: 1px solid var(--asl-border);
    border-bottom-color: var(--asl-border);
}

/* The name and the shared .asl-chip-kind (app.css) flow on one line. This is the part of the group
   header that stays pinned at left:0 as the grid scrolls sideways — the same edge .login-cell pins
   to — so it carries its own opaque background and the padding .group-cell gave up. */
.group-line[b-29z8d5df60] {
    position: sticky;
    left: 0;
    z-index: 1;
    display: inline-flex;
    max-width: 100%;
    align-items: baseline;
    column-gap: 0.5rem;
    padding: 0.4rem 0.5rem;
    background: var(--asl-surface);
}

.group-line > .asl-chip-kind[b-29z8d5df60] {
    flex-shrink: 0;
}

/* A clear step up from the login names below it: larger and bolder, taken from the theme's own
   heading scale (theme.css's h1-h6 rule: 1rem is the h6 size, 600 / -0.015em / 1.3 is the shared
   heading treatment). It never wraps — this is a heading, not a data row — and clips with an
   ellipsis only once a very narrow screen can't show it in full (media query below). */
.group-name[b-29z8d5df60] {
    font-size: 1rem;
    font-weight: 600;
    letter-spacing: -0.015em;
    line-height: 1.3;
    color: var(--asl-text-dark);
    white-space: nowrap;
}

@media (max-width: 575.98px) {
    .group-line[b-29z8d5df60] {
        max-width: calc(100vw - 2rem);
    }

    .group-name[b-29z8d5df60] {
        min-width: 0;
        overflow: hidden;
        text-overflow: ellipsis;
    }
}

/* The full audience name, never truncated: at the shared column width it wraps to two lines at most
   in practice. Bottom-aligned so every column's tick-all sits on one line whatever its name's length. */
.audience-head[b-29z8d5df60] {
    text-align: center;
    vertical-align: bottom;
}

.audience-head-name[b-29z8d5df60] {
    display: block;
    margin-bottom: 0.35rem;
    overflow-wrap: break-word;
    line-height: 1.25;
    font-size: 0.8125rem;
}

.cell[b-29z8d5df60] {
    text-align: center;
}

/* Column dividers: a light 1px rule between audience columns and a slightly stronger 2px one after
   the login column (it rides along with the sticky first column). The first audience column takes no
   rule of its own, so the two never double up. Group bands have none, so each still reads as a band. */
.audience-matrix .audience-head[b-29z8d5df60],
.audience-matrix .cell[b-29z8d5df60] {
    border-left: 1px solid var(--asl-border);
}

.audience-matrix .corner + .audience-head[b-29z8d5df60],
.audience-matrix .login-cell + .cell[b-29z8d5df60] {
    border-left: 0;
}

.audience-matrix .corner[b-29z8d5df60],
.audience-matrix .login-cell[b-29z8d5df60] {
    border-right: 2px solid var(--asl-border);
}

/* One checkbox style for every box in the matrix, tick-all and cell alike: the native
   form-check-input at 24px (the WCAG 2.5.8 minimum target) rather than theme.css's 1.125rem. Ticked and
   partly ticked are the accent (theme.css's :checked is --asl-blue); unticked is a white box with an
   outline of --asl-text-muted, 4.76:1 on white, so the empty control clears 3:1 (WCAG 1.4.11). */
.matrix-checkbox[b-29z8d5df60] {
    width: 1.5rem;
    height: 1.5rem;
    margin: 0;
    vertical-align: middle;
}

.matrix-checkbox:not(:checked):not(:indeterminate)[b-29z8d5df60] {
    background-color: var(--bs-body-bg);
    border-color: var(--asl-text-muted);
}

.matrix-checkbox:indeterminate[b-29z8d5df60] {
    background-color: var(--asl-blue);
    border-color: var(--asl-blue);
}

/* The name wraps (no ellipsis) in the fixed login column; the badge is its own item beside it, so a
   long name never pushes it out of view. */
.login-name-line[b-29z8d5df60] {
    display: flex;
    align-items: center;
    column-gap: 0.25rem;
    min-width: 0;
}

.login-name[b-29z8d5df60] {
    flex: 1 1 auto;
    min-width: 0;
    overflow-wrap: anywhere;
    font-weight: 500;
    color: var(--asl-text-dark);
}

.login-name-line[b-29z8d5df60]  .asl-chip {
    flex: 0 0 auto;
}

.login-email[b-29z8d5df60] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.login-untagged[b-29z8d5df60] {
    margin-top: 0.25rem;
}

/* Reads the login rows as children of the group heading above them (ShowGroupHeaders hosts only —
   the company panel's single ungrouped list never gets this class, so it is never indented). */
.child-row .login-name-line[b-29z8d5df60],
.child-row .login-email[b-29z8d5df60] {
    margin-left: 1.5rem;
}

/* Secondary cue only (1.04:1 against white) — the "No audiences yet" chip carries the meaning. */
.audience-matrix tr.untagged > th[b-29z8d5df60],
.audience-matrix tr.untagged > td[b-29z8d5df60] {
    background: var(--asl-attention-bg);
}
/* /Components/Shared/Messaging/MergeFieldPicker.razor.rz.scp.css */
.mergefield-picker[b-bo2yoqeood] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.mergefield-search[b-bo2yoqeood] {
    flex: 0 0 auto;
    position: sticky;
    top: 0;
    z-index: 3;
    background: var(--asl-card-bg, #fff);
    padding-bottom: 0.75rem;
}

.mergefield-scroll[b-bo2yoqeood] {
    flex: 1 1 auto;
    min-height: 0;
    max-height: 32rem;
    overflow-y: auto;
    padding-right: 0.25rem;
}

.mergefield-group + .mergefield-group[b-bo2yoqeood] {
    margin-top: 1.5rem;
}

.mergefield-group-label[b-bo2yoqeood],
.mergefield-section-label[b-bo2yoqeood] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
    position: sticky;
    margin: 0;
    background: var(--asl-card-bg, #fff);
    font-weight: 700;
    text-transform: uppercase;
}

.mergefield-group-label[b-bo2yoqeood] {
    top: 0;
    z-index: 2;
    padding: 0.15rem 0 0.35rem;
    border-bottom: 1px solid var(--asl-border);
    font-size: 0.7rem;
    letter-spacing: 0.07em;
    color: var(--asl-navy, #052767);
}

.mergefield-section-label[b-bo2yoqeood] {
    top: 1.4rem;
    z-index: 1;
    padding: 0.55rem 0 0.3rem;
    font-size: 0.65rem;
    letter-spacing: 0.05em;
    color: var(--asl-text-muted, #64748b);
}

.mergefield-count[b-bo2yoqeood] {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
    color: var(--asl-text-subtle, #9ca3af);
}

.mergefield-chips[b-bo2yoqeood] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.3rem;
    margin-top: 0.35rem;
}

.mergefield-chips[b-bo2yoqeood]  .mud-tooltip-root {
    display: inline-flex;
}

.mergefield-chip[b-bo2yoqeood] {
    /* Explicit: the framework's button reset otherwise resolves this to flex, which blockifies the
       brace spans and breaks each chip across three lines. */
    display: inline-block;
    border: 1px solid var(--asl-border);
    border-radius: 0.25rem;
    background: #fff;
    padding: 0.25rem 0.5rem;
    font-family: var(--bs-body-font-family);
    font-style: normal;
    font-weight: 500;
    font-size: 0.8rem;
    line-height: 1.5;
    color: var(--asl-text-dark, #1e293b);
    white-space: nowrap;
    transition: border-color 120ms ease-out, background-color 120ms ease-out;
}

.mergefield-brace[b-bo2yoqeood] {
    color: var(--asl-text-muted, #64748b);
}

.mergefield-chip:hover[b-bo2yoqeood] {
    border-color: var(--asl-blue);
    background: var(--asl-blue-light, #eff6ff);
}

.mergefield-resultcount[b-bo2yoqeood] {
    padding: 0.1rem 0 0.5rem;
    font-size: 0.75rem;
    color: var(--asl-text-muted, #64748b);
}

.mergefield-results[b-bo2yoqeood] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.mergefield-result[b-bo2yoqeood] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    width: 100%;
    border: 1px solid var(--asl-border);
    border-radius: 0.3rem;
    background: #fff;
    text-align: left;
    padding: 0.45rem 0.6rem;
    transition: border-color 120ms ease-out, background-color 120ms ease-out;
}

.mergefield-result:hover[b-bo2yoqeood] {
    border-color: var(--asl-blue);
    background: var(--asl-blue-light, #eff6ff);
}

.mergefield-result-token[b-bo2yoqeood] {
    font-family: var(--bs-body-font-family);
    font-style: normal;
    font-weight: 500;
    font-size: 0.8rem;
    color: var(--asl-text-dark, #1e293b);
    overflow-wrap: anywhere;
}

.mergefield-result-token[b-bo2yoqeood]  mark {
    background: #fde68a;
    color: #713f12;
    padding: 0 1px;
    border-radius: 2px;
}

.mergefield-result-desc[b-bo2yoqeood] {
    font-size: 0.72rem;
    line-height: 1.45;
    color: var(--asl-text-body, #374151);
}

.mergefield-result-where[b-bo2yoqeood] {
    font-size: 0.62rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--asl-text-subtle, #9ca3af);
}

.mergefield-empty[b-bo2yoqeood] {
    margin: 0;
    padding: 0.25rem 0.1rem;
    font-size: 0.78rem;
    line-height: 1.5;
    color: var(--asl-text-muted, #64748b);
}
/* /Components/Shared/Messaging/MessageBodyEditor.razor.rz.scp.css */
.message-editor-shell[b-ftme58bvml] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.message-editor-shell[b-ftme58bvml]  .blazored-text-editor {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    border: 1px solid var(--asl-border);
    border-radius: 0.25rem;
    background: #fff;
}

.message-editor-shell[b-ftme58bvml]  .ql-toolbar {
    border-color: var(--asl-border);
    border-top-left-radius: 0.25rem;
    border-top-right-radius: 0.25rem;
    flex: 0 0 auto;
}

.message-editor-shell[b-ftme58bvml]  .ql-container {
    border-color: var(--asl-border);
    border-bottom-left-radius: 0.25rem;
    border-bottom-right-radius: 0.25rem;
    flex: 1 1 auto;
    min-height: 16rem;
}

.message-editor-shell[b-ftme58bvml]  .ql-editor {
    min-height: 16rem;
    font-size: 0.95rem;
}
/* /Components/Shared/Messaging/MessageComposer.razor.rz.scp.css */
.composer-opportunity-picker[b-7lplyafqqh] {
    min-width: 18rem;
}

.composer-loan-number[b-7lplyafqqh] {
    min-width: 10rem;
}

.composer-opportunity-heading[b-7lplyafqqh] {
    color: var(--asl-navy);
}

.composer-row[b-7lplyafqqh] {
    display: flex;
    flex-wrap: wrap;
}

.composer-main[b-7lplyafqqh],
.composer-sidebar-col[b-7lplyafqqh] {
    display: flex;
    flex-direction: column;
}

/* The column div is a flex item inside the d-flex Bootstrap col; without a grow
   factor it shrinks to fit its content instead of filling the column width. */
.composer-main[b-7lplyafqqh] {
    flex: 1 1 auto;
    min-width: 0;
}

.composer-fixed-block[b-7lplyafqqh] {
    flex: 0 0 auto;
}

.composer-body-editor-wrap[b-7lplyafqqh] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.composer-sidebar[b-7lplyafqqh] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    border: 1px solid var(--asl-border);
    border-radius: 0.25rem;
    background: var(--asl-surface);
    padding: 1rem;
}

.participant-placeholder[b-7lplyafqqh] {
    background-color: var(--asl-surface);
}

.participant-list[b-7lplyafqqh] {
    background: var(--asl-surface);
}

.participant-list-header[b-7lplyafqqh] {
    background: #fff;
}

.participant-list-body[b-7lplyafqqh] {
    background: #fff;
}

.composer-email-breakdown summary[b-7lplyafqqh] {
    cursor: pointer;
    user-select: none;
    width: fit-content;
}

.composer-email-breakdown-list[b-7lplyafqqh] {
    padding-left: 1.25rem;
    margin-top: 0.25rem;
}

/* /Components/Shared/Messaging/RecipientTreePicker.razor.rz.scp.css */
.recipient-tree[b-h97w55b8fo] {
    background: #fff;
}

.recipient-tree-toolbar[b-h97w55b8fo] {
    background: var(--asl-surface);
}

.tree-group[b-h97w55b8fo] {
    border-bottom: 1px solid var(--asl-border-subtle);
}

.tree-group:last-child[b-h97w55b8fo] {
    border-bottom: none;
}

.tree-row[b-h97w55b8fo] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.75rem;
}

.tree-row-top[b-h97w55b8fo] {
    background: var(--asl-surface);
}

.tree-row-contact[b-h97w55b8fo],
.tree-row-company[b-h97w55b8fo] {
    padding-left: 2.1rem;
    border-top: 1px solid var(--asl-border-subtle);
}

.tree-row-login[b-h97w55b8fo] {
    padding-left: 3.75rem;
    border-top: 1px dashed var(--asl-border-subtle);
}

.row-toggle[b-h97w55b8fo] {
    cursor: pointer;
    display: flex;
    align-items: center;
    padding: 0.25rem;
    margin: -0.25rem;
}

.caret[b-h97w55b8fo] {
    width: 0.8rem;
    height: 0.8rem;
    color: var(--asl-text-subtle);
    display: inline-flex;
    transition: transform 0.15s ease;
    transform: rotate(90deg);
}

.caret.collapsed[b-h97w55b8fo] {
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .caret[b-h97w55b8fo] {
        transition: none;
    }
}

.tree-section-label[b-h97w55b8fo] {
    padding: 0.35rem 0.75rem 0.15rem 2.1rem;
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--asl-text-subtle);
    border-top: 1px solid var(--asl-border-subtle);
}

.row-name[b-h97w55b8fo] {
    font-weight: 500;
    color: var(--asl-text-dark);
}

.row-sub[b-h97w55b8fo] {
    font-size: 0.8rem;
    color: var(--asl-text-muted);
}

.partial-count[b-h97w55b8fo] {
    font-size: 0.78rem;
    color: var(--asl-text-muted);
    white-space: nowrap;
}

/* The 390 px fix (spec §6.1): the top row wraps, the name keeps at least 8rem, and the warning chip
   and partial count ride in .row-meta — right-aligned on the first line when they fit. */
.tree-row-top[b-h97w55b8fo],
.tree-row-company[b-h97w55b8fo] {
    flex-wrap: wrap;
}

.tree-row-top > .row-name[b-h97w55b8fo],
.tree-row-company > .row-name[b-h97w55b8fo] {
    flex: 0 1 auto;
    min-width: min(8rem, 100%);
    overflow-wrap: anywhere;
}

.row-meta[b-h97w55b8fo] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin-left: auto;
}

/* A long audience name wraps inside the chip instead of overflowing. */
.row-meta .asl-chip[b-h97w55b8fo] {
    white-space: normal;
    max-width: 100%;
}

/* On a phone the meta always takes its own line, indented to line up with the name (caret + checkbox
   on the top row, checkbox on a company row). */
@media (max-width: 575.98px) {
    .tree-row-top > .row-meta[b-h97w55b8fo] {
        flex-basis: 100%;
        margin-left: 0;
        padding-left: 2.6rem;
    }

    .tree-row-company > .row-meta[b-h97w55b8fo] {
        flex-basis: 100%;
        margin-left: 0;
        padding-left: 2rem;
    }
}

.avatar[b-h97w55b8fo] {
    width: 1.6rem;
    height: 1.6rem;
    border-radius: 50%;
    background: var(--asl-blue-light);
    color: var(--asl-navy);
    font-size: 0.68rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}

.contact-text[b-h97w55b8fo] {
    min-width: 0;
}
/* /Components/Shared/Opportunities/DeclineActions.razor.rz.scp.css */
.decline-chip-anchor[b-lex7ou511s] {
    position: relative;
    display: inline-block;
}

/* U-9: the chip is the link — underlined, thicker on hover, a 24px target, and its own focus ring
   because MudBlazor.min.css sets button:focus { outline: none }. The offset keeps the ring off the
   tinted fill. Token fallbacks until feature/theme-focus-contrast lands. */
.decline-chip-link[b-lex7ou511s] {
    cursor: pointer;
    min-height: 24px;
}

/* The underline is on the word, not across the chip's padding. */
.decline-chip-word[b-lex7ou511s] {
    text-decoration: underline;
    text-underline-offset: 2px;
}

.decline-chip-link:hover .decline-chip-word[b-lex7ou511s] {
    text-decoration-thickness: 2px;
}

.decline-chip-link:focus-visible[b-lex7ou511s] {
    outline: var(--asl-focus-ring-width, 2px) solid var(--asl-focus-ring-color, var(--asl-blue));
    outline-offset: var(--asl-focus-ring-offset, 2px);
}

[b-lex7ou511s] .decline-popover {
    max-width: min(380px, calc(100vw - 32px));
}

.decline-popover-body[b-lex7ou511s] {
    padding: 0.875rem 1rem;
}

.decline-popover-header[b-lex7ou511s] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* First in DOM order for the focus trap, last on screen. */
.decline-popover-close[b-lex7ou511s] {
    order: 2;
    margin-left: auto;
}

/* A white box with the theme border and body text colour — never muted text on a #f1f5f9 fill (§8.4). */
.decline-popover-note[b-lex7ou511s] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    background: #fff;
    border: 1px solid var(--asl-border);
    border-radius: 0.375rem;
    padding: 0.5rem 0.625rem;
    color: var(--bs-body-color);
}
/* /Components/Shared/Opportunities/DeclineDialog.razor.rz.scp.css */
/* Only the content scrolls; the title and the action bar stay put (U-13). This div is rendered directly
   by DeclineDialog's own markup (not lifted into MudDialog's internal template), so it carries this
   component's scope attribute and the rule applies without ::deep. */
.decline-dialog-body[b-4odj0kq9a8] {
    max-height: min(70vh, 40rem);
    overflow-y: auto;
}
/* /Components/Shared/Opportunities/DeclineReasonChips.razor.rz.scp.css */
.decline-reason-chips[b-muobubj59y] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.25rem;
}

/* Long labels wrap inside the chip rather than stretching the cell (the prototype's .reason-chip). */
.decline-reason-chip[b-muobubj59y] {
    white-space: normal;
    text-align: left;
}
/* /Components/Shared/Opportunities/DeclineReasonsFieldset.razor.rz.scp.css */
/* The group-error colour (decline-reasons.md §8.1): Bootstrap's .invalid-feedback reads this variable.
   #b91c1c is the .asl-chip-danger text colour; there is no token for it. 6.18:1 on #f8fafc. */
.decline-reasons[b-psm32n5nyt] {
    --bs-form-invalid-color: #b91c1c;
}

.decline-reasons-group[b-psm32n5nyt] {
    border: 0;
    margin: 0;
    padding: 0;
    min-width: 0;
}

.decline-reasons .form-check-inline[b-psm32n5nyt] {
    margin-right: 1rem;
}
/* /Components/Shared/Opportunities/LoanSyncDialog.razor.rz.scp.css */
/* Flow indicator between the Originator and Current columns: a line with an arrowhead,
   and the row's overwrite checkbox centered on it. Selecting it is what "Overwrite
   selected" acts on — same as the old leftmost checkbox column it replaced. */
.sync-arrow-cell[b-21931u234u] {
    width: 1%;
    white-space: nowrap;
}

.sync-arrow[b-21931u234u] {
    display: flex;
    align-items: center;
    width: 3.5rem;
    height: 1.75rem;
    color: var(--bs-secondary-color, #6c757d);
}

/* Left/right line segments butt directly against the checkbox — no gap between them,
   so together with it they read as one continuous line. */
.sync-arrow-segment[b-21931u234u] {
    height: 2px;
    background: currentColor;
    flex: 1 1 auto;
}

.sync-arrow-segment-right[b-21931u234u] {
    flex: 0 0 .4rem;
}

.sync-arrow-head[b-21931u234u] {
    line-height: 1;
    margin-left: -.15rem;
}

[b-21931u234u] .mud-checkbox.sync-arrow-checkbox {
    flex: 0 0 auto;
    margin: 0;
    padding: 0;
}
/* /Components/Shared/Opportunities/ParticipantSelector.razor.rz.scp.css */
/*
 * Column sizing for the participant MudTable.
 *
 * .participant-table is a plain <div> wrapper in OUR markup, so it DOES carry this component's
 * scope attribute (b-xxxxxxxxxx) — the generated rule becomes `.participant-table[b-xxx] th:...`.
 * MudBlazor renders the inner <table><thead>/<tbody> itself, and those cells do NOT receive the
 * scope attribute, so we use ::deep to pierce from the scoped wrapper into MudBlazor's child
 * markup. (A Class on <MudTable> would NOT work: it lands on the child component, which never
 * gets our scope attribute.) Anchoring to .participant-table keeps the rules from leaking to
 * other tables.
 *
 * Goal (per Responsive & Layout Principles): data columns hug their content and stay
 * left-aligned; the last column (Shared) absorbs the slack so the table reads as intentionally
 * laid out rather than justified edge-to-edge.
 */

/* Scroll region: cap the list at roughly 12 dense rows plus the header; shorter lists
   size to content. The header stays pinned while the body scrolls. */
.participant-table[b-3h86v80wly] {
    max-height: 28rem;
    overflow-y: auto;
}

.participant-table[b-3h86v80wly]  thead th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--mud-palette-surface, #fff);
}

/* Search box mirrors the opportunity-list search styling. */
.participant-filter[b-3h86v80wly] {
    position: relative;
    flex: 1 1 240px;
    max-width: 340px;
}

.participant-filter .bi-search[b-3h86v80wly] {
    position: absolute;
    top: 50%;
    left: 0.75rem;
    transform: translateY(-50%);
    color: var(--asl-text-muted, #64748b);
    pointer-events: none;
}

.participant-filter .form-control[b-3h86v80wly] {
    padding-left: 2.25rem;
}

/* 1) Checkbox column — tight, shrink-to-content. */
.participant-table[b-3h86v80wly]  th:nth-child(1),
.participant-table[b-3h86v80wly]  td:nth-child(1) {
    width: 1%;
    white-space: nowrap;
}

/* 2) Company Name — cap width and truncate long names with an ellipsis instead of wrapping. */
.participant-table[b-3h86v80wly]  th:nth-child(2),
.participant-table[b-3h86v80wly]  td:nth-child(2) {
    max-width: 22rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* 3) Vendor ID — content-fit. */
.participant-table[b-3h86v80wly]  th:nth-child(3),
.participant-table[b-3h86v80wly]  td:nth-child(3) {
    width: 1%;
    white-space: nowrap;
}

/* 4) Shared (last column) — absorbs the remaining horizontal space; badges stay left-aligned. */
.participant-table[b-3h86v80wly]  th:nth-child(4),
.participant-table[b-3h86v80wly]  td:nth-child(4) {
    width: 100%;
}
/* /Components/Shared/Opportunities/ParticipantStatusLegend.razor.rz.scp.css */
/* Shared by both legends: chip in the left column, meaning in the right, aligned on their first line
   so a two-line description doesn't drag its chip to the middle. */
.legend[b-rwcmurygbt] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.5rem 0.75rem;
    margin: 0;
    font-size: 0.8125rem;
}

.legend dt[b-rwcmurygbt] {
    font-weight: 400;
}

.legend dd[b-rwcmurygbt] {
    margin: 0;
    color: var(--asl-muted, #475569);
    line-height: 1.45;
}
/* /Components/Shared/Participant/CapitalCallsList.razor.rz.scp.css */

.cc-legend[b-hfoidu2026] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.5rem 0.75rem;
    margin: 0;
    font-size: 0.8125rem;
}

.cc-legend dt[b-hfoidu2026] {
    font-weight: 400;
}

.cc-legend dd[b-hfoidu2026] {
    margin: 0;
    color: var(--asl-muted, #475569);
    line-height: 1.45;
}

@media (max-width: 767.98px) {
    .participant-table .col-date[b-hfoidu2026],
    .participant-table .col-actions[b-hfoidu2026] {
        display: none;
    }
}
/* /Components/Shared/Participant/LoanOpportunitiesList.razor.rz.scp.css */

@media (max-width: 1199.98px) {
    .participant-table .col-date-funding[b-v340dbjzze] {
        display: none;
    }
}

@media (max-width: 767.98px) {
    .participant-table .col-rate[b-v340dbjzze],
    .participant-table .col-date[b-v340dbjzze],
    .participant-table .col-loan-stage[b-v340dbjzze],
    .participant-table .col-actions[b-v340dbjzze] {
        display: none;
    }
}
/* /Components/Shared/Participant/ParticipantListShell.razor.rz.scp.css */

.company-switcher label[b-cgnt8iigw3] {
    white-space: nowrap;
}
/* /Components/Shared/StageRail.razor.rz.scp.css */
.stage-rail[b-l0lgsitd1t] {
    display: block;
}

.stage-rail .rail-steps[b-l0lgsitd1t] {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    gap: 0.25rem;
    list-style: none;
    margin: 0;
    padding: 0;
}

@media (min-width: 1200px) {
    /* The sticky rail-steps below needs room to move inside .stage-rail as the page scrolls. Its
       containing block is this nav, and a block element only grows to fit its own content, so
       without this the nav is exactly as tall as rail-steps and there is nowhere to stick to.
       Filling the column's height (the column stretches to match admin-detail-sections via Bootstrap's
       flex row) gives it that room. */
    .stage-rail[b-l0lgsitd1t] {
        height: 100%;
    }

    .stage-rail .rail-steps[b-l0lgsitd1t] {
        position: sticky;
        top: var(--stage-rail-top, 1rem);
        flex-direction: column;
    }
}

.stage-rail .rail-link[b-l0lgsitd1t] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    border-radius: 0.375rem;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--asl-navy, #052767);
    text-decoration: none;
}

.stage-rail .rail-link:hover[b-l0lgsitd1t],
.stage-rail .rail-link:focus-visible[b-l0lgsitd1t] {
    background: var(--asl-blue-light, #eff6ff);
}

.stage-rail .rail-step[b-l0lgsitd1t] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    border: 1px solid var(--asl-blue-mid, #bfdbfe);
    background: #fff;
    font-size: 0.75rem;
    font-weight: 600;
}

.stage-rail .rail-label[b-l0lgsitd1t] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.stage-rail .rail-done .rail-step[b-l0lgsitd1t] {
    background: #f0fdf4;
    border-color: #bbf7d0;
    color: #15803d;
}

.stage-rail .rail-current[b-l0lgsitd1t] {
    background: var(--asl-blue-light, #eff6ff);
    font-weight: 700;
}

.stage-rail .rail-current .rail-step[b-l0lgsitd1t] {
    background: var(--asl-navy, #052767);
    border-color: var(--asl-navy, #052767);
    color: #fff;
}

.stage-rail .rail-locked[b-l0lgsitd1t] {
    color: var(--asl-text-muted, #64748b);
}

.stage-rail .rail-locked .rail-step[b-l0lgsitd1t] {
    background: var(--asl-surface, #f8fafc);
    border-color: #cbd5e1;
    color: var(--asl-text-muted, #64748b);
}

.stage-rail .rail-substeps[b-l0lgsitd1t] {
    list-style: none;
    margin: 0;
    padding-left: 1.5rem;
}

.stage-rail .rail-sublink[b-l0lgsitd1t] {
    padding: 0.3125rem 0.75rem;
    font-size: 0.8125rem;
    font-weight: 400;
    color: var(--asl-text-muted, #64748b);
}

.stage-rail .rail-substep-marker[b-l0lgsitd1t] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 1.5rem;
}
