/* /Components/Account/Pages/EmailTest.razor.rz.scp.css */
/* === Email test page — scoped styles === */

.email-selected[b-f8x5rvb2v9] {
    background-color: #f8f9fa;
    border-color: #dee2e6;
    color: #495057;
}

    .email-selected:hover[b-f8x5rvb2v9] {
        background-color: #e9ecef;
    }

.email-list-container[b-f8x5rvb2v9] {
    height: 75vh;
    overflow-y: auto;
    border-right: 1px solid #dee2e6;
    padding-right: 15px;
}

.email-preview-container[b-f8x5rvb2v9] {
    height: 75vh;
    overflow-y: auto;
    padding-left: 15px;
}

.email-item[b-f8x5rvb2v9] {
    padding: 8px 12px;
    margin-bottom: 4px;
    border-radius: 4px;
    cursor: pointer;
}

    .email-item:hover[b-f8x5rvb2v9] {
        background-color: #f8f9fa;
    }

.email-subject[b-f8x5rvb2v9] {
    font-weight: 600;
    font-size: 0.9rem;
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.email-sender[b-f8x5rvb2v9] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin-bottom: 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.email-date[b-f8x5rvb2v9] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.email-toolbar[b-f8x5rvb2v9] {
    border-bottom: 1px solid #dee2e6;
    margin-bottom: 15px;
}

.email-case-badge[b-f8x5rvb2v9] {
    display: inline-block;
    background-color: var(--lb-success-bg);
    color: #155724;
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.85rem;
    margin-top: 8px;
}

    .email-case-badge a[b-f8x5rvb2v9] {
        color: #155724;
        font-weight: 600;
        text-decoration: underline;
        cursor: pointer;
    }

/* Responsive: stack list/preview on tablets */
@media (max-width: 768px) {
    .email-list-container[b-f8x5rvb2v9],
    .email-preview-container[b-f8x5rvb2v9] {
        height: auto;
        max-height: 50vh;
        border-right: none;
        padding-right: 0;
        padding-left: 0;
    }
}
/* /Components/Account/Pages/Login.razor.rz.scp.css */
/* === Login -- scoped styles === */

.login-page[b-gdz4fqyjge] {
    display: flex;
    align-items: center;
    justify-content: center;
    /* Sidebar is hidden on unauthenticated pages and TopBar does not render
     * either, so the login card centers in the full viewport. */
    min-height: 100vh;
    padding: 1rem 0;
}

.login-center[b-gdz4fqyjge] {
    width: 100%;
}

/* -- Card width constraint --
 * Bootstrap .col-lg-5 caps the card around 475px on lg+. On xs/sm the card
 * spans 100% of the column. On phones we want a comfortable max so wide
 * folding-phone landscape (~1088px) still gets a centered, readable card
 * rather than one stretched edge-to-edge.
 */
[b-gdz4fqyjge] .card {
    max-width: 480px;
    margin-inline: auto;
}

/* -- Phone breakpoint (<576px) --
 * Tighten card-body padding and footer copy so the card fits Z Fold folded
 * (~390px CSS) and iPhone SE (375px) without horizontal scroll.
 */
@media (max-width: 575.98px) {
    .login-page[b-gdz4fqyjge] {
        /* Drop top/bottom padding so the card sits closer to the top of the
         * viewport on short phone screens (Z Fold folded is only ~840px tall
         * minus browser chrome). */
        padding: 0.5rem 0;
        align-items: flex-start;
    }

    [b-gdz4fqyjge] .card-body {
        padding: 1.25rem 1rem;
    }

    [b-gdz4fqyjge] .signin-heading {
        font-size: 1.5rem;
        margin-bottom: 1rem !important;
    }

    /* Footer copyright text: tighten line-height and shrink slightly so the
     * legal paragraph stays readable but does not push the card content
     * above the fold on small screens. */
    [b-gdz4fqyjge] footer .small {
        font-size: 0.7rem;
        line-height: 1.35;
    }

    [b-gdz4fqyjge] footer h6 {
        font-size: 0.75rem;
    }

    /* Loading overlay copy can wrap awkwardly on narrow screens. */
    .signin-label[b-gdz4fqyjge] {
        font-size: 0.95rem;
        padding: 0 1rem;
    }
}

/* -- Sign In heading -- */
[b-gdz4fqyjge] .signin-heading {
    font-weight: 700;
    color: var(--lb-brand);
}

/* -- Microsoft sign-in button (brand gold) -- */
[b-gdz4fqyjge] .signin-ms-btn {
    background-color: var(--lb-brand) !important;
    color: #fff !important;
    border: none !important;
    font-weight: 600;
    padding: 0.65rem 1.25rem;
    font-size: 1rem;
    border-radius: var(--lb-radius-pill);
    transition: background-color 0.2s ease;
}

[b-gdz4fqyjge] .signin-ms-btn:hover,
[b-gdz4fqyjge] .signin-ms-btn:focus {
    background-color: var(--lb-brand-hover) !important;
    color: #fff !important;
}

/* -- Card surfaces use design tokens for dark-mode compat -- */
[b-gdz4fqyjge] .card {
    background-color: var(--lb-card);
    border-color: var(--lb-border-light);
}

[b-gdz4fqyjge] .card-body {
    color: var(--lb-text);
}

/* -- Full-page sign-in overlay -- */
.signin-overlay[b-gdz4fqyjge] {
    position: fixed;
    inset: 0;
    z-index: 10000;
    display: flex;
    align-items: center;
    justify-content: center;
    background-color: rgba(255, 255, 255, 0.92);
}

.signin-spinner-container[b-gdz4fqyjge] {
    text-align: center;
}

.signin-spinner[b-gdz4fqyjge] {
    width: 48px;
    height: 48px;
    margin: 0 auto 16px;
    border: 4px solid #e0e0e0;
    border-top-color: var(--lb-brand);
    border-radius: 50%;
    animation: signin-spin-b-gdz4fqyjge 0.8s linear infinite;
}

.signin-label[b-gdz4fqyjge] {
    font-size: 1.1rem;
    color: var(--lb-text-muted);
    margin: 0;
}

@keyframes signin-spin-b-gdz4fqyjge {
    to { transform: rotate(360deg); }
}

/* -- Dark-mode overlay -- */
:global([data-theme="dark"]) .signin-overlay[b-gdz4fqyjge] {
    background-color: rgba(16, 17, 20, 0.94);
}

:global([data-theme="dark"]) .signin-spinner[b-gdz4fqyjge] {
    border-color: #383A42;
    border-top-color: var(--lb-brand);
}

/* -- Media fallback for dark mode before JS runs -- */
@media (prefers-color-scheme: dark) {
    :global(html:not([data-theme="light"])) .signin-overlay[b-gdz4fqyjge] {
        background-color: rgba(16, 17, 20, 0.94);
    }

    :global(html:not([data-theme="light"])) .signin-spinner[b-gdz4fqyjge] {
        border-color: #383A42;
        border-top-color: var(--lb-brand);
    }
}
/* /Components/Account/Pages/PersonalAccountNotSupported.razor.rz.scp.css */
.personal-account-error[b-bqf7o44m60] {
    max-width: 520px;
    margin: 60px auto;
    text-align: center;
    padding: 32px;
}

.error-icon[b-bqf7o44m60] {
    color: var(--lb-warning);
    margin-bottom: 16px;
}

.personal-account-error h2[b-bqf7o44m60] {
    color: var(--lb-text-primary);
    font-size: 1.35rem;
    font-weight: 600;
    margin-bottom: 16px;
}

.personal-account-error p[b-bqf7o44m60] {
    color: var(--lb-text-secondary);
    font-size: 0.9rem;
    line-height: 1.6;
    margin-bottom: 12px;
}

.error-actions[b-bqf7o44m60] {
    margin-top: 24px;
}

.btn-retry[b-bqf7o44m60] {
    display: inline-block;
    padding: 10px 24px;
    background: var(--lb-brand);
    color: #fff;
    border-radius: 6px;
    text-decoration: none;
    font-weight: 600;
    font-size: 0.9rem;
    transition: background 0.15s ease;
}

.btn-retry:hover[b-bqf7o44m60] {
    background: var(--lb-brand-hover);
    color: #fff;
    text-decoration: none;
}
/* /Components/CaseHealth/CaseHealthBadge.razor.rz.scp.css */
.ch-badge[b-vczvza14yj] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    border-radius: 999px;
    padding: 0.2rem 0.6rem;
    font-size: 0.78rem;
    border: 1px solid var(--lb-border);
    background: var(--lb-elevated);
    color: var(--lb-text);
}

.ch-score[b-vczvza14yj] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.ch-trend[b-vczvza14yj] {
    font-size: 0.75rem;
}

/* Visually hidden but announced by screen readers (CH-1 / #1828).
   Standard clip-rect recipe so the trend text lands off-screen without
   display:none (which would remove it from the accessibility tree). */
.ch-sr-only[b-vczvza14yj] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.ch-label[b-vczvza14yj] {
    font-weight: 600;
}

.ch-badge--healthy[b-vczvza14yj] {
    border-color: var(--lb-success);
    color: var(--lb-success);
}

.ch-badge--risk[b-vczvza14yj] {
    border-color: var(--lb-warning);
    color: var(--lb-warning-text, var(--lb-warning));
}

.ch-badge--critical[b-vczvza14yj] {
    border-color: var(--lb-danger);
    color: var(--lb-danger);
}
/* /Components/CaseHealth/CaseHealthDetailPanel.razor.rz.scp.css */
.ch-detail[b-4bjnyvh36o] {
    border: 1px solid var(--lb-border);
    border-radius: 10px;
    background: var(--lb-card);
}

.ch-detail-header[b-4bjnyvh36o] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-right: 0.75rem;
}

[b-4bjnyvh36o] .ch-detail-toggle.e-btn {
    flex: 1;
    border: none;
    background: transparent;
    color: var(--lb-text);
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.75rem 1rem;
    font-weight: 600;
    text-transform: none;
}

[b-4bjnyvh36o] .ch-refresh-btn.e-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 1px solid var(--lb-border-light);
    border-radius: 4px;
    background: transparent;
    color: var(--lb-text-muted);
    font-size: 0.78rem;
    padding: 4px 10px;
    cursor: pointer;
    flex-shrink: 0;
    text-transform: none;
}

    [b-4bjnyvh36o] .ch-refresh-btn.e-btn:hover:not(:disabled) {
        color: var(--lb-brand);
        border-color: var(--lb-brand);
    }

    [b-4bjnyvh36o] .ch-refresh-btn.e-btn:disabled {
        opacity: 0.5;
        cursor: default;
    }

.ch-detail-empty[b-4bjnyvh36o] {
    color: var(--lb-text-muted);
    padding: 0 1rem 1rem;
}

.ch-gauge-wrap[b-4bjnyvh36o] {
    padding: 0 1rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
}

.ch-gauge-label[b-4bjnyvh36o] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.ch-gauge[b-4bjnyvh36o] {
    height: 10px;
    border-radius: 999px;
    background: var(--lb-elevated);
    overflow: hidden;
}

.ch-gauge-fill[b-4bjnyvh36o] {
    height: 100%;
    background: linear-gradient(90deg, var(--lb-danger), var(--lb-warning), var(--lb-success));
}

.ch-ai-summary[b-4bjnyvh36o] {
    margin: 0 1rem 1rem;
    padding: 0.6rem 0.75rem;
    border-radius: 8px;
    background: var(--lb-elevated);
    color: var(--lb-text);
}

.ch-factor-list[b-4bjnyvh36o] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 0.75rem;
    padding: 0 1rem 1rem;
}

.ch-factor[b-4bjnyvh36o] {
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 0.6rem;
    background: var(--lb-bg-white);
}

.ch-factor-top[b-4bjnyvh36o] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.35rem;
}

.ch-factor-label[b-4bjnyvh36o] {
    font-weight: 600;
    color: var(--lb-text);
}

.ch-factor-delta[b-4bjnyvh36o] {
    font-weight: 700;
}

.ch-factor-delta-arrow[b-4bjnyvh36o] {
    margin-right: 1px;
}

.ch-factor-delta.pos[b-4bjnyvh36o] {
    color: var(--lb-success);
}

.ch-factor-delta.neg[b-4bjnyvh36o] {
    color: var(--lb-danger);
}

.ch-factor-detail[b-4bjnyvh36o],
.ch-factor-action[b-4bjnyvh36o] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}
/* /Components/Chat/AiHelpTab.razor.rz.scp.css */
/* -- AiHelpTab scoped styles -- */
/* Uses --lb-* design tokens only. No !important. No inline styles. */
/* ASCII-only comments (Blazor CSS isolation bundler requirement). */
/* Visual language: the AI accent (--lb-ai-accent, purple) marks everything */
/* the assistant contributes; brand amber stays reserved for the user's own */
/* prompt bubbles. Both flip with light/dark and both schemes via tokens. */

.ai-help-tab-wrapper[b-ge7qi2eqx8] {
    /* Local shorthands for the AI accent tints (theme-relative, so they track
       light/dark and both schemes automatically). */
    --aih-tint-strong: color-mix(in srgb, var(--lb-ai-accent) 14%, transparent);
    --aih-tint: color-mix(in srgb, var(--lb-ai-accent) 8%, transparent);
    --aih-tint-faint: color-mix(in srgb, var(--lb-ai-accent) 4%, transparent);

    display: flex;
    flex-direction: column;
    height: 100%;
    /* Clip horizontal overflow only (no sideways scrollbar) instead of clipping */
    /* both axes tight against the prompt input's focus ring (#1530). The inner */
    /* AssistView owns vertical scrolling, so the wrapper itself never overflows. */
    overflow-x: hidden;
    background: var(--lb-ai-panel-bg);
}

/* -- Header: badge + title/context + new-conversation -- */

.ai-help-header[b-ge7qi2eqx8] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    background: linear-gradient(180deg, var(--aih-tint) 0%, transparent 100%);
    border-bottom: 1px solid var(--lb-border-light);
    flex-shrink: 0;
}

.ai-help-badge[b-ge7qi2eqx8] {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    display: grid;
    place-items: center;
    border-radius: 10px;
    background: var(--aih-tint-strong);
    color: var(--lb-ai-accent);
}

.ai-help-badge .e-icons[b-ge7qi2eqx8] {
    font-size: 16px;
}

.ai-help-header-text[b-ge7qi2eqx8] {
    display: flex;
    flex-direction: column;
    gap: 1px;
    flex: 1;
    min-width: 0;
}

.ai-help-title[b-ge7qi2eqx8] {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--lb-text-bright);
    line-height: 1.2;
}

.ai-help-context-label[b-ge7qi2eqx8] {
    font-size: 0.72rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.ai-help-context-area[b-ge7qi2eqx8] {
    color: var(--lb-ai-accent);
    font-weight: 600;
}

[b-ge7qi2eqx8] .ai-help-reset-btn {
    min-width: 28px;
    height: 28px;
    flex-shrink: 0;
}

[b-ge7qi2eqx8] .ai-help-reset-btn.e-btn:hover {
    background: var(--aih-tint);
    color: var(--lb-ai-accent);
}

/* -- Disclaimer banner: tighten the shared component to panel width -- */

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .ai-disclaimer-banner {
    margin: 10px 12px 0;
    font-size: 0.75rem;
    padding: 0.35rem 0.65rem;
}

/* -- Status banners -- */

.ai-help-no-content-banner[b-ge7qi2eqx8] {
    margin: 10px 12px 0;
    padding: 8px 11px;
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text);
    border: 1px solid var(--lb-warning-border);
    border-radius: var(--lb-radius-card);
    font-size: 0.78rem;
    line-height: 1.45;
    flex-shrink: 0;
}

.ai-help-rate-limit-banner[b-ge7qi2eqx8] {
    margin: 10px 12px 0;
    padding: 8px 11px;
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    border: 1px solid color-mix(in srgb, var(--lb-danger) 35%, transparent);
    border-radius: var(--lb-radius-card);
    font-size: 0.78rem;
    line-height: 1.45;
    flex-shrink: 0;
}

/* -- Proactive quick tips panel -- */

.ai-help-quick-tips[b-ge7qi2eqx8] {
    padding: 0 12px 10px;
    border-bottom: 1px solid var(--lb-border-light);
    /* Fit-to-content: grow to show every tip card whole, give ground (and
       scroll internally) only when the panel is genuinely too short -- the
       assist host's min-height floor below is what pushes back. A fixed
       max-height here sliced the last card mid-text. */
    flex: 0 1 auto;
    min-height: 0;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--lb-border) transparent;
}

.quick-tips-header[b-ge7qi2eqx8] {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    cursor: pointer;
    user-select: none;
    border-radius: 6px;
    /* Stays readable while the card list scrolls under it. Solid panel
       background so cards do not show through; top padding lives here (not on
       the region) so no see-through gap opens above the pinned row. */
    position: sticky;
    top: 0;
    z-index: 1;
    background: var(--lb-ai-panel-bg);
    padding: 10px 0 8px;
}

.quick-tips-header:hover[b-ge7qi2eqx8] {
    color: var(--lb-ai-accent);
}

.quick-tips-header:focus-visible[b-ge7qi2eqx8] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

.quick-tips-icon[b-ge7qi2eqx8] {
    font-size: 14px;
    color: var(--lb-ai-accent);
}

.quick-tips-title[b-ge7qi2eqx8] {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.quick-tips-count[b-ge7qi2eqx8] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--aih-tint-strong);
    color: var(--lb-ai-accent);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0;
    flex-shrink: 0;
}

.quick-tips-panel-chevron[b-ge7qi2eqx8] {
    margin-left: auto;
    font-size: 12px;
    flex-shrink: 0;
}

.quick-tip-card:first-of-type[b-ge7qi2eqx8] {
    /* The sticky header's bottom padding provides the gap. */
    margin-top: 0;
}

.quick-tip-card[b-ge7qi2eqx8] {
    padding: 9px 11px;
    margin-bottom: 6px;
    border: 1px solid var(--lb-border-light);
    /* AI-accent rail marks assistant-provided content */
    border-left: 3px solid color-mix(in srgb, var(--lb-ai-accent) 40%, transparent);
    border-radius: 8px;
    background: var(--lb-card);
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s, background-color 0.15s;
}

.quick-tip-card:last-child[b-ge7qi2eqx8] {
    margin-bottom: 0;
}

.quick-tip-card:hover[b-ge7qi2eqx8] {
    border-color: color-mix(in srgb, var(--lb-ai-accent) 45%, var(--lb-border-light));
    border-left-color: var(--lb-ai-accent);
    box-shadow: var(--lb-shadow);
}

.quick-tip-card:focus-visible[b-ge7qi2eqx8] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

.quick-tip-card.quick-tip-expanded[b-ge7qi2eqx8] {
    border-left-color: var(--lb-ai-accent);
    background: color-mix(in srgb, var(--lb-ai-accent) 3%, var(--lb-card));
}

.quick-tip-card-header[b-ge7qi2eqx8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.quick-tip-heading[b-ge7qi2eqx8] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 3px;
    flex: 1;
    min-width: 0;
}

.quick-tip-chevron[b-ge7qi2eqx8] {
    font-size: 12px;
    color: var(--lb-text-dim);
    flex-shrink: 0;
}

.quick-tip-excerpt[b-ge7qi2eqx8] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.quick-tip-full-text[b-ge7qi2eqx8] {
    font-size: 0.8rem;
    color: var(--lb-text);
    line-height: 1.55;
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--lb-border-light);
    white-space: pre-line;
}

/* -- Welcome banner (empty conversation) -- */

.ai-help-welcome[b-ge7qi2eqx8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 10px;
    padding: 30px 24px 16px;
}

.ai-help-welcome-icon[b-ge7qi2eqx8] {
    width: 46px;
    height: 46px;
    display: grid;
    place-items: center;
    border-radius: 14px;
    background: var(--aih-tint-strong);
    color: var(--lb-ai-accent);
    /* Soft halo behind the badge */
    box-shadow: 0 0 0 8px var(--aih-tint-faint);
    margin-bottom: 4px;
}

.ai-help-welcome-icon .e-icons[b-ge7qi2eqx8] {
    font-size: 21px;
}

.ai-help-welcome-title[b-ge7qi2eqx8] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lb-text-bright);
}

.ai-help-welcome-sub[b-ge7qi2eqx8] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    line-height: 1.5;
    max-width: 34ch;
}

/* -- SfAIAssistView overrides -- strip chrome so it blends with our panel -- */

/* Inset host for the AIAssistView. flex:1 + min-height:0 makes the host fill the */
/* remaining panel height so the AssistView (and its inner scroll area) sizes */
/* against it. The padding keeps the prompt input's box-shadow focus ring a few */
/* px clear of the wrapper edges so it is not clipped on any side (#1530). */
.ai-help-assist-host[b-ge7qi2eqx8] {
    flex: 1;
    min-width: 0;
    /* Floor, not just min-height:0 -- keeps the welcome/composer area usable
       while the quick-tips region above sizes to its content. min() caps the
       floor on short viewports so the wrapper can never grow past the panel
       and hand scrolling back to .chat-panel-body (#1530 single-scroll). */
    min-height: min(260px, 45%);
    padding-inline: 10px;
    padding-bottom: 10px;
}

/* Make the AssistView a vertical flex column so its conversation area */
/* (.e-view-content) can flex to fill and scroll on its own, while the */
/* prompt-input footer stays pinned at the bottom (#1530). */
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview {
    border: none;
    background: transparent;
    display: flex;
    flex-direction: column;
    flex: 1;
    min-width: 0;
    min-height: 0;
}

/* Syncfusion defaults these areas to max(80%, 425px), which is wider than */
/* the 380px help panel on a desktop viewport. */
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-view-container,
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
}

/* Keep the contenteditable prompt inside its flex row and wrap long text. */
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-textarea-icons-wrapper,
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-assist-textarea {
    min-width: 0;
    max-width: 100%;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-assist-textarea {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

/* Hide the built-in "AI Assist" header bar */
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-view-header {
    display: none;
}

/* The conversation area is the SINGLE scroll container: flex:1 + min-height:0 lets */
/* it absorb the remaining height and scroll internally, so the outer */
/* .chat-panel-body does not double-scroll and ScrollToBottomAsync pins the latest */
/* answer instead of leaving whitespace below it (#1530). */
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-view-content {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    background: transparent;
    scrollbar-width: thin;
    scrollbar-color: var(--lb-border) transparent;
}

/* -- Composer (prompt input footer) -- */

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 12px;
    box-shadow: var(--lb-shadow);
    transition: border-color 0.15s, box-shadow 0.15s;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer.e-footer-focused,
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer:focus-within {
    border-color: color-mix(in srgb, var(--lb-ai-accent) 55%, transparent);
    box-shadow: 0 0 0 3px var(--aih-tint);
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer .e-assist-textarea {
    background: transparent;
    color: var(--lb-text);
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer .e-assist-textarea[placeholder]:empty::before {
    color: var(--lb-text-dim);
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer .e-assist-send.enabled {
    color: var(--lb-ai-accent);
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-footer .e-assist-send.enabled:hover {
    color: var(--lb-ai-accent);
    background: var(--aih-tint);
}

/* -- Prompt suggestion chips -- */

/* Syncfusion renders the suggestions header even when the suggestion list is
   empty (which happens while the quick-tips panel is open and suggestions are
   suppressed) -- hide the whole block so no orphan "Try asking" label shows. */
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-suggestions:not(:has(li)) {
    display: none;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-suggestion-header {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    text-align: left;
    margin: 0 2px 8px;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-suggestions ul {
    justify-content: flex-start;
    gap: 6px;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-suggestions li {
    background: var(--lb-card);
    color: var(--lb-text);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-pill);
    box-shadow: none;
    height: auto;
    line-height: 1.35;
    padding: 5px 12px;
    margin: 0;
    font-size: 0.78rem;
    white-space: normal;
    transition: border-color 0.15s, color 0.15s, background-color 0.15s;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-suggestions li:hover {
    background: var(--aih-tint-faint);
    color: var(--lb-ai-accent);
    border-color: color-mix(in srgb, var(--lb-ai-accent) 45%, transparent);
}

/* -- Conversation: user prompt bubble (brand amber = the user's side) -- */

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-prompt-text {
    background: color-mix(in srgb, var(--lb-brand) 9%, var(--lb-card));
    color: var(--lb-text);
    border: 1px solid color-mix(in srgb, var(--lb-brand) 18%, transparent);
    border-radius: 12px 12px 4px 12px;
}

/* -- Conversation: AI response -- */

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-output-icon {
    color: var(--lb-ai-accent);
    background: var(--aih-tint);
    border-radius: 50%;
}

/* -- HTML formatting inside AI responses -- */

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-content p{
    margin: 0 0 8px;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-content p:last-child{
    margin-bottom: 0;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-content ul,
.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-content ol{
    margin: 4px 0 8px;
    padding-left: 20px;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-content li{
    margin-bottom: 4px;
}

.ai-help-tab-wrapper[b-ge7qi2eqx8]  .e-aiassistview .e-content strong{
    color: var(--lb-brand);
    font-weight: 600;
}
/* /Components/Chat/ChannelList.razor.rz.scp.css */
/* =====================================================================
   ChannelList.razor.css -- Scoped styles for the channel list
   =====================================================================
   Uses --lb-* design tokens. Channel items are full-width clickable
   rows with icon, info (name + preview), and optional unread badge.
   ===================================================================== */

/* -- Loading state -- */
.channel-list-loading[b-u79hvncdip] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px;
    color: var(--lb-text-muted);
}

/* -- Container -- */
.channel-list[b-u79hvncdip] {
    display: flex;
    flex-direction: column;
    background: var(--lb-bg-surface);
    min-height: 100%;
}

/* -- Toolbar row (new channel + search) -- */
.channel-toolbar[b-u79hvncdip] {
    display: flex;
    align-items: center;
    border-bottom: 1px solid var(--lb-border);
}

/* -- New channel button -- */
.channel-new-btn[b-u79hvncdip] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 1;
    padding: 10px 16px;
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease;
}

.channel-new-btn:hover[b-u79hvncdip] {
    background: var(--lb-bg-hover);
}

/* -- New DM button -- */
.channel-new-dm-btn[b-u79hvncdip] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 10px 14px;
    background: none;
    border: none;
    color: var(--lb-success);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease;
    white-space: nowrap;
}

.channel-new-dm-btn:hover[b-u79hvncdip] {
    background: var(--lb-bg-hover);
}

/* -- Search button -- */
.channel-search-btn[b-u79hvncdip] {
    background: none;
    border: none;
    border-left: 1px solid var(--lb-border);
    padding: 10px 14px;
    cursor: pointer;
    color: var(--lb-text-muted);
    transition: background 0.15s ease, color 0.15s ease;
}

.channel-search-btn:hover[b-u79hvncdip] {
    background: var(--lb-bg-hover);
    color: var(--lb-text-primary);
}

/* -- Section headers -- */
.channel-section-header[b-u79hvncdip] {
    padding: 12px 16px 4px;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    text-transform: uppercase;
}

/* -- Channel item row -- */
.channel-item[b-u79hvncdip] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 16px;
    background: none;
    border: none;
    border-bottom: 1px solid var(--lb-border-light);
    cursor: pointer;
    text-align: left;
    width: 100%;
    transition: background 0.15s ease;
}

.channel-item:hover[b-u79hvncdip] {
    background: var(--lb-bg-hover);
}

/* -- Channel icon (avatar circle) -- */
.channel-icon[b-u79hvncdip] {
    flex-shrink: 0;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8rem;
    font-weight: 700;
    color: #fff;
}

.channel-icon-case[b-u79hvncdip] {
    background: var(--lb-brand);
}

.channel-icon-firm[b-u79hvncdip] {
    background: var(--lb-info);
    font-size: 1.1rem;
}

.channel-icon-dm[b-u79hvncdip] {
    background: var(--lb-success);
}

/* -- Channel info block -- */
.channel-info[b-u79hvncdip] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.channel-name-row[b-u79hvncdip] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.channel-name[b-u79hvncdip] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.channel-time[b-u79hvncdip] {
    font-size: 0.72rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

.channel-preview[b-u79hvncdip] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.channel-preview-text[b-u79hvncdip] {
    color: var(--lb-text-secondary);
}

.channel-preview-author[b-u79hvncdip] {
    font-weight: 600;
    margin-right: 4px;
}

.channel-preview-empty[b-u79hvncdip] {
    font-style: italic;
    color: var(--lb-text-muted);
}

/* -- Unread badge -- */
.channel-badge[b-u79hvncdip] {
    flex-shrink: 0;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 10px;
    background: var(--lb-danger);
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

/* -- Empty state -- */
.channel-empty[b-u79hvncdip] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 32px;
    text-align: center;
}

.channel-empty-icon[b-u79hvncdip] {
    font-size: 2.5rem;
    color: var(--lb-text-muted);
    opacity: 0.4;
    margin-bottom: 12px;
}

.channel-empty-text[b-u79hvncdip] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 0 0 4px;
}

.channel-empty-subtext[b-u79hvncdip] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* Load-failure state (distinct from empty, #2331) */

.channel-error[b-u79hvncdip] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 32px;
    text-align: center;
}

.channel-error-icon[b-u79hvncdip] {
    font-size: 2.5rem;
    color: var(--lb-danger, #d13438);
    margin-bottom: 12px;
}

.channel-error-text[b-u79hvncdip] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 0 0 4px;
}

.channel-error-subtext[b-u79hvncdip] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0 0 12px;
}

.channel-retry-btn[b-u79hvncdip] {
    background: none;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 6px 16px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
}

.channel-retry-btn:hover[b-u79hvncdip] {
    background: var(--lb-btn-flat-hover-bg);
}

/* ---------------------------------------------------------------
   Filter tabs (All / DMs toggle)
   --------------------------------------------------------------- */

.channel-filter-tabs[b-u79hvncdip] {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
}

.channel-filter-tab[b-u79hvncdip] {
    flex: 1;
    padding: 8px 12px;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    cursor: pointer;
    text-align: center;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.channel-filter-tab:hover[b-u79hvncdip] {
    color: var(--lb-text-primary);
}

.channel-filter-tab.active[b-u79hvncdip] {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
}

/* -- "View all unread" link row -- */
.channel-view-unread[b-u79hvncdip] {
    display: flex;
    justify-content: flex-end;
    padding: 6px 14px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
}

.channel-view-unread-link[b-u79hvncdip] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 500;
    color: var(--lb-brand);
    text-decoration: none;
    cursor: pointer;
    transition: opacity 0.15s ease;
}

.channel-view-unread-link:hover[b-u79hvncdip] {
    opacity: 0.8;
    text-decoration: underline;
}

.channel-view-unread-link .e-icons[b-u79hvncdip] {
    font-size: 10px;
}

/* ---------------------------------------------------------------
   DM contact picker (inline autocomplete)
   --------------------------------------------------------------- */

.dm-contact-picker[b-u79hvncdip] {
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
}

/* ---------------------------------------------------------------
   Mention badge (@ symbol for unread mentions)
   --------------------------------------------------------------- */

.channel-badge-mention[b-u79hvncdip] {
    background: var(--lb-warning);
    color: var(--lb-text-primary);
    font-weight: 800;
}

/* ---------------------------------------------------------------
   Empty section state (per-section, not full empty state)
   --------------------------------------------------------------- */

.channel-empty-section[b-u79hvncdip] {
    padding: 16px;
    text-align: center;
}

.channel-empty-section-text[b-u79hvncdip] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0 0 6px;
}

.channel-empty-section-link[b-u79hvncdip] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    text-decoration: underline;
}

.channel-empty-section-link:hover[b-u79hvncdip] {
    color: var(--lb-brand-hover);
}

.dm-picker-empty[b-u79hvncdip] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    margin: 6px 0 0;
}

.dm-picker-error[b-u79hvncdip] {
    font-size: 0.78rem;
    color: var(--lb-danger, #d13438);
    margin: 6px 0 0;
}
/* /Components/Chat/ChatAnalytics.razor.rz.scp.css */
/* =====================================================================
   ChatAnalytics.razor.css -- Scoped styles for the analytics dashboard
   =====================================================================
   Uses --lb-* design tokens and existing kpi-card / dash-card classes
   from app.css. Component-specific additions only.
   ===================================================================== */

/* -- Loading state -- */
.ca-loading[b-sz4n2qcm7o] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 48px;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

/* -- Empty state -- */
.ca-empty[b-sz4n2qcm7o] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 64px 24px;
    color: var(--lb-text-muted);
    text-align: center;
}

.ca-empty .e-icons[b-sz4n2qcm7o] {
    font-size: 2.5rem;
    margin-bottom: 12px;
    opacity: 0.4;
}

.ca-empty-title[b-sz4n2qcm7o] {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 4px;
    color: var(--lb-text);
}

.ca-empty-sub[b-sz4n2qcm7o] {
    font-size: 0.85rem;
    margin: 0;
}

/* -- Load-failure state (distinct from empty, #2331) -- */
.ca-error[b-sz4n2qcm7o] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 64px 24px;
    color: var(--lb-text-muted);
    text-align: center;
}

.ca-error .e-icons[b-sz4n2qcm7o] {
    font-size: 2.5rem;
    margin-bottom: 12px;
    color: var(--lb-danger, #d13438);
}

.ca-error-title[b-sz4n2qcm7o] {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 4px;
    color: var(--lb-text);
}

.ca-error-sub[b-sz4n2qcm7o] {
    font-size: 0.85rem;
    margin: 0 0 12px;
}

.ca-retry-btn[b-sz4n2qcm7o] {
    background: none;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 6px 16px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
}

.ca-retry-btn:hover[b-sz4n2qcm7o] {
    background: var(--lb-btn-flat-hover-bg);
}

/* -- Root container -- */
.ca-root[b-sz4n2qcm7o] {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    overflow-y: auto;
    height: 100%;
}

/* -- Date range bar -- */
.ca-date-bar[b-sz4n2qcm7o] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

.ca-preset-btns[b-sz4n2qcm7o] {
    display: flex;
    gap: 6px;
}

.ca-preset[b-sz4n2qcm7o] {
    padding: 5px 14px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-bg-white);
    color: var(--lb-text);
    font-size: 0.8rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
}

.ca-preset:hover[b-sz4n2qcm7o] {
    background: var(--lb-bg-hover);
}

.ca-preset.active[b-sz4n2qcm7o] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

/* -- KPI row (4 cards) -- */
.ca-kpi-row[b-sz4n2qcm7o] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

@media (max-width: 992px) {
    .ca-kpi-row[b-sz4n2qcm7o] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .ca-kpi-row[b-sz4n2qcm7o] {
        grid-template-columns: 1fr;
    }
}

/* -- Chart body -- */
.ca-chart-body[b-sz4n2qcm7o] {
    padding: 8px;
}

/* -- Charts unavailable note (phone) -- */
.ca-charts-note[b-sz4n2qcm7o] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 16px;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
}

.ca-charts-note .e-icons[b-sz4n2qcm7o] {
    font-size: 1.1rem;
}

/* -- Table body -- */
.ca-table-body[b-sz4n2qcm7o] {
    padding: 0;
    max-height: 400px;
    overflow-y: auto;
}

/* -- Links in grids -- */
.ca-link[b-sz4n2qcm7o] {
    color: var(--lb-brand);
    text-decoration: none;
    font-weight: 500;
}

.ca-link:hover[b-sz4n2qcm7o] {
    text-decoration: underline;
}

/* -- Days silent danger highlight -- */
.ca-days-danger[b-sz4n2qcm7o] {
    color: var(--lb-danger);
    font-weight: 700;
}

/* -- Team name with avatar -- */
.ca-team-name[b-sz4n2qcm7o] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.ca-team-name.ca-inactive[b-sz4n2qcm7o] {
    opacity: 0.5;
    text-decoration: line-through;
}

.ca-avatar[b-sz4n2qcm7o] {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--lb-brand);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.6rem;
    font-weight: 700;
    flex-shrink: 0;
}
/* /Components/Chat/ChatConversation.razor.rz.scp.css */
/* =====================================================================
   ChatConversation.razor.css -- Scoped styles for the conversation view
   =====================================================================
   Overrides SfChatUI default styling using increased specificity via
   the .lb-chat-ui wrapper class. Uses --lb-* design tokens exclusively.
   ===================================================================== */

/* -- Wrapper fills the panel body -- */
.chat-conversation-wrapper[b-yz89hhqjxb] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* -- Conversation header bar -- */
.chat-conv-header[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

.chat-back-btn[b-yz89hhqjxb] {
    background: none;
    border: none;
    padding: 6px;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-muted);
    line-height: 1;
    transition: background 0.15s ease;
}

.chat-back-btn:hover[b-yz89hhqjxb] {
    background: var(--lb-bg-hover);
    color: var(--lb-text-primary);
}

.chat-conv-header-info[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 1;
    min-width: 0;
}

.chat-conv-title[b-yz89hhqjxb] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.chat-open-case-btn[b-yz89hhqjxb] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    padding: 2px 6px;
    border-radius: 4px;
    transition: background 0.15s ease;
}

.chat-open-case-btn:hover[b-yz89hhqjxb] {
    background: var(--lb-bg-hover);
    text-decoration: underline;
}

/* -- PHI warning banner -- */
.chat-phi-banner[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px;
    background: var(--lb-warning-bg);
    border-bottom: 1px solid var(--lb-warning-border);
    font-size: 0.78rem;
    color: #ffdd57;
    font-weight: 600;
    flex-shrink: 0;
}

/* -- Archived (read-only) banner (#2709). Neutral/muted, not a warning: an archived
      channel is a normal frozen state, not an error. -- */
.chat-archived-banner[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px;
    background: var(--lb-bg-hover);
    border-bottom: 1px solid var(--lb-border);
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    font-weight: 600;
    flex-shrink: 0;
}

/* -- "Load earlier messages" trigger row (#2704). Sits above the message stream. -- */
.chat-load-earlier-row[b-yz89hhqjxb] {
    display: flex;
    justify-content: center;
    padding: 6px 8px;
    flex-shrink: 0;
}

.chat-load-earlier-btn[b-yz89hhqjxb] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 14px;
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 14px;
    font-size: 0.78rem;
    color: var(--lb-brand);
    cursor: pointer;
}

.chat-load-earlier-btn:hover:not(:disabled)[b-yz89hhqjxb] {
    background: var(--lb-bg-hover);
}

.chat-load-earlier-btn:disabled[b-yz89hhqjxb] {
    color: var(--lb-text-muted);
    cursor: default;
}

/* -- Read-only footer shown in place of the composer on an archived channel (#2709). -- */
.chat-archived-footer[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px 16px;
    font-size: 0.82rem;
    font-style: italic;
    color: var(--lb-text-muted);
}

/* -- Loading spinner -- */
.chat-loading[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: 32px;
    color: var(--lb-text-muted);
}

/* -- System messages (centered, muted, no bubble) -- */
.chat-system-message[b-yz89hhqjxb] {
    text-align: center;
    font-size: 0.78rem;
    font-style: italic;
    color: var(--lb-text-muted);
    padding: 8px 16px;
    margin: 4px 0;
}

/* -- Empty conversation placeholder -- */
.chat-empty-conv[b-yz89hhqjxb] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 8px;
    color: var(--lb-text-muted);
    text-align: center;
    padding: 32px;
}

.chat-empty-icon[b-yz89hhqjxb] {
    font-size: 2.5rem;
    opacity: 0.4;
}

.chat-empty-conv p[b-yz89hhqjxb] {
    margin: 0;
    font-size: 0.9rem;
}

/* ---------------------------------------------------------------
   SfChatUI overrides (increased specificity via .lb-chat-ui)
   --------------------------------------------------------------- */

/* Chat container fills remaining space */
[b-yz89hhqjxb] .lb-chat-ui.e-chat-ui {
    border: none;
    box-shadow: none;
    background: var(--lb-bg-surface);
    flex: 1;
    min-height: 0;
}

/* Current user message bubbles -- brand color */
[b-yz89hhqjxb] .lb-chat-ui .e-message-wrapper.e-right .e-message-content {
    background: var(--lb-brand);
    color: #fff;
    border-radius: 12px 12px 2px 12px;
}

/* Other user message bubbles */
[b-yz89hhqjxb] .lb-chat-ui .e-message-wrapper.e-left .e-message-content {
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    color: var(--lb-text-primary);
    border-radius: 12px 12px 12px 2px;
}

/* Message timestamp text */
[b-yz89hhqjxb] .lb-chat-ui .e-message-wrapper .e-timestamp {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
}

/* Input area styling */
[b-yz89hhqjxb] .lb-chat-ui .e-chat-footer .e-chat-input {
    border-radius: 8px;
    border: 1px solid var(--lb-border);
}

[b-yz89hhqjxb] .lb-chat-ui .e-chat-footer .e-chat-input:focus-within {
    border-color: var(--lb-brand);
    box-shadow: 0 0 0 2px var(--lb-accent-tint);
}

/* Send button */
[b-yz89hhqjxb] .lb-chat-ui .e-chat-footer .e-send-icon {
    color: var(--lb-brand);
}

/* Typing indicator */
[b-yz89hhqjxb] .lb-chat-ui .e-typing-indicator {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

/* ---------------------------------------------------------------
   Conversation header action buttons (attach, link)
   --------------------------------------------------------------- */

.chat-conv-actions[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-left: auto;
    flex-shrink: 0;
}

.chat-action-btn[b-yz89hhqjxb] {
    background: none;
    border: none;
    padding: 6px;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-muted);
    line-height: 1;
    transition: background 0.15s ease, color 0.15s ease;
    font-size: 1rem;
}

.chat-action-btn:hover[b-yz89hhqjxb] {
    background: var(--lb-bg-hover);
    color: var(--lb-brand);
}

.chat-action-btn:disabled[b-yz89hhqjxb] {
    opacity: 0.5;
    cursor: not-allowed;
}

/* ---------------------------------------------------------------
   Inline message attachment (SfChatUI AttachedFile, #1751)
   The component renders the attachment inside each message bubble.
   --------------------------------------------------------------- */

[b-yz89hhqjxb] .lb-chat-ui .e-attached-file {
    cursor: pointer;
}

/* Cap the inline image so a large upload can't blow out the panel; keep its natural
   aspect. The open-scroll settling after images decode is handled by lbScrollChatToBottom
   (re-pins on image load), so no fixed height / cropping is needed here (#1751). */
[b-yz89hhqjxb] .lb-chat-ui .e-attached-file .e-image {
    max-width: 230px;
    max-height: 230px;
    border-radius: 6px;
    object-fit: cover;
}

/* ---------------------------------------------------------------
   Link Case Document dialog
   --------------------------------------------------------------- */

.chat-link-empty[b-yz89hhqjxb] {
    text-align: center;
    color: var(--lb-text-muted);
    padding: 24px 16px;
    font-size: 0.85rem;
}

/* ---------------------------------------------------------------
   Voice dictation custom footer
   --------------------------------------------------------------- */

[b-yz89hhqjxb] .chat-custom-footer {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
    padding: 0;
}

[b-yz89hhqjxb] .chat-input-row {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px 12px;
}

[b-yz89hhqjxb] .chat-input-row .e-textbox {
    flex: 1;
    min-width: 0;
}

[b-yz89hhqjxb] .chat-mic-btn,
[b-yz89hhqjxb] .chat-send-btn {
    background: none;
    border: none;
    padding: 6px;
    border-radius: 50%;
    cursor: pointer;
    line-height: 1;
    font-size: 1rem;
    flex-shrink: 0;
    transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease;
}

[b-yz89hhqjxb] .chat-mic-btn {
    color: var(--lb-text-muted);
}

[b-yz89hhqjxb] .chat-mic-btn:hover {
    background: var(--lb-bg-hover);
    color: var(--lb-brand);
}

[b-yz89hhqjxb] .chat-mic-btn.listening {
    color: #fff;
    background: var(--lb-info);
    box-shadow: 0 0 0 0 rgba(13, 110, 253, 0.5);
    animation: throb-mic-b-yz89hhqjxb 1.4s ease-in-out infinite;
}

[b-yz89hhqjxb] .chat-send-btn {
    color: var(--lb-brand);
}

[b-yz89hhqjxb] .chat-send-btn:hover:not(:disabled) {
    background: var(--lb-bg-hover);
}

[b-yz89hhqjxb] .chat-send-btn:disabled {
    opacity: 0.4;
    cursor: not-allowed;
}

/* ---------------------------------------------------------------
   Reply target strip (#3269)

   Sits directly above the composer while a reply is armed, naming the message
   the next send will answer. ::deep because it renders inside SfChatUI's
   FooterTemplate -- same as .chat-input-row above.
   --------------------------------------------------------------- */

[b-yz89hhqjxb] .chat-reply-strip {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 12px;
    padding: 6px 10px;
    background: var(--lb-bg-hover);
    /* Left rule keyed to the brand colour: reads as a quote, and matches the
       accent SfChatUI puts on the rendered reply bubble. */
    border-left: 3px solid var(--lb-brand);
    border-radius: 4px;
    font-size: 0.78rem;
}

[b-yz89hhqjxb] .chat-reply-strip-icon {
    color: var(--lb-brand);
    flex-shrink: 0;
}

[b-yz89hhqjxb] .chat-reply-strip-body {
    display: flex;
    flex-direction: column;
    min-width: 0;   /* lets the text child actually ellipsis inside the flex row */
    flex: 1;
}

[b-yz89hhqjxb] .chat-reply-strip-author {
    color: var(--lb-brand);
    font-weight: 600;
}

[b-yz89hhqjxb] .chat-reply-strip-text {
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-yz89hhqjxb] .chat-reply-strip-cancel {
    background: none;
    border: none;
    padding: 4px;
    border-radius: 50%;
    cursor: pointer;
    line-height: 1;
    flex-shrink: 0;
    color: var(--lb-text-muted);
    transition: background 0.2s ease, color 0.2s ease;
}

[b-yz89hhqjxb] .chat-reply-strip-cancel:hover {
    background: var(--lb-bg-surface);
    color: var(--lb-text-primary);
}

/* -- Interim preview row below input -- */

[b-yz89hhqjxb] .chat-interim-row {
    padding: 0 12px 6px;
}

[b-yz89hhqjxb] .chat-dictation-interim {
    font-size: 0.78rem;
    font-style: italic;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
}

@keyframes throb-mic-b-yz89hhqjxb {
    0% {
        box-shadow: 0 0 0 0 rgba(13, 110, 253, 0.5);
    }
    70% {
        box-shadow: 0 0 0 8px rgba(13, 110, 253, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(13, 110, 253, 0);
    }
}

/* ---------------------------------------------------------------
   DM-specific header styles
   --------------------------------------------------------------- */

.dm-header-name[b-yz89hhqjxb] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* -- Inactive DM banner -- */
.dm-inactive-banner[b-yz89hhqjxb] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 14px;
    background: var(--lb-bg-surface);
    border-bottom: 1px solid var(--lb-border);
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    font-weight: 600;
    flex-shrink: 0;
}

/* ---------------------------------------------------------------
   @Mention pill styles (inside message bubbles)
   --------------------------------------------------------------- */

.mention-pill[b-yz89hhqjxb] {
    display: inline;
    background: var(--lb-brand-light);
    color: var(--lb-brand);
    border-radius: 4px;
    padding: 1px 6px;
    font-size: 12px;
    font-weight: 500;
}

.mention-pill-self[b-yz89hhqjxb] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

/* /Components/Chat/ChatPanel.razor.rz.scp.css */
/* =====================================================================
   ChatPanel.razor.css -- Scoped styles for the slide-out chat panel
   =====================================================================
   Uses --lb-* design tokens exclusively. Responsive breakpoints:
     Desktop (>=992px): 380px fixed panel
     Tablet (768-991px): 380px overlay with backdrop
     Phone (<768px): Full-width overlay
   ===================================================================== */

/* -- Panel container -- */
.chat-panel[b-naia90cp35] {
    position: fixed;
    top: 0;
    right: 0;
    bottom: 0;
    z-index: 1040;
    pointer-events: none;
    display: flex;
    flex-direction: row-reverse;
}

.chat-panel.open[b-naia90cp35] {
    pointer-events: auto;
}

/* -- Inner panel (the visible card) -- */
.chat-panel-inner[b-naia90cp35] {
    width: 380px;
    max-width: 100vw;
    height: 100%;
    display: flex;
    flex-direction: column;
    background: var(--lb-bg-surface);
    border-left: 1px solid var(--lb-border);
    box-shadow: var(--lb-shadow-lg);
    transform: translateX(100%);
    transition: transform 0.25s ease;
}

.chat-panel.open .chat-panel-inner[b-naia90cp35] {
    transform: translateX(0);
}

/* -- Backdrop for tablet overlay -- */
.chat-backdrop[b-naia90cp35] {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--lb-overlay-scrim);
    z-index: -1;
}

/* -- Header with tabs -- */
.chat-panel-header[b-naia90cp35] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

.chat-tabs[b-naia90cp35] {
    display: flex;
    gap: 4px;
}

[b-naia90cp35] .chat-tab.e-btn {
    background: none;
    border: none;
    padding: 6px 14px;
    border-radius: 6px;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    cursor: pointer;
    text-transform: none;
    transition: background 0.15s ease, color 0.15s ease;
}

[b-naia90cp35] .chat-tab.e-btn:hover {
    background: var(--lb-surface-alt);
    color: var(--lb-text);
}

[b-naia90cp35] .chat-tab.e-btn.active {
    background: var(--lb-brand);
    color: var(--lb-text-on-brand);
}

/* -- Close button -- */
[b-naia90cp35] .chat-panel-expand.e-btn,
[b-naia90cp35] .chat-panel-close.e-btn {
    background: none;
    border: none;
    padding: 6px;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-muted);
    line-height: 1;
    transition: background 0.15s ease;
}

[b-naia90cp35] .chat-panel-expand.e-btn:hover,
[b-naia90cp35] .chat-panel-close.e-btn:hover {
    background: var(--lb-surface-alt);
    color: var(--lb-text);
}

/* -- Body (scrollable content area) -- */
.chat-panel-body[b-naia90cp35] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    background: var(--lb-bg-surface);
}

/* -- Help tab placeholder -- */
.chat-help-placeholder[b-naia90cp35] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 8px;
    padding: 32px;
    text-align: center;
}

.chat-help-icon[b-naia90cp35] {
    font-size: 3rem;
    color: var(--lb-brand);
    opacity: 0.6;
}

.chat-help-text[b-naia90cp35] {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

.chat-help-subtext[b-naia90cp35] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* ---------------------------------------------------------------
   Responsive: Phone (<768px) -- full-width panel
   --------------------------------------------------------------- */
.chat-panel.chat-phone .chat-panel-inner[b-naia90cp35] {
    width: 100vw;
}

/* ---------------------------------------------------------------
   Responsive: Tablet (768-991px) -- overlay with backdrop
   --------------------------------------------------------------- */
.chat-panel.chat-tablet .chat-panel-inner[b-naia90cp35] {
    width: min(460px, 92vw);
}

@media (max-width: 576px) {
    [b-naia90cp35] .chat-panel-expand.e-btn,
    [b-naia90cp35] .chat-panel-close.e-btn {
        min-width: 44px;
        min-height: 44px;
    }
}
/* /Components/Chat/ChatSearchView.razor.rz.scp.css */
/* =====================================================================
   ChatSearchView.razor.css -- Scoped styles for message search view
   ===================================================================== */

.cs-container[b-3qktrq5uw3] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow-y: auto;
    padding: 16px;
    gap: 12px;
}

/* -- Back link -- */

.cs-back-row[b-3qktrq5uw3] {
    flex-shrink: 0;
}

.cs-back-link[b-3qktrq5uw3] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 13px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 0;
}

.cs-back-link:hover[b-3qktrq5uw3] {
    text-decoration: underline;
}

/* -- Search bar -- */

.cs-search-bar[b-3qktrq5uw3] {
    flex-shrink: 0;
}

[b-3qktrq5uw3] .cs-search-input {
    font-size: 15px;
}

/* -- Filter row -- */

.cs-filter-row[b-3qktrq5uw3] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    flex-shrink: 0;
}

.cs-filter-item[b-3qktrq5uw3] {
    min-width: 140px;
    flex: 1 1 140px;
    max-width: 220px;
}

.cs-filter-date[b-3qktrq5uw3] {
    max-width: 160px;
    min-width: 120px;
}

.cs-filter-check[b-3qktrq5uw3] {
    display: flex;
    align-items: center;
    min-width: auto;
    flex: 0 0 auto;
}

[b-3qktrq5uw3] .cs-filter-ddl,
[b-3qktrq5uw3] .cs-filter-date-picker {
    font-size: 13px;
}

.cs-clear-filters[b-3qktrq5uw3] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 12px;
    cursor: pointer;
    padding: 4px 0;
    white-space: nowrap;
    flex: 0 0 auto;
}

.cs-clear-filters:hover[b-3qktrq5uw3] {
    text-decoration: underline;
}

/* -- Filter toggle (compact/mobile) -- */

.cs-filter-toggle-row[b-3qktrq5uw3] {
    flex-shrink: 0;
}

.cs-filter-toggle[b-3qktrq5uw3] {
    background: none;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    padding: 6px 12px;
    font-size: 13px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--lb-text);
}

.cs-filter-toggle:hover[b-3qktrq5uw3] {
    background: var(--lb-hover-bg);
}

.cs-filter-badge[b-3qktrq5uw3] {
    background: var(--lb-brand);
    color: #fff;
    border-radius: 50%;
    width: 16px;
    height: 16px;
    font-size: 10px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
}

/* -- Status row -- */

.cs-status-row[b-3qktrq5uw3] {
    font-size: 13px;
    color: var(--lb-text-muted);
    display: flex;
    align-items: center;
    flex-shrink: 0;
    min-height: 24px;
}

.cs-hint-text[b-3qktrq5uw3] {
    font-style: italic;
}

.cs-no-results[b-3qktrq5uw3] {
    color: var(--lb-text-muted);
}

/* Load-failure state — distinct from "no results" (#2331) */
.cs-search-error[b-3qktrq5uw3] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--lb-danger, #d13438);
}

.cs-retry-link[b-3qktrq5uw3] {
    background: none;
    border: none;
    padding: 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
    text-decoration: underline;
}

.cs-retry-link:hover[b-3qktrq5uw3] {
    opacity: 0.85;
}

.cs-result-count[b-3qktrq5uw3] {
    font-weight: 500;
    color: var(--lb-text);
}

/* -- Results list -- */

.cs-results[b-3qktrq5uw3] {
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    flex: 1;
}

/* -- Result card -- */

.cs-result-card[b-3qktrq5uw3] {
    padding: 12px 0;
    border-bottom: 0.5px solid var(--lb-border);
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cs-result-card:last-child[b-3qktrq5uw3] {
    border-bottom: none;
}

/* -- Channel header in result -- */

.cs-result-channel[b-3qktrq5uw3] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
}

.cs-channel-icon[b-3qktrq5uw3] {
    font-size: 14px;
    opacity: 0.7;
    flex-shrink: 0;
}

.cs-channel-name[b-3qktrq5uw3] {
    font-weight: 600;
    color: var(--lb-text);
}

.cs-channel-type[b-3qktrq5uw3] {
    color: var(--lb-text-muted);
    font-size: 11px;
}

/* -- Context messages (before/after) -- */

.cs-context-msg[b-3qktrq5uw3] {
    font-size: 12px;
    color: var(--lb-text-muted);
    padding-left: 36px;
    line-height: 1.4;
}

.cs-context-author[b-3qktrq5uw3] {
    font-weight: 500;
    margin-right: 4px;
}

/* -- Matched message row -- */

.cs-match-row[b-3qktrq5uw3] {
    display: flex;
    gap: 8px;
    align-items: flex-start;
}

.cs-match-avatar[b-3qktrq5uw3] {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background: var(--lb-brand);
    color: #fff;
    font-size: 11px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.cs-match-body[b-3qktrq5uw3] {
    flex: 1;
    min-width: 0;
}

.cs-match-header[b-3qktrq5uw3] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 2px;
}

.cs-match-author[b-3qktrq5uw3] {
    font-weight: 600;
    font-size: 13px;
    color: var(--lb-text);
}

.cs-match-time[b-3qktrq5uw3] {
    font-size: 11px;
    color: var(--lb-text-muted);
}

.cs-match-text[b-3qktrq5uw3] {
    font-size: 14px;
    color: var(--lb-text);
    line-height: 1.5;
    word-break: break-word;
}

.cs-match-attachment[b-3qktrq5uw3] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--lb-brand);
    margin-top: 4px;
}

/* -- Search highlight -- */

[b-3qktrq5uw3] .cs-highlight {
    font-weight: 500;
    background: var(--lb-warning-bg);
    border-radius: 2px;
    padding: 0 2px;
}

/* -- Go to message link -- */

.cs-goto-row[b-3qktrq5uw3] {
    display: flex;
    justify-content: flex-end;
}

.cs-goto-link[b-3qktrq5uw3] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 12px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 0;
}

.cs-goto-link:hover[b-3qktrq5uw3] {
    text-decoration: underline;
}

/* -- Responsive: tablet (two-line wrap) -- */

@media (max-width: 991px) {
    .cs-filter-row[b-3qktrq5uw3] {
        flex-wrap: wrap;
    }

    .cs-filter-item[b-3qktrq5uw3] {
        flex: 1 1 45%;
        max-width: none;
    }

    .cs-filter-date[b-3qktrq5uw3] {
        max-width: none;
    }
}

/* -- Responsive: phone (full-screen, collapsed filters) -- */

@media (max-width: 767px) {
    .cs-container[b-3qktrq5uw3] {
        padding: 12px;
    }

    .cs-filter-item[b-3qktrq5uw3] {
        flex: 1 1 100%;
        max-width: none;
    }

    .cs-filter-date[b-3qktrq5uw3] {
        max-width: none;
    }
}
/* /Components/Chat/MentionAutocomplete.razor.rz.scp.css */
/* =====================================================================
   MentionAutocomplete.razor.css -- Scoped styles for @mention popup
   =====================================================================
   Positioned popup that appears above the chat input when user types
   "@". Uses --lb-* design tokens throughout.
   ===================================================================== */

.mention-autocomplete-popup[b-b0xldugfsp] {
    position: absolute;
    bottom: 100%;
    left: 0;
    width: 260px;
    max-height: 240px;
    overflow-y: auto;
    background: var(--lb-bg-white);
    border: 0.5px solid var(--lb-border);
    border-radius: 8px;
    box-shadow: var(--lb-shadow, 0 4px 12px rgba(0, 0, 0, 0.12));
    z-index: 100;
    margin-bottom: 4px;
    padding: 4px 0;
}

.mention-autocomplete-item[b-b0xldugfsp] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    cursor: pointer;
    background: none;
    border: none;
    width: 100%;
    text-align: left;
    font-size: 0.85rem;
    color: var(--lb-text-primary);
    transition: background 0.12s ease;
}

.mention-autocomplete-item:hover[b-b0xldugfsp],
.mention-autocomplete-item.focused[b-b0xldugfsp] {
    background: var(--lb-bg-surface);
}

/* -- Member initials avatar -- */
.mention-avatar[b-b0xldugfsp] {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.65rem;
    font-weight: 700;
    color: #fff;
    background: var(--lb-brand);
}

/* -- Member name -- */
.mention-name[b-b0xldugfsp] {
    flex: 1;
    min-width: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 500;
}

/* -- Role badge -- */
.mention-role[b-b0xldugfsp] {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    flex-shrink: 0;
}

/* -- Presence dot -- */
.mention-presence[b-b0xldugfsp] {
    flex-shrink: 0;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-text-muted);
}

.mention-presence.online[b-b0xldugfsp] {
    background: var(--lb-success);
}
/* /Components/Chat/MentionsListView.razor.rz.scp.css */
/* =====================================================================
   MentionsListView.razor.css -- Scoped styles for the @mentions view
   ===================================================================== */

.mn-container[b-ko3xp6iorg] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* -- Toolbar -- */

.mn-toolbar[b-ko3xp6iorg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

.mn-title[b-ko3xp6iorg] {
    font-weight: 600;
    font-size: 15px;
    color: var(--lb-text);
}

/* -- Loading -- */

.mn-loading[b-ko3xp6iorg] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 24px;
    justify-content: center;
    color: var(--lb-text-muted);
    font-size: 13px;
}

/* -- Empty state -- */

.mn-empty[b-ko3xp6iorg] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: 48px 24px;
    text-align: center;
}

.mn-empty-icon[b-ko3xp6iorg] {
    font-size: 40px;
    color: var(--lb-text-muted);
    margin-bottom: 12px;
}

.mn-empty-text[b-ko3xp6iorg] {
    font-size: 16px;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px 0;
}

.mn-empty-sub[b-ko3xp6iorg] {
    font-size: 14px;
    color: var(--lb-text-muted);
    margin: 0;
}

/* -- Load-failure state (distinct from empty, #2331) -- */

.mn-error[b-ko3xp6iorg] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: 48px 24px;
    text-align: center;
}

.mn-error-icon[b-ko3xp6iorg] {
    font-size: 40px;
    color: var(--lb-danger, #d13438);
    margin-bottom: 12px;
}

.mn-error-text[b-ko3xp6iorg] {
    font-size: 16px;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px 0;
}

.mn-error-sub[b-ko3xp6iorg] {
    font-size: 14px;
    color: var(--lb-text-muted);
    margin: 0 0 12px 0;
}

.mn-retry-btn[b-ko3xp6iorg] {
    background: none;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 6px 16px;
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
}

.mn-retry-btn:hover[b-ko3xp6iorg] {
    background: var(--lb-btn-flat-hover-bg);
}

/* -- List -- */

.mn-list[b-ko3xp6iorg] {
    overflow-y: auto;
    flex: 1;
}

.mn-item[b-ko3xp6iorg] {
    padding: 10px 12px;
    border-bottom: 0.5px solid var(--lb-border);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.mn-item:last-child[b-ko3xp6iorg] {
    border-bottom: none;
}

/* -- Channel context header -- */

.mn-channel-ctx[b-ko3xp6iorg] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--lb-text-dim, var(--lb-text-muted));
}

.mn-channel-icon[b-ko3xp6iorg] {
    font-size: 11px;
    opacity: 0.7;
    flex-shrink: 0;
}

.mn-channel-name[b-ko3xp6iorg] {
    font-weight: 500;
}

.mn-channel-type[b-ko3xp6iorg] {
    color: var(--lb-text-muted);
    font-size: 10px;
}

/* -- Message row -- */

.mn-msg-row[b-ko3xp6iorg] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.mn-avatar[b-ko3xp6iorg] {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--lb-brand);
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.mn-msg-body[b-ko3xp6iorg] {
    flex: 1;
    min-width: 0;
}

.mn-msg-header[b-ko3xp6iorg] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 1px;
}

.mn-msg-author[b-ko3xp6iorg] {
    font-weight: 600;
    font-size: 13px;
    color: var(--lb-text);
}

.mn-msg-time[b-ko3xp6iorg] {
    font-size: 11px;
    color: var(--lb-text-muted);
}

.mn-msg-text[b-ko3xp6iorg] {
    font-size: 13px;
    color: var(--lb-text);
    line-height: 1.45;
    word-break: break-word;
}

/* -- Go to message link -- */

.mn-goto-row[b-ko3xp6iorg] {
    display: flex;
    justify-content: flex-end;
}

.mn-goto-link[b-ko3xp6iorg] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 11px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 2px 0;
}

.mn-goto-link:hover[b-ko3xp6iorg] {
    text-decoration: underline;
}
/* /Components/Chat/UnreadListView.razor.rz.scp.css */
/* =====================================================================
   UnreadListView.razor.css -- Scoped styles for unread messages view
   ===================================================================== */

.ul-container[b-r5940uc6dc] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

/* -- Toolbar -- */

.ul-toolbar[b-r5940uc6dc] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

.ul-title[b-r5940uc6dc] {
    font-weight: 600;
    font-size: 15px;
    color: var(--lb-text);
}

[b-r5940uc6dc] .ul-mark-all-btn {
    font-size: 12px;
}

/* -- Loading -- */

.ul-loading[b-r5940uc6dc] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 24px;
    justify-content: center;
    color: var(--lb-text-muted);
    font-size: 13px;
}

/* -- Empty state -- */

.ul-empty[b-r5940uc6dc] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: 48px 24px;
    text-align: center;
}

.ul-empty-icon[b-r5940uc6dc] {
    font-size: 40px;
    color: var(--lb-success);
    margin-bottom: 12px;
}

.ul-empty-text[b-r5940uc6dc] {
    font-size: 16px;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px 0;
}

.ul-empty-sub[b-r5940uc6dc] {
    font-size: 14px;
    color: var(--lb-text-muted);
    margin: 0;
}

/* -- Load-failure state (distinct from empty, #2331) -- */

.ul-error[b-r5940uc6dc] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex: 1;
    padding: 48px 24px;
    text-align: center;
}

.ul-error-icon[b-r5940uc6dc] {
    font-size: 40px;
    color: var(--lb-danger, #d13438);
    margin-bottom: 12px;
}

.ul-error-text[b-r5940uc6dc] {
    font-size: 16px;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px 0;
}

.ul-error-sub[b-r5940uc6dc] {
    font-size: 14px;
    color: var(--lb-text-muted);
    margin: 0 0 12px 0;
}

.ul-retry-btn[b-r5940uc6dc] {
    background: none;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 6px 16px;
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
}

.ul-retry-btn:hover[b-r5940uc6dc] {
    background: var(--lb-btn-flat-hover-bg);
}

/* -- Count note -- */

.ul-count-note[b-r5940uc6dc] {
    font-size: 12px;
    color: var(--lb-text-muted);
    padding: 8px 14px 0;
    flex-shrink: 0;
}

/* -- List -- */

.ul-list[b-r5940uc6dc] {
    overflow-y: auto;
    flex: 1;
}

/* -- Individual item -- */

.ul-item[b-r5940uc6dc] {
    padding: 10px 12px;
    border-bottom: 0.5px solid var(--lb-border);
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ul-item:last-child[b-r5940uc6dc] {
    border-bottom: none;
}

/* -- Channel context header -- */

.ul-channel-ctx[b-r5940uc6dc] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 11px;
    color: var(--lb-text-dim, var(--lb-text-muted));
}

.ul-channel-icon[b-r5940uc6dc] {
    font-size: 11px;
    opacity: 0.7;
    flex-shrink: 0;
}

.ul-channel-name[b-r5940uc6dc] {
    font-weight: 500;
}

.ul-channel-type[b-r5940uc6dc] {
    color: var(--lb-text-muted);
    font-size: 10px;
}

/* -- System message -- */

.ul-system-msg[b-r5940uc6dc] {
    font-size: 12px;
    color: var(--lb-text-muted);
    font-style: italic;
    padding-left: 32px;
}

/* -- Message row -- */

.ul-msg-row[b-r5940uc6dc] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.ul-avatar[b-r5940uc6dc] {
    width: 24px;
    height: 24px;
    border-radius: 50%;
    background: var(--lb-brand);
    color: #fff;
    font-size: 10px;
    font-weight: 600;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.ul-msg-body[b-r5940uc6dc] {
    flex: 1;
    min-width: 0;
}

.ul-msg-header[b-r5940uc6dc] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 1px;
}

.ul-msg-author[b-r5940uc6dc] {
    font-weight: 600;
    font-size: 13px;
    color: var(--lb-text);
}

.ul-msg-time[b-r5940uc6dc] {
    font-size: 11px;
    color: var(--lb-text-muted);
}

.ul-msg-text[b-r5940uc6dc] {
    font-size: 13px;
    color: var(--lb-text);
    line-height: 1.45;
    word-break: break-word;
}

/* -- Attachment -- */

.ul-attachment[b-r5940uc6dc] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--lb-brand);
    margin-top: 3px;
}

.ul-attachment-name[b-r5940uc6dc] {
    font-weight: 500;
}

/* -- Go to channel link -- */

.ul-goto-row[b-r5940uc6dc] {
    display: flex;
    justify-content: flex-end;
}

.ul-goto-link[b-r5940uc6dc] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 11px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 2px 0;
}

.ul-goto-link:hover[b-r5940uc6dc] {
    text-decoration: underline;
}

/* -- Confirm dialog text -- */

.ul-confirm-text[b-r5940uc6dc] {
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--lb-text);
    margin: 4px 0;
}
/* /Components/Dialogs/ApplyPlaybookDialog.razor.rz.scp.css */
.apply-loading[b-on0wn4vx3s] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    color: var(--lb-text-muted);
}

.apply-form .form-row[b-on0wn4vx3s]{
    margin-bottom: 0.75rem;
}

.apply-form .field-label[b-on0wn4vx3s] {
    display: block;
    font-size: 0.85rem;
    font-weight: 500;
    margin-bottom: 0.25rem;
    color: var(--lb-text);
}

.apply-form .required-indicator[b-on0wn4vx3s]{
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

[b-on0wn4vx3s] .steps-checklist {
    margin-top: 1rem;
    border-top: 1px solid var(--lb-border);
    padding-top: 0.75rem;
}

[b-on0wn4vx3s] .select-all-row {
    margin-bottom: 0.5rem;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--lb-border);
}

[b-on0wn4vx3s] .step-check-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.35rem 0;
}

[b-on0wn4vx3s] .step-offset {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border-radius: 3px;
    padding: 1px 6px;
    flex-shrink: 0;
}

[b-on0wn4vx3s] .validation-errors {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
    padding: 0.5rem 1rem;
    margin-top: 0.75rem;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

[b-on0wn4vx3s] .validation-errors p {
    margin: 0.25rem 0;
}
/* /Components/Dialogs/AttributeDefDialog.razor.rz.scp.css */
/* AttributeDefDialog styles -- all colors use --lb-* design tokens */

.attr-def-form[b-9zeueiwpl0] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    padding: 0.25rem 0;
}

.form-field[b-9zeueiwpl0] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.form-label[b-9zeueiwpl0] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text);
}

.form-row-2col[b-9zeueiwpl0] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

/* Phone (< 768px tier): stack the two-column field rows. */
@media (max-width: 768px) {
    .form-row-2col[b-9zeueiwpl0] {
        grid-template-columns: 1fr;
    }
}

.required-star[b-9zeueiwpl0] {
    color: var(--lb-danger);
    font-weight: 700;
}

.validation-msg[b-9zeueiwpl0] {
    font-size: 0.8rem;
    color: var(--lb-danger);
    margin-top: 0.15rem;
}
/* /Components/Dialogs/BatchUploadProfileDialog.razor.rz.scp.css */
/* ============================================================
   BatchUploadProfileDialog — scoped styles
   ============================================================
   Design tokens from app.css (--lb-*). ASCII-only comments.
   ============================================================ */

.batch-upload-content[b-sjnwe0l0k2] {
    display: flex;
    flex-direction: column;
    height: 100%;
    gap: 12px;
    overflow: hidden;
}

/* -- Batch defaults bar ----------------------------------------- */

[b-sjnwe0l0k2] .batch-defaults-bar {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 8px 12px;
    background: var(--lb-elevated);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    flex-shrink: 0;
}

[b-sjnwe0l0k2] .batch-defaults-label {
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

[b-sjnwe0l0k2] .batch-default-field {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

[b-sjnwe0l0k2] .batch-field-label {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* -- Classification status indicator ---------------------------- */

[b-sjnwe0l0k2] .batch-classify-status {
    display: flex;
    align-items: center;
    padding: 6px 12px;
    font-size: 0.85rem;
    color: var(--lb-brand);
    background: rgba(204, 108, 44, 0.08);
    border-radius: 4px;
    flex-shrink: 0;
}

/* -- Classification failure banner (issue 2509) ----------------- */

[b-sjnwe0l0k2] .batch-classify-failed {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    font-size: 0.85rem;
    color: var(--lb-warning);
    background: var(--lb-warning-bg);
    border-radius: 4px;
    flex-shrink: 0;
}

/* -- Cell with AI badge ----------------------------------------- */

[b-sjnwe0l0k2] .batch-cell-with-badge {
    display: flex;
    align-items: center;
    gap: 4px;
    width: 100%;
}

[b-sjnwe0l0k2] .batch-cell-with-badge .e-ddl {
    flex: 1;
    min-width: 0;
}

/* -- AI badge --------------------------------------------------- */

[b-sjnwe0l0k2] .ai-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    line-height: 1;
    padding: 2px 4px;
    border-radius: 3px;
    color: #fff;
    background: var(--lb-brand);
    flex-shrink: 0;
    vertical-align: middle;
    letter-spacing: 0.02em;
}

/* -- Confidence dots -------------------------------------------- */

[b-sjnwe0l0k2] .confidence-dot {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    cursor: help;
    /* Dot backgrounds are fixed semantic colors (below), so the inner
       letter uses fixed colors too for stable contrast in both themes. */
    color: #fff;
    font-size: 9px;
    font-weight: 700;
    line-height: 1;
}

[b-sjnwe0l0k2] .confidence-green {
    background: #28a745;
}

[b-sjnwe0l0k2] .confidence-amber {
    background: #ffc107;
    /* Amber is light; keep the inner letter dark for legibility/contrast. */
    color: #1c2536;
}

[b-sjnwe0l0k2] .confidence-red {
    background: #dc3545;
}

[b-sjnwe0l0k2] .confidence-gray {
    background: #adb5bd;
}

/* -- Low-confidence row tint ------------------------------------ */

[b-sjnwe0l0k2] .batch-low-confidence {
    background-color: rgba(220, 53, 69, 0.06) !important;
}

/* -- Failed-row tint + status icons ----------------------------- */

[b-sjnwe0l0k2] .batch-save-error,
[b-sjnwe0l0k2] .batch-save-error .e-rowcell,
[b-sjnwe0l0k2] .batch-save-error.e-altrow .e-rowcell {
    background-color: rgba(220, 53, 69, 0.12) !important;
}

[b-sjnwe0l0k2] .batch-status-failed {
    color: #dc3545;
    font-weight: 700;
    cursor: help;
}

[b-sjnwe0l0k2] .batch-status-saved {
    color: #28a745;
    cursor: default;
}

/* -- Footer ----------------------------------------------------- */

.batch-footer[b-sjnwe0l0k2] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 4px;
}

/* -- Partial-failure summary ------------------------------------ */

[b-sjnwe0l0k2] .batch-save-summary {
    margin-right: auto;
    max-width: 60%;
    font-size: 13px;
}

[b-sjnwe0l0k2] .batch-save-summary-line {
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
}

[b-sjnwe0l0k2] .batch-failed-list {
    margin: 4px 0 0;
    padding-left: 20px;
    max-height: 70px;
    overflow-y: auto;
    color: var(--lb-text);
}

[b-sjnwe0l0k2] .batch-failed-list li {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-sjnwe0l0k2] .batch-save-summary-hint {
    margin-top: 2px;
    font-size: 12px;
    color: var(--lb-text-muted);
}

/* ============================================================
   Dark mode overrides
   ============================================================ */

:global([data-theme="dark"]) .batch-classify-status[b-sjnwe0l0k2] {
    background: var(--lb-accent-tint);
}

:global([data-theme="dark"]) .batch-upload-content[b-sjnwe0l0k2]  .batch-low-confidence {
    background-color: rgba(220, 53, 69, 0.12) !important;
}

/* Grid inside the dialog: use design tokens for dark mode */
.batch-upload-content[b-sjnwe0l0k2]  .e-grid{
    background: var(--lb-bg-white);
    color: var(--lb-text);
    border-color: var(--lb-border);
}

.batch-upload-content[b-sjnwe0l0k2]  .e-grid .e-headercell{
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
    border-color: var(--lb-border);
}

.batch-upload-content[b-sjnwe0l0k2]  .e-grid .e-rowcell{
    color: var(--lb-text);
    border-color: var(--lb-border-light);
}

.batch-upload-content[b-sjnwe0l0k2]  .e-grid .e-altrow .e-rowcell{
    background: var(--lb-surface-alt);
}

/* Dropdowns inside the grid rows */
[b-sjnwe0l0k2] .batch-cell-with-badge .e-input-group {
    background: var(--lb-elevated);
    border-color: var(--lb-border);
}

[b-sjnwe0l0k2] .batch-cell-with-badge .e-input-group .e-input {
    color: var(--lb-text);
}

/* Batch defaults bar dropdowns */
[b-sjnwe0l0k2] .batch-defaults-bar .e-input-group {
    background: var(--lb-bg-white);
    border-color: var(--lb-border);
}

[b-sjnwe0l0k2] .batch-defaults-bar .e-input-group .e-input {
    color: var(--lb-text);
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .batch-footer[b-sjnwe0l0k2] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/BulkChangeRoleDialog.razor.rz.scp.css */
/* BulkChangeRoleDialog.razor -- scoped styles */

.bulk-dialog-body[b-nov5r7xzrv] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.bulk-count[b-nov5r7xzrv] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--lb-text);
}

.bulk-context-note[b-nov5r7xzrv] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0;
}

.form-field[b-nov5r7xzrv] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-nov5r7xzrv] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-nov5r7xzrv] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.bulk-error[b-nov5r7xzrv] {
    font-size: 0.8rem;
    color: var(--lb-danger);
    padding: 8px 12px;
    background: var(--lb-danger-bg);
    border-radius: 4px;
}
/* /Components/Dialogs/BulkReassignContactsDialog.razor.rz.scp.css */
/* BulkReassignContactsDialog.razor -- scoped styles */

.bulk-dialog-body[b-yuyzphz2yc] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.bulk-count[b-yuyzphz2yc] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--lb-text);
}

.bulk-context-note[b-yuyzphz2yc] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0;
}

.form-field[b-yuyzphz2yc] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-yuyzphz2yc] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-yuyzphz2yc] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.bulk-error[b-yuyzphz2yc] {
    font-size: 0.8rem;
    color: var(--lb-danger);
    padding: 8px 12px;
    background: var(--lb-danger-bg);
    border-radius: 4px;
}
/* /Components/Dialogs/BulkRecategorizeDialog.razor.rz.scp.css */
/* BulkRecategorizeDialog scoped styles */

.bulk-recat-form[b-bgcqu7syq1] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 4px 0;
}

.bulk-recat-hint[b-bgcqu7syq1] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    margin: 4px 0 0;
}
/* /Components/Dialogs/BulkRemoveContactsDialog.razor.rz.scp.css */
/* BulkRemoveContactsDialog.razor -- scoped styles */

.bulk-dialog-body[b-thmyh9iilw] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.bulk-count[b-thmyh9iilw] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--lb-text);
}

.form-field[b-thmyh9iilw] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-thmyh9iilw] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.bulk-warning[b-thmyh9iilw] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 12px;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning-border);
    border-radius: 6px;
    font-size: 0.8rem;
    color: var(--lb-warning-text);
}

.warning-icon[b-thmyh9iilw] {
    color: var(--lb-warning-text);
    font-size: 1rem;
    flex-shrink: 0;
    margin-top: 1px;
}

.bulk-error[b-thmyh9iilw] {
    font-size: 0.8rem;
    color: var(--lb-danger);
    padding: 8px 12px;
    background: var(--lb-danger-bg);
    border-radius: 4px;
}
/* /Components/Dialogs/CalendarEventDialog.razor.rz.scp.css */
/* === CalendarEventDialog -- scoped styles === */

/* -- Dialog auto-height with viewport cap -- */
[b-z4awwbi822] .e-dialog .e-dlg-content {
    max-height: calc(90vh - 120px);
    overflow-y: auto;
}

/* -- Dialog sections grid -- cards flow side by side -- */
.dlg-sections-grid[b-z4awwbi822] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
    width: 100%;
    padding: 4px 0;
}

/* -- Dialog form section cards -- */
.dlg-form-section[b-z4awwbi822] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 12px 14px;
}

.dlg-section-wide[b-z4awwbi822] {
    grid-column: 1 / -1;
}

.dlg-section-header[b-z4awwbi822] {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted);
    padding-bottom: 6px;
    margin-bottom: 10px;
    border-bottom: 2px solid var(--lb-brand);
}

.dlg-section-fields[b-z4awwbi822] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.dlg-field-row[b-z4awwbi822] {
    display: flex;
    flex-direction: row;
    gap: 12px;
}

.dlg-field-group[b-z4awwbi822] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.dlg-field-group.dlg-field-full[b-z4awwbi822] {
    flex: 1 1 100%;
}

.dlg-field-label[b-z4awwbi822] {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

/* -- Mobile: single column stack -- */
@media (max-width: 768px) {
    .dlg-sections-grid[b-z4awwbi822] {
        grid-template-columns: 1fr;
    }

    .dlg-field-row[b-z4awwbi822] {
        flex-direction: column;
        gap: 10px;
    }

    .dlg-form-section[b-z4awwbi822] {
        padding: 10px 12px;
    }

    /* Dialog: full height on mobile */
    .dialog-flex-container[b-z4awwbi822] {
        flex-direction: column;
    }

    .dialog-button-stack[b-z4awwbi822] {
        flex-direction: row;
        flex-wrap: wrap;
        min-width: 0;
        margin-top: 12px;
        gap: 8px;
    }
}

/* Full-screen dialog on mobile */
[b-z4awwbi822] .calendar-dialog-mobile.e-dialog {
    top: 0;
    left: 0;
    max-width: 100vw;
    max-height: 100vh;
    border-radius: 0;
}

[b-z4awwbi822] .calendar-dialog-mobile .e-dlg-content {
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
}

/* -- Attendee chip list -- */
.attendee-chips[b-z4awwbi822] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    min-height: 36px;
    padding: 8px 0;
}

.attendee-chip[b-z4awwbi822] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--lb-active-bg);
    border: 1px solid var(--lb-border);
    border-radius: 16px;
    padding: 4px 8px 4px 12px;
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--lb-text);
}

.attendee-chip-remove[b-z4awwbi822] {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
    padding: 0 2px;
    line-height: 1;
    display: flex;
    align-items: center;
}

.attendee-chip-remove:hover[b-z4awwbi822] {
    color: var(--lb-danger);
}

.attendee-empty[b-z4awwbi822] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    padding: 8px 0;
    font-style: italic;
}

.attendee-add-section[b-z4awwbi822] {
    margin-top: 12px;
    max-width: 400px;
}

/* -- Inline validation messages -- */
[b-z4awwbi822] .validation-message {
    color: var(--lb-danger);
    font-size: 0.75rem;
    margin-top: 2px;
}

.dlg-required[b-z4awwbi822] {
    color: var(--lb-danger);
    font-weight: 700;
}

.dlg-validation-banner[b-z4awwbi822] {
    color: var(--lb-danger);
    font-size: 0.82rem;
    font-weight: 600;
    background: var(--lb-active-bg);
    border: 1px solid var(--lb-danger);
    border-radius: var(--lb-radius-card);
    padding: 8px 12px;
    margin-bottom: 10px;
}
/* /Components/Dialogs/CalendarReportDialog.razor.rz.scp.css */
/* === CalendarReportDialog -- scoped styles === */

.report-dialog-body[b-avpp1g5ba1] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
}

.report-controls[b-avpp1g5ba1] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 12px;
    padding: 12px 0;
    border-bottom: 1px solid var(--lb-border);
    margin-bottom: 8px;
}

.report-quick-buttons[b-avpp1g5ba1] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.report-grid-container[b-avpp1g5ba1] {
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.report-actions[b-avpp1g5ba1] {
    display: flex;
    gap: 8px;
    padding: 8px 0 0;
    border-top: 1px solid var(--lb-border);
}

/* --- Report header (on-screen) --- */
.report-header[b-avpp1g5ba1] {
    text-align: center;
    padding: 10px 0 8px;
}

.report-header-firm[b-avpp1g5ba1] {
    font-size: 1.1rem;
    font-weight: 700;
}

.report-header-title[b-avpp1g5ba1] {
    font-size: 0.95rem;
    font-weight: 600;
    margin-top: 2px;
}

.report-header-meta[b-avpp1g5ba1] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin-top: 4px;
}

/* --- Grid refinements: faint lines, bolder text --- */
[b-avpp1g5ba1] .calendar-report-dialog .e-grid .e-rowcell {
    border-color: var(--lb-border-faint);
    font-weight: 500;
}

[b-avpp1g5ba1] .calendar-report-dialog .e-grid .e-headercell {
    font-weight: 700;
}

[b-avpp1g5ba1] .calendar-report-dialog .e-grid .e-gridheader {
    border-bottom-color: var(--lb-border);
}

/* Priority column colors */
.priority-high[b-avpp1g5ba1] {
    color: var(--lb-danger);
    font-weight: 600;
}

.priority-low[b-avpp1g5ba1] {
    color: var(--lb-text-muted);
}

/* Sync status dots */
.sync-dot[b-avpp1g5ba1] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
}

.sync-dot.synced[b-avpp1g5ba1] {
    background-color: var(--lb-success);
}

.sync-dot.pending[b-avpp1g5ba1] {
    background-color: var(--lb-warning);
}

.sync-dot.failed[b-avpp1g5ba1] {
    background-color: var(--lb-danger);
}

/* Dialog content fills available space -- scoped to report dialog only */
[b-avpp1g5ba1] .calendar-report-dialog .e-dlg-content {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding: 0 16px 12px;
}

/* Print: hide controls, show only grid + header */
@media print {
    .report-controls[b-avpp1g5ba1],
    .report-actions[b-avpp1g5ba1] {
        display: none;
    }
}
/* /Components/Dialogs/ChatSearchDialog.razor.rz.scp.css */
/* =====================================================================
   ChatSearchDialog.razor.css -- Scoped styles for chat message search
   ===================================================================== */

.chat-search-container[b-a17875jja7] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    min-height: 300px;
}

.chat-search-input-row[b-a17875jja7] {
    flex-shrink: 0;
}

/* -- Results list -- */
.chat-search-results[b-a17875jja7] {
    flex: 1;
    overflow-y: auto;
    max-height: 400px;
}

/* -- Individual search result row -- */
.chat-search-result[b-a17875jja7] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 10px 12px;
    background: none;
    border: none;
    border-bottom: 1px solid var(--lb-border-light);
    cursor: pointer;
    text-align: left;
    width: 100%;
    transition: background 0.15s ease;
}

.chat-search-result:hover[b-a17875jja7] {
    background: var(--lb-bg-hover);
}

.search-result-header[b-a17875jja7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.search-result-channel[b-a17875jja7] {
    font-size: 0.83rem;
    font-weight: 700;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.search-result-date[b-a17875jja7] {
    font-size: 0.72rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

.search-result-body[b-a17875jja7] {
    font-size: 0.82rem;
    color: var(--lb-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.search-result-author[b-a17875jja7] {
    font-weight: 600;
    margin-right: 4px;
}

.search-result-text[b-a17875jja7] {
    color: var(--lb-text-muted);
}

/* -- Loading state -- */
.chat-search-loading[b-a17875jja7] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 32px;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

/* -- Empty state -- */
.chat-search-empty[b-a17875jja7] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 24px;
    text-align: center;
}

.chat-search-empty-icon[b-a17875jja7] {
    font-size: 2rem;
    color: var(--lb-text-muted);
    opacity: 0.4;
    margin-bottom: 8px;
}

.chat-search-empty p[b-a17875jja7] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--lb-text-muted);
}

/* -- Hint state (before any search) -- */
.chat-search-hint[b-a17875jja7] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 24px;
    text-align: center;
}

.chat-search-hint p[b-a17875jja7] {
    margin: 0;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

/* -- Full search link -- */
.chat-search-full-link[b-a17875jja7] {
    padding: 10px 12px;
    border-top: 1px solid var(--lb-border-light);
    text-align: center;
}

.chat-search-full-btn[b-a17875jja7] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.82rem;
    font-weight: 500;
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 4px;
    transition: background 0.15s, color 0.15s;
}

.chat-search-full-btn:hover[b-a17875jja7] {
    background: var(--lb-bg-hover);
    color: var(--lb-brand-hover);
}
/* /Components/Dialogs/CodeDataManagerDialog.razor.rz.scp.css */
/* CodeDataManagerDialog - Inline code data management popup */

.cdm-body[b-bfznamyvnw] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 8px 0;
}

[b-bfznamyvnw] .cdm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 8px;
}
/* /Components/Dialogs/ComposeAttachmentPicker.razor.rz.scp.css */
/* ComposeAttachmentPicker scoped styles */
/* NOTE: Only ASCII characters in comments - Blazor CSS isolation corrupts non-ASCII */

.attachment-picker[b-zxxrqnv8a5] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.attachment-actions[b-zxxrqnv8a5] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.doc-picker-row[b-zxxrqnv8a5] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.doc-picker-row > :first-child[b-zxxrqnv8a5] {
    flex: 1;
}

/* Document dropdown item */
[b-zxxrqnv8a5] .doc-item {
    display: flex;
    align-items: baseline;
    gap: 0;
    padding: 4px 0;
    line-height: 1.3;
}

[b-zxxrqnv8a5] .doc-name {
    font-weight: 500;
    font-size: 0.9rem;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[b-zxxrqnv8a5] .doc-type {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* Upload area - compact */
.upload-row[b-zxxrqnv8a5] {
    padding: 4px 8px;
    border: 1px dashed var(--lb-border);
    border-radius: 4px;
    background: var(--lb-surface-alt);
}

/* The native <InputFile> renders as <input type="file"> which on most
 * browsers shows a "Choose Files / No file chosen" button. On a narrow
 * phone viewport the default size is wider than the parent column and
 * overflows. Constrain it. */
.upload-row input[type="file"][b-zxxrqnv8a5] {
    max-width: 100%;
    display: block;
}

@media (max-width: 767.98px) {
    .upload-row input[type="file"][b-zxxrqnv8a5] {
        font-size: 0.8rem;
    }

    /* Stack dropdown + spinner so the dropdown gets full width */
    .doc-picker-row[b-zxxrqnv8a5] {
        flex-wrap: wrap;
    }
}

/* Error message */
.attachment-error[b-zxxrqnv8a5] {
    color: var(--lb-danger);
    font-size: 0.85rem;
    padding: 4px 8px;
    border-left: 3px solid var(--lb-danger);
    background: rgba(220, 53, 69, 0.05);
}

/* -- Attachment tags (chips) -- */
.attachment-tags[b-zxxrqnv8a5] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}

.attachment-tag[b-zxxrqnv8a5] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 6px 2px 8px;
    border: 1px solid var(--lb-border);
    border-radius: 14px;
    background: var(--lb-surface-alt);
    font-size: 0.8rem;
    line-height: 1.4;
    max-width: 220px;
}

.att-tag-name[b-zxxrqnv8a5] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 500;
}

.att-tag-size[b-zxxrqnv8a5] {
    color: var(--lb-text-muted);
    font-size: 0.7rem;
    white-space: nowrap;
}

.att-tag-remove[b-zxxrqnv8a5] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: none;
    background: none;
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    color: var(--lb-text-muted);
    padding: 0 2px;
    border-radius: 50%;
}

.att-tag-remove:hover[b-zxxrqnv8a5] {
    color: var(--lb-danger);
    background: rgba(220, 53, 69, 0.1);
}

.att-total[b-zxxrqnv8a5] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}
/* /Components/Dialogs/ComposeEmailDialog.razor.rz.scp.css */
/* ComposeEmailDialog scoped styles */
/* NOTE: Only ASCII characters in comments - Blazor CSS isolation corrupts non-ASCII */

/* -- Syncfusion sets INLINE styles on e-dlg-content (overflow-y:auto,
     a calculated pixel height). We must use !important to override
     the inline overflow so our flex layout works. The pixel height
     set by Syncfusion is fine - it gives compose-form a defined
     parent height. -- */
[b-v5kgjddgcg] .e-dlg-content {
    padding: 12px 16px !important;
    overflow: hidden !important;
}

/* -- Main form container. Uses height:100% to fill the
     Syncfusion-calculated content area. Flex column distributes
     space so the RTE body fills whatever is left. -- */
.compose-form[b-v5kgjddgcg] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 4px 0;
    height: 100%;
    min-height: 0;
    overflow: hidden;
}

/* The 1200px width cap for the grown 74vw dialog lives in app.css (global):
   the CssClass lands on the reparented .e-dlg-container and the .e-dialog
   panel inside it carries NO scope attribute, so no scoped rule — ::deep or
   otherwise — can ever reach it (probe-verified live). */

/* -- Command bar (compose Option 1): split Send + icon tools in one compact
 *    row. The right cluster keeps Discard rightmost and isolated from the
 *    save actions (#774 -- same rule the old send-row followed). -- */
.compose-cmdbar[b-v5kgjddgcg] {
    display: flex;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    padding-bottom: 4px;
}

.compose-send-split[b-v5kgjddgcg] {
    display: inline-flex;
    margin-right: 6px;
}

/* Couple the two halves of the split Send visually. */
[b-v5kgjddgcg] .compose-send-split .compose-send-main {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

[b-v5kgjddgcg] .compose-send-split .compose-send-caret {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-left: 1px solid rgba(255, 255, 255, 0.35);
    padding-left: 6px;
    padding-right: 6px;
}

.cmd-icon[b-v5kgjddgcg] {
    background: none;
    border: none;
    border-radius: 6px;
    padding: 7px 9px;
    cursor: pointer;
    color: var(--lb-text-muted);
    font-size: 1rem;
    line-height: 1;
}

.cmd-icon:hover[b-v5kgjddgcg] {
    background: var(--lb-accent-tint);
    color: var(--lb-text);
}

.cmd-icon[aria-expanded="true"][b-v5kgjddgcg] {
    background: var(--lb-active-bg);
    color: var(--lb-brand-hover);
}

.cmd-icon-danger:hover[b-v5kgjddgcg] {
    color: var(--lb-danger);
    background: var(--lb-danger-bg);
}

.cmd-icon:disabled[b-v5kgjddgcg] {
    color: var(--lb-text-dim);
    cursor: default;
    background: none;
}

.compose-cmdbar-right[b-v5kgjddgcg] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

/* -- Horizontal field row (label beside input) -- */
.compose-row[b-v5kgjddgcg] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    flex-shrink: 0;
}

.compose-label[b-v5kgjddgcg] {
    flex-shrink: 0;
    width: 60px;
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    padding-top: 7px;
    text-align: right;
}

/* Inline Cc / Bcc summon links on the To row (Outlook posture). */
.ccbcc-link[b-v5kgjddgcg] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.8rem;
    cursor: pointer;
    padding: 7px 2px 0;
    flex-shrink: 0;
}

.ccbcc-link:hover[b-v5kgjddgcg] {
    color: var(--lb-brand-hover);
    text-decoration: underline;
}

/* sr-only for icon-button labels */
.sr-only[b-v5kgjddgcg] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
}

.compose-input[b-v5kgjddgcg] {
    flex: 1;
    min-width: 0;
}

/* Split row for Template + Attach side by side */
.compose-split-row[b-v5kgjddgcg] {
    display: flex;
    gap: 12px;
    flex-shrink: 0;
}

.compose-split-half[b-v5kgjddgcg] {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

.compose-label-inline[b-v5kgjddgcg] {
    flex-shrink: 0;
    width: 60px;
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    padding-top: 7px;
    text-align: right;
    white-space: nowrap;
}

.compose-split-input[b-v5kgjddgcg] {
    flex: 1;
    min-width: 0;
}

/* Vertical field (quoted reply) - keep stacked */
.compose-field[b-v5kgjddgcg] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex-shrink: 0;
}

/* Status / error messages */
.compose-status[b-v5kgjddgcg] {
    padding: 8px 12px;
    border-radius: 4px;
    font-size: 0.85rem;
    flex-shrink: 0;
}

.compose-error[b-v5kgjddgcg] {
    color: var(--lb-danger);
    background: color-mix(in srgb, var(--lb-danger) 8%, transparent);
    border-left: 3px solid var(--lb-danger);
}

.compose-success[b-v5kgjddgcg] {
    color: var(--lb-success);
    background: color-mix(in srgb, var(--lb-success) 8%, transparent);
    border-left: 3px solid var(--lb-success);
}

/* Quoted reply area */
.quoted-reply-container[b-v5kgjddgcg] {
    max-height: 200px;
    overflow-y: auto;
    padding: 10px 12px;
    border-left: 3px solid var(--lb-border);
    background: var(--lb-surface-alt);
    font-size: 0.9rem;
    border-radius: 4px;
}

/* -- Collapsible secondary fields (CC/BCC, Template, Quick Parts, Signature).
      flex-shrink:0 keeps the rows their natural height; the max-height + scroll
      caps the section when expanded so it can't crush the body editor (#1772). -- */
.compose-options[b-v5kgjddgcg] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    flex-shrink: 0;
    max-height: 40vh;
    overflow-y: auto;
}

/* -- RTE body fills ALL remaining dialog height. flex:1 1 auto + a min-height
      floor lets it grow into the space freed by collapsing the secondary
      fields, while never collapsing below a typeable size (#1772). -- */
.compose-body-field[b-v5kgjddgcg] {
    flex: 1 1 auto;
    min-height: 220px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Syncfusion RTE sets inline height from its Height prop. Override
   with !important so it fills its flex parent instead. */
[b-v5kgjddgcg] .compose-body-field .e-richtexteditor {
    height: 100% !important;
    display: flex !important;
    flex-direction: column !important;
}

[b-v5kgjddgcg] .compose-body-field .e-rte-content {
    flex: 1 !important;
    min-height: 0 !important;
}

/* -- Word-style cascading numbers for nested ordered lists. A bare nested <ol>
      renders decimal at EVERY level in HTML, so indenting a numbered item just
      makes another "1." This cascades 1 -> a -> i -> 1 ... by indent depth so
      it reads like Word while composing. The matching HTML `type` attribute is
      baked onto each nested <ol> at send time (OrderedListStyler) so the
      recipient sees the same thing -- mail clients strip <style> blocks. -- */
[b-v5kgjddgcg] .compose-body-field .e-rte-content ol ol { list-style-type: lower-alpha; }
[b-v5kgjddgcg] .compose-body-field .e-rte-content ol ol ol { list-style-type: lower-roman; }
[b-v5kgjddgcg] .compose-body-field .e-rte-content ol ol ol ol { list-style-type: decimal; }
[b-v5kgjddgcg] .compose-body-field .e-rte-content ol ol ol ol ol { list-style-type: lower-alpha; }
[b-v5kgjddgcg] .compose-body-field .e-rte-content ol ol ol ol ol ol { list-style-type: lower-roman; }

/* Responsive: on small screens stack labels above fields */
@media (max-width: 576px) {
    .compose-row[b-v5kgjddgcg] {
        flex-direction: column;
        gap: 2px;
    }

    .compose-label[b-v5kgjddgcg] {
        width: auto;
        text-align: left;
        padding-top: 0;
    }

    .compose-form[b-v5kgjddgcg] {
        gap: 8px;
    }

    .quoted-reply-container[b-v5kgjddgcg] {
        max-height: 150px;
    }
}

/* Phone tier (<768): stack the Template + Attach split row vertically and
 * stack inline labels above their inputs. The dialog itself is capped at
 * 95vw by the global rule in app.css, leaving each half roughly 178px on a
 * 390px phone -- not enough for a dropdown plus the InputFile "Choose"
 * button to coexist horizontally without overflow.
 *
 * Also reclaim vertical space for the rich text editor body area: the
 * stacked form fields above (To, CC, BCC link, Subject, Template, Attach,
 * Choose Files) eat most of the dialog height; without compaction the
 * editor's content area collapses below the toolbar to a few pixels and
 * the user has nowhere to type.
 */
@media (max-width: 767.98px) {
    .compose-split-row[b-v5kgjddgcg] {
        flex-direction: column;
        gap: 8px;
    }

    .compose-split-half[b-v5kgjddgcg] {
        flex-direction: column;
        align-items: stretch;
        gap: 4px;
    }

    .compose-label-inline[b-v5kgjddgcg] {
        width: auto;
        text-align: left;
        padding-top: 0;
    }

    /* Compact form rows so the body editor has more height */
    .compose-form[b-v5kgjddgcg] {
        gap: 6px;
    }

    .compose-row[b-v5kgjddgcg] {
        gap: 2px;
    }

    .compose-label[b-v5kgjddgcg] {
        padding-top: 0;
        font-size: 0.8rem;
    }

    /* Body field gets a larger min-height; the editor content area inside
     * also gets a min-height so it stays typeable. The toolbar above it is
     * ToolbarType.Scrollable, so it costs exactly one row here no matter how
     * narrow the viewport gets -- it can no longer stack and eat the body. */
    .compose-body-field[b-v5kgjddgcg] {
        min-height: 220px;
        /* Cap the editor so it owns an internal scroll region instead of
           growing the whole dialog into one long scroller. Without this, a
           value re-render on a toolbar format action (bold, list, color, ...)
           reset the dialog scroll to the top of the email body. */
        max-height: 55vh;
    }

    [b-v5kgjddgcg] .compose-body-field .e-rte-content {
        min-height: 160px !important;
        overflow-y: auto !important;
        -webkit-overflow-scrolling: touch;
    }

    /* The desktop layout uses height:100% + overflow:hidden on .e-dlg-content
     * and .compose-form to let the body editor flex-grow into the remaining
     * space. On phone the stacked form fields above the editor now exceed
     * the available dialog height; without an escape hatch the editor gets
     * clipped to zero pixels. Switch to natural document flow with the
     * dialog content scrolling vertically. The body field still has
     * min-height: 220px above so it never collapses below a typeable size. */
    [b-v5kgjddgcg] .e-dlg-content {
        overflow-y: auto !important;
    }

    .compose-form[b-v5kgjddgcg] {
        height: auto;
        overflow: visible;
    }

    /* The four action buttons (Send Email / Save Draft / Discard / Followup Task)
       overflow a single phone row and clip their labels. Let them wrap, and drop
       the desktop margin-left:auto that would otherwise strand Discard. */
    .compose-send-row[b-v5kgjddgcg] {
        flex-wrap: wrap;
        row-gap: 6px;
    }

    [b-v5kgjddgcg] .compose-send-row .compose-discard {
        margin-left: 0;
    }
}
/* /Components/Dialogs/ConcurrencyConflictDialog.razor.rz.scp.css */
.conflict-dialog-body[b-shdgo4w5cx] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
    padding: 1rem 0;
    text-align: center;
}

.conflict-icon-container[b-shdgo4w5cx] {
    display: flex;
    align-items: center;
    justify-content: center;
}

.conflict-warning-icon[b-shdgo4w5cx] {
    font-size: 2.5rem;
    color: var(--lb-warning, var(--lb-orange));
}

.conflict-message[b-shdgo4w5cx] {
    color: var(--lb-text-primary);
    font-size: 0.95rem;
    line-height: 1.5;
    margin: 0;
}

.conflict-changes[b-shdgo4w5cx] {
    text-align: left;
    width: 100%;
    font-size: 0.88rem;
    padding: 0.75rem;
    border-radius: 6px;
    background: var(--lb-surface-alt, #2a2a2a);
    border: 1px solid var(--lb-border, #444);
}

.conflict-changes strong[b-shdgo4w5cx] {
    display: block;
    margin-bottom: 0.4rem;
    font-size: 0.85rem;
    color: var(--lb-text-secondary);
}

.conflict-changes ul[b-shdgo4w5cx] {
    margin: 0;
    padding-left: 1.2rem;
    list-style: disc;
}

.conflict-changes li[b-shdgo4w5cx] {
    margin-bottom: 0.2rem;
    line-height: 1.4;
}

.conflict-overwrite-warning[b-shdgo4w5cx] {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    padding: 0.6rem 0.75rem;
    border-radius: 4px;
    background: var(--lb-danger-bg, #3a1a1a);
    border: 1px solid var(--lb-danger-border, #8b3a3a);
    color: var(--lb-danger-text, #f5a5a5);
    font-size: 0.85rem;
    line-height: 1.4;
    text-align: left;
    width: 100%;
}
/* /Components/Dialogs/ContactLinkDialog.razor.rz.scp.css */
/* -- ContactLinkDialog scoped styles -- */
/* NOTE: SfDialog portals to <body>, so these styles will NOT apply.
   All .lb-contact-link-dialog rules live in app.css. */
/* /Components/Dialogs/ContactMergeWizardDialog.razor.rz.scp.css */
/*
 * Scoped styles for the Merge Contacts wizard.
 *
 * These rules previously lived in DuplicateContacts.razor.css behind ::deep.
 * Because SfDialog IsModal="true" relocates the dialog content to a body-level
 * popup, the ::deep ancestry from the parent page no longer matched, so the
 * .survivor-list flex column collapsed and the radio options overlapped.
 * Moving them into this component's own isolated stylesheet (plain selectors)
 * keeps them attached to the markup wherever Syncfusion mounts it.
 */

/* ── Step 1: Choose survivor ── */

.wizard-steps[b-lwj1vv361m] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 0 0 16px 0;
    border-bottom: 1px solid var(--lb-border-light);
    margin-bottom: 16px;
}

.wizard-step[b-lwj1vv361m] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    font-weight: 500;
}

.wizard-step.active[b-lwj1vv361m] {
    color: var(--lb-brand);
    font-weight: 700;
}

.wizard-divider[b-lwj1vv361m] {
    color: var(--lb-text-dim);
    font-size: 0.8rem;
}

.wizard-body[b-lwj1vv361m] {
    min-height: 180px;
}

.wizard-hint[b-lwj1vv361m] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0 0 12px 0;
}

.survivor-list[b-lwj1vv361m] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.survivor-option[b-lwj1vv361m] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px 12px;
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    cursor: pointer;
    background: var(--lb-bg-white);
    transition: border-color 0.15s;
}

.survivor-option:hover[b-lwj1vv361m] {
    border-color: var(--lb-brand);
}

.survivor-option.selected[b-lwj1vv361m] {
    border-color: var(--lb-brand);
    background: var(--lb-accent-tint);
}

.survivor-option input[type="radio"][b-lwj1vv361m] {
    margin-top: 3px;
    accent-color: var(--lb-brand);
}

.survivor-detail[b-lwj1vv361m] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.survivor-name[b-lwj1vv361m] {
    font-weight: 600;
    color: var(--lb-text);
    font-size: 0.9rem;
}

.survivor-company[b-lwj1vv361m] {
    color: var(--lb-text-muted);
    font-size: 0.82rem;
}

.survivor-meta[b-lwj1vv361m] {
    font-size: 0.78rem;
    color: var(--lb-text-dim);
}

/* ── Step 2: Review ── */

.review-section[b-lwj1vv361m] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 14px;
}

.review-row[b-lwj1vv361m] {
    display: flex;
    gap: 8px;
    align-items: baseline;
}

.review-label[b-lwj1vv361m] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    min-width: 110px;
    flex-shrink: 0;
}

.review-value[b-lwj1vv361m] {
    font-size: 0.9rem;
    color: var(--lb-text);
}

.survivor-highlight[b-lwj1vv361m] {
    font-weight: 700;
    color: var(--lb-success);
}

.victim-name[b-lwj1vv361m] {
    display: inline-block;
    text-decoration: line-through;
    color: var(--lb-text-muted);
    margin-right: 6px;
}

.merge-explanation[b-lwj1vv361m] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0 0 14px 0;
    line-height: 1.5;
}

.merge-warning[b-lwj1vv361m] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    color: var(--lb-danger);
    font-weight: 600;
    font-size: 0.88rem;
}

.warning-icon[b-lwj1vv361m] {
    font-size: 1rem;
    color: var(--lb-danger);
}

/* ── Step 3: Result ── */

.result-success[b-lwj1vv361m] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 24px;
    text-align: center;
}

.result-success .result-icon[b-lwj1vv361m] {
    font-size: 2rem;
    color: var(--lb-success);
}

.result-success h5[b-lwj1vv361m] {
    margin: 0;
    color: var(--lb-success);
}

.result-success p[b-lwj1vv361m] {
    margin: 0;
    color: var(--lb-text);
    font-size: 0.9rem;
}

.result-error[b-lwj1vv361m] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 8px;
    padding: 24px;
    text-align: center;
}

.result-error .result-icon[b-lwj1vv361m] {
    font-size: 2rem;
    color: var(--lb-danger);
}

.result-error h5[b-lwj1vv361m] {
    margin: 0;
    color: var(--lb-danger);
}

.result-error p[b-lwj1vv361m] {
    margin: 0;
    color: var(--lb-text);
    font-size: 0.9rem;
}
/* /Components/Dialogs/ContactSearchDialog.razor.rz.scp.css */
/* -- ContactSearchDialog scoped styles -- */
/* NOTE: SfDialog portals to <body>, so these styles will NOT apply.
   All .lb-contact-search-dialog rules live in app.css. */
/* /Components/Dialogs/DocumentCheckInDialog.razor.rz.scp.css */
/* DocumentCheckInDialog.razor.css */
/* All comments ASCII only - no Unicode */

/* -- Status block ----------------------------------------------------------- */
.checkin-status[b-un1oue90mh] {
    border: 1px solid var(--lb-border);
    border-radius: 0.375rem;
    padding: 0.75rem 1rem;
    background: var(--lb-surface-alt);
}

.checkin-doc-name[b-un1oue90mh] {
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 0.35rem;
    word-break: break-word;
}

.checkin-lock-line[b-un1oue90mh] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9rem;
}

.checkin-lock-line .e-icons[b-un1oue90mh] {
    font-size: 0.95rem;
}

.checkin-lock-self[b-un1oue90mh] {
    color: var(--lb-success);
}

.checkin-lock-other[b-un1oue90mh] {
    color: var(--lb-danger);
}

.checkin-lock-none[b-un1oue90mh] {
    color: var(--lb-text-muted);
}

.checkin-lock-age[b-un1oue90mh] {
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
}

.checkin-warning[b-un1oue90mh] {
    margin-top: 0.5rem;
    color: var(--lb-warning);
    font-size: 0.85rem;
}

/* -- Save-back guidance above the file picker --------------------------------- */
.checkin-hint[b-un1oue90mh] {
    margin-top: 0.75rem;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

/* -- File name preview -------------------------------------------------------- */
.checkin-file-name[b-un1oue90mh] {
    margin-top: 0.35rem;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

/* -- Error banner -------------------------------------------------------------- */
.checkin-error[b-un1oue90mh] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    border-radius: 0.375rem;
    padding: 0.6rem 0.75rem;
    font-size: 0.875rem;
    margin-top: 0.5rem;
}

.checkin-error .e-icons[b-un1oue90mh] {
    margin-right: 0.3rem;
}

/* -- Dialog overrides ----------------------------------------------------------- */
[b-un1oue90mh] .document-checkin-dialog .e-dlg-header {
    font-weight: 600;
    color: var(--lb-text);
}
/* /Components/Dialogs/DocumentOptionsDialog.razor.rz.scp.css */
/* ============================================================
   DocumentOptionsDialog -- scoped styles
   ============================================================
   Design tokens from app.css (--lb-*). ASCII-only comments.
   SfDialog renders its content outside this component's scope,
   so every rule uses ::deep.
   ============================================================ */

.doc-options-intro[b-0ftrocgjay]{
    padding: 10px 14px;
    margin: 0 0 16px 0;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--lb-text-secondary);
    line-height: 1.45;
}

.doc-options-form[b-0ftrocgjay] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

[b-0ftrocgjay] .doc-options-row {
    display: flex;
    gap: 14px;
    align-items: flex-end;
}

[b-0ftrocgjay] .doc-options-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-0ftrocgjay] .doc-options-field--grow {
    flex: 1 1 0;
    min-width: 0;
}

[b-0ftrocgjay] .doc-options-field--size {
    flex: 0 0 96px;
}

[b-0ftrocgjay] .doc-options-label {
    font-weight: 600;
    font-size: 0.82rem;
    color: var(--lb-text-primary);
}

/* -- Footer -------------------------------------------------- */

.doc-options-footer[b-0ftrocgjay] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
}

[b-0ftrocgjay] .doc-options-footer-spacer {
    flex: 1 1 auto;
}

/* Restore sits at the far left, visually secondary. */
[b-0ftrocgjay] .doc-options-restore {
    color: var(--lb-text-muted);
}

/* -- Dark mode ----------------------------------------------- */

:global([data-theme="dark"]) .doc-options-label[b-0ftrocgjay] {
    color: var(--lb-text-primary);
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .doc-options-footer[b-0ftrocgjay] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/DocumentProfileDialog.razor.rz.scp.css */
/* ============================================================
   DocumentProfileDialog -- scoped styles
   ============================================================
   Design tokens from app.css (--lb-*). ASCII-only comments.
   ============================================================ */

/* -- Loading state ------------------------------------------- */

.profile-loading[b-04cwnmlp5p] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    font-size: 0.95rem;
    color: var(--lb-text-muted);
}

/* -- Header message ------------------------------------------ */

.profile-header-message[b-04cwnmlp5p]{
    padding: 10px 16px;
    margin-bottom: 12px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--lb-text-secondary);
    line-height: 1.45;
}

/* -- Form layout --------------------------------------------- */

.profile-form[b-04cwnmlp5p] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

[b-04cwnmlp5p] .profile-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-04cwnmlp5p] .profile-label {
    font-weight: 600;
    font-size: 0.82rem;
    color: var(--lb-text-primary);
    display: flex;
    align-items: center;
    gap: 6px;
}

/* -- AI badge ------------------------------------------------ */

[b-04cwnmlp5p] .profile-ai-badge {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 1px 6px;
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: #fff;
    background: var(--lb-brand);
    border-radius: 4px;
    line-height: 1.5;
}

/* -- Footer -------------------------------------------------- */

.profile-footer[b-04cwnmlp5p] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    width: 100%;
}

/* -- Dark mode ----------------------------------------------- */

:global([data-theme="dark"]) .profile-loading[b-04cwnmlp5p] {
    color: var(--lb-text-muted);
}

:global([data-theme="dark"]) .profile-label[b-04cwnmlp5p] {
    color: var(--lb-text-primary);
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .profile-footer[b-04cwnmlp5p] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/DocumentVersionHistoryDialog.razor.rz.scp.css */
/* ============================================================
   DocumentVersionHistoryDialog -- scoped styles
   ============================================================
   Design tokens from app.css (--lb-*). ASCII-only comments.
   SfDialog renders content outside the component scope: ::deep.
   ============================================================ */

.vh-empty[b-7z87wejtly]{
    padding: 10px 14px;
    margin: 0;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    line-height: 1.45;
}

.vh-empty[b-7z87wejtly] +  .e-btn{
    margin-top: 12px;
}

.vh-loading[b-7z87wejtly] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px 16px;
    font-size: 0.9rem;
    color: var(--lb-text-muted);
}

/* -- Version rows -------------------------------------------- */

.vh-list[b-7z87wejtly] {
    display: flex;
    flex-direction: column;
    max-height: 46vh;
    overflow-y: auto;
}

[b-7z87wejtly] .vh-row {
    padding: 8px 4px;
    border-bottom: 1px solid var(--lb-border);
}

[b-7z87wejtly] .vh-row:last-child {
    border-bottom: none;
}

[b-7z87wejtly] .vh-row__main {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

[b-7z87wejtly] .vh-row__version {
    font-weight: 700;
    font-size: 0.85rem;
    color: var(--lb-text-primary);
    min-width: 48px;
}

[b-7z87wejtly] .vh-row__when {
    font-size: 0.82rem;
    color: var(--lb-text-primary);
}

[b-7z87wejtly] .vh-row__who {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

[b-7z87wejtly] .vh-row__note {
    margin-top: 2px;
    font-size: 0.78rem;
    font-style: italic;
    color: var(--lb-text-muted);
}

[b-7z87wejtly] .vh-row__actions {
    margin-top: 4px;
    display: flex;
    gap: 6px;
}

/* -- Inline restore confirm ----------------------------------- */

.vh-confirm[b-7z87wejtly]{
    margin-top: 12px;
    padding: 10px 14px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-warning, #b98900);
    border-radius: 6px;
    font-size: 0.85rem;
    line-height: 1.45;
}

[b-7z87wejtly] .vh-confirm__actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
}
/* /Components/Dialogs/EditContactDialog.razor.rz.scp.css */
/* EditContactDialog.razor — scoped styles */

.edit-contact-body[b-og0220rb6h] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.edit-contact-loading[b-og0220rb6h] {
    padding: 24px 4px;
    color: var(--lb-text-muted);
    text-align: center;
}

.edit-contact-row[b-og0220rb6h] {
    display: flex;
    gap: 12px;
}

.edit-contact-row > .edit-contact-field[b-og0220rb6h] {
    flex: 1;
    min-width: 0;
}

.edit-contact-field[b-og0220rb6h] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-og0220rb6h] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-og0220rb6h] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-error[b-og0220rb6h] {
    font-size: 0.78rem;
    color: var(--lb-danger);
}

.edit-contact-error[b-og0220rb6h] {
    font-size: 0.8rem;
    color: var(--lb-danger);
    padding: 8px 12px;
    background: var(--lb-danger-bg);
    border-radius: 4px;
}

.edit-contact-footer[b-og0220rb6h] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 4px 0;
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .edit-contact-footer[b-og0220rb6h] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/EmailTemplateDialog.razor.rz.scp.css */
/* EmailTemplateDialog.razor.css */
/* All comments ASCII only */

.form-field[b-c5d9k67w87] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 14px;
}

.field-label[b-c5d9k67w87] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.lb-required[b-c5d9k67w87] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 0.2rem;
}

.merge-field-buttons[b-c5d9k67w87] {
    margin-bottom: 12px;
}

.merge-btn-row[b-c5d9k67w87] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 4px;
}

.merge-field-btn[b-c5d9k67w87] {
    background: var(--lb-surface-alt);
    color: var(--lb-text);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    padding: 3px 10px;
    font-size: 0.8rem;
    font-family: monospace;
    cursor: pointer;
    transition: background 0.15s ease, border-color 0.15s ease;
}

.merge-field-btn:hover[b-c5d9k67w87] {
    background: var(--lb-brand-light);
    border-color: var(--lb-brand);
}
/* /Components/Dialogs/EmailViewerDialog.razor.rz.scp.css */
/* EmailViewerDialog scoped styles */
/* NOTE: Only ASCII characters in comments - Blazor CSS isolation corrupts non-ASCII */

/* -- Override Syncfusion inline overflow on dialog content -- */
[b-42ne6dg84x] .e-dlg-content {
    padding: 12px 16px !important;
    overflow: hidden !important;
}

/* -- Main content area fills the dialog -- */
.viewer-content[b-42ne6dg84x] {
    display: flex;
    flex-direction: column;
    height: 100%;
    min-height: 0;
    overflow: hidden;
}

/* -- Reply / Reply All / Forward toolbar -- */
.viewer-toolbar[b-42ne6dg84x] {
    display: flex;
    gap: 4px;
    padding: 4px 0 8px 0;
    border-bottom: 1px solid #dee2e6;
    margin-bottom: 8px;
    flex-shrink: 0;
}

/* Center the text-only Reply / Reply All / Forward labels (#992). SfButton
   renders display:inline-block, so the theme's justify-content:center is inert
   and the labels read off-center now that the icon span is gone (#709). Make
   the button a centered flex box with symmetric horizontal padding so one-word
   ("Reply") and two-word ("Reply All") labels look balanced and consistent.
   ::deep reaches the child SfButton's .e-btn, which carries no CSS-isolation
   scope attribute of this component. */
.viewer-toolbar[b-42ne6dg84x]  .e-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-left: 12px;
    padding-right: 12px;
}

/* -- Email header (From, To, CC, Date) -- */
.viewer-header[b-42ne6dg84x] {
    flex-shrink: 0;
}

.viewer-meta[b-42ne6dg84x] {
    font-size: 0.88rem;
    color: var(--lb-text-muted);
    line-height: 1.6;
}

/* -- Attachments -- */
.viewer-attachments[b-42ne6dg84x] {
    flex-shrink: 0;
    font-size: 0.88rem;
    padding: 6px 0;
}

.viewer-attachment-list[b-42ne6dg84x] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 4px;
}

.viewer-attachment-chip[b-42ne6dg84x] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 8px;
    background: var(--lb-surface-alt);
    border: 1px solid #dee2e6;
    border-radius: 4px;
    font-size: 0.82rem;
}

/* -- Body (scrollable, fills remaining space) -- */
.viewer-body[b-42ne6dg84x] {
    flex: 1;
    overflow-y: auto;
    padding: 8px 12px;
    word-break: break-word;
    /* White "sheet" in BOTH themes — email HTML assumes a light background;
       on the dark theme, black inline-styled text read as missing. Mirrors
       .preview-body in EmailInbox.razor.css; literal colors on purpose. */
    background: #FFFFFF;
    color: #1C2536;
    color-scheme: light;
    border-radius: 6px;
}

/* -- Degraded states: Graph returned no message. --
      One says "here is the stored copy instead", the other "there is nothing to
      show and here is why". Before these existed the dialog rendered its toolbar
      over an empty rectangle, which reads as a broken screen rather than a
      failed fetch. */
.viewer-degraded-note[b-42ne6dg84x] {
    padding: 8px 12px;
    border-left: 3px solid var(--lb-warning, #d97706);
    background: var(--lb-warning-bg, rgba(217, 119, 6, 0.08));
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

.viewer-empty[b-42ne6dg84x] {
    flex: 1;
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    padding: 24px 16px;
    text-align: center;
    color: var(--lb-text-muted);
}

/* -- Constrain embedded images -- */
[b-42ne6dg84x] .viewer-body img {
    max-width: 100%;
    height: auto;
}

/* -- Responsive -- */
@media (max-width: 576px) {
    .viewer-toolbar[b-42ne6dg84x] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/EmbeddedSendDialog.razor.rz.scp.css */
.embed-send-hint[b-e2syxxk63a] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 12px;
    margin-bottom: 8px;
    background-color: #eef4ff;
    border: 1px solid #cdddff;
    border-radius: 4px;
    font-size: 13px;
    color: #1d3b6b;
}

.embed-send-hint[b-e2syxxk63a]  .e-btn {
    flex: 0 0 auto;
    white-space: nowrap;
}

.embed-send-iframe-container[b-e2syxxk63a] {
    width: 100%;
    height: calc(90vh - 150px);
    overflow: hidden;
}

[b-e2syxxk63a] .embed-send-iframe {
    width: 100%;
    height: 100%;
    border: none;
}

[b-e2syxxk63a] .embed-send-done-icon {
    font-size: 3rem;
    color: #155724;
    background-color: #d4edda;
    border-radius: 50%;
    width: 64px;
    height: 64px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
/* /Components/Dialogs/EmbeddedSigningDialog.razor.rz.scp.css */
.signing-iframe-container[b-dnhi6e4kl8] {
    width: 100%;
    height: calc(90vh - 140px);
    overflow: hidden;
}

[b-dnhi6e4kl8] .signing-iframe {
    width: 100%;
    height: 100%;
    border: none;
}

.signer-picker[b-dnhi6e4kl8] {
    max-width: 400px;
    margin: 2rem auto;
}

[b-dnhi6e4kl8] .signing-done-icon {
    font-size: 3rem;
    color: #155724;
    background-color: #d4edda;
    border-radius: 50%;
    width: 64px;
    height: 64px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
/* /Components/Dialogs/FileDragDropDialog.razor.rz.scp.css */
/* === FileDragDropDialog — scoped styles === */

.upload-box[b-ajup3vy7nx] {
    border: 2px dashed var(--lb-text-muted);
    border-radius: 8px;
    padding: 18px;
    text-align: center;
    cursor: pointer;
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 0;
    position: relative;
}

.upload-box.dragover[b-ajup3vy7nx] {
    border-color: var(--lb-info);
    background-color: var(--lb-info-bg);
}

.fdd-layout[b-ajup3vy7nx] {
    display: flex;
    gap: 14px;
    height: 100%;
}

.fdd-main[b-ajup3vy7nx] {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

.fdd-form-row[b-ajup3vy7nx] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.fdd-checkbox-row[b-ajup3vy7nx] {
    display: flex;
    gap: 12px;
}

.fdd-hint[b-ajup3vy7nx] {
    color: var(--lb-text-muted);
}

.fdd-sidebar[b-ajup3vy7nx] {
    width: 220px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* overflow must stay visible: the case-search dropdown popup renders inside the
   dialog's coordinate space (DialogTemplates Content), so clipping it here makes
   the popup detach/misposition to the screen corner (issue #145). */
[b-ajup3vy7nx] .e-dlg-content {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: visible;
}
/* /Components/Dialogs/FollowUpDialog.razor.rz.scp.css */
/* FollowUpDialog.razor -- scoped styles */

.followup-form[b-f0t3pwd0gy] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.form-field[b-f0t3pwd0gy] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-f0t3pwd0gy] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-f0t3pwd0gy] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-validation-error[b-f0t3pwd0gy] {
    font-size: 0.78rem;
    color: var(--lb-danger);
}

.date-chips[b-f0t3pwd0gy] {
    display: flex;
    gap: 6px;
    flex-wrap: nowrap;
    margin-top: 4px;
}

.date-chip[b-f0t3pwd0gy] {
    padding: 2px 10px;
    font-size: 0.75rem;
    font-weight: 500;
    border: 1px solid var(--lb-border, #555);
    border-radius: 12px;
    background: transparent;
    color: var(--lb-text);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
    line-height: 1.4;
}

.date-chip:hover[b-f0t3pwd0gy] {
    background: var(--lb-primary, rgb(204, 108, 44));
    border-color: var(--lb-primary, rgb(204, 108, 44));
    color: #fff;
}

.date-chip:active[b-f0t3pwd0gy] {
    opacity: 0.85;
}

.form-row-2col[b-f0t3pwd0gy] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

@media (max-width: 768px) {
    .form-row-2col[b-f0t3pwd0gy] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Dialogs/GenerateDamagesSummaryDialog.razor.rz.scp.css */
/* GenerateDamagesSummaryDialog.razor -- scoped styles */

.dmg-loading[b-nabyc6s3r2] {
    display: flex;
    align-items: center;
    padding: 12px 0;
    color: var(--lb-text-muted, #6B7280);
    font-size: 0.9rem;
}

.dmg-empty-message[b-nabyc6s3r2]{
    color: var(--lb-text-muted, #6B7280);
    font-size: 0.9rem;
    padding: 12px 0;
}

.dmg-group[b-nabyc6s3r2]{
    margin-bottom: 14px;
}

[b-nabyc6s3r2] .dmg-group-hdr {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted, #6B7280);
    border-bottom: 1px solid var(--lb-border-light, #DDE1E8);
    padding-bottom: 4px;
    margin-bottom: 8px;
}

[b-nabyc6s3r2] .dmg-row {
    padding: 5px 0;
}

.dmg-error[b-nabyc6s3r2]{
    font-size: 0.85rem;
    padding: 6px 0 0;
}

.dmg-dialog-footer[b-nabyc6s3r2] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    width: 100%;
}
/* /Components/Dialogs/ImportAutoTextDialog.razor.rz.scp.css */
/* ============================================================
   ImportAutoTextDialog -- scoped styles
   Phase 3 of the Quick Parts Library spec rebuilt this dialog
   as a formatting-preserving omnibus Word importer; styles
   below cover the new review/batch-options surface as well as
   the original upload step.
   ============================================================ */

.iat-upload-section[b-ez40qpjodf] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 8px 0;
}

[b-ez40qpjodf] .iat-hint {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.iat-processing[b-ez40qpjodf] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

[b-ez40qpjodf] .iat-error {
    color: var(--lb-danger);
    font-size: 0.85rem;
    padding: 4px 0;
}

.iat-review-section[b-ez40qpjodf]{
    padding: 4px 0;
}

[b-ez40qpjodf] .iat-separator {
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.82rem;
    padding: 8px 0;
}

/* HTML preview cell -- constrained so a tall part doesn't
   blow up the grid row. Word-internal styles inherit so basic
   formatting (bold, italic, lists) renders the way the user
   will see it after insertion. */
[b-ez40qpjodf] .iat-html-preview {
    max-height: 90px;
    overflow: hidden;
    font-size: 0.8rem;
    line-height: 1.25;
    color: var(--lb-text);
}

[b-ez40qpjodf] .iat-html-preview p {
    margin: 0 0 4px 0;
}

[b-ez40qpjodf] .iat-html-preview ul,
[b-ez40qpjodf] .iat-html-preview ol {
    margin: 0 0 4px 18px;
    padding: 0;
}

/* Fidelity-warning marker -- shown only when the importer
   flags a docPart it could not faithfully convert (OLE,
   text boxes, nested Building Blocks). Tooltip carries the
   detail. */
[b-ez40qpjodf] .iat-warn {
    display: inline-block;
    width: 18px;
    height: 18px;
    line-height: 18px;
    text-align: center;
    border-radius: 50%;
    background: var(--lb-warning, #f0ad4e);
    color: #fff;
    font-weight: 700;
    font-size: 0.78rem;
    cursor: help;
}

/* Batch options panel (scope + category-for-batch) below the
   review grid. */
[b-ez40qpjodf] .iat-batch-options {
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    padding: 12px 0 4px 0;
    align-items: flex-start;
}

[b-ez40qpjodf] .iat-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-ez40qpjodf] .iat-field-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

[b-ez40qpjodf] .iat-field-static {
    font-size: 0.9rem;
    padding: 6px 0;
}

[b-ez40qpjodf] .iat-field-hint {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

/* ============================================================
   "Where are my Quick Parts?" location helper -- upload step.
   A web app can't read the user's filesystem, so this walks
   them to Normal.dotm and gives the file-picker paste shortcut.
   ============================================================ */

[b-ez40qpjodf] .iat-help-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 6px;
    padding: 4px 0;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-accent, #a64d18);
}

[b-ez40qpjodf] .iat-help-toggle:hover {
    text-decoration: underline;
}

[b-ez40qpjodf] .iat-help-body {
    margin: 4px 0 8px;
    padding: 12px 14px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    font-size: 0.84rem;
    line-height: 1.5;
}

[b-ez40qpjodf] .iat-help-body p {
    margin: 0 0 8px;
}

[b-ez40qpjodf] .iat-help-steps {
    margin: 0 0 8px;
    padding-left: 20px;
}

[b-ez40qpjodf] .iat-help-steps li {
    margin-bottom: 6px;
}

[b-ez40qpjodf] .iat-path-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 6px;
    flex-wrap: wrap;
}

[b-ez40qpjodf] .iat-path {
    padding: 4px 8px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    font-family: monospace;
    font-size: 0.8rem;
    user-select: all;
}

[b-ez40qpjodf] .iat-copy-btn {
    flex: 0 0 auto;
}
/* /Components/Dialogs/ImportToCaseDataDialog.razor.rz.scp.css */
/* ImportToCaseDataDialog.razor -- scoped styles */

.imp-context-row[b-pcs0pq83rg] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding-bottom: 8px;
    margin-bottom: 10px;
    border-bottom: 1px solid var(--lb-border-light, #DDE1E8);
}

[b-pcs0pq83rg] .imp-step-indicator {
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted, #6B7280);
}

[b-pcs0pq83rg] .imp-source-sep {
    margin: 0 6px;
    color: var(--lb-text-muted, #6B7280);
}

[b-pcs0pq83rg] .imp-source-file {
    font-size: 0.8rem;
    color: var(--lb-text-muted, #6B7280);
    max-width: 320px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.imp-loading-row[b-pcs0pq83rg] {
    display: flex;
    align-items: center;
    padding: 12px 0;
    color: var(--lb-text-muted, #6B7280);
    font-size: 0.9rem;
}

.imp-refusal[b-pcs0pq83rg]{
    padding: 12px 0;
    font-size: 0.9rem;
}

.imp-target-picker[b-pcs0pq83rg]{
    margin-bottom: 14px;
}

[b-pcs0pq83rg] .imp-label {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    margin-bottom: 4px;
}

[b-pcs0pq83rg] .imp-target-desc {
    font-size: 0.8rem;
    color: var(--lb-text-muted, #6B7280);
    margin-top: 4px;
}

.imp-mapping-table-wrap[b-pcs0pq83rg] {
    max-height: 320px;
    overflow-y: auto;
    border: 1px solid var(--lb-border-light, #DDE1E8);
    border-radius: 6px;
}

[b-pcs0pq83rg] .imp-mapping-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.85rem;
}

[b-pcs0pq83rg] .imp-mapping-table th,
[b-pcs0pq83rg] .imp-mapping-table td {
    padding: 6px 10px;
    border-bottom: 1px solid var(--lb-border-light, #DDE1E8);
    text-align: left;
    vertical-align: middle;
}

[b-pcs0pq83rg] .imp-mapping-table th {
    position: sticky;
    top: 0;
    background: var(--lb-card, #ffffff);
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted, #6B7280);
    z-index: 1;
}

[b-pcs0pq83rg] .imp-sample-cell {
    color: var(--lb-text-muted, #6B7280);
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[b-pcs0pq83rg] .imp-field-cell {
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-pcs0pq83rg] .imp-auto-hint {
    font-size: 0.68rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted, #6B7280);
    white-space: nowrap;
}

.imp-missing-required[b-pcs0pq83rg]{
    margin-top: 10px;
    font-size: 0.85rem;
    color: var(--lb-danger, #C94A3A);
}

.imp-summary-line[b-pcs0pq83rg]{
    font-size: 0.92rem;
    font-weight: 600;
    margin-bottom: 10px;
}

.imp-error-table-wrap[b-pcs0pq83rg] {
    max-height: 280px;
    overflow-y: auto;
    border: 1px solid var(--lb-border-light, #DDE1E8);
    border-radius: 6px;
    margin-bottom: 8px;
}

[b-pcs0pq83rg] .imp-error-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

[b-pcs0pq83rg] .imp-error-table th,
[b-pcs0pq83rg] .imp-error-table td {
    padding: 6px 10px;
    border-bottom: 1px solid var(--lb-border-light, #DDE1E8);
    text-align: left;
    vertical-align: top;
}

[b-pcs0pq83rg] .imp-error-table th {
    position: sticky;
    top: 0;
    background: var(--lb-card, #ffffff);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted, #6B7280);
    z-index: 1;
}

.imp-error-more[b-pcs0pq83rg]{
    font-size: 0.78rem;
    color: var(--lb-text-muted, #6B7280);
    margin-bottom: 8px;
}

.imp-skip-row[b-pcs0pq83rg]{
    padding: 6px 0 2px;
}

.imp-error[b-pcs0pq83rg]{
    font-size: 0.85rem;
    padding: 6px 0 0;
}

.imp-confirm-body p[b-pcs0pq83rg]{
    font-size: 0.92rem;
}

[b-pcs0pq83rg] .imp-confirm-note {
    background: var(--lb-surface-alt, #F5F7FA);
    border: 1px solid var(--lb-border-light, #DDE1E8);
    border-radius: 6px;
    padding: 10px 12px;
    color: var(--lb-text-muted, #6B7280);
}

.imp-dialog-footer[b-pcs0pq83rg] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    width: 100%;
}
/* /Components/Dialogs/ImportVbaMacroDialog.razor.rz.scp.css */
/* ============================================================
   ImportVbaMacroDialog -- scoped styles
   ============================================================ */

.ivm-paste-section[b-6zpekrtc1t] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    padding: 8px 0;
}

[b-6zpekrtc1t] .ivm-hint {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.ivm-processing[b-6zpekrtc1t] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 16px 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

[b-6zpekrtc1t] .ivm-error {
    color: var(--lb-danger);
    font-size: 0.85rem;
    padding: 4px 0;
}

.ivm-review-section[b-6zpekrtc1t] {
    padding: 4px 0;
    max-height: 500px;
    overflow-y: auto;
}

/* -- Macro cards -- */

[b-6zpekrtc1t] .ivm-macro-card {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 12px;
    margin-bottom: 10px;
}

[b-6zpekrtc1t] .ivm-text_insert {
    border-left: 3px solid var(--lb-success);
}

[b-6zpekrtc1t] .ivm-mixed {
    border-left: 3px solid var(--lb-warning);
}

[b-6zpekrtc1t] .ivm-feature_macro {
    border-left: 3px solid var(--lb-text-muted);
    opacity: 0.75;
}

[b-6zpekrtc1t] .ivm-macro-header {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

[b-6zpekrtc1t] .ivm-macro-name {
    font-weight: 600;
    font-size: 0.9rem;
    font-family: monospace;
}

[b-6zpekrtc1t] .ivm-classification-badge {
    font-size: 0.72rem;
    padding: 2px 8px;
    border-radius: 10px;
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

[b-6zpekrtc1t] .ivm-section-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin-bottom: 4px;
    display: block;
}

[b-6zpekrtc1t] .ivm-text-preview {
    background: var(--lb-surface-alt);
    padding: 8px 12px;
    border-radius: 4px;
    font-size: 0.82rem;
    white-space: pre-wrap;
    max-height: 120px;
    overflow-y: auto;
    margin: 0;
}

[b-6zpekrtc1t] .ivm-warning {
    font-size: 0.8rem;
    color: var(--lb-warning-text);
    background: var(--lb-warning-bg);
    padding: 6px 10px;
    border-radius: 4px;
    margin-top: 6px;
}

[b-6zpekrtc1t] .ivm-not-importable {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

[b-6zpekrtc1t] .ivm-source-toggle {
    margin-top: 6px;
}

[b-6zpekrtc1t] .ivm-source-toggle summary {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    cursor: pointer;
}

[b-6zpekrtc1t] .ivm-vba-source {
    background: var(--lb-surface-alt);
    padding: 8px 12px;
    border-radius: 4px;
    font-size: 0.75rem;
    white-space: pre-wrap;
    max-height: 150px;
    overflow-y: auto;
    margin: 6px 0 0;
}
/* /Components/Dialogs/IntegrationClientDialog.razor.rz.scp.css */
/* HIPAA / info notice */
.icd-hipaa-notice[b-m0qvsp2cwf] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-info-bg);
    border-left: 4px solid var(--lb-info);
    border-radius: 4px;
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    color: var(--lb-text);
    font-size: 0.8125rem;
    line-height: 1.5;
}

.icd-notice-icon[b-m0qvsp2cwf] {
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--lb-info);
}

/* Warning banner (key display phase) */
.icd-key-warning-banner[b-m0qvsp2cwf] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-warning-bg);
    border-left: 4px solid var(--lb-warning);
    border-radius: 4px;
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    color: var(--lb-text);
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.4;
}

.icd-warning-icon[b-m0qvsp2cwf] {
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--lb-warning);
}

/* Save error banner */
.icd-error-banner[b-m0qvsp2cwf] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-danger-bg);
    border-left: 4px solid var(--lb-danger);
    border-radius: 4px;
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    color: var(--lb-text);
    font-size: 0.875rem;
    line-height: 1.4;
}

.icd-error-icon[b-m0qvsp2cwf] {
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--lb-danger);
}

/* Form fields */
.icd-field[b-m0qvsp2cwf] {
    margin-bottom: 1.25rem;
}

.icd-label[b-m0qvsp2cwf] {
    display: block;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
    margin-bottom: 0.375rem;
}

.icd-required[b-m0qvsp2cwf] {
    color: var(--lb-danger);
    margin-left: 2px;
}

.icd-error[b-m0qvsp2cwf] {
    display: block;
    font-size: 0.8125rem;
    color: var(--lb-danger);
    margin-top: 0.25rem;
}

/* Scopes checklist */
.icd-scopes-list[b-m0qvsp2cwf] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 0.75rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    max-height: 240px;
    overflow-y: auto;
}

.icd-scope-item[b-m0qvsp2cwf] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    padding: 2px 0;
}

.icd-scope-label[b-m0qvsp2cwf] {
    font-size: 0.875rem;
    color: var(--lb-text);
}

.icd-scope-key[b-m0qvsp2cwf] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
    margin-left: auto;
}

/* Key display box */
.icd-key-display-box[b-m0qvsp2cwf] {
    background: var(--lb-elevated);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
    font-size: 0.875rem;
    color: var(--lb-text);
    word-break: break-all;
    user-select: all;
    line-height: 1.6;
}

/* Copy row */
.icd-copy-row[b-m0qvsp2cwf] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.75rem;
}

.icd-copied-msg[b-m0qvsp2cwf] {
    font-size: 0.8125rem;
    color: var(--lb-success);
    font-weight: 500;
}
/* /Components/Dialogs/IntegrationWebhookDialog.razor.rz.scp.css */
/* Form fields */
.iwd-field[b-1oj5des68p] {
    margin-bottom: 1.25rem;
}

.iwd-label[b-1oj5des68p] {
    display: block;
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
    margin-bottom: 0.375rem;
}

.iwd-required[b-1oj5des68p] {
    color: var(--lb-danger);
    margin-left: 2px;
}

.iwd-error[b-1oj5des68p] {
    display: block;
    font-size: 0.8125rem;
    color: var(--lb-danger);
    margin-top: 0.25rem;
}

/* Warning banner (secret display phase) */
.iwd-key-warning-banner[b-1oj5des68p] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-warning-bg);
    border-left: 4px solid var(--lb-warning);
    border-radius: 4px;
    padding: 0.75rem 1rem;
    margin-bottom: 1.25rem;
    color: var(--lb-text);
    font-size: 0.875rem;
    font-weight: 500;
    line-height: 1.4;
}

.iwd-warning-icon[b-1oj5des68p] {
    flex-shrink: 0;
    margin-top: 2px;
    color: var(--lb-warning);
}

/* Secret display box */
.iwd-key-display-box[b-1oj5des68p] {
    background: var(--lb-elevated);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 0.75rem 1rem;
    font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
    font-size: 0.875rem;
    color: var(--lb-text);
    word-break: break-all;
    user-select: all;
    line-height: 1.6;
}

/* Copy row */
.iwd-copy-row[b-1oj5des68p] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.75rem;
}

.iwd-copied-msg[b-1oj5des68p] {
    font-size: 0.8125rem;
    color: var(--lb-success);
    font-weight: 500;
}
/* /Components/Dialogs/KanbanCompleteDialog.razor.rz.scp.css */
.complete-task-name[b-lniwhvxfuz] {
    font-weight: 600;
    color: var(--lb-text);
    padding: 0.5rem;
    background: var(--lb-surface-alt);
    border-radius: 4px;
    margin: 0.5rem 0;
}
/* /Components/Dialogs/ManagePinsDialog.razor.rz.scp.css */
/* -- Manage Pins Dialog -- scoped styles -- */

.mp-body[b-8fve8uo0pv] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.mp-instruction[b-8fve8uo0pv] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    margin: 0;
}

.mp-validation[b-8fve8uo0pv] {
    font-size: 0.8125rem;
    color: var(--lb-danger);
    background: var(--lb-danger-bg);
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
}

.mp-list[b-8fve8uo0pv] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    max-height: 400px;
    overflow-y: auto;
}

.mp-item[b-8fve8uo0pv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.625rem 0.75rem;
    border-radius: 8px;
    border: 1px solid var(--lb-border-light);
    background: var(--lb-card);
    cursor: pointer;
    transition: background 0.15s, border-color 0.15s;
}

.mp-item:hover[b-8fve8uo0pv] {
    background: var(--lb-surface-alt);
}

.mp-item--checked[b-8fve8uo0pv] {
    border-color: var(--lb-brand);
    background: var(--lb-accent-tint);
}

.mp-item input[type="checkbox"][b-8fve8uo0pv] {
    accent-color: var(--lb-brand);
    width: 16px;
    height: 16px;
    flex-shrink: 0;
    cursor: pointer;
}

.mp-item-icon[b-8fve8uo0pv] {
    width: 32px;
    height: 32px;
    border-radius: 6px;
    background: var(--lb-elevated);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    color: var(--lb-brand);
    flex-shrink: 0;
}

.mp-item-info[b-8fve8uo0pv] {
    display: flex;
    flex-direction: column;
    gap: 0.0625rem;
    min-width: 0;
}

.mp-item-name[b-8fve8uo0pv] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text);
}

.mp-item-category[b-8fve8uo0pv] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}

.mp-footer[b-8fve8uo0pv] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .mp-footer[b-8fve8uo0pv] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/MergeCodeEditDialog.razor.rz.scp.css */
/* ============================================================
   MergeCodeEditDialog -- merge-code add/edit
   ============================================================ */

.mce-field[b-9wchz6a2pk]{
    margin-bottom: 12px;
}

.mce-field > label[b-9wchz6a2pk] {
    display: block;
    margin-bottom: 4px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

.mce-required[b-9wchz6a2pk]{
    color: var(--lb-danger);
    font-size: 0.8rem;
    margin-top: 6px;
}

.mce-system-note[b-9wchz6a2pk] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 10px 12px;
    margin-bottom: 12px;
    font-size: 0.85rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
}

[b-9wchz6a2pk] .mce-badge {
    display: inline-block;
    padding: 2px 8px;
    font-size: 0.72rem;
    font-weight: 700;
    border-radius: 10px;
    background: var(--lb-text-muted);
    color: #fff;
}

[b-9wchz6a2pk] .mce-radio-row {
    display: flex;
    gap: 18px;
}

[b-9wchz6a2pk] .mce-radio {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    font-weight: 400;
    color: var(--lb-text);
    cursor: pointer;
}

.mce-computed[b-9wchz6a2pk]{
    padding: 10px 12px;
    margin-bottom: 12px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
}

[b-9wchz6a2pk] .mce-segment {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 6px;
}

[b-9wchz6a2pk] .mce-segment > * {
    flex: 0 0 auto;
}

[b-9wchz6a2pk] .mce-segment > .e-input-group {
    flex: 1 1 auto;
}

[b-9wchz6a2pk] .mce-preview {
    margin-top: 4px;
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}
/* /Components/Dialogs/MergeSpecialPromptDialog.razor.rz.scp.css */
/* ============================================================
   MergeSpecialPromptDialog -- interactive special-code prompts
   ============================================================ */

.msp-loading[b-ek66wmy3d6],
.msp-error[b-ek66wmy3d6] {
    display: flex;
    align-items: center;
    padding: 16px 4px;
    font-size: 0.9rem;
}

.msp-error[b-ek66wmy3d6]{
    color: var(--lb-danger);
    justify-content: space-between;
    gap: 12px;
}

.msp-field[b-ek66wmy3d6]{
    margin-bottom: 14px;
}

.msp-field label[b-ek66wmy3d6] {
    display: block;
    margin-bottom: 4px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

.msp-required[b-ek66wmy3d6]{
    color: var(--lb-danger);
    font-size: 0.78rem;
    margin-top: 4px;
}

.msp-hint[b-ek66wmy3d6]{
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin-bottom: 10px;
}

.msp-preview[b-ek66wmy3d6] {
    margin-top: 8px;
    padding: 8px 10px;
    font-size: 0.82rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    max-height: 120px;
    overflow-y: auto;
}

/* Column chooser chips */
.msp-columns[b-ek66wmy3d6] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 10px;
}

[b-ek66wmy3d6] .msp-col-chip {
    padding: 3px 10px;
    font-size: 0.78rem;
    border: 1px solid var(--lb-border);
    border-radius: 12px;
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    cursor: pointer;
}

[b-ek66wmy3d6] .msp-col-chip.msp-col-on {
    background: var(--lb-brand);
    border-color: var(--lb-brand);
    color: #fff;
}

/* Selection tables */
.msp-table-wrap[b-ek66wmy3d6] {
    max-height: 320px;
    overflow-y: auto;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
}

[b-ek66wmy3d6] .msp-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.82rem;
}

[b-ek66wmy3d6] .msp-table th,
[b-ek66wmy3d6] .msp-table td {
    padding: 5px 8px;
    border-bottom: 1px solid var(--lb-border);
    text-align: left;
    vertical-align: top;
}

[b-ek66wmy3d6] .msp-table thead th {
    position: sticky;
    top: 0;
    background: var(--lb-surface-alt);
    font-weight: 600;
}

[b-ek66wmy3d6] .msp-check-col {
    width: 32px;
    text-align: center;
}

[b-ek66wmy3d6] .msp-amount-col {
    text-align: right;
    white-space: nowrap;
}

[b-ek66wmy3d6] .msp-empty {
    text-align: center;
    color: var(--lb-text-muted);
    padding: 16px;
}

[b-ek66wmy3d6] .msp-total-label {
    font-weight: 600;
    text-align: right;
}

[b-ek66wmy3d6] .msp-total-value {
    font-weight: 700;
}

/* Docket radio row */
[b-ek66wmy3d6] .msp-radio-row {
    display: flex;
    gap: 18px;
}

[b-ek66wmy3d6] .msp-radio {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    font-weight: 400;
    color: var(--lb-text);
    cursor: pointer;
}
/* /Components/Dialogs/NewChannelDialog.razor.rz.scp.css */
/* =====================================================================
   NewChannelDialog.razor.css -- Scoped styles for the new channel dialog
   ===================================================================== */

.new-channel-form[b-ho4bdvk7lj] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 4px 0;
}

.form-field[b-ho4bdvk7lj] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-ho4bdvk7lj] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text-primary);
}

.required-indicator[b-ho4bdvk7lj] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-optional[b-ho4bdvk7lj] {
    font-weight: 400;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

.field-hint[b-ho4bdvk7lj] {
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

.field-validation-error[b-ho4bdvk7lj] {
    font-size: 0.8rem;
    color: var(--lb-danger);
}

.validation-errors[b-ho4bdvk7lj] {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger-border);
    border-radius: 6px;
    padding: 10px 14px;
    font-size: 0.83rem;
    color: var(--lb-danger-text);
}

.validation-errors p[b-ho4bdvk7lj] {
    margin: 0;
}

.dialog-footer[b-ho4bdvk7lj] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .dialog-footer[b-ho4bdvk7lj] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/NewContactDialog.razor.rz.scp.css */
/* NewContactDialog.razor — scoped styles */

.new-contact-body[b-m27fv7p4g1] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.new-contact-row[b-m27fv7p4g1] {
    display: flex;
    gap: 12px;
}

.new-contact-row > .new-contact-field[b-m27fv7p4g1] {
    flex: 1;
    min-width: 0;
}

.new-contact-field[b-m27fv7p4g1] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-m27fv7p4g1] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-m27fv7p4g1] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-error[b-m27fv7p4g1] {
    font-size: 0.78rem;
    color: var(--lb-danger);
}

.new-contact-error[b-m27fv7p4g1] {
    font-size: 0.8rem;
    color: var(--lb-danger);
    padding: 8px 12px;
    background: var(--lb-danger-bg);
    border-radius: 4px;
}

.duplicate-panel[b-m27fv7p4g1] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 10px;
    border: 1px solid var(--lb-warning, #f5c26b);
    background: #fffaf0;
    border-radius: 4px;
}

.duplicate-heading[b-m27fv7p4g1] {
    font-size: 0.82rem;
    font-weight: 600;
}

.duplicate-item[b-m27fv7p4g1] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}

.duplicate-item-text[b-m27fv7p4g1] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
    font-size: 0.8rem;
}

.duplicate-actions[b-m27fv7p4g1] {
    display: flex;
    justify-content: flex-end;
}

.new-contact-footer[b-m27fv7p4g1] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding: 4px 0;
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .new-contact-footer[b-m27fv7p4g1] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/NewDocumentDialog.razor.rz.scp.css */
/* NewDocumentDialog.razor -- scoped styles */

/* Two-zone footer: utilities left, primary actions right */
.doc-dialog-footer[b-00x9vix84d] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
    width: 100%;
    padding: 4px 0;
}

[b-00x9vix84d] .doc-dialog-footer-left,
[b-00x9vix84d] .doc-dialog-footer-right {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* Consistent button sizing */
.doc-dialog-footer[b-00x9vix84d]  .e-btn {
    min-width: 90px;
    height: 32px;
    text-transform: none;
}

/* QuickFollowUpButton inherits the same height */
.doc-dialog-footer[b-00x9vix84d]  .follow-up-btn.e-btn {
    height: 32px;
    min-width: auto;
}

/* ---- Format choice row (Word / Spreadsheet / AI Draft) ---- */
.doc-format-row[b-00x9vix84d] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px;
    margin-bottom: 14px;
}

[b-00x9vix84d] .doc-format-card {
    border: 1px solid #e0e0e0;
    border-radius: 8px;
    padding: 10px 12px;
    text-align: center;
    cursor: pointer;
    background: #fff;
}

[b-00x9vix84d] .doc-format-card:hover {
    background: #f8f8f8;
}

[b-00x9vix84d] .doc-format-card.selected {
    border-color: #cc6c2c;
    background: rgba(204, 108, 44, 0.08);
    box-shadow: 0 0 0 1px #cc6c2c;
}

[b-00x9vix84d] .doc-format-icon {
    display: block;
    font-size: 1.3rem;
    margin-bottom: 2px;
    color: #6c757d;
}

[b-00x9vix84d] .doc-format-icon-emoji {
    font-size: 1.15rem;
}

[b-00x9vix84d] .doc-format-card.selected .doc-format-icon {
    color: #cc6c2c;
}

[b-00x9vix84d] .doc-format-name {
    font-weight: 600;
    font-size: 0.85rem;
}

[b-00x9vix84d] .doc-format-sub {
    font-size: 0.72rem;
    color: #7a8392;
}

/* ---- Spreadsheet "Start From" picker ---- */
.doc-spreadsheet-picker .section-hdr[b-00x9vix84d]{
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: #7a8392;
    border-bottom: 1px solid #ecebe6;
    padding-bottom: 4px;
    margin: 12px 0 8px;
}

[b-00x9vix84d] .doc-spreadsheet-filter-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
    flex-wrap: wrap;
}

[b-00x9vix84d] .practice-area-pill {
    font-size: 0.78rem;
    font-weight: 600;
    color: #cc6c2c;
    background: rgba(204, 108, 44, 0.08);
    border: 1px solid #cc6c2c;
    border-radius: 6px;
    padding: 3px 10px;
}

[b-00x9vix84d] .doc-casetype-filter {
    max-width: 220px;
}

[b-00x9vix84d] .doc-spreadsheet-loading {
    font-size: 0.85rem;
    color: #7a8392;
}

[b-00x9vix84d] .tpl-list {
    max-height: 220px;
    overflow-y: auto;
    margin-bottom: 8px;
}

[b-00x9vix84d] .tpl-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 7px 9px;
    border: 1px solid transparent;
    border-radius: 6px;
    cursor: pointer;
}

[b-00x9vix84d] .tpl-row:hover {
    background: #f6f5f1;
}

[b-00x9vix84d] .tpl-row.selected {
    border-color: #cc6c2c;
    background: rgba(204, 108, 44, 0.08);
}

[b-00x9vix84d] .tpl-name {
    font-size: 0.85rem;
    font-weight: 600;
}

[b-00x9vix84d] .tpl-sub {
    font-size: 0.72rem;
    color: #7a8392;
}

[b-00x9vix84d] .pill {
    font-size: 0.66rem;
    font-weight: 700;
    border-radius: 999px;
    padding: 2px 9px;
    white-space: nowrap;
}

[b-00x9vix84d] .pill-pi {
    background: #ebf3fa;
    color: #3a6b9a;
}

[b-00x9vix84d] .pill-wc {
    background: #fbf0e8;
    color: #c05f1a;
}

[b-00x9vix84d] .pill-both {
    background: #f6f5f1;
    color: #7a8392;
}

.doc-spreadsheet-picker .form-grid-2[b-00x9vix84d] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 18px;
    margin-top: 8px;
}

.doc-spreadsheet-picker .fld label[b-00x9vix84d] {
    font-size: 0.74rem;
    font-weight: 600;
    display: block;
    margin-bottom: 3px;
}

[b-00x9vix84d] .doc-required {
    color: #c94a3a;
}
/* /Components/Dialogs/OpportunityDetailDialog.razor.rz.scp.css */
/* OpportunityDetailDialog.razor.css */

.opp-dlg-loading[b-33gmofz45h] {
    display: flex;
    justify-content: center;
    padding: 2rem;
    color: var(--lb-text-secondary);
}

.opp-dlg-body[b-33gmofz45h] {
    padding: 0.5rem;
    overflow-y: auto;
}

.opp-dlg-footer[b-33gmofz45h] {
    display: flex;
    gap: 0.5rem;
    justify-content: flex-end;
}

/* Destructive action pinned to the far left, away from Save / Convert / Close.
   ::deep is required: CssClass lands the class on SfButton's OWN rendered element,
   which does not carry this component's scope attribute, so a plain
   ".opp-dlg-delete" selector here would match nothing. */
.opp-dlg-footer[b-33gmofz45h]  .opp-dlg-delete {
    margin-right: auto;
}

/* Disabled "Convert to Case" affordance shown on non-Approved leads (#1127).
   The wrapper carries the explanatory tooltip and the not-allowed cursor.
   A disabled <button> swallows hover hit-testing, so without pointer-events:none
   on the button the wrapper's title tooltip and not-allowed cursor never surface. */
.opp-convert-locked[b-33gmofz45h] {
    display: inline-flex;
    cursor: not-allowed;
}

.opp-convert-locked[b-33gmofz45h]  .e-btn {
    pointer-events: none;
}

/* Always-visible companion hint to the disabled button: explains on-screen why
   conversion is blocked so it never reads as broken (#1127). margin-right:auto
   keeps it left while the footer's action buttons stay right-aligned. */
.opp-convert-hint[b-33gmofz45h] {
    margin-right: auto;
    align-self: center;
    font-size: 0.8rem;
    color: var(--lb-text-secondary);
}

/* Form sections — reused from OpportunityFormPage */
.opp-form-section[b-33gmofz45h] {
    border: 1px solid var(--lb-border-color);
    border-radius: 6px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
    background: var(--lb-card);
}

.opp-section-title[b-33gmofz45h] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    padding: 0 0.5rem;
    width: auto;
}

.opp-form-grid[b-33gmofz45h] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem 1.25rem;
}

.opp-field[b-33gmofz45h] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.opp-field label[b-33gmofz45h] {
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--lb-text-secondary);
}

.opp-field-wide[b-33gmofz45h] {
    grid-column: 1 / -1;
}

.opp-field-checkbox[b-33gmofz45h] {
    display: flex;
    align-items: center;
    padding-top: 0.5rem;
}

.opp-required[b-33gmofz45h] {
    color: var(--lb-danger);
}

/* Notes */
.opp-notes-add[b-33gmofz45h] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 1rem;
}

.opp-notes-add[b-33gmofz45h]  .e-textbox {
    flex: 1;
}

.opp-notes-list[b-33gmofz45h] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.opp-note-item[b-33gmofz45h] {
    border: 1px solid var(--lb-border-color);
    border-radius: 4px;
    padding: 0.6rem 0.75rem;
    background: var(--lb-surface-alt);
}

.opp-note-header[b-33gmofz45h] {
    display: flex;
    justify-content: space-between;
    margin-bottom: 0.25rem;
    font-size: 0.78rem;
}

.opp-note-author[b-33gmofz45h] {
    font-weight: 600;
    color: var(--lb-text-primary);
}

.opp-note-date[b-33gmofz45h] {
    color: var(--lb-text-secondary);
}

.opp-note-text[b-33gmofz45h] {
    font-size: 0.85rem;
    color: var(--lb-text-primary);
    white-space: pre-wrap;
}

.opp-notes-empty[b-33gmofz45h] {
    color: var(--lb-text-secondary);
    font-style: italic;
    font-size: 0.85rem;
}

@media (max-width: 768px) {
    .opp-form-grid[b-33gmofz45h] {
        grid-template-columns: 1fr;
    }

    .opp-notes-add[b-33gmofz45h] {
        flex-direction: column;
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    .opp-dlg-footer[b-33gmofz45h] {
        flex-wrap: wrap;
    }
}
/* /Components/Dialogs/Portal/PortalAccessDialog.razor.rz.scp.css */
/* PortalAccessDialog -- scoped styles.
   Colours come from the app's :root tokens; nothing is hard-coded. */

.portal-access-loading[b-dqs6ytbgkr] {
    padding: 1.5rem;
    text-align: center;
    color: var(--lb-text-muted);
}

.portal-access-section[b-dqs6ytbgkr] {
    margin-bottom: 1.25rem;
}

.portal-access-section h5[b-dqs6ytbgkr] {
    font-size: .95rem;
    font-weight: 650;
    margin: 0 0 .6rem;
    color: var(--lb-text);
}

.portal-grant-list[b-dqs6ytbgkr] {
    list-style: none;
    margin: 0;
    padding: 0;
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    overflow: hidden;
}

.portal-grant[b-dqs6ytbgkr] {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .7rem .9rem;
    border-bottom: 1px solid var(--lb-border-light);
}

.portal-grant:last-child[b-dqs6ytbgkr] {
    border-bottom: 0;
}

/* Revoked rows stay visible but recede -- staff need the history, and a
   disappearing row reads as "did my click work?". */
.portal-grant.is-revoked[b-dqs6ytbgkr] {
    background: var(--lb-surface-alt);
    opacity: .75;
}

.grant-main[b-dqs6ytbgkr] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.grant-name[b-dqs6ytbgkr] {
    font-weight: 600;
    color: var(--lb-text);
}

.grant-email[b-dqs6ytbgkr] {
    font-size: .85rem;
    color: var(--lb-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
}

.grant-meta[b-dqs6ytbgkr] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .15rem;
    font-size: .8rem;
    white-space: nowrap;
}

/* Each state carries a word, so colour is never the only signal. */
.grant-state.active[b-dqs6ytbgkr] { color: var(--lb-success); }
.grant-state.pending[b-dqs6ytbgkr] { color: var(--lb-warning); }
.grant-state.revoked[b-dqs6ytbgkr] { color: var(--lb-text-muted); }

.grant-sessions[b-dqs6ytbgkr] {
    color: var(--lb-text-muted);
}

.portal-invite-warning[b-dqs6ytbgkr] {
    background: var(--lb-warning-bg);
    border-left: 3px solid var(--lb-warning);
    border-radius: 6px;
    padding: .65rem .8rem;
    font-size: .875rem;
    margin-top: .6rem;
}

.portal-invite-target[b-dqs6ytbgkr] {
    font-size: .875rem;
    color: var(--lb-text-muted);
    margin: .6rem 0 0;
}

@media (max-width: 575.98px) {
    .portal-grant[b-dqs6ytbgkr] {
        flex-wrap: wrap;
        align-items: flex-start;
    }

    .grant-meta[b-dqs6ytbgkr] {
        align-items: flex-start;
    }
}
/* /Components/Dialogs/Portal/PortalPublishDialog.razor.rz.scp.css */
/* Publish-to-portal dialog. Scoped: none of this reaches Syncfusion popups,
   which is fine -- everything here renders inside the dialog content template. */

.publish-doc-context[b-4cqdsgcao9] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin: 0 0 6px;
    min-width: 0;
}

.publish-doc-context strong[b-4cqdsgcao9] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.publish-doc-type[b-4cqdsgcao9] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
    flex-shrink: 0;
}

.publish-state[b-4cqdsgcao9] {
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
    margin: 0 0 14px;
}

.form-field[b-4cqdsgcao9] {
    margin: 14px 0 4px;
}

.field-label[b-4cqdsgcao9] {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 4px;
}

.field-hint[b-4cqdsgcao9] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
    margin: 6px 0 0;
}

.publish-unpublish-row[b-4cqdsgcao9] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 18px;
    padding-top: 12px;
    border-top: 1px solid var(--lb-border, #e5e7eb);
}

/* Destructive-leaning flat button: colored, not filled -- unpublishing is
   reversible (re-publish restores it), so it does not warrant a red primary. */
[b-4cqdsgcao9] .publish-unpublish-btn {
    color: #C94A3A;
}

.publish-unpublish-hint[b-4cqdsgcao9] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
}
/* /Components/Dialogs/RecipientTagInput.razor.rz.scp.css */
/* RecipientTagInput scoped styles */
/* NOTE: Only ASCII characters in comments - Blazor CSS isolation corrupts non-ASCII */

.recipient-tag-input[b-5nx6tnnv8w] {
    width: 100%;
}

/* Ensure the multiselect wrapper has a reasonable minimum height */
[b-5nx6tnnv8w] .e-multiselect.e-input-group {
    min-height: 36px;
}

/* Vertically center chips inside the wrapper */
[b-5nx6tnnv8w] .e-multi-select-wrapper .e-chips-collection .e-chips {
    margin: 2px 4px 2px 0;
}

/* -- Dropdown item layout (email row under group header) -- */
/* Rows are indented under, and visually quieter than, the bright bold
   contact name above them, so the eye anchors on the name when scanning. */
[b-5nx6tnnv8w] .recipient-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 8px 5px 20px;
    line-height: 1.5;
    font-size: 0.84rem;
}

[b-5nx6tnnv8w] .recipient-item.disabled {
    opacity: 0.5;
    cursor: not-allowed;
    padding-left: 20px;
}

/* Give each option row real breathing room so addresses don't run together */
[b-5nx6tnnv8w] .e-list-item {
    padding-top: 4px;
    padding-bottom: 4px;
}

/* Email description label (e.g. "Work:", "Personal:") -- muted, the one
   quiet element so the row still has some shade variation. */
[b-5nx6tnnv8w] .recipient-email-desc {
    font-weight: 600;
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* The address itself -- full brightness so it's easy to read; the bright
   bold NAME above still anchors the eye via its heavier weight and size. */
[b-5nx6tnnv8w] .recipient-email {
    font-size: 0.84rem;
    color: var(--lb-text);
}

[b-5nx6tnnv8w] .recipient-no-email {
    font-size: 0.8rem;
    color: var(--lb-danger);
    font-style: italic;
}

/* Small "Primary" badge next to the primary email */
[b-5nx6tnnv8w] .recipient-primary-badge {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--lb-brand);
    border: 1px solid var(--lb-brand);
    border-radius: 3px;
    padding: 0 4px;
    line-height: 1.4;
    white-space: nowrap;
}

/* -- Group header styling (contact name + case role) -- */
/* The brightest, heaviest text in the list: this is the line the eye
   should land on first. !important beats Syncfusion's default (dimmer)
   group-header color so the name never recedes behind the rows. */
[b-5nx6tnnv8w] .e-list-group-item {
    font-weight: 700;
    font-size: 0.95rem;
    color: var(--lb-text) !important;
    padding: 14px 10px 6px;
    margin-top: 12px;
    /* A translucent gray reads as a divider in BOTH light and dark themes;
       the theme --lb-border is nearly invisible on the dark popup. */
    border-top: 1px solid rgba(128, 128, 128, 0.3);
}

/* No divider/gap above the very first contact in the list */
[b-5nx6tnnv8w] .e-list-group-item:first-of-type {
    margin-top: 2px;
    border-top: none;
}

/* Two-tone header: bright bold contact name, softer muted case role. */
[b-5nx6tnnv8w] .recipient-group-name {
    color: var(--lb-text);
    font-weight: 700;
}

[b-5nx6tnnv8w] .recipient-group-role {
    color: var(--lb-text-muted);
    font-weight: 500;
    margin-left: 5px;
}
/* /Components/Dialogs/RequestSubpoenasDialog.razor.rz.scp.css */
.rs-form[b-gh4k0v5w0n] {
    display: flex;
    flex-direction: column;
}

.rs-section-header[b-gh4k0v5w0n] {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted);
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.35rem;
    margin: 0.75rem 0 0.6rem;
}

.rs-hint[b-gh4k0v5w0n] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0 0 0.6rem;
}

/* Subpoena-document section (hybrid generate flow) */
.rs-gen[b-gh4k0v5w0n] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    margin-bottom: 0.5rem;
}

.rs-gen .rs-hint[b-gh4k0v5w0n] {
    margin: 0 0 0.35rem 1.6rem; /* align under the checkbox label */
}

.rs-add-row[b-gh4k0v5w0n] {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 0.5rem;
    align-items: center;
    margin-bottom: 0.5rem;
}

.rs-empty[b-gh4k0v5w0n] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    padding: 0.5rem 0 0.25rem;
}

/* #2224: the "Click Add" nudge — a brand-tinted cue, not a passive muted note. */
.rs-empty-pending[b-gh4k0v5w0n] {
    color: var(--lb-brand-hover);
}

.rs-empty-pending strong[b-gh4k0v5w0n] {
    color: var(--lb-brand);
}

.rs-chips[b-gh4k0v5w0n] {
    list-style: none;
    padding: 0;
    margin: 0.25rem 0 0.5rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.rs-chip[b-gh4k0v5w0n] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--lb-brand-light);
    color: var(--lb-brand-hover);
    border: 1px solid rgba(var(--lb-brand-rgb), 0.35);
    border-radius: var(--lb-radius-pill);
    padding: 0.15rem 0.55rem;
    font-size: 0.8rem;
}

.rs-chip-x[b-gh4k0v5w0n] {
    border: 0;
    background: transparent;
    color: var(--lb-brand-hover);
    cursor: pointer;
    font-size: 1rem;
    line-height: 1;
    padding: 0;
}

.form-grid-2[b-gh4k0v5w0n] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1.25rem;
}

@media (max-width: 768px) {
    .form-grid-2[b-gh4k0v5w0n] {
        grid-template-columns: 1fr;
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    .rs-footer[b-gh4k0v5w0n] {
        flex-wrap: wrap;
    }
}

.rs-errors[b-gh4k0v5w0n] {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: var(--lb-radius-card);
    padding: 0.5rem 0.75rem;
    margin-top: 0.5rem;
}

.rs-errors p[b-gh4k0v5w0n] {
    margin: 0;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

.rs-footer[b-gh4k0v5w0n] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}
/* /Components/Dialogs/ScheduledEmailsDialog.razor.rz.scp.css */
.se-status[b-4mq8vot1qf] {
    padding: 8px 12px;
    border-radius: 6px;
    margin-bottom: 12px;
    font-size: 0.9rem;
}

.se-success[b-4mq8vot1qf] {
    background: #e8f5e9;
    color: #1b5e20;
}

.se-error[b-4mq8vot1qf] {
    background: #fdecea;
    color: #b71c1c;
}

.se-loading[b-4mq8vot1qf],
.se-empty[b-4mq8vot1qf] {
    padding: 16px 4px;
    color: #555;
    font-size: 0.95rem;
}

.se-table[b-4mq8vot1qf] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.se-table th[b-4mq8vot1qf],
.se-table td[b-4mq8vot1qf] {
    text-align: left;
    padding: 8px 10px;
    border-bottom: 1px solid #e0e0e0;
    vertical-align: top;
}

.se-table th[b-4mq8vot1qf] {
    font-weight: 600;
    color: #444;
    white-space: nowrap;
}

.se-to[b-4mq8vot1qf] {
    max-width: 220px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.se-more[b-4mq8vot1qf] {
    color: #777;
    font-size: 0.8rem;
    margin-left: 4px;
    white-space: nowrap;
}

.se-when[b-4mq8vot1qf] {
    white-space: nowrap;
}

.se-actions[b-4mq8vot1qf] {
    text-align: right;
    white-space: nowrap;
}

.se-badge[b-4mq8vot1qf] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.78rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}

.se-badge-scheduled[b-4mq8vot1qf] {
    background: #e3f2fd;
    color: #0d47a1;
}

.se-badge-sending[b-4mq8vot1qf] {
    background: #fff3e0;
    color: #e65100;
}

.se-badge-failed[b-4mq8vot1qf] {
    background: #fdecea;
    color: #b71c1c;
}

/* -- Overdue note (#2668) --------------------------------------------------- */
/* Shown when a row is still 'Scheduled' well past its send time, so a dispatch
   cycle that ran out of budget is no longer silent to the user. */
.se-late[b-4mq8vot1qf] {
    margin-top: 4px;
    padding: 3px 6px;
    border-radius: 4px;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    font-size: 0.78rem;
    max-width: 240px;
}

.se-rowerror[b-4mq8vot1qf] {
    margin-top: 4px;
    color: #b71c1c;
    font-size: 0.78rem;
    max-width: 240px;
}
/* /Components/Dialogs/SendSignatureDialog.razor.rz.scp.css */
.send-sig-form[b-q4j2xoc2ux] {
    padding: 0.5rem 0;
}

[b-q4j2xoc2ux] .signer-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
    padding: 8px;
    background: var(--lb-surface-alt);
    border-radius: 4px;
}

[b-q4j2xoc2ux] .signer-fields {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    flex: 1;
    align-items: center;
}

[b-q4j2xoc2ux] .signer-role {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

[b-q4j2xoc2ux] .signer-actions {
    display: flex;
    gap: 12px;
    align-items: center;
}

[b-q4j2xoc2ux] .add-signer-link {
    color: var(--lb-brand);
    text-decoration: none;
    font-weight: 500;
}

[b-q4j2xoc2ux] .add-signer-link:hover {
    text-decoration: underline;
}

@media (max-width: 576px) {
    [b-q4j2xoc2ux] .signer-fields {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Dialogs/SignatureDetailDialog.razor.rz.scp.css */
.detail-body[b-jixo9vvobt] {
    padding: 0.5rem 0;
}

[b-jixo9vvobt] .detail-status-header {
    text-align: center;
}

[b-jixo9vvobt] .status-pill-lg {
    display: inline-block;
    padding: 4px 16px;
    border-radius: 16px;
    font-size: 1rem;
    font-weight: 600;
}

[b-jixo9vvobt] .status-pill-sm {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.75rem;
    font-weight: 600;
}

[b-jixo9vvobt] .status-signed {
    background-color: #d4edda;
    color: #155724;
}

[b-jixo9vvobt] .status-sent {
    background-color: #cce5ff;
    color: #004085;
}

[b-jixo9vvobt] .status-sending {
    background-color: #fff3cd;
    color: #856404;
}

[b-jixo9vvobt] .status-declined {
    background-color: #f8d7da;
    color: #721c24;
}

[b-jixo9vvobt] .status-neutral {
    background-color: #e2e3e5;
    color: #383d41;
}

[b-jixo9vvobt] .detail-meta {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-jixo9vvobt] .meta-row {
    display: flex;
    gap: 8px;
}

[b-jixo9vvobt] .meta-label {
    font-weight: 600;
    min-width: 90px;
}

[b-jixo9vvobt] .signer-table {
    width: 100%;
    border-collapse: collapse;
}

[b-jixo9vvobt] .signer-table th,
[b-jixo9vvobt] .signer-table td {
    padding: 6px 10px;
    text-align: left;
    border-bottom: 1px solid #dee2e6;
    font-size: 0.875rem;
}

[b-jixo9vvobt] .signer-table th {
    font-weight: 600;
    background-color: #f8f9fa;
}

[b-jixo9vvobt] .decline-reason-row td {
    font-style: italic;
    color: #721c24;
    background-color: #fff5f5;
}

[b-jixo9vvobt] .detail-actions {
    display: flex;
    gap: 8px;
}
/* /Components/Dialogs/Sms/SmsComposeAttachments.razor.rz.scp.css */
.sms-attach[b-z17ebyzoug] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

/* Compact "Attach" button that wraps the (visually hidden) native file input. */
.sms-attach-btn[b-z17ebyzoug] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    align-self: flex-start;
    padding: 4px 10px;
    margin: 0;
    font-size: 12px;
    font-weight: 500;
    color: var(--lb-text-muted, #5b6b7b);
    background-color: var(--lb-surface-alt, #f4f6f8);
    border: 1px solid var(--lb-border, #d6dde3);
    border-radius: 6px;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease;
}

.sms-attach-btn:hover[b-z17ebyzoug] {
    background-color: var(--lb-card);
    border-color: var(--lb-primary, #cc6c2c);
    color: var(--lb-primary, #cc6c2c);
}

.sms-attach-btn-text[b-z17ebyzoug] {
    line-height: 1;
}

/* The native input is laid over the label but invisible so our button shows instead. */
.sms-attach-input[b-z17ebyzoug] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    border: 0;
}

.sms-attach-error[b-z17ebyzoug] {
    font-size: 12px;
    color: var(--lb-danger, #c0392b);
}

.sms-attach-chips[b-z17ebyzoug] {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.sms-attach-chip[b-z17ebyzoug] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 240px;
    padding: 3px 6px 3px 8px;
    font-size: 12px;
    background-color: var(--lb-surface-alt, #f4f6f8);
    border: 1px solid var(--lb-border, #d6dde3);
    border-radius: 12px;
}

.sms-attach-chip-icon[b-z17ebyzoug] {
    font-size: 14px;
    color: var(--lb-text-muted, #5b6b7b);
    flex-shrink: 0;
}

.sms-attach-chip-name[b-z17ebyzoug] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 500;
}

.sms-attach-chip-size[b-z17ebyzoug] {
    color: var(--lb-text-muted, #5b6b7b);
    flex-shrink: 0;
}

.sms-attach-chip-remove[b-z17ebyzoug] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 16px;
    height: 16px;
    padding: 0;
    font-size: 14px;
    line-height: 1;
    color: var(--lb-text-muted, #5b6b7b);
    background: none;
    border: none;
    border-radius: 50%;
    cursor: pointer;
    flex-shrink: 0;
}

.sms-attach-chip-remove:hover[b-z17ebyzoug] {
    color: var(--lb-danger, #c0392b);
    background-color: var(--lb-border, #d6dde3);
}
/* /Components/Dialogs/Sms/SmsNewConversationDialog.razor.rz.scp.css */
/* ================================================================
   SmsNewConversationDialog.razor.css -- Scoped styles for the
   new SMS conversation contact picker dialog.
   Uses --lb-* design tokens from app.css. ASCII comments only.
   ================================================================ */

/* -- Loading / empty states -- */
.sms-newconv-loading[b-t01e0fzl8o] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px 20px;
    color: var(--lb-text-muted);
    font-size: 14px;
}

.sms-newconv-empty[b-t01e0fzl8o]{
    text-align: center;
    color: var(--lb-text-muted);
    padding: 40px 20px;
    font-size: 14px;
}

/* -- Contact list container -- */
.sms-newconv-contacts[b-t01e0fzl8o] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    max-height: 400px;
    overflow-y: auto;
}

.sms-newconv-contacts .field-label[b-t01e0fzl8o]{
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    padding: 0 4px 8px;
}

/* -- Individual contact row -- */
[b-t01e0fzl8o] .sms-contact-row {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 6px;
    cursor: pointer;
    transition: background 0.15s;
}

[b-t01e0fzl8o] .sms-contact-row:hover:not(.disabled) {
    background: var(--lb-hover);
}

[b-t01e0fzl8o] .sms-contact-row.disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

/* -- Avatar -- */
[b-t01e0fzl8o] .sms-contact-avatar {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    font-size: 13px;
    flex-shrink: 0;
    line-height: 1;
}

[b-t01e0fzl8o] .sms-avatar--purple {
    background: #EEEDFE;
    color: #3C3489;
}

[b-t01e0fzl8o] .sms-avatar--coral {
    background: #FAECE7;
    color: #712B13;
}

[b-t01e0fzl8o] .sms-avatar--teal {
    background: #E1F5EE;
    color: #085041;
}

[b-t01e0fzl8o] .sms-avatar--amber {
    background: #FAEEDA;
    color: #633806;
}

[b-t01e0fzl8o] .sms-avatar--info {
    background: var(--lb-info-bg, #E8F4FD);
    color: var(--lb-info, #1A6FB5);
}

[b-t01e0fzl8o] .sms-avatar--gray {
    background: var(--lb-bg-surface, #F0F0F0);
    color: var(--lb-text-muted);
}

/* -- Contact info (name + phone) -- */
[b-t01e0fzl8o] .sms-contact-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

[b-t01e0fzl8o] .sms-contact-name {
    font-weight: 600;
    font-size: 14px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-t01e0fzl8o] .sms-contact-phone {
    font-size: 12px;
    color: var(--lb-text-muted);
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-t01e0fzl8o] .sms-phone-count {
    font-size: 11px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 3px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* -- Status badges (right side) -- */
[b-t01e0fzl8o] .sms-contact-status {
    flex-shrink: 0;
    display: flex;
    align-items: center;
}

[b-t01e0fzl8o] .sms-no-phone-badge {
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 3px;
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    white-space: nowrap;
}

[b-t01e0fzl8o] .sms-optout-badge {
    font-size: 11px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 3px;
    background: var(--lb-danger-light);
    color: var(--lb-danger);
    white-space: nowrap;
}

/* -- Step 2: Compose area -- */
.sms-newconv-compose[b-t01e0fzl8o] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

[b-t01e0fzl8o] .sms-newconv-selected {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: var(--lb-surface-alt);
    border-radius: 6px;
    border: 1px solid var(--lb-border);
}

[b-t01e0fzl8o] .sms-newconv-selected .field-label {
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin: 0;
}

[b-t01e0fzl8o] .sms-selected-name {
    font-weight: 600;
    font-size: 14px;
    flex: 1;
}

[b-t01e0fzl8o] .sms-phone-picker,
[b-t01e0fzl8o] .sms-line-picker {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-t01e0fzl8o] .sms-newconv-message {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-t01e0fzl8o] .sms-char-counter {
    font-size: 11px;
    color: var(--lb-text-muted);
    text-align: right;
}
/* /Components/Dialogs/Sms/SmsRedactConfirmDialog.razor.rz.scp.css */
.sms-redact-body[b-91tkzdp2fq] {
    padding: 8px 0;
}

.sms-redact-warning[b-91tkzdp2fq] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-bottom: 12px;
}

.sms-redact-description[b-91tkzdp2fq] {
    color: var(--lb-text);
    margin-bottom: 16px;
}

.sms-redact-actions[b-91tkzdp2fq] {
    display: flex;
    gap: 8px;
    justify-content: flex-end;
}
/* /Components/Dialogs/Sms/SmsRequestSignatureDialog.razor.rz.scp.css */
.sig-request-dialog[b-zz4rd4r9q2] {
    padding: 8px;
}

.sig-request-field[b-zz4rd4r9q2] {
    margin-bottom: 16px;
}

.sig-request-field .field-label[b-zz4rd4r9q2] {
    display: block;
    font-weight: 600;
    margin-bottom: 4px;
    font-size: 0.9rem;
}

.sp-field-hint[b-zz4rd4r9q2] {
    font-size: 0.8rem;
    color: #888;
    margin-top: 4px;
    display: block;
}

.sig-request-error[b-zz4rd4r9q2] {
    padding: 10px 14px;
    margin-bottom: 16px;
    background: #fde8e8;
    border: 1px solid #f5c6cb;
    border-radius: 4px;
    color: #842029;
    font-size: 0.9rem;
}

.sig-request-actions[b-zz4rd4r9q2] {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    padding-top: 8px;
}

/* Destination verification banner (#583) — confirms where the signing link is sent. */
.sig-request-destination[b-zz4rd4r9q2] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    margin-bottom: 16px;
    background: #eef5ff;
    border: 1px solid #cfe0ff;
    border-radius: 4px;
    color: #1f3d7a;
    font-size: 0.9rem;
}

.sig-request-destination .e-icons[b-zz4rd4r9q2] {
    font-size: 1rem;
    opacity: 0.7;
}

.sig-request-destination-warn[b-zz4rd4r9q2] {
    color: #842029;
}
/* /Components/Dialogs/Sms/SmsTemplatePickerDialog.razor.rz.scp.css */
.sms-template-empty[b-oop4rrm6hv] {
    text-align: center;
    color: var(--lb-text-dim);
    padding: 16px;
}
/* /Components/Dialogs/SupportTicketDialog.razor.rz.scp.css */
/* Contact Support dialog -- Option 3 "Two-Pane Transparency".
   Compose left, outbound envelope right; stacks to one column on small screens. */

.support-panes[b-ruh2i0c3dt] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 0;
}

.support-pane-form[b-ruh2i0c3dt] {
    padding: 0.25rem 1rem 0.25rem 0;
    min-width: 0;
}

.support-pane-side[b-ruh2i0c3dt] {
    padding: 0.25rem 0 0.25rem 1rem;
    border-left: 1px solid var(--lb-border-light);
    min-width: 0;
}

.support-side-head[b-ruh2i0c3dt] {
    margin: 0 0 0.5rem;
    font-size: 0.72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted);
}

.support-side-block[b-ruh2i0c3dt] {
    margin-top: 1.35rem;
    padding-top: 0.9rem;
    border-top: 1px solid var(--lb-border-light);
}

.support-side-btn[b-ruh2i0c3dt] {
    width: 100%;
}

/* Two-column field pair. CSS grid, never Bootstrap columns -- col-* fights the
   dialog's own flex layout. */
.support-grid-2[b-ruh2i0c3dt] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1.25rem;
}

/* ---- Confidentiality notice: caution weight, deliberately not dismissible ---- */
.lb-confidential[b-ruh2i0c3dt] {
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning-border);
    border-left: 3px solid var(--lb-warning);
    color: var(--lb-warning-text);
    border-radius: 6px;
    padding: 0.6rem 0.75rem;
    font-size: 0.82rem;
    margin-bottom: 0.9rem;
}

/* ONLY the leading strong is a heading line. The selector used to be
   `.lb-confidential strong`, which also caught mid-sentence emphasis — the
   recording consent notice says "Share <strong>only the Longbow tab</strong> —
   not your whole screen", and turning that into a block broke the sentence
   across three lines. Scope it to the first child so emphasis inside the prose
   stays inline. */
.lb-confidential > strong:first-child[b-ruh2i0c3dt] {
    display: block;
    margin-bottom: 0.1rem;
}

.lb-hint[b-ruh2i0c3dt] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    margin-top: 0.25rem;
}

.lb-required[b-ruh2i0c3dt] {
    color: var(--lb-danger);
    margin-left: 0.15rem;
}

/* ---- Outbound envelope ---- */
.support-envelope[b-ruh2i0c3dt] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    padding: 0.6rem 0.7rem;
    font-size: 0.78rem;
}

.support-envelope dl[b-ruh2i0c3dt] {
    margin: 0;
    display: grid;
    grid-template-columns: 4.8rem minmax(0, 1fr);
    gap: 0.25rem 0.5rem;
}

.support-envelope dt[b-ruh2i0c3dt] {
    color: var(--lb-text-muted);
}

.support-envelope dd[b-ruh2i0c3dt] {
    margin: 0;
    overflow-wrap: anywhere;
}

/* ---- AI answer ---- */
.support-ai-block[b-ruh2i0c3dt] {
    margin-top: 1rem;
}

.lb-ai-banner[b-ruh2i0c3dt] {
    background: var(--lb-info-bg);
    border: 1px solid var(--lb-info-border);
    color: var(--lb-info-text);
    border-radius: 6px;
    padding: 0.4rem 0.6rem;
    font-size: 0.76rem;
    margin-bottom: 0.5rem;
}

.support-ai-answer[b-ruh2i0c3dt] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-left: 3px solid var(--lb-purple);
    border-radius: 6px;
    padding: 0.75rem 0.85rem;
    font-size: 0.87rem;
    white-space: pre-wrap;
}

/* Shown in place of the AI button once that path is closed (terms not accepted,
   daily cap, failure) — the control disappears rather than sitting there dead. */
.support-ai-notice[b-ruh2i0c3dt] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    padding: 0.5rem 0.6rem;
    margin: 0;
}

.support-ai-actions[b-ruh2i0c3dt] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.7rem;
    flex-wrap: wrap;
}

.support-ai-prompt[b-ruh2i0c3dt] {
    font-size: 0.85rem;
    font-weight: 600;
    margin-right: auto;
}

/* ---- Attachments ---- */
.support-file-input[b-ruh2i0c3dt] {
    font-size: 0.82rem;
}

.support-chip-row[b-ruh2i0c3dt] {
    display: flex;
    gap: 0.4rem;
    flex-wrap: wrap;
    margin-top: 0.5rem;
}

.support-chip[b-ruh2i0c3dt] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-pill);
    padding: 0.2rem 0.5rem 0.2rem 0.35rem;
    font-size: 0.75rem;
}

.support-chip-thumb[b-ruh2i0c3dt] {
    width: 18px;
    height: 18px;
    border-radius: 3px;
    background: linear-gradient(135deg, var(--lb-border), var(--lb-elevated));
}

/* Real pixels, for images the user never saw full-size (paste and capture).
   Deliberately larger than the placeholder square: an 18px thumbnail cannot
   show a client name, and catching that is the entire point of showing it. */
.support-chip-img[b-ruh2i0c3dt] {
    width: 44px;
    height: 30px;
    object-fit: cover;
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
}

.support-chip-x[b-ruh2i0c3dt] {
    border: none;
    background: none;
    cursor: pointer;
    color: var(--lb-text-muted);
    padding: 0 0.1rem;
    line-height: 1;
}

.support-chip-x:hover[b-ruh2i0c3dt] {
    color: var(--lb-danger);
}

/* ---- Screenshot capture ---- */

/* A camera aperture, drawn rather than iconed: this dialog is mounted in TopBar
   and must not depend on an icon font loading. */
.support-shot-icon[b-ruh2i0c3dt] {
    width: 0.7rem;
    height: 0.7rem;
    border: 2px solid var(--lb-text-muted);
    border-radius: 2px;
    flex: none;
}

.support-shot-live[b-ruh2i0c3dt] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 2px;
    border: 2px solid #fff;
    flex: none;
}

.support-shot-prompt[b-ruh2i0c3dt] {
    font-size: 0.82rem;
}

.support-shot-cancel[b-ruh2i0c3dt] {
    background: none;
    border: none;
    color: var(--lb-text-on-dark-muted);
    font: inherit;
    font-size: 0.8rem;
    cursor: pointer;
    padding: 0.25rem 0.4rem;
}

.support-shot-cancel:hover[b-ruh2i0c3dt] {
    color: #fff;
}

/* The paste hint sits inside a hint line, so keep the keycaps from inflating it. */
.lb-hint kbd[b-ruh2i0c3dt] {
    background: var(--lb-elevated);
    border: 1px solid var(--lb-border);
    border-radius: 3px;
    padding: 0 0.25rem;
    font-family: inherit;
    font-size: 0.95em;
}

/* ---- Screen recording ---- */
.support-capture-row[b-ruh2i0c3dt] {
    display: flex;
    gap: 0.6rem;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 0.6rem;
}

.support-record-btn[b-ruh2i0c3dt] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 0.4rem 0.7rem;
    cursor: pointer;
    font: inherit;
    font-size: 0.82rem;
    color: var(--lb-text);
}

.support-record-btn:hover:not(:disabled)[b-ruh2i0c3dt] {
    border-color: var(--lb-brand);
    background: var(--lb-brand-light);
}

.support-record-btn:disabled[b-ruh2i0c3dt] {
    opacity: 0.6;
    cursor: default;
}

.support-rec-dot[b-ruh2i0c3dt] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: var(--lb-danger);
    flex: none;
}

.support-consent[b-ruh2i0c3dt] {
    margin-top: 0.6rem;
}

/* The microphone warning sits inside the existing caution block but must not read
   as a continuation of the screen-sharing sentence — it is a separate risk. */
.support-consent-audio[b-ruh2i0c3dt] {
    margin: 0.5rem 0 0;
    padding-top: 0.5rem;
    border-top: 1px solid var(--lb-warning-border);
}

.support-voice-toggle[b-ruh2i0c3dt] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    margin-top: 0.6rem;
    font-weight: 600;
    cursor: pointer;
    flex-wrap: wrap;
}

.support-voice-toggle .lb-hint[b-ruh2i0c3dt] {
    margin-top: 0;
    font-weight: 400;
}

/* Sized to read at a glance on the dark pill: a live microphone is the one fact
   here that the screen itself cannot tell you. */
.support-mic-live[b-ruh2i0c3dt] {
    font-size: 0.9rem;
    line-height: 1;
    flex: none;
}

.support-consent-actions[b-ruh2i0c3dt] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.6rem;
    flex-wrap: wrap;
}

/* The only chrome left while the dialog is minimized and the user reenacts. */
.support-rec-pill[b-ruh2i0c3dt] {
    display: inline-flex;
    align-items: center;
    gap: 0.6rem;
    background: var(--lb-sidebar);
    color: #fff;
    border-radius: var(--lb-radius-pill);
    padding: 0.45rem 0.55rem 0.45rem 0.8rem;
    box-shadow: var(--lb-shadow-lg);
    font-size: 0.84rem;
    margin-top: 0.6rem;
}

.support-rec-live[b-ruh2i0c3dt] {
    width: 0.55rem;
    height: 0.55rem;
    border-radius: 50%;
    background: #e5533d;
    flex: none;
    animation: support-rec-blink-b-ruh2i0c3dt 1.4s ease-in-out infinite;
}

/* Motion is minimal by house style, but a recording indicator that does not
   move is easy to miss — and missing it means recording your screen unawares. */
@keyframes support-rec-blink-b-ruh2i0c3dt {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.35; }
}

@media (prefers-reduced-motion: reduce) {
    .support-rec-live[b-ruh2i0c3dt] { animation: none; }
}

.support-rec-time[b-ruh2i0c3dt] {
    font-variant-numeric: tabular-nums;
    font-weight: 600;
}

.support-rec-max[b-ruh2i0c3dt] {
    color: var(--lb-text-on-dark-muted);
    font-size: 0.76rem;
}

.support-rec-stop[b-ruh2i0c3dt] {
    background: #fff;
    color: var(--lb-sidebar);
    border: none;
    border-radius: var(--lb-radius-pill);
    padding: 0.25rem 0.8rem;
    font: inherit;
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
}

.support-rec-preview[b-ruh2i0c3dt] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    overflow: hidden;
    background: var(--lb-surface-alt);
    margin-top: 0.6rem;
}

.support-rec-video[b-ruh2i0c3dt] {
    display: block;
    width: 100%;
    max-height: 220px;
    background: #000;
}

.support-rec-meta[b-ruh2i0c3dt] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.65rem;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-bg-white);
    flex-wrap: wrap;
}

.support-rec-facts[b-ruh2i0c3dt] {
    font-size: 0.8rem;
    margin-right: auto;
}

/* ---- Recent tickets ---- */
.support-recent-row[b-ruh2i0c3dt] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.38rem 0;
    border-bottom: 1px solid var(--lb-border-light);
    font-size: 0.78rem;
}

.support-recent-row:last-of-type[b-ruh2i0c3dt] {
    border-bottom: none;
}

.support-recent-subject[b-ruh2i0c3dt] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.support-recent-date[b-ruh2i0c3dt] {
    color: var(--lb-text-muted);
    font-size: 0.72rem;
}

.support-empty[b-ruh2i0c3dt] {
    padding: 0.75rem 0;
}

/* Status pills. Colour is never the only signal -- each carries its own text. */
.support-pill[b-ruh2i0c3dt] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--lb-radius-pill);
    padding: 0.05rem 0.5rem;
    font-size: 0.7rem;
    font-weight: 600;
    white-space: nowrap;
}

.support-pill-sent[b-ruh2i0c3dt] { background: var(--lb-success-bg); color: var(--lb-success); }
.support-pill-failed[b-ruh2i0c3dt] { background: var(--lb-danger-bg); color: var(--lb-danger); }
.support-pill-ai[b-ruh2i0c3dt] { background: var(--lb-purple-bg); color: var(--lb-purple); }
.support-pill-rate[b-ruh2i0c3dt] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.support-pill-pending[b-ruh2i0c3dt] { background: var(--lb-elevated); color: var(--lb-text-muted); }

/* ---- Errors ---- */
.support-error[b-ruh2i0c3dt] {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-left-width: 3px;
    color: var(--lb-danger);
    border-radius: 6px;
    padding: 0.55rem 0.7rem;
    font-size: 0.82rem;
    margin-top: 0.6rem;
}

/* ---- Sent confirmation ---- */
.support-sent[b-ruh2i0c3dt] {
    text-align: center;
    padding: 2rem 1rem;
}

.support-sent-icon[b-ruh2i0c3dt] {
    width: 48px;
    height: 48px;
    margin: 0 auto 0.85rem;
    border-radius: 50%;
    background: var(--lb-success-bg);
    color: var(--lb-success);
    font-size: 1.5rem;
    line-height: 48px;
}

.support-sent h5[b-ruh2i0c3dt] {
    margin: 0 0 0.4rem;
    font-weight: 600;
}

/* ---- Phone tier: the help button is visible on mobile for the first time with
   this feature, so the dialog has to work here, not merely survive. ---- */
@media (max-width: 767px) {
    .support-panes[b-ruh2i0c3dt] {
        grid-template-columns: 1fr;
    }

    .support-pane-form[b-ruh2i0c3dt] {
        padding-right: 0;
    }

    .support-pane-side[b-ruh2i0c3dt] {
        padding-left: 0;
        margin-top: 1rem;
        padding-top: 0.9rem;
        border-left: none;
        border-top: 1px solid var(--lb-border-light);
    }

    .support-grid-2[b-ruh2i0c3dt] {
        grid-template-columns: 1fr;
    }

    .support-envelope dl[b-ruh2i0c3dt] {
        grid-template-columns: 1fr;
    }

    .support-envelope dt[b-ruh2i0c3dt] {
        margin-top: 0.35rem;
        font-size: 0.72rem;
    }
}
/* /Components/Dialogs/TaskEditDialog.razor.rz.scp.css */
/* TaskEditDialog.razor -- scoped styles */

.task-edit-form[b-75tqil7kgy] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 4px;
}

.dialog-loading[b-75tqil7kgy] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 40px 0;
    color: var(--lb-text-dim);
}

.form-field[b-75tqil7kgy] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-75tqil7kgy] {
    font-size: 0.83rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-75tqil7kgy] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-validation-error[b-75tqil7kgy] {
    font-size: 0.78rem;
    color: var(--lb-danger);
}

.form-row-2col[b-75tqil7kgy] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

@media (max-width: 768px) {
    .form-row-2col[b-75tqil7kgy] {
        grid-template-columns: 1fr;
    }
}

.dictation-inline-row[b-75tqil7kgy] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.dictation-inline-row[b-75tqil7kgy]  .e-input-group {
    flex: 1;
}
/* /Components/Dialogs/TrainingItemDialog.razor.rz.scp.css */
/* TrainingItemDialog.razor.css - guide/video authoring dialog */
/* ASCII-only comments; --lb-* tokens only, no hex fallbacks */

.tid-loading[b-v2itcfupia] { color: var(--lb-text-muted); }

.tid-row[b-v2itcfupia] { display: flex; gap: 0.9rem; }
.tid-col[b-v2itcfupia] { flex: 1 1 0; min-width: 0; }

/* -- Media block (video upload / guide editor) ------------------------------- */
.tid-media-block[b-v2itcfupia] {
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 0.7rem 0.8rem;
    margin-bottom: 0.5rem;
    background: var(--lb-surface-alt);
}

.tid-media-head[b-v2itcfupia] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    margin-bottom: 0.4rem;
}

.tid-captions-head[b-v2itcfupia] { margin-top: 0.8rem; }

.tid-uploaded[b-v2itcfupia] { color: var(--lb-success); font-size: 0.8rem; font-weight: 600; }
.tid-missing[b-v2itcfupia] { color: var(--lb-warning); font-size: 0.8rem; font-weight: 600; }

.tid-link[b-v2itcfupia] {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    font-size: 0.8rem;
    color: var(--lb-brand);
    cursor: pointer;
    text-decoration: underline;
}

.tid-link:disabled[b-v2itcfupia] { color: var(--lb-text-dim); cursor: default; }

.tid-upload-row[b-v2itcfupia] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.tid-upload-row input[type="file"][b-v2itcfupia] { font-size: 0.8rem; max-width: 100%; }

/* Upload progress (browser -> blob storage direct; percentage only) */
.tid-progress[b-v2itcfupia] {
    height: 8px;
    border-radius: var(--lb-radius-pill);
    background: var(--lb-border-light);
    overflow: hidden;
    margin-top: 0.5rem;
}

.tid-progress-fill[b-v2itcfupia] {
    height: 100%;
    background: var(--lb-brand);
    transition: width 0.2s ease;
}

.tid-hint[b-v2itcfupia] {
    color: var(--lb-text-muted);
    font-size: 0.75rem;
    margin: 0.45rem 0 0;
}

.tid-hint code[b-v2itcfupia] { font-size: 0.72rem; }

/* Inline video preview (short-lived admin read link) */
.tid-preview-video[b-v2itcfupia] {
    width: 100%;
    max-height: 260px;
    border-radius: var(--lb-radius-card);
    background: var(--lb-sidebar);
    margin-bottom: 0.5rem;
}

/* -- Guide HTML editor / preview ---------------------------------------------- */
[b-v2itcfupia] .tid-html-editor {
    font-family: Consolas, "Courier New", monospace;
    font-size: 0.8rem;
    line-height: 1.45;
}

.tid-guide-preview[b-v2itcfupia] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 0.8rem 1rem;
    max-height: 340px;
    overflow-y: auto;
    font-size: 0.88rem;
}

@media (max-width: 576px) {
    .tid-row[b-v2itcfupia] { flex-direction: column; gap: 0.5rem; }
}
/* /Components/Dialogs/ViewEmailTemplatesDialog.razor.rz.scp.css */
/* ViewEmailTemplatesDialog.razor.css */
/* All comments ASCII only */

.template-grid-section[b-kmsqrnd0n0] {
    margin-bottom: 20px;
}

.section-heading[b-kmsqrnd0n0] {
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 8px;
    padding-bottom: 4px;
    border-bottom: 1px solid var(--lb-border);
}

.empty-grid-message[b-kmsqrnd0n0] {
    padding: 16px;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}
/* /Components/Dialogs/WcCalculatorDialog.razor.rz.scp.css */
.wc-dialog-body[b-ty7nt0gaqe] {
    display: flex;
    gap: 1.5rem;
    min-height: 500px;
}

.wc-input-panel[b-ty7nt0gaqe] {
    flex: 1;
    overflow-y: auto;
    max-height: 80vh;
    padding-right: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.wc-results-side[b-ty7nt0gaqe] {
    width: 340px;
    min-width: 300px;
    background: var(--lb-surface-alt);
    border-radius: var(--lb-radius-card);
    border: 1px solid var(--lb-border-light);
    overflow-y: auto;
    max-height: 80vh;
}

.wc-scenario-bar[b-ty7nt0gaqe] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--lb-border-light);
}

.wc-readonly-banner[b-ty7nt0gaqe] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.5rem;
    border-radius: var(--lb-radius-card);
    background: var(--lb-info-bg);
    color: var(--lb-text);
    border: 1px solid var(--lb-info);
    font-size: 0.85rem;
}

.wc-readonly-banner .e-icons[b-ty7nt0gaqe] {
    color: var(--lb-info);
}

.wc-field[b-ty7nt0gaqe] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.wc-field .field-label[b-ty7nt0gaqe] {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--lb-text);
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.required-indicator[b-ty7nt0gaqe] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.info-icon[b-ty7nt0gaqe] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--lb-info);
    font-size: 0.875rem;
    cursor: help;
}

.section-label[b-ty7nt0gaqe] {
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    font-weight: 600;
}

.wc-rate-info[b-ty7nt0gaqe] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.5rem 0.75rem;
    background: var(--lb-info-bg);
    border-radius: var(--lb-radius-card);
    font-size: 0.8125rem;
}

.rate-label[b-ty7nt0gaqe] {
    color: var(--lb-text-muted);
}

.rate-value[b-ty7nt0gaqe] {
    font-weight: 600;
    color: var(--lb-text);
}

.rate-period[b-ty7nt0gaqe] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}

.wc-liens-input[b-ty7nt0gaqe] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.adhoc-lien-row[b-ty7nt0gaqe] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.adhoc-lien-row > :first-child[b-ty7nt0gaqe] {
    flex: 1;
}

.adhoc-lien-row > :nth-child(2)[b-ty7nt0gaqe] {
    width: 140px;
}

.wc-recalc[b-ty7nt0gaqe] {
    padding-top: 0.5rem;
}

.wc-compare-wrapper[b-ty7nt0gaqe] {
    min-height: 400px;
}

.wc-compare-toolbar[b-ty7nt0gaqe] {
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--lb-border-light);
    margin-bottom: 0.75rem;
}

@media (max-width: 768px) {
    .wc-dialog-body[b-ty7nt0gaqe] {
        flex-direction: column;
    }

    .wc-results-side[b-ty7nt0gaqe] {
        width: 100%;
        min-width: unset;
    }
}
/* /Components/Dialogs/WorkflowRuleEditor.razor.rz.scp.css */
.editor-loading[b-81zmp18cac] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    color: var(--lb-text-muted);
}

.rule-editor-form .form-row[b-81zmp18cac]{
    margin-bottom: 0.75rem;
}

.rule-editor-form .form-row-inline[b-81zmp18cac] {
    display: flex;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

.rule-editor-form .form-field[b-81zmp18cac] {
    flex: 1;
}

.rule-editor-form .field-label[b-81zmp18cac] {
    display: block;
    font-size: 0.85rem;
    font-weight: 500;
    margin-bottom: 0.25rem;
    color: var(--lb-text);
}

.rule-editor-form .required-indicator[b-81zmp18cac]{
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

[b-81zmp18cac] .section-divider {
    border-top: 1px solid var(--lb-border);
    margin: 1rem 0 0.75rem;
    padding-top: 0.75rem;
}

[b-81zmp18cac] .section-label {
    font-size: 0.8rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
}

[b-81zmp18cac] .trigger-hint {
    display: block;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    font-style: italic;
    padding: 0.25rem 0;
}

[b-81zmp18cac] .trigger-hint code {
    font-style: normal;
    background: var(--lb-elevated);
    border-radius: 3px;
    padding: 0.05rem 0.3rem;
    font-size: 0.8rem;
}

.validation-errors[b-81zmp18cac]{
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
    padding: 0.5rem 1rem;
    margin-bottom: 0.75rem;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

.validation-errors p[b-81zmp18cac]{
    margin: 0.25rem 0;
}

[b-81zmp18cac] .coming-soon-notice {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-info-bg, #e8f4fd);
    border: 1px solid var(--lb-info, #1976d2);
    border-radius: 4px;
    padding: 0.5rem 0.75rem;
    color: var(--lb-text);
    font-size: 0.85rem;
    line-height: 1.35;
}

[b-81zmp18cac] .coming-soon-notice .e-icons {
    color: var(--lb-info, #1976d2);
    margin-top: 0.1rem;
    flex-shrink: 0;
}

@media (max-width: 576px) {
    .rule-editor-form .form-row-inline[b-81zmp18cac] {
        flex-direction: column;
        gap: 0.5rem;
    }
}
/* /Components/Dialogs/WorkflowStageConfigDialog.razor.rz.scp.css */
/* WorkflowStageConfigDialog - Admin dialog for case-type workflow stage overrides */

.wsc-body[b-e591mbkyqz] {
    padding: 4px 0;
}

.wsc-subtext[b-e591mbkyqz] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    margin-bottom: 12px;
    display: flex;
    align-items: center;
    gap: 4px;
}

.wsc-toggle-row[b-e591mbkyqz] {
    margin-bottom: 16px;
    padding: 10px 12px;
    background-color: var(--lb-hover-bg);
    border-radius: 6px;
}

.wsc-section-title[b-e591mbkyqz] {
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-bottom: 8px;
}

/* -- Read-only inherited stages list -- */

.wsc-readonly-list[b-e591mbkyqz] {
    padding: 8px 0;
}

/* -- Dual-list layout -- */

.wsc-dual-list[b-e591mbkyqz] {
    display: flex;
    gap: 8px;
    align-items: flex-start;
}

.wsc-list-panel[b-e591mbkyqz] {
    flex: 1;
    min-width: 0;
}

.wsc-list-items[b-e591mbkyqz] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    max-height: 300px;
    overflow-y: auto;
    padding: 4px;
    background-color: var(--lb-bg-white);
}

.wsc-transfer-buttons[b-e591mbkyqz] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding-top: 28px;
    align-self: flex-start;
}

/* -- Stage item rows -- */

.wsc-stage-item[b-e591mbkyqz] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border-radius: 4px;
    font-size: 13px;
    transition: background-color 0.12s;
}

.wsc-stage-item.available[b-e591mbkyqz] {
    cursor: pointer;
}

.wsc-stage-item.available:hover[b-e591mbkyqz] {
    background-color: var(--lb-hover-bg);
}

.wsc-stage-item.selected[b-e591mbkyqz] {
    background-color: var(--lb-hover-bg);
    margin-bottom: 2px;
}

.wsc-stage-item.readonly[b-e591mbkyqz] {
    cursor: default;
}

.wsc-color-swatch[b-e591mbkyqz] {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 3px;
    border: 1px solid var(--lb-border);
    flex-shrink: 0;
}

.wsc-stage-name[b-e591mbkyqz] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: var(--lb-text);
}

.wsc-pa-badge[b-e591mbkyqz] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    padding: 1px 6px;
    border-radius: 3px;
    background-color: var(--lb-hover-bg);
    color: var(--lb-text-secondary);
    flex-shrink: 0;
}

.wsc-order-buttons[b-e591mbkyqz] {
    display: flex;
    gap: 2px;
    flex-shrink: 0;
    margin-left: auto;
}

[b-e591mbkyqz] .wsc-order-buttons .e-btn.e-small {
    padding: 2px 4px;
    min-width: unset;
}

.wsc-empty-hint[b-e591mbkyqz] {
    text-align: center;
    padding: 16px 8px;
    color: var(--lb-text-secondary);
    font-size: 12px;
    font-style: italic;
}

/* -- Validation errors -- */

[b-e591mbkyqz] .validation-errors {
    margin-top: 12px;
    padding: 8px 12px;
    border-radius: 4px;
    background-color: #fef2f2;
    border: 1px solid #fecaca;
}

[b-e591mbkyqz] .validation-errors p {
    margin: 0;
    font-size: 13px;
    color: #dc2626;
}

/* -- Loading state -- */

.wsc-loading[b-e591mbkyqz] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--lb-text-secondary);
}

@media (max-width: 576px) {
    .wsc-dual-list[b-e591mbkyqz] {
        flex-direction: column;
    }

    .wsc-transfer-buttons[b-e591mbkyqz] {
        flex-direction: row;
        padding-top: 0;
        align-self: center;
    }
}
/* /Components/Intake/StepAssignment.razor.rz.scp.css */
.step-assignment[b-w5ajs4fjf2] {
    max-width: 500px;
}

.step-heading[b-w5ajs4fjf2] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-w5ajs4fjf2] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.assignment-form[b-w5ajs4fjf2] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-w5ajs4fjf2] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-w5ajs4fjf2] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-w5ajs4fjf2] {
    color: var(--lb-danger);
}
/* /Components/Intake/StepCaseType.razor.rz.scp.css */
.step-casetype[b-pmnb2bowva] {
    max-width: 600px;
}

.step-heading[b-pmnb2bowva] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-pmnb2bowva] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.casetype-form[b-pmnb2bowva] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.field-group[b-pmnb2bowva] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-pmnb2bowva] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-pmnb2bowva] {
    color: var(--lb-danger);
}

.casetype-summary[b-pmnb2bowva] {
    padding: 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.summary-row[b-pmnb2bowva] {
    display: flex;
    gap: 0.75rem;
}

.summary-label[b-pmnb2bowva] {
    font-weight: 500;
    color: var(--lb-text-muted);
    min-width: 120px;
    font-size: 0.875rem;
}

.summary-value[b-pmnb2bowva] {
    color: var(--lb-text);
    font-size: 0.875rem;
}

/* -- Load failure vs genuinely-empty list (#3307) -------------------------- */
/* Two different colors on purpose: a failure is actionable (retry), an empty
   list is a setup fact. They must not read alike. */

.casetype-load-error[b-pmnb2bowva] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.875rem 1rem;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    color: var(--lb-danger);
    font-size: 0.875rem;
}

.load-error-body[b-pmnb2bowva] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1 1 auto;
}

.casetype-empty[b-pmnb2bowva] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.875rem 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    color: var(--lb-text-muted);
    font-size: 0.875rem;
}
/* /Components/Intake/StepClient.razor.rz.scp.css */
.step-client[b-uy5qj9pql5] {
    max-width: 650px;
}

.validation-error[b-uy5qj9pql5] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.validation-warning[b-uy5qj9pql5] {
    margin-top: 1rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--lb-warning);
    border-radius: 6px;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    font-size: 0.8125rem;
}

.step-heading[b-uy5qj9pql5] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-uy5qj9pql5] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.client-form[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.field-group[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-uy5qj9pql5] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-uy5qj9pql5] {
    color: var(--lb-danger);
}

.field-row[b-uy5qj9pql5] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.field-row-3[b-uy5qj9pql5] {
    grid-template-columns: 2fr 1fr 1fr;
}

.field-sm[b-uy5qj9pql5] {
    max-width: 120px;
}

.linked-client-banner[b-uy5qj9pql5] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding: 1rem;
    background: var(--lb-success-bg);
    border: 1px solid var(--lb-success);
    border-radius: 6px;
    color: var(--lb-success);
    font-size: 0.875rem;
}

.linked-client-identity[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1 1 auto;
}

.linked-client-name[b-uy5qj9pql5] {
    font-weight: 600;
}

.linked-client-detail[b-uy5qj9pql5] {
    color: var(--lb-text-muted);
}

/* -- Link failure (#3308) -------------------------------------------------- */

.link-failed-banner[b-uy5qj9pql5] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1.25rem;
    padding: 0.875rem 1rem;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    color: var(--lb-danger);
    font-size: 0.875rem;
}

.link-failed-body[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    flex: 1 1 auto;
}

/* -- Captured-detail reconciliation (#3308) -------------------------------- */

.detail-reconcile-panel[b-uy5qj9pql5] {
    margin-top: 1.5rem;
    padding: 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
}

.reconcile-heading[b-uy5qj9pql5] {
    margin: 0 0 0.375rem 0;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--lb-text);
}

.reconcile-intro[b-uy5qj9pql5] {
    margin: 0 0 0.875rem 0;
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.reconcile-row[b-uy5qj9pql5] {
    display: flex;
    align-items: baseline;
    gap: 1rem;
    padding: 0.5rem 0;
    border-top: 1px solid var(--lb-border-light);
}

.reconcile-values[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    font-size: 0.8125rem;
    margin-left: auto;
    text-align: right;
}

.reconcile-new[b-uy5qj9pql5] {
    color: var(--lb-text);
    font-weight: 500;
}

.reconcile-existing[b-uy5qj9pql5] {
    color: var(--lb-text-muted);
}

.reconcile-replaces[b-uy5qj9pql5] {
    color: var(--lb-warning);
}

.reconcile-warning[b-uy5qj9pql5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.875rem;
    padding: 0.625rem 0.75rem;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: 6px;
    color: var(--lb-warning);
    font-size: 0.8125rem;
}

/* Duplicate panel */
.duplicate-panel[b-uy5qj9pql5] {
    margin-top: 1.5rem;
    border: 1px solid var(--lb-warning);
    border-radius: 6px;
    overflow: hidden;
}

.duplicate-heading[b-uy5qj9pql5] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    margin: 0;
    font-size: 0.9375rem;
    font-weight: 600;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.duplicate-card[b-uy5qj9pql5] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    padding: 0.75rem 1rem;
    border-top: 1px solid var(--lb-border);
    gap: 1rem;
}

.duplicate-info[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    font-size: 0.8125rem;
}

.match-reason[b-uy5qj9pql5] {
    color: var(--lb-text-muted);
    font-style: italic;
}

.match-detail[b-uy5qj9pql5] {
    color: var(--lb-text-muted);
}

.linked-cases[b-uy5qj9pql5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-top: 0.25rem;
}

.linked-case-chip[b-uy5qj9pql5] {
    display: inline-flex;
    padding: 0.125rem 0.5rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 12px;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.linked-case-chip.closed[b-uy5qj9pql5] {
    opacity: 0.6;
    text-decoration: line-through;
}

.duplicate-actions[b-uy5qj9pql5] {
    flex-shrink: 0;
}

@media (max-width: 576px) {
    .field-row[b-uy5qj9pql5],
    .field-row-3[b-uy5qj9pql5] {
        grid-template-columns: 1fr;
    }

    .field-sm[b-uy5qj9pql5] {
        max-width: none;
    }

    .duplicate-card[b-uy5qj9pql5] {
        flex-direction: column;
    }
}

.contact-preview-panel[b-uy5qj9pql5] {
    margin-top: 1rem;
    padding: 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-brand);
    border-radius: 8px;
}

.preview-header[b-uy5qj9pql5] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.75rem;
}

.preview-name[b-uy5qj9pql5] {
    font-weight: 600;
    font-size: 0.9375rem;
}

.preview-body[b-uy5qj9pql5] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.preview-row[b-uy5qj9pql5] {
    display: flex;
    gap: 0.5rem;
    font-size: 0.875rem;
}

.preview-label[b-uy5qj9pql5] {
    font-weight: 500;
    color: var(--lb-text-muted);
    min-width: 4rem;
}

.preview-cases[b-uy5qj9pql5] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    align-items: center;
    margin-top: 0.25rem;
}

@media (max-width: 576px) {
    .reconcile-row[b-uy5qj9pql5] {
        flex-direction: column;
        gap: 0.25rem;
    }

    .reconcile-values[b-uy5qj9pql5] {
        margin-left: 0;
        text-align: left;
    }
}
/* /Components/Intake/StepConflictCheck.razor.rz.scp.css */
.step-conflict[b-8gamzwudho] {
    max-width: 700px;
}

.step-heading[b-8gamzwudho] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-8gamzwudho] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.conflict-action[b-8gamzwudho] {
    text-align: center;
    padding: 2rem 0;
}

/* -- Failed check ----------------------------------------------------------- */
/* A check that did not complete. Deliberately warning-colored, never the success
   styling of .conflict-clear below - an unchecked case is not a clear one. */
.conflict-unavailable[b-8gamzwudho] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 1.25rem;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: 6px;
    color: var(--lb-warning);
}

/* Inherits the warning color: it is the tone paired with --lb-warning-bg in both
   light and dark, so the sub-text stays legible without a second token. */
.conflict-unavailable p[b-8gamzwudho] {
    margin: 0.25rem 0 0;
    font-size: 0.875rem;
}

/* -- Clear result ----------------------------------------------------------- */
.conflict-clear[b-8gamzwudho] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem;
    background: var(--lb-success-bg);
    border: 1px solid var(--lb-success);
    border-radius: 6px;
    color: var(--lb-success);
}

.conflict-clear p[b-8gamzwudho] {
    margin: 0.25rem 0 0;
    font-size: 0.875rem;
    color: var(--lb-text-muted);
}

.conflict-results[b-8gamzwudho] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    overflow: hidden;
}

.conflict-warning-banner[b-8gamzwudho] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    font-size: 0.9375rem;
}

.conflict-card[b-8gamzwudho] {
    display: flex;
    justify-content: space-between;
    padding: 0.75rem 1rem;
    border-top: 1px solid var(--lb-border);
    gap: 1rem;
}

.conflict-contact[b-8gamzwudho],
.conflict-case[b-8gamzwudho] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    font-size: 0.8125rem;
}

.conflict-match-type[b-8gamzwudho] {
    color: var(--lb-text-muted);
    font-style: italic;
}

.conflict-case-number[b-8gamzwudho] {
    font-weight: 600;
    color: var(--lb-text);
}

.conflict-role[b-8gamzwudho] {
    color: var(--lb-text-muted);
}

.conflict-closed-badge[b-8gamzwudho] {
    display: inline-flex;
    padding: 0.0625rem 0.375rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    font-size: 0.6875rem;
    color: var(--lb-text-muted);
    width: fit-content;
}

.conflict-acknowledge[b-8gamzwudho] {
    padding: 1rem;
    border-top: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
}

.acknowledge-label[b-8gamzwudho] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: var(--lb-text);
    cursor: pointer;
}

.acknowledge-label input[type="checkbox"][b-8gamzwudho] {
    margin-top: 0.125rem;
}

@media (max-width: 576px) {
    .conflict-card[b-8gamzwudho] {
        flex-direction: column;
    }
}
/* /Components/Intake/StepEmployer.razor.rz.scp.css */
.step-employer[b-wvxdxaor65] {
    max-width: 650px;
}

.step-heading[b-wvxdxaor65] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-wvxdxaor65] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.employer-form[b-wvxdxaor65] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-wvxdxaor65] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-wvxdxaor65] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-wvxdxaor65] {
    color: var(--lb-danger);
}

.field-row[b-wvxdxaor65] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.field-row-3[b-wvxdxaor65] {
    display: grid;
    grid-template-columns: 2fr 1fr 1fr;
    gap: 1rem;
}

.validation-error[b-wvxdxaor65] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-wvxdxaor65] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

@media (max-width: 576px) {
    .field-row[b-wvxdxaor65] {
        grid-template-columns: 1fr;
    }

    .field-row-3[b-wvxdxaor65] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepFileNumber.razor.rz.scp.css */
.step-filenumber[b-e66ho2c62r] {
    max-width: 600px;
}

.step-heading[b-e66ho2c62r] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-e66ho2c62r] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.filenumber-form[b-e66ho2c62r] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-e66ho2c62r] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-e66ho2c62r] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-e66ho2c62r] {
    color: var(--lb-danger);
}

.field-row[b-e66ho2c62r] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.validation-hint[b-e66ho2c62r] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

.validation-error[b-e66ho2c62r] {
    font-size: 0.75rem;
    color: var(--lb-danger);
}

.validation-success[b-e66ho2c62r] {
    font-size: 0.75rem;
    color: var(--lb-success);
}

@media (max-width: 576px) {
    .field-row[b-e66ho2c62r] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepIncident.razor.rz.scp.css */
.step-incident[b-ejnam379ps] {
    max-width: 650px;
}

.step-heading[b-ejnam379ps] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-ejnam379ps] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.incident-form[b-ejnam379ps] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-ejnam379ps] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-ejnam379ps] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-ejnam379ps] {
    color: var(--lb-danger);
}

.field-row[b-ejnam379ps] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.field-row-3[b-ejnam379ps] {
    grid-template-columns: 2fr 1fr 1fr;
}

.validation-error[b-ejnam379ps] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-ejnam379ps] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

@media (max-width: 576px) {
    .field-row[b-ejnam379ps],
    .field-row-3[b-ejnam379ps] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepInjuries.razor.rz.scp.css */
.step-injuries[b-rrphcvvhnh] {
    max-width: 650px;
}

.step-heading[b-rrphcvvhnh] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-rrphcvvhnh] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.injuries-form[b-rrphcvvhnh] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-rrphcvvhnh] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-rrphcvvhnh] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-rrphcvvhnh] {
    color: var(--lb-danger);
}

.field-row[b-rrphcvvhnh] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.validation-error[b-rrphcvvhnh] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-rrphcvvhnh] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

.injuries-note[b-rrphcvvhnh] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    font-style: italic;
    margin-top: 0.5rem;
}

@media (max-width: 576px) {
    .field-row[b-rrphcvvhnh] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepInsurance.razor.rz.scp.css */
.step-insurance[b-8xup1gmdos] {
    max-width: 650px;
}

.step-heading[b-8xup1gmdos] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-8xup1gmdos] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.insurance-form[b-8xup1gmdos] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-8xup1gmdos] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-8xup1gmdos] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-8xup1gmdos] {
    color: var(--lb-danger);
}

.field-row[b-8xup1gmdos] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.validation-error[b-8xup1gmdos] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-8xup1gmdos] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

/* -- Government/public-entity screening question (#3311) ------------------- */

.govt-entity-group[b-8xup1gmdos] {
    padding: 0.75rem 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
}

.govt-entity-hint[b-8xup1gmdos] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
}

@media (max-width: 576px) {
    .field-row[b-8xup1gmdos] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepPlaybook.razor.rz.scp.css */
.step-playbook[b-1azg77e6cz] {
    max-width: 650px;
}

.step-heading[b-1azg77e6cz] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-1azg77e6cz] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.playbook-form[b-1azg77e6cz] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-1azg77e6cz] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-1azg77e6cz] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-1azg77e6cz] {
    color: var(--lb-danger);
}

.field-row[b-1azg77e6cz] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.validation-error[b-1azg77e6cz] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-1azg77e6cz] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

.playbook-step-list[b-1azg77e6cz] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-top: 0.75rem;
}

.playbook-step-row[b-1azg77e6cz] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.375rem 0;
    border-bottom: 1px solid var(--lb-border);
}

.playbook-step-row:last-child[b-1azg77e6cz] {
    border-bottom: none;
}

.step-offset[b-1azg77e6cz] {
    margin-left: auto;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

.playbook-actions[b-1azg77e6cz] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

.playbook-skip-note[b-1azg77e6cz] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

.playbook-preview[b-1azg77e6cz] {
    margin-top: 1rem;
    padding: 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
}

.playbook-preview-header[b-1azg77e6cz] {
    font-weight: 600;
    margin-bottom: 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

@media (max-width: 576px) {
    .field-row[b-1azg77e6cz] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepReview.razor.rz.scp.css */
.step-review[b-hbpltvftak] {
    max-width: 700px;
}

.step-heading[b-hbpltvftak] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-hbpltvftak] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.review-sections[b-hbpltvftak] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.review-section[b-hbpltvftak] {
    padding: 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
}

.section-title[b-hbpltvftak] {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.75rem 0;
    padding-bottom: 0.5rem;
    border-bottom: 1px solid var(--lb-border);
}

.review-grid[b-hbpltvftak] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem 1.5rem;
}

.review-item[b-hbpltvftak] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.review-label[b-hbpltvftak] {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.review-value[b-hbpltvftak] {
    font-size: 0.875rem;
    color: var(--lb-text);
}

.review-value.highlight[b-hbpltvftak] {
    font-weight: 600;
    color: var(--lb-brand);
}

.review-note[b-hbpltvftak] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* -- Linked client identity + captured details (#3308 / #3309) ------------- */

.review-linked-name[b-hbpltvftak] {
    color: var(--lb-text);
    font-weight: 600;
}

.review-case-chips[b-hbpltvftak] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.375rem;
    margin-top: 0.5rem;
}

.review-case-chip[b-hbpltvftak] {
    display: inline-flex;
    padding: 0.125rem 0.5rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 12px;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.review-case-chip.closed[b-hbpltvftak] {
    opacity: 0.6;
    text-decoration: line-through;
}

.review-detail-list[b-hbpltvftak] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    margin-top: 0.75rem;
    padding: 0.625rem 0.75rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    font-size: 0.8125rem;
    color: var(--lb-text);
}

.review-detail-title[b-hbpltvftak] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin-bottom: 0.25rem;
}

.review-detail-item[b-hbpltvftak] {
    display: block;
}

.review-detail-declined[b-hbpltvftak] {
    background: var(--lb-warning-bg);
    border-color: var(--lb-warning);
    color: var(--lb-warning);
}

.review-detail-declined .review-detail-title[b-hbpltvftak] {
    color: var(--lb-warning);
}

.review-detail-hint[b-hbpltvftak] {
    margin-top: 0.25rem;
    font-style: italic;
}

.review-clear[b-hbpltvftak] {
    font-size: 0.875rem;
    color: var(--lb-success);
    margin: 0;
}

.review-warning[b-hbpltvftak] {
    font-size: 0.875rem;
    color: var(--lb-warning);
    margin: 0;
}

.save-error[b-hbpltvftak] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1rem;
    margin-top: 1.25rem;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    color: var(--lb-danger);
    font-size: 0.875rem;
}

.save-action[b-hbpltvftak] {
    margin-top: 1.5rem;
    text-align: center;
}

@media (max-width: 576px) {
    .review-grid[b-hbpltvftak] {
        grid-template-columns: 1fr;
    }
}

.review-overridden[b-hbpltvftak] {
    font-style: italic;
}

.review-badge[b-hbpltvftak] {
    display: inline-block;
    margin-left: 0.5rem;
    padding: 0.125rem 0.375rem;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    border-radius: 4px;
    font-size: 0.6875rem;
    font-weight: 700;
    vertical-align: middle;
}
/* /Components/Intake/StepSol.razor.rz.scp.css */
/* Standard scoped CSS pattern for all intake step components */
.step-sol[b-minag8rdxo] {
    max-width: 650px;
}

.step-heading[b-minag8rdxo] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-minag8rdxo] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.sol-form[b-minag8rdxo] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-minag8rdxo] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-minag8rdxo] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-minag8rdxo] {
    color: var(--lb-danger);
}

.field-row[b-minag8rdxo] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.validation-error[b-minag8rdxo] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-minag8rdxo] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

.sol-no-source[b-minag8rdxo] {
    padding: 0.75rem 1rem;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: 6px;
    color: var(--lb-text);
    font-size: 0.875rem;
}

.sol-chip[b-minag8rdxo] {
    display: inline-flex;
    align-items: center;
    padding: 0.25rem 0.75rem;
    border-radius: 99px;
    font-size: 0.8125rem;
    font-weight: 600;
    margin-left: 0.75rem;
}

.sol-chip-ok[b-minag8rdxo] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.sol-chip-warning[b-minag8rdxo] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.sol-chip-urgent[b-minag8rdxo] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.sol-chip-expired[b-minag8rdxo] {
    background: var(--lb-danger);
    color: #fff;
}

.sol-date-row[b-minag8rdxo] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.5rem;
    font-size: 0.9375rem;
}

.sol-status[b-minag8rdxo] {
    display: inline-flex;
    align-items: center;
    padding: 0.2rem 0.625rem;
    border-radius: 99px;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.sol-status-computed[b-minag8rdxo] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    border: 1px solid var(--lb-border);
}

.sol-status-adjusted[b-minag8rdxo] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.sol-reset-link[b-minag8rdxo] {
    align-self: flex-start;
    margin-top: 0.25rem;
    padding: 0;
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.8125rem;
    cursor: pointer;
    text-decoration: underline;
}

.sol-reset-link:hover[b-minag8rdxo] {
    color: var(--lb-brand-hover);
}

.sol-optional-note[b-minag8rdxo] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    font-style: italic;
    margin-top: 0.5rem;
}

/* -- Government notice deadline (#3311) ------------------------------------ */
/* Boxed so a second, shorter deadline cannot be mistaken for part of the SOL row. */

.sol-municipal[b-minag8rdxo] {
    padding: 0.875rem 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
}

@media (max-width: 576px) {
    .field-row[b-minag8rdxo] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Intake/StepWageInfo.razor.rz.scp.css */
.step-wageinfo[b-x06vamqq1s] {
    max-width: 650px;
}

.step-heading[b-x06vamqq1s] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem 0;
}

.step-description[b-x06vamqq1s] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    margin-bottom: 1.5rem;
}

.wageinfo-form[b-x06vamqq1s] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.field-group[b-x06vamqq1s] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.field-label[b-x06vamqq1s] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.required-mark[b-x06vamqq1s] {
    color: var(--lb-danger);
}

.field-row[b-x06vamqq1s] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.validation-error[b-x06vamqq1s] {
    display: block;
    margin-top: 0.25rem;
    font-size: 0.8125rem;
    color: var(--lb-danger);
}

.section-heading[b-x06vamqq1s] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0.5rem 0 0.75rem 0;
    padding-bottom: 0.375rem;
    border-bottom: 1px solid var(--lb-border);
}

.wageinfo-note[b-x06vamqq1s] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    font-style: italic;
    margin-top: 0.5rem;
}

@media (max-width: 576px) {
    .field-row[b-x06vamqq1s] {
        grid-template-columns: 1fr;
    }
}
/* /Components/LayoutComponents/FocusLayout.razor.rz.scp.css */
/*
 * =====================================================================
 * FocusLayout.razor.css -- Scoped styles for the distraction-free
 * document shell (Word Processor, PDF Viewer)
 * =====================================================================
 *
 * Unlike MainLayout, this shell has no sidebar and no top-row. It is just
 * a full-viewport container that hands the entire window to the hosted
 * page. The pages (WordProcessor, PDF) compute their own height against
 * 100vh, so this layout adds no top/side chrome to subtract.
 */

/* -- Page container -- full viewport, vertical stack. */
.focus-page[b-r8z4o4lv5z] {
    position: relative;
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* -- Content area --
 * Full-bleed: zero padding/margin so the editor or PDF viewer reaches the
 * window edges. overflow: hidden prevents a stray body scrollbar if a
 * hosted page is a few pixels over 100vh.
 */
.focus-content[b-r8z4o4lv5z] {
    flex: 1 1 auto;
    min-width: 0;
    padding: 0;
    margin: 0;
    overflow: hidden;
}

/* -- Unhandled-error banner --
 * Replicated from MainLayout.razor.css: Blazor CSS isolation scopes these
 * rules to this component, so MainLayout's copy does not reach the
 * #blazor-error-ui element rendered by THIS layout.
 */
#blazor-error-ui[b-r8z4o4lv5z] {
    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-r8z4o4lv5z] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* /Components/LayoutComponents/FocusModeTimer.razor.rz.scp.css */
/* === FocusModeTimer -- scoped styles ===
 *
 * Both elements are position:fixed on purpose. The case-tab grids size
 * themselves off a MEASURED fixed chrome offset (--lb-case-tab-grid-offset,
 * app.css / #3488), so anything added to the document flow above them would
 * silently make that measurement wrong -- and an infinite-scroll grid that
 * overruns the fold hides its last rows behind an outer page scroll.
 *
 * Colours are all --lb-* tokens, so both themes are covered.
 */

/* -- Running-timer pill (focus mode only) --
 * BOTTOM-left, not up beside the focus-restore control. Measured on the live app
 * (Longbow_ATS case 1074, 1527x906): the top-left strip focus mode frees up is
 * not empty -- the case toolbar row and each tab's own controls sit there, and a
 * pill at top:9px/left:66px landed squarely on the Contacts tab's "All 11"
 * filter pill, i.e. it would swallow clicks meant for a real control. The
 * bottom-left corner probes clear on the case tabs, and a floating clock there
 * is the ordinary place for one.
 *
 * Matches .lb-focus-restore's 38px height, radius and shadow so the two still
 * read as one family, and shares its z-index 1048: below the phone drawer
 * (1050), its scrim (1049), and Syncfusion dialogs/toasts.
 */
.lb-focus-timer[b-lacsoldmpg] {
    position: fixed;
    bottom: 16px;
    left: 12px;
    z-index: 1048;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    height: 38px;
    padding: 0 0.7rem;
    border-radius: 19px;
    border: 1px solid var(--lb-timer-active);
    background-color: var(--lb-timer-active-bg);
    color: var(--lb-timer-active);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

.lb-focus-timer:hover:not(:disabled)[b-lacsoldmpg] {
    background-color: var(--lb-timer-active);
    color: var(--lb-text-on-brand);
}

.lb-focus-timer:disabled[b-lacsoldmpg] {
    opacity: 0.65;
    cursor: default;
}

.lb-focus-timer:focus-visible[b-lacsoldmpg] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

/* Tabular figures so the pill does not jitter as the digits tick. */
.lb-focus-timer-elapsed[b-lacsoldmpg] {
    font-variant-numeric: tabular-nums;
}

/* The word "Stop" is the affordance that makes the pill obviously actionable
 * rather than a passive readout; dropped on phones, where the pill has to stay
 * narrow next to the restore FAB at 390px. */
.lb-focus-timer-stop[b-lacsoldmpg] {
    display: none;
    font-weight: 500;
    padding-left: 0.35rem;
    border-left: 1px solid currentColor;
}

@media (min-width: 768px) {
    /* Clear of the 56px collapsed rail (--lb-sidebar-width-collapsed + 10px). */
    .lb-focus-timer[b-lacsoldmpg] {
        left: 66px;
    }

    .lb-focus-timer-stop[b-lacsoldmpg] {
        display: inline;
    }
}

/* The pill floats over the bottom of the page content, so a case-tab grid's last
 * row can sit under it. Keep it out of the way until the pointer is near, then
 * make it fully opaque -- a running timer must never be invisible, but it should
 * not permanently mask data either. */
.lb-focus-timer:not(:hover):not(:focus-visible)[b-lacsoldmpg] {
    opacity: 0.92;
}

/* -- Discarded-timer notice (both focus states) --
 * Announces elapsed time that never became a timeslip. Top-centred and above
 * the top bar's z-index (1050) so it is visible with the bar shown as well as
 * hidden; 66px clears the bar in focus-OFF, and the -focus variant moves it up
 * into the space the hidden bar leaves.
 */
.lb-timer-notice[b-lacsoldmpg] {
    position: fixed;
    top: 66px;
    left: 50%;
    transform: translateX(-50%);
    z-index: 1060;
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    max-width: min(560px, calc(100vw - 2rem));
    padding: 0.7rem 0.9rem;
    border: 1px solid var(--lb-warning);
    border-left: 4px solid var(--lb-warning);
    border-radius: var(--lb-radius-card);
    background-color: var(--lb-warning-bg);
    color: var(--lb-text);
    font-size: 0.85rem;
    line-height: 1.35;
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.3);
}

.lb-timer-notice-focus[b-lacsoldmpg] {
    top: 9px;
}

.lb-timer-notice-icon[b-lacsoldmpg] {
    color: var(--lb-warning);
    font-size: 1rem;
    margin-top: 0.1rem;
    flex-shrink: 0;
}

.lb-timer-notice-body[b-lacsoldmpg] {
    min-width: 0;
}

.lb-timer-notice-title[b-lacsoldmpg] {
    display: block;
    color: var(--lb-warning);
}

.lb-timer-notice-dismiss[b-lacsoldmpg] {
    flex-shrink: 0;
    border: none;
    background: transparent;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
    line-height: 1;
    padding: 0.2rem;
    cursor: pointer;
}

.lb-timer-notice-dismiss:hover[b-lacsoldmpg] {
    color: var(--lb-text);
}

.lb-timer-notice-dismiss:focus-visible[b-lacsoldmpg] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}
/* /Components/LayoutComponents/FullTextSearch.razor.rz.scp.css */
/* -- FullTextSearch - scoped styles -- */

.fts-container[b-ihylwc9gd6] {
    padding: 25px 15px 10px;
}

.fts-heading[b-ihylwc9gd6] {
    margin-bottom: 4px;
}

.fts-help-text[b-ihylwc9gd6] {
    color: var(--lb-text-muted);
    font-size: 0.9rem;
    margin-bottom: 8px;
}

.fts-query-help[b-ihylwc9gd6] {
    margin-bottom: 16px;
    font-size: 0.875rem;
}

.fts-query-help summary[b-ihylwc9gd6] {
    cursor: pointer;
    color: var(--lb-brand);
    font-weight: 600;
}

.fts-query-help ul[b-ihylwc9gd6] {
    margin-top: 8px;
    padding-left: 20px;
}

.fts-query-help li[b-ihylwc9gd6] {
    margin-bottom: 4px;
}

.fts-search-bar[b-ihylwc9gd6] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}

.fts-search-box[b-ihylwc9gd6] {
    width: 500px;
    max-width: 100%;
}

.fts-searching-text[b-ihylwc9gd6] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
}

.fts-radio-group[b-ihylwc9gd6] {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 8px 0;
}

.fts-radio-spacer[b-ihylwc9gd6] {
    margin-right: 10px;
}

.fts-empty-state[b-ihylwc9gd6] {
    padding: 24px 16px;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.95rem;
}

[b-ihylwc9gd6] .fts-grid-body {
    overflow-x: hidden;
}
/* /Components/LayoutComponents/MainLayout.razor.rz.scp.css */
/*
 * =====================================================================
 * MainLayout.razor.css -- Scoped styles for the application shell
 * =====================================================================
 *
 * This file controls the LAYOUT of the application shell:
 *   - Sidebar width (collapsed 56px vs expanded 220px)
 *   - Top-row container (hosts the TopBar child component)
 *   - Responsive breakpoints across the three viewport tiers
 *
 * The TopBar's internal styling (buttons, search, avatar, badges)
 * lives in TopBar.razor.css. This file only sizes the container.
 *
 * It also controls WHICH CHILD ELEMENTS inside NavMenu are visible
 * using ::deep selectors. ::deep is necessary because Blazor CSS
 * isolation scopes styles to a single component -- without ::deep,
 * rules here cannot reach elements rendered by the NavMenu child.
 *
 * TOGGLE PATTERN:
 * A single CSS class -- .toggled -- on #lb-sidebar drives the visible
 * width or overlay state. The state itself is owned by Blazor (the
 * _sidebarToggled C# field in MainLayout.razor); the hamburger event
 * handler flips the field and Blazor patches the DOM.
 *
 * RESPONSIVE BEHAVIOR (the .toggled class means different things per
 * tier; the @media rules below apply the appropriate visual):
 *   Phone   (<768px) :    default = drawer off-screen
 *                          .toggled = slid in at 220px overlay (with backdrop)
 *   Tablet/Desktop (>=768px):
 *                          default = 56px collapsed rail
 *                          .toggled = 220px expanded rail
 *
 * MainLayout.OnAfterRenderAsync chooses the initial _sidebarToggled
 * value: true only on >=1200px (Desktop) so tablet portrait viewports
 * (Z Fold, iPad) start with the 56px rail rather than eating 220px of
 * horizontal width.
 */

/* -- Page container --
 * flex-direction: column by default (mobile-first).
 * Overridden to row at the >=768px breakpoint to put sidebar beside main.
 */
.page[b-x9usbz21yx] {
    position: relative;
    display: flex;
    flex-direction: column;
}

/* Main content area fills remaining space beside the sidebar.
 * An explicit surface background keeps the content column light even when
 * .page carries the dark sidebar color to fill the rail's full height. */
main[b-x9usbz21yx] {
    flex: 1;
    /* min-width:0 lets this flex item shrink below its content's intrinsic
     * width. Without it, flex items default to min-width:auto, so wide content
     * (Contacts grid, case toolbar) pushes <main> past the viewport and clips
     * on the right with no scroll. Allowing the shrink lets inner overflow-x /
     * scrollable affordances engage instead. */
    min-width: 0;
    background-color: var(--lb-bg-surface);
}

/* -- Sidebar container --
 * Base styles shared by all breakpoints.
 * overflow: hidden clips child content when the sidebar is narrow.
 * overflow-y: auto allows vertical scrolling of the nav menu.
 * The width transition animates the collapse/expand on desktop.
 */
.sidebar[b-x9usbz21yx] {
    background-color: var(--lb-sidebar);
    overflow: hidden;
    overflow-y: auto;
    transition: width 250ms ease, min-width 250ms ease;
}

/* -- Collapsed state (default) --
 * When the sidebar does NOT have .toggled, hide all non-icon elements
 * inside the NavMenu child component. This leaves only the Syncfusion
 * icons visible, creating the icon-strip appearance.
 *
 * ::deep is required because .nav-text, .nav-caret, .submenu-list,
 * and .lb-nav-logo are all rendered inside NavMenu.razor, which has
 * its own CSS scope that MainLayout can't normally reach.
 */
.sidebar[b-x9usbz21yx]  .nav-text,
.sidebar[b-x9usbz21yx]  .nav-caret,
.sidebar[b-x9usbz21yx]  .submenu-list,
.sidebar[b-x9usbz21yx]  .lb-nav-logo {
    display: none;
}

/* Hide pinned/recent case sections when sidebar is collapsed --
 * these sections only make sense when text labels are visible.
 */
.sidebar:not(.toggled)[b-x9usbz21yx]  .lb-pinned-section,
.sidebar:not(.toggled)[b-x9usbz21yx]  .lb-recent-section,
.sidebar:not(.toggled)[b-x9usbz21yx]  .lb-section-divider {
    display: none;
}

/* -- Expanded state (.toggled) --
 * When the user clicks the hamburger button, JS adds .toggled to the
 * sidebar div. These rules reveal all the elements hidden above.
 */

/* Show text labels next to icons */
.sidebar.toggled[b-x9usbz21yx]  .nav-text {
    display: inline;
}

/* Show the submenu expand/collapse caret */
.sidebar.toggled[b-x9usbz21yx]  .nav-caret {
    display: inline-block;
}

/* Re-enable submenu lists.
 * We set max-height: 0 here (not display: none) because the actual
 * expand animation is driven by the .open class in NavMenu.razor.css.
 * display: block is needed to override the display: none from collapsed state.
 */
.sidebar.toggled[b-x9usbz21yx]  .submenu-list {
    display: block;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
}

/* When a submenu has both .toggled (sidebar expanded) AND .open
 * (user clicked the submenu header), animate it to full height.
 */
.sidebar.toggled[b-x9usbz21yx]  .submenu-list.open {
    max-height: 500px;
    opacity: 1;
}

/* Show the full logo (LongbowLogo.webp) when expanded */
.sidebar.toggled[b-x9usbz21yx]  .lb-nav-logo {
    display: block;
}

/* Hide the small shield icon when expanded (full logo replaces it) */
.sidebar.toggled[b-x9usbz21yx]  .lb-nav-icon {
    display: none;
}

/* Override justify-content from center (collapsed) to flex-start (expanded)
 * so icon + text left-align naturally instead of being centered.
 */
.sidebar.toggled[b-x9usbz21yx]  .nav-link,
.sidebar.toggled[b-x9usbz21yx]  .nav-group-toggle {
    justify-content: flex-start;
}

/* -- Top row --
 * Container for the TopBar component. All visual styling
 * (buttons, search, avatar, etc.) lives in TopBar.razor.css.
 * This just ensures the row fills the width and sits correctly.
 * Height matches the sidebar logo area via the --lb-topbar-height token.
 */
.top-row[b-x9usbz21yx] {
    display: flex;
    align-items: stretch;
    min-height: var(--lb-topbar-height);
    padding: 0;
    background-color: var(--lb-bg-topbar);
    border-bottom: 1px solid var(--lb-border);
    position: relative;
    z-index: 1050;
}

/* -- Focus mode --
 * _focusMode (MainLayout.razor) hides the top bar by CLASS, never by
 * removing it from the render tree: TopBar keeps live circuit state
 * (running timer, badges, polling) and IdleTimeoutMonitor shares its
 * AuthorizeView block -- unmounting would kill the inactivity logout.
 * display:none also removes the hidden bar from the tab order, so no
 * extra inert/aria handling is needed.
 */
.top-row.top-row-hidden[b-x9usbz21yx] {
    display: none;
}

/* Focus-mode restore button -- the only chrome visible in focus mode.
 * Two variants share the visual style below:
 *   -rail (>=768px): rendered IN FLOW as the sidebar's first item, so it
 *     shares the rail's content box with the shield logo and centers
 *     identically whether or not the rail shows a scrollbar. position:
 *     sticky keeps it reachable if the nav list scrolls.
 *   -fab (<768px): position:fixed over the content corner -- the drawer
 *     is off-screen in focus mode, so there is no rail to live in.
 *     z-index 1048 keeps it below the phone drawer (1050) and its
 *     backdrop scrim (1049) and below Syncfusion dialogs/toasts.
 */
.lb-focus-restore[b-x9usbz21yx] {
    width: 38px;
    height: 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    border: 1px solid var(--lb-border);
    background-color: var(--lb-bg-topbar);
    color: var(--lb-text);
    font-size: 16px;
    cursor: pointer;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.25);
}

.lb-focus-restore-fab[b-x9usbz21yx] {
    position: fixed;
    top: 9px;
    left: 9px;
    z-index: 1048;
}

/* Rail variant is a >=768px affordance; see the media blocks below. */
.lb-focus-restore-rail[b-x9usbz21yx] {
    display: none;
}

.lb-focus-restore:hover[b-x9usbz21yx] {
    background-color: var(--lb-brand-light);
    color: var(--lb-brand);
}

.lb-focus-restore:focus-visible[b-x9usbz21yx] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

/* =====================================================================
 * MOBILE BREAKPOINT (<768px)
 * =====================================================================
 * On mobile the sidebar is completely off-screen by default.
 * When .toggled is added (hamburger click), it slides in as a
 * fixed overlay at 220px with full text labels visible.
 * z-index: 1050 puts it above all page content.
 */
@media (max-width: 768px) {
    /* Backdrop scrim: only visible at this breakpoint. The element is
     * conditionally rendered by MainLayout when _sidebarToggled is true, so
     * on desktop (the default :not @@media branch below) it stays display:none
     * even when present in markup. Tap-to-dismiss is wired in MainLayout via
     * @@onclick="ToggleSidebar". */
    .lb-sidebar-backdrop[b-x9usbz21yx] {
        position: fixed;
        inset: 0;
        background-color: rgba(0, 0, 0, 0.4);
        z-index: 1049;   /* just below sidebar (1050), above all content */
        animation: lb-backdrop-fade-in-b-x9usbz21yx 200ms ease;
        cursor: pointer;
    }

    /* Sidebar: fixed overlay, hidden off the left edge by default */
    .sidebar[b-x9usbz21yx] {
        position: fixed;
        top: 0;
        left: 0;
        width: var(--lb-sidebar-width-expanded);
        height: 100vh;
        z-index: 1050;   /* above all page content */
        transform: translateX(-100%);  /* completely off-screen to the left */
        transition: transform 250ms ease;
    }

    /* When toggled, slide the sidebar into view */
    .sidebar.toggled[b-x9usbz21yx] {
        transform: translateX(0);  /* slide to x=0 (visible) */
    }

    /* On mobile, .toggled also needs to show text/carets/logo
     * because the mobile sidebar always appears at full 220px width.
     * These repeat the desktop .toggled rules to override the
     * collapsed-state display:none set in the base rules above.
     */

    .sidebar.toggled[b-x9usbz21yx]  .nav-text {
        display: inline;
    }

    .sidebar.toggled[b-x9usbz21yx]  .nav-caret {
        display: inline-block;
    }

    .sidebar.toggled[b-x9usbz21yx]  .submenu-list {
        display: block;
    }

    .sidebar.toggled[b-x9usbz21yx]  .lb-nav-logo {
        display: block;
    }

    .top-row[b-x9usbz21yx] {
        padding: 0;
    }

    article[b-x9usbz21yx] {
        padding-left: var(--lb-content-padding-x-phone);
        padding-right: var(--lb-content-padding-x-phone);
    }
}

/* =====================================================================
 * DESKTOP BREAKPOINT (>=768px)
 * =====================================================================
 * On desktop the sidebar is always visible in the normal document
 * flow (not fixed). It defaults to 56px (icons only) and expands
 * to 220px when .toggled is added.
 * position: sticky keeps it locked to the viewport as the user scrolls.
 */
@media (min-width: 768px) {
    /* Backdrop is a phone-only affordance; never visible on tablet/desktop
     * even when the sidebar is "toggled" (which on desktop just means the
     * 220px expanded rail rather than a slid-in overlay). */
    .lb-sidebar-backdrop[b-x9usbz21yx] {
        display: none;
    }

    /* Switch from vertical stack (mobile) to horizontal row (desktop).
     * The dark background fills the sidebar column for the page's full
     * height; the sticky sidebar only covers the viewport, so on taller
     * pages this keeps the rail from ending in a white gap (#164). */
    .page[b-x9usbz21yx] {
        flex-direction: row;
        background-color: var(--lb-sidebar);
    }

    /* Sidebar: collapsed icon strip, full viewport height, sticky */
    .sidebar[b-x9usbz21yx] {
        width: var(--lb-sidebar-width-collapsed);
        min-width: var(--lb-sidebar-width-collapsed);
        height: 100vh;
        position: sticky;
        top: 0;
    }

    /* Expanded: grow to full width to show icons + text labels */
    .sidebar.toggled[b-x9usbz21yx] {
        width: var(--lb-sidebar-width-expanded);
        min-width: var(--lb-sidebar-width-expanded);
    }

    /* Focus mode: on tablet/desktop the restore button lives in the rail
     * itself, in flow, so it centers in the same content box as the
     * shield logo whether or not a scrollbar shows. NavMenu's root
     * elements (.lb-nav-header, .lb-nav-body) render as direct children
     * of .sidebar, so a flex column + `order` slots the button BETWEEN
     * them: shield logo (0) -> burger (1) -> nav items (2). The nav body
     * keeps its own internal scroll but switches from a 100vh height
     * calc to flex:1 so the inserted button doesn't push it past the
     * viewport. The fixed FAB variant is phone-only. */
    .sidebar.focus-mode[b-x9usbz21yx] {
        display: flex;
        flex-direction: column;
    }

    .sidebar.focus-mode[b-x9usbz21yx]  .lb-nav-header {
        flex-shrink: 0;
    }

    /* Rail-appropriate colors. The base .lb-focus-restore surface is built for
       the phone FAB, which floats over LIGHT content: white background
       (--lb-bg-topbar) + a dark icon (--lb-text). On the navy rail that reads
       as a white blob -- --lb-text (#1C2536) equals --lb-sidebar, so the glyph
       is invisible. Adopt the sidebar's on-dark palette instead:
       --lb-text-on-dark is the exact token the adjacent NavMenu icons use, and
       it stays light in dark mode too (where --lb-sidebar also stays dark), so
       one rule is correct in both themes. Soften the light base border
       (--lb-border) to a dark-friendly tone so it doesn't ring the button in a
       light outline. Set BOTH bg and color: dropping only the white bg would
       leave a navy glyph on navy. */
    .lb-focus-restore-rail[b-x9usbz21yx] {
        display: flex;
        order: 1;
        flex-shrink: 0;
        margin: 9px auto;
        background-color: transparent;
        color: var(--lb-text-on-dark);
        border-color: var(--lb-text-on-dark-dim);
    }

    /* Override the base light-content hover (brand-light bg + brand icon) with
       the rail hover, matching NavMenu links (sidebar-hover bg + white icon). */
    .lb-focus-restore-rail:hover[b-x9usbz21yx] {
        background-color: var(--lb-sidebar-hover);
        color: #fff;
    }

    .sidebar.focus-mode[b-x9usbz21yx]  .lb-nav-body {
        order: 2;
        height: auto;
        flex: 1;
        min-height: 0;
    }

    .lb-focus-restore-fab[b-x9usbz21yx] {
        display: none;
    }

    /* Keep the top-row pinned to the top of the scrollable main area */
    .top-row[b-x9usbz21yx] {
        position: sticky;
        top: 0;
        z-index: 1050;
    }

    article[b-x9usbz21yx] {
        padding-left: 2rem;
        padding-right: 1.5rem;
    }
}

@keyframes lb-backdrop-fade-in-b-x9usbz21yx {
    from { opacity: 0; }
    to   { opacity: 1; }
}

#blazor-error-ui[b-x9usbz21yx] {
    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-x9usbz21yx] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }

/* Chat panel styles are in Components/Chat/ChatPanel.razor.css */
/* /Components/LayoutComponents/MainMenu.razor.rz.scp.css */
/* === MainMenu — scoped styles === */

[b-8r9sy7rx15] .e-tab .e-tab-header {
    position: relative;
    min-height: 48px;
    background-color: #f4f4f4;
}

    [b-8r9sy7rx15] .e-tab .e-tab-header .e-toolbar-item .e-tab-text {
        font-size: 14px;
    }

/* Make toolbar buttons match the toolbar background */
[b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn,
[b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn.e-flat,
[b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn.e-flat:active,
[b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn.e-flat:focus,
[b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn.e-flat:hover {
    background-color: #f4f4f4 !important;
    color: rgb(90, 90, 90) !important;
    border: none !important;
    box-shadow: none !important;
}

    /* Remove hover/active color change for toolbar buttons */
    [b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn:hover,
    [b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn:active,
    [b-8r9sy7rx15] .e-toolbar .e-toolbar-items .e-toolbar-item .e-btn:focus {
        background-color: #eaeaea !important;
        color: #222 !important;
    }

[b-8r9sy7rx15] .e-tab .e-content .e-toolbar.toolbar-header-bg {
    background-color: #f4f4f4 !important;
}

[b-8r9sy7rx15] .e-toolbar.toolbar-header-bg,
[b-8r9sy7rx15] .e-toolbar.toolbar-header-bg .e-toolbar-items {
    background-color: #f4f4f4 !important;
}
/* /Components/LayoutComponents/NavMenu.razor.rz.scp.css */
/*
 * =====================================================================
 * NavMenu.razor.css -- Scoped styles for the sidebar navigation content
 * =====================================================================
 *
 * This file styles the INTERNAL content of the NavMenu component:
 * logo images, nav links, submenu groups, icons, and the caret.
 *
 * It does NOT control collapsed/expanded visibility -- that is handled
 * by MainLayout.razor.css using ::deep selectors keyed off the .toggled
 * class on the parent .sidebar div.
 *
 * In collapsed mode (56px), nav links and group toggles use
 * justify-content: center so the icon is centered in the narrow strip.
 * When expanded, MainLayout.razor.css overrides this to flex-start
 * so the icon + text left-align naturally.
 */

/* -- Logo header --
 * Contains two images (shield icon + full logo). Only one is visible
 * at a time -- visibility is controlled by MainLayout.razor.css ::deep rules.
 * Flexbox centering ensures whichever image is visible sits dead-center.
 */
.lb-nav-header[b-rb525ljcqz] {
    display: flex;
    align-items: center;      /* vertical centering */
    justify-content: center;  /* horizontal centering */
    padding: 0.6rem 0.75rem;
    min-height: 3.5rem;       /* matches the top-row height */
    background-color: color-mix(in srgb, var(--lb-sidebar) 85%, black);
}

/* Full logo -- shown when sidebar is expanded (.toggled) */
.lb-nav-logo[b-rb525ljcqz] {
    width: 130px;
    height: auto;
}

/* Small shield icon -- shown when sidebar is collapsed (default) */
.lb-nav-icon[b-rb525ljcqz] {
    width: 32px;   /* fits within the 56px collapsed sidebar width */
    height: auto;
}

/* -- Scrollable nav body --
 * Takes up the remaining viewport height below the logo header.
 * overflow-y: auto adds a scrollbar if the menu items exceed the
 * available height (important when many submenu groups are expanded).
 * overflow-x: hidden prevents horizontal scroll caused by text
 * that extends beyond the sidebar width during collapse animation.
 */
.lb-nav-body[b-rb525ljcqz] {
    height: calc(100vh - 3.5rem);  /* viewport minus logo header height */
    overflow-y: auto;
    overflow-x: hidden;
    background-color: var(--lb-sidebar);
    padding: 0.5rem 0;
}

/* -- Top-level nav items --
 * Each .nav-item wraps a single <NavLink>. The small horizontal padding
 * keeps the rounded-corner hover effect from touching the sidebar edge.
 */
.nav-item[b-rb525ljcqz] {
    padding: 0 0.25rem;
}

.nav-item:first-of-type[b-rb525ljcqz] {
    padding-top: 0.25rem;
}

/* Nav link styles.
 * Uses ::deep because Blazor's <NavLink> renders an <a> element that
 * lives inside NavLink's component boundary, which scoped CSS can't
 * reach without ::deep.
 *
 * justify-content: center -- when collapsed (icons only), centers the
 * icon in the 56px sidebar. MainLayout.razor.css overrides this to
 * flex-start when the sidebar is expanded.
 *
 * white-space: nowrap -- prevents text from wrapping during the width
 * transition animation.
 */
.nav-item[b-rb525ljcqz]  .nav-link {
    display: flex;
    align-items: center;
    justify-content: center;  /* centers icon in collapsed 56px sidebar */
    gap: 0;
    color: var(--lb-text-on-dark);
    background: none;
    border: none;
    border-radius: 6px;
    padding: 0.55rem 0.5rem;
    font-size: 0.88rem;
    text-decoration: none;
    transition: background-color 200ms ease, color 200ms ease;
    width: 100%;
    white-space: nowrap;
}

.nav-item[b-rb525ljcqz]  .nav-link:hover {
    background-color: var(--lb-sidebar-hover);
    color: #fff;
}

/* Active link highlight -- uses the sidebar active token for
 * a subtle tinted background that responds to theme changes.
 */
.nav-item[b-rb525ljcqz]  .nav-link.active,
.nav-item[b-rb525ljcqz]  a.active {
    background-color: var(--lb-sidebar-active-bg);
    color: #fff;
}

/* -- Syncfusion icon sizing --
 * Icons use Syncfusion's e-icons font (loaded from the bootstrap5.css theme).
 * Fixed width ensures all icons occupy the same horizontal space for
 * consistent alignment. flex-shrink: 0 prevents the icon from compressing
 * when the sidebar width is animating.
 */
.nav-item[b-rb525ljcqz]  .e-icons,
.nav-group-toggle .e-icons[b-rb525ljcqz] {
    font-size: 1.1rem;
    width: 1.25rem;
    text-align: center;
    flex-shrink: 0;
}

/* -- Text label --
 * The .nav-text span sits next to the icon. In collapsed mode,
 * MainLayout.razor.css hides it via ::deep { display: none }.
 * margin-left provides the gap between icon and text when visible.
 */
.nav-text[b-rb525ljcqz] {
    margin-left: 0.6rem;
}

/* -- Group toggle button (Cases, Reports, Settings) --
 * Styled to match the top-level nav links so the menu has a uniform look.
 * justify-content: center keeps the icon centered in collapsed mode;
 * MainLayout.razor.css overrides to flex-start when expanded.
 */
.nav-group[b-rb525ljcqz] {
    padding: 0 0.25rem;
}

.nav-group-toggle[b-rb525ljcqz] {
    display: flex;
    align-items: center;
    justify-content: center;  /* icon-centered in collapsed 56px sidebar */
    gap: 0;
    width: 100%;
    background: none;
    border: none;
    border-radius: 6px;
    color: var(--lb-text-on-dark);
    font-size: 0.88rem;
    padding: 0.55rem 0.5rem;
    cursor: pointer;
    text-align: left;
    white-space: nowrap;      /* prevents text wrap during width animation */
    transition: background-color 200ms ease, color 200ms ease;
}

.nav-group-toggle:hover[b-rb525ljcqz] {
    background-color: var(--lb-sidebar-hover);
    color: #fff;
}

/* Keyboard accessibility -- visible focus ring for tab navigation */
.nav-group-toggle:focus-visible[b-rb525ljcqz] {
    outline: 2px solid #258cfb;
    outline-offset: -2px;
}

/* -- Caret rotation --
 * The caret (>) sits at the right edge of the toggle button via margin-left: auto.
 * When the button has the .open class (toggled by native JS onclick),
 * CSS rotates the caret 90 degrees to point downward, indicating the submenu is open.
 */
.nav-caret[b-rb525ljcqz] {
    margin-left: auto;  /* pushes caret to the far right of the flex row */
    font-size: 0.7rem;
    transition: transform 250ms ease;
    display: inline-block;
}

.nav-group-toggle.open .nav-caret[b-rb525ljcqz] {
    transform: rotate(90deg);  /* > becomes v */
}

/* -- Submenu collapsible list --
 * Uses the max-height animation trick because CSS cannot transition
 * height: 0 -> height: auto. We set a large max-height (500px) that
 * the content never actually reaches -- the browser transitions from
 * 0 to 500px but the element only grows to its natural content height.
 *
 * border-left creates a vertical connector line that visually ties
 * the submenu items to their parent group header.
 * margin-left aligns the connector line under the parent's icon.
 */
.submenu-list[b-rb525ljcqz] {
    list-style: none;
    margin: 0;
    padding: 0 0 0 0.5rem;   /* small left padding between border-line and text */
    border-left: 2px solid var(--lb-text-on-dark-dim);  /* vertical connector */
    margin-left: 1.55rem;    /* aligns connector under the parent icon */
    max-height: 0;           /* collapsed by default */
    overflow: hidden;
    transition: max-height 300ms ease, opacity 300ms ease;
    opacity: 0;
}

/* When the native JS onclick adds .open, animate to full height */
.submenu-list.open[b-rb525ljcqz] {
    max-height: 500px;       /* large enough for any submenu content */
    opacity: 1;
}

.submenu-list li[b-rb525ljcqz] {
    padding: 0;
}

/* Submenu link styles.
 * ::deep is needed because <NavLink> renders an <a> that is inside
 * the NavLink component boundary.
 * Slightly smaller font and muted color distinguish these from
 * top-level nav links.
 */
[b-rb525ljcqz] .submenu-link {
    display: block;
    color: var(--lb-text-on-dark-muted);
    font-size: 0.82rem;
    padding: 0.35rem 0.5rem;
    border-radius: 4px;
    text-decoration: none;
    text-align: left;
    transition: background-color 200ms ease, color 200ms ease;
}

[b-rb525ljcqz] .submenu-link:hover {
    background-color: var(--lb-sidebar-hover);
    color: #fff;
}

/* Active submenu link -- uses sidebar active background token */
[b-rb525ljcqz] .submenu-link.active {
    background-color: var(--lb-sidebar-active-bg);
    color: #fff;
}

/* =====================================================================
 * Pinned Cases & Recent Cases sections
 * =====================================================================
 * These sections appear above the main nav items when the sidebar is
 * expanded and tenant data has loaded. They are hidden in collapsed
 * mode by a ::deep rule in MainLayout.razor.css.
 */

.lb-pinned-section[b-rb525ljcqz],
.lb-recent-section[b-rb525ljcqz] {
    padding: 0 0.25rem;
    margin-bottom: 0.25rem;
}

/* -- Section toggle button --
 * Styled as a compact uppercase label row with icon + text + caret.
 * Uses the same native onclick expand-sidebar-then-toggle pattern
 * as the main nav-group-toggle buttons.
 */
.lb-section-toggle[b-rb525ljcqz] {
    display: flex;
    align-items: center;
    width: 100%;
    background: none;
    border: none;
    color: var(--lb-text-on-dark-dim);
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    padding: 0.4rem 0.5rem;
    cursor: pointer;
    white-space: nowrap;
    transition: color 200ms ease;
}

.lb-section-toggle:hover[b-rb525ljcqz] {
    color: var(--lb-text-on-dark-muted);
}

.lb-section-toggle:focus-visible[b-rb525ljcqz] {
    outline: 2px solid #258cfb;
    outline-offset: -2px;
}

.lb-section-toggle .e-icons[b-rb525ljcqz] {
    font-size: 0.85rem;
    width: 1.25rem;
    text-align: center;
    flex-shrink: 0;
}

.lb-section-label[b-rb525ljcqz] {
    margin-left: 0.4rem;
    flex: 1;
}

/* Caret rotation when section is open (reuses .nav-caret base styles) */
.lb-section-toggle.open .nav-caret[b-rb525ljcqz] {
    transform: rotate(90deg);
}

/* -- Collapsible section list --
 * max-height trick for CSS-only collapse/expand animation.
 * Starts collapsed (max-height: 0); .open class reveals content.
 * The "open" class is driven by C# state (_pinnedExpanded /
 * _recentExpanded in NavMenu.razor): default true on tablet/desktop,
 * collapsed to false on phones via OnAfterRenderAsync / OnLayoutTierChanged.
 */
.lb-section-list[b-rb525ljcqz] {
    max-height: 0;
    overflow: hidden;
    transition: max-height 300ms ease, opacity 300ms ease;
    opacity: 0;
}

.lb-section-list.open[b-rb525ljcqz] {
    max-height: 500px;
    opacity: 1;
}

/* -- Case row link --
 * Each pinned/recent case is a flex row: dot + name + file#/timestamp.
 * Left padding aligns content under the section label text.
 */
.lb-case-row[b-rb525ljcqz] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.2rem 0.5rem 0.2rem 1.5rem;
    text-decoration: none;
    border-radius: 4px;
    cursor: pointer;
    transition: background-color 200ms ease;
}

.lb-case-row:hover[b-rb525ljcqz] {
    background-color: var(--lb-sidebar-hover);
}

/* -- Phase indicator dots --
 * Colored dot indicating the case's current phase/status.
 * Color is set inline via the PhaseColor() method.
 */
.lb-phase-dot[b-rb525ljcqz] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    flex-shrink: 0;
}

.lb-phase-dot-sm[b-rb525ljcqz] {
    width: 5px;
    height: 5px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* -- Case name text -- */
.lb-case-name[b-rb525ljcqz] {
    font-size: 0.78rem;
    color: var(--lb-text-on-dark);
    font-weight: 600;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Dimmer name variant for the Recent section */
.lb-case-name-muted[b-rb525ljcqz] {
    color: var(--lb-text-on-dark-muted);
}

/* -- File number (pinned) -- */
.lb-case-id[b-rb525ljcqz] {
    font-size: 0.68rem;
    color: var(--lb-text-on-dark-dim);
    font-family: 'JetBrains Mono', monospace;
    flex-shrink: 0;
}

/* -- Relative timestamp (recent) -- */
.lb-recent-time[b-rb525ljcqz] {
    font-size: 0.65rem;
    color: var(--lb-text-on-dark-dim);
    flex-shrink: 0;
}

/* -- "View all pinned" link -- */
.lb-view-all[b-rb525ljcqz] {
    display: block;
    font-size: 0.72rem;
    color: var(--lb-brand);
    padding: 0.3rem 0.5rem 0.3rem 1.5rem;
    text-decoration: none;
}

.lb-view-all:hover[b-rb525ljcqz] {
    text-decoration: underline;
}

/* -- Divider between sections and main nav -- */
.lb-section-divider[b-rb525ljcqz] {
    height: 1px;
    background: var(--lb-text-on-dark-dim);
    margin: 0.4rem 0.75rem;
    opacity: 0.3;
}

/* -- Task badge on nav link --
 * min-width 2.5em fits 1-3 digits, max-width 4em fits 4-5 digits before
 * truncating with an ellipsis. Without max-width a count like 12345 would
 * stretch the pill far enough to push the caret off the row. The data
 * layer should still cap displayed counts at "999+" or similar; this is
 * defensive sizing for the visual-only case.
 */
.nav-badge[b-rb525ljcqz] {
    font-size: 0.65rem;
    font-weight: 700;
    background: var(--lb-brand);
    color: #fff;
    padding: 1px 6px;
    border-radius: 10px;
    margin-left: auto;
    line-height: 1.4;
    min-width: 2.5em;
    max-width: 4em;
    text-align: center;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-badge-inline[b-rb525ljcqz] {
    font-size: 0.6rem;
    font-weight: 700;
    background: var(--lb-brand);
    color: #fff;
    padding: 1px 5px;
    border-radius: 8px;
    margin-left: 6px;
    line-height: 1.3;
    min-width: 1.4em;
    text-align: center;
    vertical-align: middle;
}

.nav-badge-urgent[b-rb525ljcqz] {
    background: var(--lb-danger);
}
/* /Components/LayoutComponents/ThemeSwitcher.razor.rz.scp.css */
/* =====================================================================
   ThemeSwitcher.razor.css -- Scoped styles for the color scheme picker
   =====================================================================
   ThemeSwitcher is a CHILD component of TopBar, so Blazor CSS isolation
   prevents TopBar.razor.css panel classes from reaching this component.
   All panel layout/appearance styles must be duplicated here.
   --------------------------------------------------------------------- */

/* -- Anchor container (mirrors TopBar pattern) -- */
.topbar-dropdown-anchor[b-a3ncx447cq] {
    position: relative;
    display: flex;
    align-items: center;
}

/* -- Panel container -- */
[b-a3ncx447cq] .theme-panel {
    position: absolute;
    top: 100%;
    right: 0;
    margin-top: 4px;
    background: var(--lb-bg-dropdown);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
    z-index: 100;
    min-width: 210px;
    animation: themePanelFadeIn-b-a3ncx447cq 150ms ease;
}

@keyframes themePanelFadeIn-b-a3ncx447cq {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* -- Panel header -- */
[b-a3ncx447cq] .panel-header {
    display: flex;
    align-items: center;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--lb-border);
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Section subheads (Mode / Color scheme) -- */
[b-a3ncx447cq] .panel-subhead {
    padding: 0.4rem 0.75rem 0.15rem;
    font-size: 0.68rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
}

[b-a3ncx447cq] .panel-subhead-divider {
    border-top: 1px solid var(--lb-border);
    margin-top: 0.25rem;
}

/* -- List -- */
[b-a3ncx447cq] .panel-list {
    list-style: none;
    margin: 0;
    padding: 0.25rem 0;
}

[b-a3ncx447cq] .panel-list-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    font-size: 0.8rem;
    color: var(--lb-text);
    transition: background 150ms ease;
    border: none;
    background: none;
    width: 100%;
    text-align: left;
}

[b-a3ncx447cq] .panel-list-item:hover {
    background: var(--lb-accent-tint);
}

[b-a3ncx447cq] .panel-item-text {
    flex: 1;
    white-space: nowrap;
}

[b-a3ncx447cq] .panel-item-active {
    background: var(--lb-accent-tint);
    font-weight: 600;
    color: var(--lb-brand);
}

/* -- Color swatches next to scheme names -- */
[b-a3ncx447cq] .scheme-swatch {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    border: 2px solid var(--lb-border);
    flex-shrink: 0;
}

[b-a3ncx447cq] .swatch-longbow {
    background: linear-gradient(135deg, #1C2536 50%, #D4890C 50%);
}

[b-a3ncx447cq] .swatch-bootstrap {
    background: linear-gradient(135deg, #212529 50%, #0d6efd 50%);
}

/* -- Active swatch ring -- */
[b-a3ncx447cq] .panel-item-active .scheme-swatch {
    border-color: var(--lb-brand);
    box-shadow: 0 0 0 2px var(--lb-accent-tint);
}

/* -- Light/dark mode icons (inline SVG, theme-colored via currentColor) -- */
[b-a3ncx447cq] .mode-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
    color: var(--lb-text-muted);
}

[b-a3ncx447cq] .mode-icon svg {
    width: 1rem;
    height: 1rem;
}

[b-a3ncx447cq] .panel-item-active .mode-icon {
    color: var(--lb-brand);
}

/* -- Hint text at the bottom of the panel -- */
[b-a3ncx447cq] .theme-hint {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.5rem 0.75rem;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    border-top: 1px solid var(--lb-border);
}
/* /Components/LayoutComponents/TopBar.razor.rz.scp.css */
/* =====================================================================
   TopBar.razor.css -- Scoped styles for the top navigation bar
   =====================================================================
   Three-zone flexbox layout: left (hamburger + brand), center (search),
   right (action buttons + avatar + logout).
   Height: 48px. Uses --lb-* design tokens from app.css.
   Responsive: search collapses to icon at <768px,
               non-essential buttons hide at <576px.
   Includes: dropdown panels, notifications, timer picker, quick-add,
             role switcher, mobile search overlay, avatar photo.
   --------------------------------------------------------------------- */

/* -- Main container -- */
.topbar[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    height: var(--lb-topbar-height);
    padding: 0 0.5rem;
    background-color: var(--lb-bg-topbar);
    border-bottom: 1px solid var(--lb-border);
    gap: 0.25rem;
    width: 100%;
    box-sizing: border-box;
}

/* -- Left zone: hamburger + brand -- */
.topbar-left[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    flex-shrink: 0;
}

/* -- Center zone: search bar -- */
.topbar-center[b-hr4t5qkek1] {
    flex: 1 1 auto;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    min-width: 0;
    padding: 0 0.5rem;
    margin-left: 10px;
}

.topbar-search[b-hr4t5qkek1] {
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
    max-width: 480px;
}

/* Mobile search overlay -- fills the entire topbar center zone */
.topbar-search-mobile[b-hr4t5qkek1] {
    max-width: none;
    position: absolute;
    left: 0;
    right: 0;
    top: 0;
    bottom: 0;
    z-index: 10;
    background: var(--lb-bg-topbar);
    padding: 0 0.5rem;
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

/* Keyboard shortcut badge next to the search input */
.slash-badge[b-hr4t5qkek1] {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    background: var(--lb-bg-surface);
    color: var(--lb-text-muted);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    padding: 0 5px;
    font-size: 0.7rem;
    line-height: 1.5;
    font-family: inherit;
    pointer-events: none;
    user-select: none;
}

[b-hr4t5qkek1] .search-close-btn {
    flex-shrink: 0;
}

/* -- Right zone: action buttons -- */
.topbar-right[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.topbar-right-hidden[b-hr4t5qkek1] {
    display: none;
}

/* -- Shared button styling --
   TopBar utility buttons use a subtle elevated surface style -- slightly
   darker/lighter than the topbar itself -- so they recede visually.
   The brand accent color is reserved for primary action buttons elsewhere.
   !important is needed because the global .e-btn.e-flat selector
   (two classes) has higher natural specificity than the scoped CSS
   attribute selector + .topbar-btn (one class). */
[b-hr4t5qkek1] .topbar-btn {
    position: relative;
    min-width: 40px;
    height: 40px;
    padding: 0 8px;
    border-radius: var(--lb-radius-card) !important;
    color: var(--lb-text) !important;
    font-size: 0.8rem;
    background-color: var(--lb-elevated) !important;
    border-color: var(--lb-border) !important;
    /* Center the glyph regardless of font baseline. The bell falls back to a
       Segoe UI Symbol glyph whose baseline differs from Syncfusion's e-icons,
       so without flex centering the bell sat low/right while siblings like
       calendar (e-day) sat dead-center (#773, #221, #655 family). Using
       inline-flex preserves the button's inline-block participation in
       .topbar-right's flex row while still centering the inner glyph + any
       label/badge children. */
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

[b-hr4t5qkek1] .topbar-btn:hover {
    background-color: var(--lb-border) !important;
    border-color: var(--lb-border) !important;
    color: var(--lb-text-bright) !important;
}

[b-hr4t5qkek1] .topbar-btn:focus-visible {
    box-shadow: var(--lb-focus-ring);
}

[b-hr4t5qkek1] .topbar-btn:disabled,
[b-hr4t5qkek1] .topbar-btn.e-disabled {
    background-color: var(--lb-elevated) !important;
    border-color: var(--lb-border) !important;
    color: var(--lb-text-dim) !important;
    opacity: 0.45;
}

/* Button inner label text (e.g. "Start" on timer) */
[b-hr4t5qkek1] .btn-label {
    margin-left: 4px;
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
}

/* -- Timer button states -- */
[b-hr4t5qkek1] .timer-btn {
    transition: background-color 200ms ease, color 200ms ease;
}

[b-hr4t5qkek1] .timer-active {
    background-color: var(--lb-timer-active-bg);
    color: var(--lb-timer-active);
    font-weight: 600;
}

[b-hr4t5qkek1] .timer-active:hover {
    background-color: rgba(39, 174, 96, 0.16);
}

/* -- Badge (deadlines, notifications) -- */
.topbar-badge[b-hr4t5qkek1] {
    position: absolute;
    top: 2px;
    right: 0;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: var(--lb-radius-pill);
    background-color: var(--lb-brand);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 16px;
    text-align: center;
    pointer-events: none;
}

.topbar-badge-urgent[b-hr4t5qkek1] {
    background-color: var(--lb-danger);
}

.topbar-badge-warning[b-hr4t5qkek1] {
    background-color: var(--lb-warning);
}

/* Failed-to-load state (#3287). Replaces the count when the badge's source could
   not be fetched, so "we could not check" never renders as a confident zero. The
   signal is the "!" glyph itself plus the tooltip/aria-label text -- colour alone
   would fail the firm a11y baseline. Reuses the urgent badge's proven white-on-
   danger pairing. */
.topbar-badge-alert[b-hr4t5qkek1] {
    background-color: var(--lb-danger);
}

/* -- Chat button --
 * Uses the shared .topbar-btn treatment (34px, card radius, elevated surface)
 * so it aligns with the calendar/quick-add/mail/bell siblings in the ribbon.
 * The anchor positions the unread badge. */
.chat-fab-anchor[b-hr4t5qkek1] {
    position: relative;
    display: flex;
    align-items: center;
}

.chat-badge[b-hr4t5qkek1] {
    position: absolute;
    top: -2px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: var(--lb-radius-pill);
    background-color: var(--lb-danger);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    line-height: 18px;
    text-align: center;
    pointer-events: none;
}

/* =====================================================================
   DROPDOWN PANELS -- Shared styles for all topbar dropdown panels
   (timer case picker, quick-add, notifications, role switcher)
   ===================================================================== */

/* Anchor container -- positions the panel relative to the button */
.topbar-dropdown-anchor[b-hr4t5qkek1] {
    position: relative;
    display: flex;
    align-items: center;
}

/* Shared panel container */
.topbar-panel[b-hr4t5qkek1] {
    position: absolute;
    top: 100%;
    right: 0;
    margin-top: 4px;
    background: var(--lb-bg-dropdown);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    box-shadow: 0 4px 16px rgba(0, 0, 0, 0.12);
    z-index: 1050;
    min-width: 220px;
    max-height: 380px;
    overflow-y: auto;
    animation: panelFadeIn-b-hr4t5qkek1 150ms ease;
}

/* On phones, override the per-trigger anchoring so panels stretch as a
 * wide strip just below the topbar regardless of which button (Quick-Add,
 * Notifications, Timer, Role switcher) opened them. The default
 * right: 0 anchoring extends the panel leftward from the trigger; for
 * triggers near the left edge of the topbar (Quick-Add on phones, where
 * many buttons are hidden) the panel extends off-screen.
 *
 * position: fixed pulls the panel out of its .topbar-dropdown-anchor's
 * relative box and pins it to the viewport. left/right .5rem keeps a
 * small visual gutter from the screen edges. The panel is no longer
 * visually tied to its trigger button, but on phone widths that's a
 * fine trade for "always fully visible". */
@media (max-width: 768px) {
    .topbar-panel[b-hr4t5qkek1] {
        position: fixed;
        top: var(--lb-topbar-height);
        left: 0.5rem;
        right: 0.5rem;
        margin-top: 0;
        min-width: 0;
        max-width: none;
        max-height: calc(100vh - var(--lb-topbar-height) - 1rem);
    }
}

@keyframes panelFadeIn-b-hr4t5qkek1 {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: translateY(0); }
}

/* Panel header row */
.panel-header[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--lb-border);
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text);
}

.panel-action-link[b-hr4t5qkek1] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.7rem;
    font-weight: 500;
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
}

.panel-action-link:hover[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
    text-decoration: underline;
}

/* Panel body scroll area */
.panel-body[b-hr4t5qkek1] {
    padding: 0.25rem 0;
}

/* Failed-load branch inside a panel body (#3287). Deliberately NOT styled like
   .panel-empty below: "couldn't load" and "nothing here" must not look alike. */
.panel-error[b-hr4t5qkek1] {
    padding: 0.85rem 0.75rem;
    text-align: center;
}

.panel-error-text[b-hr4t5qkek1] {
    margin: 0 0 0.35rem;
    color: var(--lb-danger);
    font-size: 0.8rem;
}

/* Empty state text */
.panel-empty[b-hr4t5qkek1] {
    padding: 1rem 0.75rem;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
    text-align: center;
    margin: 0;
}

/* Source-group header inside the notifications bell
   (Tomorrow / E-Signatures / Tasks / Texts) */
.panel-section-header[b-hr4t5qkek1] {
    padding: 0.4rem 0.75rem 0.2rem;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    border-top: 1px solid var(--lb-border);
}

.panel-section-header:first-child[b-hr4t5qkek1] {
    border-top: none;
}

/* Shared list -- used in timer picker, quick-add, notifications, role */
.panel-list[b-hr4t5qkek1] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.panel-list-item[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    cursor: pointer;
    font-size: 0.8rem;
    font-family: inherit;
    color: var(--lb-text);
    transition: background 150ms ease;
    border: none;
    background: none;
    width: 100%;
    margin: 0;
    text-align: left;
}

.panel-list-item:focus-visible[b-hr4t5qkek1] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

.panel-list-item:hover[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
}

.panel-list-item .e-icons[b-hr4t5qkek1] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    flex-shrink: 0;
}

.panel-item-text[b-hr4t5qkek1] {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.panel-item-active[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
    font-weight: 600;
    color: var(--lb-brand);
}

/* -- Timer panel specifics -- */
.timer-panel[b-hr4t5qkek1] {
    min-width: 280px;
    max-width: 340px;
}

/* Case search box inside the timer picker */
.timer-search-input[b-hr4t5qkek1] {
    width: calc(100% - 1.5rem);
    margin: 0.5rem 0.75rem;
    padding: 0.375rem 0.5rem;
    font-size: 0.8rem;
    color: var(--lb-text);
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    outline: none;
}

.timer-search-input:focus[b-hr4t5qkek1] {
    border-color: var(--lb-brand);
    box-shadow: var(--lb-focus-ring);
}

.timer-search-input[b-hr4t5qkek1]::placeholder {
    color: var(--lb-text-muted);
}

/* Sub-heading separating the "Recent cases" list from the search box */
.panel-subhead[b-hr4t5qkek1] {
    padding: 0.25rem 0.75rem;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
}

/* -- Quick-add panel specifics -- */
.quickadd-panel[b-hr4t5qkek1] {
    min-width: 200px;
}

/* -- Notifications panel specifics -- */
.notifications-panel[b-hr4t5qkek1] {
    min-width: 300px;
    max-width: 380px;
}

/* Individual notification item */
.notification-item[b-hr4t5qkek1] {
    flex-direction: row;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
}

.notification-unread[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
}

.notification-urgent[b-hr4t5qkek1] {
    border-left: 3px solid var(--lb-danger);
}

.notification-content[b-hr4t5qkek1] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.notification-message[b-hr4t5qkek1] {
    font-size: 0.78rem;
    line-height: 1.35;
    color: var(--lb-text);
    word-wrap: break-word;
}

.notification-time[b-hr4t5qkek1] {
    font-size: 0.65rem;
    color: var(--lb-text-muted);
}

.notification-dot[b-hr4t5qkek1] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-brand);
    flex-shrink: 0;
    margin-top: 4px;
}

/* Deadlines panel: row + per-item dismiss control.
   Each deadline is a two-button row (open / mark-as-read) wrapped in a
   .notification-row so the user can dismiss a deadline without opening the
   event (#328). The wrapping div hosts the menuitem role; both inner buttons
   are real buttons so keyboard + screen-reader users can reach either. */
.notification-row[b-hr4t5qkek1] {
    display: flex;
    align-items: stretch;
    gap: 0;
    width: 100%;
    border-left: 3px solid var(--lb-danger);
    transition: background 150ms ease;
}

.notification-row:hover[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
}

.notification-row.notification-unread[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
}

.notification-row-action[b-hr4t5qkek1] {
    flex: 1;
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    padding: 0.6rem 0.5rem 0.6rem 0.75rem;
    background: none;
    border: none;
    font-family: inherit;
    font-size: 0.8rem;
    color: var(--lb-text);
    text-align: left;
    cursor: pointer;
    min-width: 0;
}

.notification-row-action:focus-visible[b-hr4t5qkek1] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

.notification-dismiss-btn[b-hr4t5qkek1] {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    margin: 0.35rem 0.4rem 0.35rem 0;
    padding: 0;
    background: none;
    border: 1px solid transparent;
    border-radius: var(--lb-radius-card);
    color: var(--lb-text-muted);
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
}

.notification-dismiss-btn:hover[b-hr4t5qkek1] {
    background: var(--lb-bg-surface);
    border-color: var(--lb-border);
    color: var(--lb-brand);
}

.notification-dismiss-btn:focus-visible[b-hr4t5qkek1] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

.notification-dismiss-btn .e-icons[b-hr4t5qkek1] {
    font-size: 0.8rem;
}

/* Header-actions cluster (e.g., "Mark all read" + "View calendar" on the
   deadlines panel). Existing panels use a single trailing action; this groups
   two without breaking the header's space-between layout. */
.panel-header-actions[b-hr4t5qkek1] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
}

/* -- Role switcher panel -- */
.role-panel[b-hr4t5qkek1] {
    min-width: 200px;
}

/* Role toggle button (Managing Attorneys only) */
.topbar-role-toggle[b-hr4t5qkek1] {
    font-size: 0.7rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    padding: 2px 8px;
    min-height: 32px;
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-pill);
    white-space: nowrap;
    user-select: none;
    line-height: 1.4;
    cursor: pointer;
    background: none;
    display: inline-flex;
    align-items: center;
    gap: 3px;
    transition: background 150ms ease;
}

.topbar-role-toggle:hover[b-hr4t5qkek1] {
    background: var(--lb-accent-tint);
}

.topbar-role-toggle:focus-visible[b-hr4t5qkek1] {
    box-shadow: var(--lb-focus-ring);
}

.role-caret[b-hr4t5qkek1] {
    font-size: 0.55rem;
    color: var(--lb-text-muted);
}

/* -- Role indicator label (static, non-managing) -- */
.topbar-role[b-hr4t5qkek1] {
    font-size: 0.7rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    padding: 2px 8px;
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-pill);
    white-space: nowrap;
    user-select: none;
    line-height: 1.4;
}

/* -- User name display -- */
.topbar-user-name[b-hr4t5qkek1] {
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--lb-text);
    margin-left: 8px;
    white-space: nowrap;
    max-width: 140px;
    overflow: hidden;
    text-overflow: ellipsis;
    user-select: none;
    cursor: pointer;
}

/* On tablet and below the top bar is crowded, so the name (which is often a
   long email) is hidden and only the avatar icon shows -- the name stays
   available via the avatar tooltip and the user menu. It returns at the
   Desktop tier (>= 1200px). Phone already omits it from the DOM (!_isMobile). */
@media (max-width: 1199.98px) {
    .topbar-user-name[b-hr4t5qkek1] {
        display: none;
    }
}

/* -- User avatar circle -- */
.topbar-avatar[b-hr4t5qkek1] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background-color: var(--lb-success);
    color: #fff;
    border: none;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    flex-shrink: 0;
    transition: box-shadow 200ms ease;
    overflow: hidden;
}

.topbar-avatar:hover[b-hr4t5qkek1] {
    box-shadow: 0 0 0 2px #1e8e4e;
}

.topbar-avatar:focus-visible[b-hr4t5qkek1] {
    box-shadow: var(--lb-focus-ring);
}

.avatar-initials[b-hr4t5qkek1] {
    font-size: 0.75rem;
    font-weight: 700;
    line-height: 1;
    letter-spacing: 0.03em;
}

/* Profile photo inside avatar circle */
.avatar-photo[b-hr4t5qkek1] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

/* -- Logout form (inline in flex) -- */
.topbar-logout-form[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    margin: 0;
    padding: 0;
}

[b-hr4t5qkek1] .logout-btn:hover {
    color: #fff !important;
    background-color: var(--lb-danger) !important;
    border-color: var(--lb-danger) !important;
}

/* -- Help button question mark -- */
[b-hr4t5qkek1] .help-btn {
    font-size: 0.8rem;
}

.help-icon[b-hr4t5qkek1] {
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
}

/* =====================================================================
   RESPONSIVE: <768px - Mobile
   Search bar collapses to icon (handled by _isMobile in Razor).
   Chat button hidden via _isMobile in Razor. The Help button is NO LONGER
   mobile-hidden: it renders on every tier so a stuck phone user can reach
   Contact Support (docs/specs/pending/support-ticketing.md).
   Dropdown panels become full-width.
   ===================================================================== */
@media (max-width: 767.98px) {
    .topbar[b-hr4t5qkek1] {
        padding: 0 0.25rem;
        /* Positioning context for the mobile search overlay. .topbar-search-mobile
           is position:absolute (left/right/top/bottom:0); without a positioned
           ancestor it had no anchor, so tapping the magnifying glass rendered the
           search box offscreen and "nothing happened". Anchor it to the whole bar
           so the overlay fills the topbar (.topbar-right-hidden hides the right
           icons; the overlay's opaque background covers the rest). */
        position: relative;
    }

    .topbar-center[b-hr4t5qkek1] {
        flex: 0 0 auto;
        padding: 0;
    }

    /* Spread the action buttons across the full width instead of letting them
       bunch up next to the search icon. On desktop the wide center search box
       grows (flex: 1 1 auto) and pushes this zone to the right edge; on phones
       the search collapses to an icon and .topbar-center is flex: 0 0 auto
       above, so nothing was growing and every button packed to the left,
       leaving dead space on the right. Letting the right zone grow and
       space-between its buttons makes the toolbar span edge-to-edge. The
       existing `gap` acts as the minimum spacing between buttons. */
    .topbar-right[b-hr4t5qkek1] {
        flex: 1 1 auto;
        justify-content: space-between;
    }

    [b-hr4t5qkek1] .topbar-btn {
        min-width: 30px;
        height: 30px;
        padding: 0 4px;
    }

    .chat-badge[b-hr4t5qkek1] {
        min-width: 16px;
        height: 16px;
        line-height: 16px;
        font-size: 0.6rem;
        padding: 0 4px;
    }

    .topbar-avatar[b-hr4t5qkek1] {
        width: 28px;
        height: 28px;
    }

    .avatar-initials[b-hr4t5qkek1] {
        font-size: 0.65rem;
    }

    [b-hr4t5qkek1] .btn-label {
        display: none;
    }

    /* Dropdown panels stretch wider on mobile */
    .topbar-panel[b-hr4t5qkek1] {
        min-width: 260px;
        right: -2rem;
    }

    .notifications-panel[b-hr4t5qkek1] {
        min-width: 280px;
        max-width: 320px;
    }
}

/* =====================================================================
   RESPONSIVE: <576px - Extra small
   Role badge hidden via _isExtraSmall in Razor.
   Further compact button spacing.
   ===================================================================== */
@media (max-width: 575.98px) {
    .topbar-right[b-hr4t5qkek1] {
        gap: 2px;
    }

    [b-hr4t5qkek1] .topbar-btn {
        min-width: 28px;
        height: 28px;
        padding: 0 3px;
    }

    .topbar-badge[b-hr4t5qkek1] {
        min-width: 14px;
        height: 14px;
        font-size: 0.6rem;
        line-height: 14px;
    }

    /* Panels pin to right edge on very small screens */
    .topbar-panel[b-hr4t5qkek1] {
        right: -1rem;
        min-width: 240px;
    }
}

/* -- Persisted notifications (system-notifications spec, Phase 2) ---------- */
/* Severity chip: text + color (never color-only, per the spec's a11y rule). */

.notif-row-top[b-hr4t5qkek1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.5rem;
}

.notif-sev-chip[b-hr4t5qkek1] {
    display: inline-block;
    padding: 0.05rem 0.45rem;
    border-radius: var(--lb-radius-pill);
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    line-height: 1.4;
}

.notif-sev-chip.sev-critical[b-hr4t5qkek1] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.notif-sev-chip.sev-today[b-hr4t5qkek1] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.notif-sev-chip.sev-soon[b-hr4t5qkek1] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.notif-sev-chip.sev-info[b-hr4t5qkek1] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

.notification-body[b-hr4t5qkek1] {
    display: block;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin-top: 0.1rem;
}

/* Divider label between persisted rows and the derived calendar reminders */
.panel-section-label[b-hr4t5qkek1] {
    padding: 0.4rem 0.75rem 0.2rem;
    font-size: 0.65rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-dim);
    border-top: 1px solid var(--lb-border-light);
    margin-top: 0.25rem;
}
/* /Components/MediaComponents/HtmlViewer.razor.rz.scp.css */
/* -- HtmlViewer scoped styles --
   Read-only, full-viewport document viewer (sanitized HTML rendered in an isolated iframe).
   Runs under FocusLayout (no app chrome), so the shell owns the whole window: a fixed toolbar
   + sanitized-notice strip above a scrollable content area. */

.hv-shell[b-8kaw8s2ics] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

/* Toolbar row, patterned on SpreadsheetViewer.razor.css's ::deep .ss-toolbar-row. */
[b-8kaw8s2ics] .hv-toolbar-row {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
    background: var(--lb-card, #ffffff);
}

.hv-title[b-8kaw8s2ics] {
    color: var(--lb-text, #1C2536);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 1 1 auto;
}

.hv-spacer[b-8kaw8s2ics] {
    flex: 1 1 auto;
}

.hv-sanitized-strip[b-8kaw8s2ics] {
    flex: 0 0 auto;
    padding: 4px 12px;
    font-size: 0.8rem;
    color: var(--lb-text-muted, #6b6b6b);
    background: var(--lb-surface-alt, #f5f7fa);
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
}

.hv-frame[b-8kaw8s2ics] {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    border: none;
    background: #fff;
}

.hv-source[b-8kaw8s2ics] {
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
    padding: 12px;
    overflow: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
    font-family: Consolas, monospace;
    font-size: 0.85rem;
    background: var(--lb-card, #ffffff);
    color: var(--lb-text, #1C2536);
}
/* /Components/MediaComponents/ImageEditor.razor.rz.scp.css */
/* -- ImageEditor scoped styles --
   This page runs under FocusLayout, which drops the sidebar and top-row,
   so there is no app chrome to subtract -- the editor owns the whole
   window. Mirrors WordProcessor's .wp-container sizing pattern: a fixed
   title bar above a flexible editor canvas.

   The original markup hardcoded the Syncfusion editor to Height="400",
   leaving most of the viewport empty. The shell below gives the editor a
   resolved full-viewport height so its own Height="100%" can fill it. */

.img-editor-shell[b-af08au5iqh] {
    display: flex;
    flex-direction: column;
    height: 100vh; /* full viewport: FocusLayout adds no top chrome */
    overflow: hidden; /* no stray body scrollbar if editor is a few px over */
}

/* -- Title bar: document name + save status + action buttons -- */
.img-editor-bar[b-af08au5iqh] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 6px 12px;
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
    background: var(--lb-surface-alt, #f5f7fa);
}

.img-editor-title[b-af08au5iqh] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text, #1a1a1a);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0; /* allow the name to truncate instead of pushing buttons */
}

.img-editor-status[b-af08au5iqh] {
    font-size: 0.8rem;
    color: var(--lb-text-muted, #6b6b6b);
    white-space: nowrap;
    flex-shrink: 0;
}

.img-editor-actions[b-af08au5iqh] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto; /* push the buttons to the right edge */
    flex-shrink: 0;
}

/* -- Buttons -- */
.img-btn[b-af08au5iqh] {
    padding: 5px 14px;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 4px;
    border: 1px solid var(--lb-border, #c0c0c0);
    background: #fff;
    color: var(--lb-text, #1a1a1a);
    cursor: pointer;
}

    .img-btn:hover:not(:disabled)[b-af08au5iqh] {
        background: #f0f0f0;
    }

    .img-btn:disabled[b-af08au5iqh] {
        opacity: 0.55;
        cursor: default;
    }

.img-btn-primary[b-af08au5iqh] {
    background: var(--lb-brand, #0d6efd);
    border-color: var(--lb-brand, #0d6efd);
    color: var(--lb-text-on-brand, #fff);
}

    .img-btn-primary:hover:not(:disabled)[b-af08au5iqh] {
        background: var(--lb-brand-hover, #0b5ed7);
        border-color: var(--lb-brand-hover, #0b5ed7);
    }

/* -- Editor canvas --
   Takes all remaining height. min-height: 0 lets this flex child shrink
   below its content size so the Syncfusion editor's Height="100%" resolves
   against a real pixel height. */
.img-editor-canvas[b-af08au5iqh] {
    flex: 1 1 auto;
    min-height: 0;
}
/* /Components/MediaComponents/ImageViewer.razor.rz.scp.css */
/* -- ImageViewer scoped styles --
   Read-only, full-viewport document viewer. Runs under FocusLayout (no app
   chrome), so the shell owns the whole window: a fixed title/pager bar above
   a scrollable page canvas. */

.img-viewer-shell[b-tb0z805pxw] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

/* -- Title + pager bar -- */
.img-viewer-bar[b-tb0z805pxw] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 6px 12px;
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
    background: var(--lb-surface-alt, #f5f7fa);
}

.img-viewer-title[b-tb0z805pxw] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text, #1a1a1a);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 1 1 auto; /* take the slack so the pager and Close sit at the right */
}

.img-viewer-pager[b-tb0z805pxw] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
}

.iv-pageinfo[b-tb0z805pxw] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
    color: var(--lb-text, #1a1a1a);
    white-space: nowrap;
}

.iv-pageinput[b-tb0z805pxw] {
    width: 56px;
    padding: 3px 6px;
    font-size: 0.85rem;
    text-align: center;
    border: 1px solid var(--lb-border, #c0c0c0);
    border-radius: 4px;
}

/* -- Buttons -- */
.iv-btn[b-tb0z805pxw] {
    padding: 4px 12px;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 4px;
    border: 1px solid var(--lb-border, #c0c0c0);
    background: #fff;
    color: var(--lb-text, #1a1a1a);
    cursor: pointer;
}

    .iv-btn:hover:not(:disabled)[b-tb0z805pxw] {
        background: #f0f0f0;
    }

    .iv-btn:disabled[b-tb0z805pxw] {
        opacity: 0.5;
        cursor: default;
    }

.iv-btn-close[b-tb0z805pxw] {
    flex: 0 0 auto;
}

/* -- Page canvas --
   Dark backdrop is the conventional document-viewer look; the page scrolls
   when it is taller than the viewport. min-height: 0 lets this flex child
   shrink so its own scrollbar (not the body's) handles overflow. */
.img-viewer-canvas[b-tb0z805pxw] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    padding: 16px;
    text-align: center;
    background: #525659;
}

.img-viewer-page[b-tb0z805pxw] {
    max-width: 100%;
    height: auto;
    display: inline-block;
    background: #fff;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.4);
}
/* /Components/MediaComponents/InlineImageViewer.razor.rz.scp.css */
.lb-inline-img-backdrop[b-ia5q3eqvdy] {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(0, 0, 0, 0.6);
}

.lb-inline-img-frame[b-ia5q3eqvdy] {
    display: flex;
    flex-direction: column;
    max-width: 92vw;
    max-height: 92vh;
    background: var(--lb-card, #ffffff);
    border-radius: 6px;
    box-shadow: 0 8px 32px rgba(0, 0, 0, 0.35);
    overflow: hidden;
}

.lb-inline-img-bar[b-ia5q3eqvdy] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border, #e0e0e0);
    background: var(--lb-surface-alt, #f5f5f5);
}

.lb-inline-img-spacer[b-ia5q3eqvdy] {
    flex: 1 1 auto;
}

.lb-inline-img-body[b-ia5q3eqvdy] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 16px;
    overflow: auto;
}

.lb-inline-img-body img[b-ia5q3eqvdy] {
    max-width: 100%;
    max-height: calc(92vh - 64px);
    height: auto;
    object-fit: contain;
}
/* /Components/MediaComponents/MarkdownViewer.razor.rz.scp.css */
/* -- MarkdownViewer scoped styles --
   Read-only, full-viewport document viewer (Markdig-rendered, then sanitized, HTML rendered in
   an isolated iframe). Runs under FocusLayout (no app chrome), so the shell owns the whole
   window: a fixed toolbar above a scrollable content area. */

.mv-shell[b-5afcxvj8q5] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

/* Toolbar row, patterned on SpreadsheetViewer.razor.css's ::deep .ss-toolbar-row. */
[b-5afcxvj8q5] .mv-toolbar-row {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
    background: var(--lb-card, #ffffff);
}

.mv-title[b-5afcxvj8q5] {
    color: var(--lb-text, #1C2536);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 1 1 auto;
}

.mv-spacer[b-5afcxvj8q5] {
    flex: 1 1 auto;
}

.mv-frame[b-5afcxvj8q5] {
    flex: 1 1 auto;
    min-height: 0;
    width: 100%;
    border: none;
    background: #fff;
}

.mv-source[b-5afcxvj8q5] {
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
    padding: 12px;
    overflow: auto;
    white-space: pre-wrap;
    word-wrap: break-word;
    font-family: Consolas, monospace;
    font-size: 0.85rem;
    background: var(--lb-card, #ffffff);
    color: var(--lb-text, #1C2536);
}
/* /Components/MediaComponents/PDF.razor.rz.scp.css */
/* -- PDF viewer toolbar row -- */
.pdf-toolbar-row[b-bakc8mm8jb] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
}

/* -- #1834: document name shown in the toolbar (mirrors WordProcessor's
   .wp-title-text). margin-right:auto keeps the name left-aligned and pushes
   the action buttons to the right; the ellipsis rules truncate a long name
   rather than squeezing the buttons off the row. -- */
[b-bakc8mm8jb] .pdf-title-text {
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    margin-right: auto;
}
/* /Components/MediaComponents/SpreadsheetViewer.razor.rz.scp.css */
/* Selectors here are PLAIN, not ::deep-prefixed. Blazor compiles a LEADING
   "::deep .x" to "[b-scope] .x", which needs an ANCESTOR carrying the scope id --
   so it matches this component's NESTED elements but never its TOP-LEVEL ones.
   The whole file was written with a leading ::deep, which made exactly the
   top-level rules dead: .ss-toolbar-row was never flex, and .ss-viewer-shell was
   never positioned. That second one is what broke the panels -- with no
   positioned ancestor, the absolutely-positioned asides anchored to the document
   instead of the sheet and rendered off-screen (the nested .ss-ai-panel rules
   themselves DID apply, via the .ss-viewer-shell ancestor, which is why the panel
   was styled but in the wrong place). Found in live verification of the Case Data
   panel; the same bug had been shipping under AI Assist.

   ::deep is still correct -- and still used below -- for markup a CHILD component
   renders, which is why .ss-field-body ::deep .mc-sidebar keeps it. */

/* -- SpreadsheetViewer toolbar row -- */
.ss-toolbar-row[b-wtpt86nmqf] {
    display: flex;
    gap: 8px;
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card);
}

/* -- Side panels ------------------------------------------------------------
   Both AI Assist and Case Data are plain asides overlaying the sheet's right
   edge (never SfDialogs, #2469; overlays so the SfSpreadsheet container never
   resizes when one opens). They share this one slot. */
.ss-viewer-shell[b-wtpt86nmqf] {
    position: relative;
}

/* -- Case Data field picker (spec section 8) -- */
.ss-field-panel[b-wtpt86nmqf] {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 360px;
    max-width: 90vw;
    z-index: 100;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 10px 12px;
    overflow: hidden;
    background: var(--lb-card);
    border-left: 1px solid var(--lb-border);
    box-shadow: var(--lb-shadow-lg);
}

.ss-field-header[b-wtpt86nmqf] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

.ss-field-header .ss-field-close[b-wtpt86nmqf] {
    margin-left: auto;
}

.ss-field-hint[b-wtpt86nmqf] {
    flex-shrink: 0;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    padding: 6px 10px;
    background: var(--lb-surface-alt);
    border-radius: 4px;
}

.ss-field-error[b-wtpt86nmqf] {
    flex-shrink: 0;
    font-size: 0.85rem;
    color: var(--lb-danger);
    padding: 6px 10px;
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
}

.ss-field-inserted[b-wtpt86nmqf] {
    flex-shrink: 0;
    font-size: 0.8rem;
    color: var(--lb-success);
    padding: 6px 10px;
    background: var(--lb-success-bg);
    border-radius: 4px;
    overflow-wrap: anywhere;
}

/* The merge-code sidebar fills whatever height is left. min-height:0 lets the
   list scroll instead of pushing the panel taller than the sheet. */
.ss-field-body[b-wtpt86nmqf] {
    flex: 1;
    min-height: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    overflow: hidden;
}

.ss-field-body[b-wtpt86nmqf]  .mc-sidebar {
    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.ss-ai-panel[b-wtpt86nmqf] {
    position: absolute;
    top: 0;
    right: 0;
    bottom: 0;
    width: 360px;
    max-width: 90vw;
    z-index: 100;
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 8px;
    padding: 10px 12px;
    overflow-y: auto;
    background: var(--lb-card);
    border-left: 1px solid var(--lb-border);
    box-shadow: var(--lb-shadow-lg);
}

.ss-ai-header[b-wtpt86nmqf] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.ss-ai-header .ss-ai-close[b-wtpt86nmqf] {
    margin-left: auto;
}

.ss-ai-disclaimer[b-wtpt86nmqf] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    padding: 6px 10px;
    background: var(--lb-surface-alt);
    border-radius: 4px;
}

.ss-ai-question[b-wtpt86nmqf] {
    width: 100%;
    resize: vertical;
    font: inherit;
    font-size: 0.9rem;
    padding: 6px 8px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-card);
    color: var(--lb-text);
}

.ss-ai-actions[b-wtpt86nmqf] {
    display: flex;
    justify-content: flex-end;
}

.ss-ai-error[b-wtpt86nmqf] {
    font-size: 0.85rem;
    color: var(--lb-danger);
    padding: 6px 10px;
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
}

.ss-ai-asked[b-wtpt86nmqf] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.ss-ai-answer[b-wtpt86nmqf] {
    font-size: 0.9rem;
    color: var(--lb-text);
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    padding-bottom: 4px;
    border-bottom: 1px solid var(--lb-border);
}

.ss-ai-proposal[b-wtpt86nmqf] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 8px 10px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-surface-alt);
}

.ss-ai-prop-desc[b-wtpt86nmqf] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text);
}

.ss-ai-prop-op[b-wtpt86nmqf] {
    font-size: 0.8rem;
    overflow-wrap: anywhere;
    white-space: pre-wrap;
}

.ss-ai-prop-actions[b-wtpt86nmqf] {
    display: flex;
    gap: 8px;
}

.ss-ai-prop-state[b-wtpt86nmqf] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    font-style: italic;
}
/* /Components/MediaComponents/TemplateEditor.razor.rz.scp.css */
/* -- TemplateEditor scoped styles --
   Modeled on WordProcessor.razor.css. This page runs under FocusLayout,
   which has no sidebar and no top-row, so the editor owns the whole window. */

/* NOTE: no ::deep here -- .te-container is this component's ROOT element, so it
   must be targeted directly (.te-container[scope]). With ::deep the rule
   compiles to "[scope] .te-container" (a *descendant* match) and never hits the
   root, leaving it auto-height -- which collapses the editor and lets the
   sidebar grow past the viewport. (Same fix as .wp-container in
   WordProcessor.razor.css.) */
.te-container[b-huewahhbu5] {
    position: relative; /* anchor for .te-saving-overlay */
    display: flex;
    flex-direction: column;
    height: 100vh; /* full viewport: FocusLayout adds no top chrome */
    min-height: 400px;
    overflow: hidden;
}

/* ============================================================
   BoldSign tag dropdown (hosted in the ribbon's Longbow tab)
   ============================================================ */

[b-huewahhbu5] .te-tag-field {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-huewahhbu5] .te-tag-label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* ============================================================
   Editor row: left-docked sidebar + editor
   ============================================================ */

[b-huewahhbu5] .te-editor-row {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

[b-huewahhbu5] .te-sidebar {
    display: flex;
    flex-direction: column;
    width: 280px;
    min-width: 230px;
    max-width: 360px;
    height: 100%;
    border-right: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
    overflow: hidden;
    flex-shrink: 0;
}

/* Tab bar at top of the sidebar (Merge codes | Quick Parts) */
[b-huewahhbu5] .te-sidebar-tabs {
    display: flex;
    align-items: stretch;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

[b-huewahhbu5] .te-sidebar-tab {
    flex: 1;
    padding: 8px 4px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    text-align: center;
    border-bottom: 2px solid transparent;
    transition: color 0.15s, border-color 0.15s;
}

[b-huewahhbu5] .te-sidebar-tab:hover {
    color: var(--lb-text);
}

[b-huewahhbu5] .te-sidebar-tab-active {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
    font-weight: 600;
}

/* Scrollable content area below the tabs */
[b-huewahhbu5] .te-sidebar-content {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}

[b-huewahhbu5] .te-editor {
    flex: 1 1 auto;
    min-width: 0;
    height: 100%;
    overflow: hidden;
}

/* ============================================================
   Saving overlay -- covers the editor while Save & Close runs
   ============================================================ */

[b-huewahhbu5] .te-saving-overlay {
    position: absolute;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.75);
    font-size: 1.05rem;
    font-weight: 500;
    color: var(--lb-text);
}

:global([data-theme="dark"]) .te-saving-overlay[b-huewahhbu5] {
    background: rgba(30, 30, 30, 0.75);
}

/* ============================================================
   Not-authorized / status message
   ============================================================ */

.te-message[b-huewahhbu5] {
    max-width: 460px;
    margin: 64px auto;
    text-align: center;
    color: var(--lb-text);
}

.te-message h4[b-huewahhbu5]{
    margin-bottom: 8px;
    font-weight: 600;
}

.te-message p[b-huewahhbu5]{
    color: var(--lb-text-muted);
}
/* /Components/MediaComponents/TextViewer.razor.rz.scp.css */
/* -- TextViewer scoped styles --
   Read-only, full-viewport plain-text document viewer. Runs under FocusLayout (no app chrome),
   so the shell owns the whole window: a fixed toolbar (+ optional truncation banner) above a
   scrollable <pre>. */

.tv-shell[b-s45iqgc3gx] {
    display: flex;
    flex-direction: column;
    height: 100vh;
    overflow: hidden;
}

/* Toolbar row, patterned on SpreadsheetViewer.razor.css's ::deep .ss-toolbar-row. */
[b-s45iqgc3gx] .tv-toolbar-row {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
    background: var(--lb-card, #ffffff);
}

.tv-title[b-s45iqgc3gx] {
    color: var(--lb-text, #1C2536);
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    min-width: 0;
    flex: 0 1 auto;
}

.tv-size[b-s45iqgc3gx] {
    color: var(--lb-text-muted, #6b6b6b);
    font-size: 0.85rem;
    white-space: nowrap;
}

.tv-spacer[b-s45iqgc3gx] {
    flex: 1 1 auto;
}

.tv-truncated-banner[b-s45iqgc3gx] {
    flex: 0 0 auto;
    padding: 6px 12px;
    font-size: 0.85rem;
    color: var(--lb-text, #1a1a1a);
    background: var(--lb-warning-bg, #fff3cd);
    border-bottom: 1px solid var(--lb-border, #d0d0d0);
}

.tv-pre[b-s45iqgc3gx],
.tv-pre-wrap[b-s45iqgc3gx] {
    flex: 1 1 auto;
    min-height: 0;
    margin: 0;
    padding: 12px;
    overflow: auto;
    font-family: Consolas, monospace;
    font-size: 0.85rem;
    background: var(--lb-card, #ffffff);
    color: var(--lb-text, #1C2536);
}

.tv-pre[b-s45iqgc3gx] {
    white-space: pre;
}

.tv-pre-wrap[b-s45iqgc3gx] {
    white-space: pre-wrap;
    word-wrap: break-word;
}
/* /Components/MediaComponents/WordProcessorClassic.razor.rz.scp.css */
/* -- WordProcessor scoped styles -- */

/* Container fills the full viewport. This page runs under FocusLayout,
   which has no sidebar and no top-row, so there is no app header bar to
   subtract -- the editor owns the whole window.
   NOTE: no ::deep here -- .wp-container is this component's ROOT element, so it
   must be targeted directly (.wp-container[scope]). With ::deep the rule
   compiles to "[scope] .wp-container" (a *descendant* match) and never hits the
   root, leaving it auto-height -- which collapses the editor and lets the
   sidebar grow past the viewport. */
.wp-container[b-8fbh7ox0r2] {
    position: relative; /* anchor for .wp-saving-overlay */
    display: flex;
    flex-direction: column;
    height: 100vh; /* full viewport: FocusLayout adds no top chrome */
    min-height: 400px;
    overflow: hidden;
}

/* ============================================================
   Title bar: doc name + template dropdown + import button
   ============================================================ */

[b-8fbh7ox0r2] .wp-title-bar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 6px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
}

[b-8fbh7ox0r2] .wp-title-text {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 1;
    min-width: 0;
}

[b-8fbh7ox0r2] .wp-title-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
    flex-shrink: 0;
}

[b-8fbh7ox0r2] .wp-template-field {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-8fbh7ox0r2] .wp-template-label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* Horizontal row: left sidebar + editor */
[b-8fbh7ox0r2] .wp-editor-row {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

/* Editor fills the remaining space */
[b-8fbh7ox0r2] .wp-editor {
    flex: 1 1 auto;
    min-width: 0;
    height: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* #238 — persistent header/footer formatting hint above the editor */
[b-8fbh7ox0r2] .wp-editor-hint {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.3;
}

[b-8fbh7ox0r2] .wp-editor-hint-icon {
    color: var(--lb-brand);
    font-size: 0.9rem;
    flex-shrink: 0;
}

/* Editor host fills the space left under the hint bar */
[b-8fbh7ox0r2] .wp-editor-surface {
    flex: 1 1 auto;
    min-height: 0;
    position: relative;
}

/* ============================================================
   Left-docked sidebar (Merge Codes / Snippets) -- always visible
   ============================================================ */

[b-8fbh7ox0r2] .wp-sidebar {
    display: flex;
    flex-direction: column;
    width: 280px;
    min-width: 230px;
    max-width: 360px;
    height: 100%;
    border-right: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
    overflow: hidden;
    flex-shrink: 0;
}

/* Tab bar at top of sidebar */
[b-8fbh7ox0r2] .wp-sidebar-tabs {
    display: flex;
    align-items: stretch;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

[b-8fbh7ox0r2] .wp-sidebar-tab {
    flex: 1;
    padding: 8px 4px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    text-align: center;
    border-bottom: 2px solid transparent;
    transition: color 0.15s, border-color 0.15s;
}

[b-8fbh7ox0r2] .wp-sidebar-tab:hover {
    color: var(--lb-text);
}

[b-8fbh7ox0r2] .wp-sidebar-tab-active {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
    font-weight: 600;
}

/* Scrollable content area */
[b-8fbh7ox0r2] .wp-sidebar-content {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}

/* Hint bar at bottom */
[b-8fbh7ox0r2] .wp-sidebar-hint {
    flex-shrink: 0;
    padding: 6px 8px;
    border-top: 1px solid var(--lb-border);
    font-size: 0.72rem;
    color: var(--lb-text-muted);
    text-align: center;
}

/* ============================================================
   Phones: the fixed-width (230-280px) merge-code / quick-parts
   sidebar would consume the whole viewport and leave the editor
   off-screen -- on a phone you would only see the sidebar. Stack
   the row vertically with the editor on top (primary, full width)
   and the sidebar below as a height-capped secondary panel. The
   row has exactly two children (sidebar, then editor) so
   column-reverse puts the editor first.
   ============================================================ */
@media (max-width: 768px) {
    [b-8fbh7ox0r2] .wp-editor-row {
        flex-direction: column-reverse;
    }

    [b-8fbh7ox0r2] .wp-sidebar {
        width: 100%;
        min-width: 0;
        max-width: 100%;
        max-height: 38vh;
    }

    [b-8fbh7ox0r2] .wp-editor {
        min-height: 55vh;
    }
}

/* ============================================================
   Saving overlay -- covers the editor while Save & Close runs
   ============================================================ */

[b-8fbh7ox0r2] .wp-saving-overlay {
    position: absolute;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.75);
    font-size: 1.05rem;
    font-weight: 500;
    color: var(--lb-text);
}

:global([data-theme="dark"]) .wp-saving-overlay[b-8fbh7ox0r2] {
    background: rgba(30, 30, 30, 0.75);
}

/* ============================================================
   Misc
   ============================================================ */

[b-8fbh7ox0r2] .wp-required-text {
    color: var(--lb-danger);
    font-size: 0.7rem;
}

/* ============================================================
   Merge pipeline prompt + report dialogs
   ============================================================ */

.wp-merge-prompt[b-8fbh7ox0r2] {
    margin-bottom: 14px;
}

.wp-merge-prompt label[b-8fbh7ox0r2] {
    display: block;
    margin-bottom: 4px;
    font-size: 0.85rem;
}

.wp-merge-progress[b-8fbh7ox0r2] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin-bottom: 10px;
}

.wp-merge-unresolved[b-8fbh7ox0r2] {
    margin: 8px 0 0;
    padding-left: 18px;
    font-size: 0.85rem;
}

.wp-merge-unresolved li[b-8fbh7ox0r2] {
    margin-bottom: 6px;
}

/* ============================================================
   Toolbar -- stack custom buttons icon-over-text
   ------------------------------------------------------------
   The Syncfusion DocumentEditor's built-in toolbar items (New,
   Open, Header, Footer, Page Setup, Break, Find, ...) render
   icon-on-top with the label below -- compact. The custom items
   (Save, Save & Close, Download, Print, Dictate, Send for
   Signature) instead render icon-left + a single-line label, so
   long labels like "Send for Signature" are very wide and crowd
   the toolbar.

   These rules make the custom buttons match the built-ins: icon
   on top, label wrapped below. The scope is exact -- .e-tbar-btn
   is the standard ej2 toolbar button used only by the custom
   items (built-in items use .e-de-bzr-button and are untouched),
   and .e-tbar-btn-text is their label span (both confirmed from
   a DevTools inspection of the rendered toolbar). max-width is
   the knob that controls where long labels wrap.
   ============================================================ */
[b-8fbh7ox0r2] .e-toolbar .e-tbar-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

[b-8fbh7ox0r2] .e-toolbar .e-tbar-btn .e-tbar-btn-text {
    white-space: normal;   /* allow wrapping; ej2 default is nowrap */
    line-height: 1.15;
    max-width: 68px;       /* wraps "Send for Signature" to two lines */
    text-align: center;
    margin-left: 0;        /* icon is on top now -- drop the icon-left gap */
}

/* ============================================================
   #240 -- Break-type chooser dialog. Stack the three choices as
   full-width, left-aligned buttons so each break type reads as a
   distinct menu row rather than a crowded button group.
   ============================================================ */
.wp-break-hint[b-8fbh7ox0r2] {
    margin: 0 0 12px;
    color: var(--bs-secondary-color, #6c757d);
}

.wp-break-options[b-8fbh7ox0r2] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.wp-break-options[b-8fbh7ox0r2]  .e-btn {
    justify-content: flex-start;
    text-align: left;
    width: 100%;
}
/* /Components/MediaComponents/WordProcessorRibbon.razor.rz.scp.css */
/* -- WordProcessor scoped styles -- */

/* Container fills the full viewport. This page runs under FocusLayout,
   which has no sidebar and no top-row, so there is no app header bar to
   subtract -- the editor owns the whole window.
   NOTE: no ::deep here -- .wp-container is this component's ROOT element, so it
   must be targeted directly (.wp-container[scope]). With ::deep the rule
   compiles to "[scope] .wp-container" (a *descendant* match) and never hits the
   root, leaving it auto-height -- which collapses the editor and lets the
   sidebar grow past the viewport. */
.wp-container[b-0d584ltroo] {
    position: relative; /* anchor for .wp-saving-overlay */
    display: flex;
    flex-direction: column;
    height: 100vh; /* full viewport: FocusLayout adds no top chrome */
    min-height: 400px;
    overflow: hidden;
}

/* ============================================================
   Title bar: doc name + template dropdown + import button
   ============================================================ */

[b-0d584ltroo] .wp-title-bar {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 6px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
}

[b-0d584ltroo] .wp-title-text {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex-shrink: 1;
    min-width: 0;
}

[b-0d584ltroo] .wp-title-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-left: auto;
    flex-shrink: 0;
}

[b-0d584ltroo] .wp-template-field {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-0d584ltroo] .wp-template-label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* Horizontal row: left sidebar + editor */
[b-0d584ltroo] .wp-editor-row {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

/* Editor fills the remaining space */
[b-0d584ltroo] .wp-editor {
    flex: 1 1 auto;
    min-width: 0;
    height: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* #238 — persistent header/footer formatting hint above the editor */
[b-0d584ltroo] .wp-editor-hint {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.3;
}

[b-0d584ltroo] .wp-editor-hint-icon {
    color: var(--lb-brand);
    font-size: 0.9rem;
    flex-shrink: 0;
}

/* Editor host fills the space left under the hint bar */
[b-0d584ltroo] .wp-editor-surface {
    flex: 1 1 auto;
    min-height: 0;
    position: relative;
}

/* ============================================================
   Left-docked sidebar (Merge Codes / Snippets) -- always visible
   ============================================================ */

[b-0d584ltroo] .wp-sidebar {
    display: flex;
    flex-direction: column;
    width: 280px;
    min-width: 230px;
    max-width: 360px;
    height: 100%;
    border-right: 1px solid var(--lb-border);
    background: var(--lb-card, #ffffff);
    overflow: hidden;
    flex-shrink: 0;
}

/* Tab bar at top of sidebar */
[b-0d584ltroo] .wp-sidebar-tabs {
    display: flex;
    align-items: stretch;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

[b-0d584ltroo] .wp-sidebar-tab {
    flex: 1;
    padding: 8px 4px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    text-align: center;
    border-bottom: 2px solid transparent;
    transition: color 0.15s, border-color 0.15s;
}

[b-0d584ltroo] .wp-sidebar-tab:hover {
    color: var(--lb-text);
}

[b-0d584ltroo] .wp-sidebar-tab-active {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
    font-weight: 600;
}

/* Scrollable content area */
[b-0d584ltroo] .wp-sidebar-content {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
    min-height: 0;
}

/* Hint bar at bottom */
[b-0d584ltroo] .wp-sidebar-hint {
    flex-shrink: 0;
    padding: 6px 8px;
    border-top: 1px solid var(--lb-border);
    font-size: 0.72rem;
    color: var(--lb-text-muted);
    text-align: center;
}

/* ============================================================
   Phones: the fixed-width (230-280px) merge-code / quick-parts
   sidebar would consume the whole viewport and leave the editor
   off-screen -- on a phone you would only see the sidebar. Stack
   the row vertically with the editor on top (primary, full width)
   and the sidebar below as a height-capped secondary panel. The
   row has exactly two children (sidebar, then editor) so
   column-reverse puts the editor first.
   ============================================================ */
@media (max-width: 768px) {
    [b-0d584ltroo] .wp-editor-row {
        flex-direction: column-reverse;
    }

    [b-0d584ltroo] .wp-sidebar {
        width: 100%;
        min-width: 0;
        max-width: 100%;
        max-height: 38vh;
    }

    [b-0d584ltroo] .wp-editor {
        min-height: 55vh;
    }
}

/* ============================================================
   Saving overlay -- covers the editor while Save & Close runs
   ============================================================ */

[b-0d584ltroo] .wp-saving-overlay {
    position: absolute;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    background: rgba(255, 255, 255, 0.75);
    font-size: 1.05rem;
    font-weight: 500;
    color: var(--lb-text);
}

:global([data-theme="dark"]) .wp-saving-overlay[b-0d584ltroo] {
    background: rgba(30, 30, 30, 0.75);
}

/* ============================================================
   Misc
   ============================================================ */

[b-0d584ltroo] .wp-required-text {
    color: var(--lb-danger);
    font-size: 0.7rem;
}

/* ============================================================
   Merge pipeline prompt + report dialogs
   ============================================================ */

.wp-merge-prompt[b-0d584ltroo] {
    margin-bottom: 14px;
}

.wp-merge-prompt label[b-0d584ltroo] {
    display: block;
    margin-bottom: 4px;
    font-size: 0.85rem;
}

.wp-merge-progress[b-0d584ltroo] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin-bottom: 10px;
}

.wp-merge-unresolved[b-0d584ltroo] {
    margin: 8px 0 0;
    padding-left: 18px;
    font-size: 0.85rem;
}

.wp-merge-unresolved li[b-0d584ltroo] {
    margin-bottom: 6px;
}

/* ============================================================
   Toolbar -- stack custom buttons icon-over-text
   ------------------------------------------------------------
   The Syncfusion DocumentEditor's built-in toolbar items (New,
   Open, Header, Footer, Page Setup, Break, Find, ...) render
   icon-on-top with the label below -- compact. The custom items
   (Save, Save & Close, Download, Print, Dictate, Send for
   Signature) instead render icon-left + a single-line label, so
   long labels like "Send for Signature" are very wide and crowd
   the toolbar.

   These rules make the custom buttons match the built-ins: icon
   on top, label wrapped below. The scope is exact -- .e-tbar-btn
   is the standard ej2 toolbar button used only by the custom
   items (built-in items use .e-de-bzr-button and are untouched),
   and .e-tbar-btn-text is their label span (both confirmed from
   a DevTools inspection of the rendered toolbar). max-width is
   the knob that controls where long labels wrap.
   ============================================================ */
[b-0d584ltroo] .e-toolbar .e-tbar-btn {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

[b-0d584ltroo] .e-toolbar .e-tbar-btn .e-tbar-btn-text {
    white-space: normal;   /* allow wrapping; ej2 default is nowrap */
    line-height: 1.15;
    max-width: 68px;       /* wraps "Send for Signature" to two lines */
    text-align: center;
    margin-left: 0;        /* icon is on top now -- drop the icon-left gap */
}

/* ============================================================
   #240 -- Break-type chooser dialog. Stack the three choices as
   full-width, left-aligned buttons so each break type reads as a
   distinct menu row rather than a crowded button group.
   ============================================================ */
.wp-break-hint[b-0d584ltroo] {
    margin: 0 0 12px;
    color: var(--bs-secondary-color, #6c757d);
}

.wp-break-options[b-0d584ltroo] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.wp-break-options[b-0d584ltroo]  .e-btn {
    justify-content: flex-start;
    text-align: left;
    width: 100%;
}

/* ============================================================
   Home > Styles > My Styles dialog -- the saved-styles manager.
   Rows read name + a one-line format summary with Apply/Delete
   at the right; the save strip sits under a divider.
   ============================================================ */
[b-0d584ltroo] .wp-mystyles-empty,
[b-0d584ltroo] .wp-mystyles-hint {
    margin: 0 0 8px;
    color: var(--bs-secondary-color, #6c757d);
}

[b-0d584ltroo] .wp-mystyles-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 300px;
    overflow-y: auto;
}

[b-0d584ltroo] .wp-mystyles-row {
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-0d584ltroo] .wp-mystyles-name {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

[b-0d584ltroo] .wp-mystyles-summary {
    font-size: 0.8125rem;
    color: var(--bs-secondary-color, #6c757d);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-0d584ltroo] .wp-mystyles-divider {
    margin: 12px 0;
    opacity: 0.4;
}

[b-0d584ltroo] .wp-mystyles-save {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

/* ============================================================
   Desktop Word Editing -- read-only preview banner
   (desktop-word-editing spec, Section 4 "Word-processor host")
   ============================================================ */

[b-0d584ltroo] .wp-preview-banner {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    padding: 8px 14px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
}

[b-0d584ltroo] .wp-preview-banner-text {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    font-size: 0.85rem;
    color: var(--lb-text);
}

[b-0d584ltroo] .wp-preview-banner-icon {
    color: var(--lb-text-muted);
    font-size: 0.95rem;
}

[b-0d584ltroo] .wp-preview-lock {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.8rem;
    padding: 2px 8px;
    border-radius: var(--lb-radius-pill);
}

[b-0d584ltroo] .wp-preview-lock--other {
    color: var(--lb-warning);
    background: var(--lb-warning-bg);
}

[b-0d584ltroo] .wp-preview-lock--self {
    color: var(--lb-success);
    background: var(--lb-success-bg);
}

[b-0d584ltroo] .wp-preview-lock--available {
    color: var(--lb-text-muted);
}

[b-0d584ltroo] .wp-preview-banner-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}
/* /Components/Pages/Admin/AdminConsentSetup.razor.rz.scp.css */
.consent-setup-container[b-7dsu53s8d5] {
    max-width: 720px;
    margin: 0 auto;
    padding: 24px 16px;
}

.consent-setup-header[b-7dsu53s8d5] {
    margin-bottom: 28px;
}

.consent-setup-title[b-7dsu53s8d5] {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 16px 0 4px;
}

.consent-setup-subtitle[b-7dsu53s8d5] {
    color: var(--lb-text-secondary);
    font-size: 0.9rem;
    line-height: 1.5;
    margin: 0;
}

/* Card sections */
.consent-card[b-7dsu53s8d5] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 24px;
    margin-bottom: 20px;
}

.consent-card-muted[b-7dsu53s8d5] {
    opacity: 0.85;
}

.consent-card-header[b-7dsu53s8d5] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 8px;
}

.consent-card-icon[b-7dsu53s8d5] {
    font-size: 18px;
    color: var(--lb-brand, rgb(204, 108, 44));
}

.consent-card-title[b-7dsu53s8d5] {
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 0;
}

.consent-card-desc[b-7dsu53s8d5] {
    color: var(--lb-text-secondary);
    font-size: 0.875rem;
    line-height: 1.5;
    margin: 0 0 16px;
}

/* Link display */
.consent-link-box[b-7dsu53s8d5] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--lb-surface-alt, #f8f8f8);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 10px 12px;
    overflow: hidden;
}

.consent-link-text[b-7dsu53s8d5] {
    flex: 1;
    font-size: 0.8rem;
    word-break: break-all;
    color: var(--lb-text-primary);
    user-select: all;
}

.consent-copy-btn[b-7dsu53s8d5] {
    flex-shrink: 0;
}

.consent-copied-msg[b-7dsu53s8d5] {
    display: inline-block;
    margin-top: 8px;
    font-size: 0.8rem;
    color: var(--lb-success, #4caf50);
}

/* Email form */
.consent-email-form[b-7dsu53s8d5] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.consent-email-row[b-7dsu53s8d5] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.consent-email-label[b-7dsu53s8d5] {
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--lb-text-primary);
}

.consent-required[b-7dsu53s8d5] {
    color: var(--lb-danger, #e53935);
}

.consent-email-input[b-7dsu53s8d5] {
    max-width: 400px;
}

.consent-send-btn[b-7dsu53s8d5] {
    align-self: flex-start;
}

/* Mailbox pre-flight status under the send button (#3586) */
.consent-preflight-checking[b-7dsu53s8d5] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

.consent-preflight-blocked[b-7dsu53s8d5] {
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--lb-warning);
    background: var(--lb-warning-bg);
    border-radius: 6px;
    padding: 8px 12px;
    max-width: 480px;
}

/* How it works */
.consent-steps[b-7dsu53s8d5] {
    padding-left: 20px;
    margin: 8px 0 12px;
    color: var(--lb-text-secondary);
    font-size: 0.875rem;
    line-height: 1.7;
}

.consent-note[b-7dsu53s8d5] {
    font-size: 0.82rem;
    color: var(--lb-text-secondary);
    margin: 0;
    padding: 10px 12px;
    background: var(--lb-surface-alt, #f8f8f8);
    border-radius: 6px;
}

/* Access denied - matches pattern from other admin pages */
.access-denied-panel[b-7dsu53s8d5] {
    text-align: center;
    padding: 48px 24px;
    color: var(--lb-text-secondary);
}
/* /Components/Pages/Admin/CaseTypeDataTab.razor.rz.scp.css */
/* CaseTypeDataTab styles -- all colors use --lb-* design tokens */

.case-type-data-panel[b-hmcicajjru] {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

/* -- Section cards -- */
.section-card[b-hmcicajjru] {
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 1rem 1.25rem;
    background-color: var(--lb-card);
}

.section-header h5[b-hmcicajjru] {
    margin: 0 0 0.15rem;
    font-weight: 600;
    color: var(--lb-text);
    font-size: 1rem;
}

.section-subtitle[b-hmcicajjru] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    margin: 0 0 0.75rem;
}

/* -- Extension module grid -- */
.extension-grid[b-hmcicajjru] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem 1.5rem;
    margin-bottom: 0.75rem;
}

@media (max-width: 768px) {
    .extension-grid[b-hmcicajjru] {
        grid-template-columns: 1fr;
    }
}

.extension-item[b-hmcicajjru] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    padding: 0.4rem 0;
}

.extension-desc[b-hmcicajjru] {
    font-size: 0.78rem;
    color: var(--lb-text-dim);
    margin-left: 1.75rem;
}

.extension-actions[b-hmcicajjru] {
    margin-bottom: 0.75rem;
}

/* -- Preview line -- */
.preview-line[b-hmcicajjru] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 0.75rem;
    background-color: var(--lb-info-bg);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.preview-line .e-icons[b-hmcicajjru] {
    color: var(--lb-info);
    font-size: 1rem;
}

/* -- EAV toolbar + grid -- */
.eav-toolbar[b-hmcicajjru] {
    margin-bottom: 0.75rem;
}

.eav-actions[b-hmcicajjru] {
    display: flex;
    gap: 0.25rem;
}

[b-hmcicajjru] .eav-grid {
    overflow-x: hidden;
}

/* -- Preview panel -- */
.preview-panel[b-hmcicajjru] {
    background-color: var(--lb-surface-alt);
}

.preview-tiers[b-hmcicajjru] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.preview-tier[b-hmcicajjru] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.3rem 0.5rem;
    font-size: 0.85rem;
    color: var(--lb-text);
    border-radius: var(--lb-radius-pill);
}

.tier-badge[b-hmcicajjru] {
    display: inline-block;
    padding: 0.1rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}

.tier-1[b-hmcicajjru] {
    background-color: var(--lb-brand-light);
    color: var(--lb-brand);
}

.tier-2[b-hmcicajjru] {
    background-color: var(--lb-info-bg);
    color: var(--lb-info);
}

.tier-3[b-hmcicajjru] {
    background-color: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.tier-z2[b-hmcicajjru] {
    background-color: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

.preview-wc[b-hmcicajjru] {
    color: var(--lb-info);
    font-style: italic;
}

.preview-wc .e-icons[b-hmcicajjru] {
    color: var(--lb-info);
    font-size: 0.9rem;
}

.preview-zone2[b-hmcicajjru] {
    border-top: 1px dashed var(--lb-border-light);
    padding-top: 0.5rem;
    margin-top: 0.25rem;
}

/* -- Delete warning -- */
.delete-warning[b-hmcicajjru] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    color: var(--lb-warning);
    font-size: 0.85rem;
    margin-top: 0.5rem;
}

.delete-warning .e-icons[b-hmcicajjru] {
    font-size: 1rem;
}

/* -- Empty state -- */
.empty-state[b-hmcicajjru] {
    color: var(--lb-text-muted);
    padding: 1rem 0;
}

/* -- WC notice -- */
.wc-notice[b-hmcicajjru] {
    background-color: var(--lb-info-bg);
}

.wc-notice-content[b-hmcicajjru] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    color: var(--lb-text);
}

.wc-notice-content .e-icons[b-hmcicajjru] {
    color: var(--lb-info);
    font-size: 1.25rem;
    margin-top: 0.15rem;
}

.wc-notice-content strong[b-hmcicajjru] {
    display: block;
    margin-bottom: 0.15rem;
}

.wc-notice-content .section-subtitle[b-hmcicajjru] {
    margin: 0;
}
/* /Components/Pages/Admin/CaseTypeTabAdmin.razor.rz.scp.css */
/* Case Type Tab Admin page styles -- all colors use --lb-* design tokens */

/* Initial page loading container (tenant not yet ready) */
.case-type-tab-loading[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

.admin-tab-container[b-fvztiz25ip] {
    padding: 1rem 1.5rem;
}

.page-title[b-fvztiz25ip] {
    margin-bottom: 0.25rem;
    font-weight: 600;
    color: var(--lb-text);
}

.page-subtitle[b-fvztiz25ip] {
    color: var(--lb-text-muted);
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

.admin-tab-layout[b-fvztiz25ip] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.case-type-panel[b-fvztiz25ip] {
    max-width: 500px;
}

.case-type-panel h5[b-fvztiz25ip] {
    margin-bottom: 0.5rem;
    font-weight: 600;
    color: var(--lb-text);
}

.tab-config-panel[b-fvztiz25ip] {
    flex: 1;
}

.toolbar-row[b-fvztiz25ip] {
    margin-bottom: 0.75rem;
}

.access-denied-panel[b-fvztiz25ip] {
    padding: 3rem;
    text-align: center;
    color: var(--lb-text);
}

/* -- Instructional banner above the grid -- */
.edit-instructions[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 1rem;
    margin-bottom: 0.75rem;
    background-color: var(--lb-info-bg);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.edit-instructions .e-icons[b-fvztiz25ip] {
    color: var(--lb-info);
    font-size: 1rem;
}

/* -- Core tab badge -- */
.core-badge[b-fvztiz25ip] {
    display: inline-block;
    padding: 0.15rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    font-size: 0.75rem;
    font-weight: 600;
    background-color: var(--lb-brand-light);
    color: var(--lb-brand);
}

.configurable-badge[b-fvztiz25ip] {
    display: inline-block;
    padding: 0.15rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    font-size: 0.75rem;
    font-weight: 500;
    background-color: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

/* -- Status badges -- */
.status-default[b-fvztiz25ip] {
    color: var(--lb-text-dim);
    font-style: italic;
}

.status-custom[b-fvztiz25ip] {
    color: var(--lb-brand);
    font-weight: 600;
}

/* -- Grid: remove component-level altrow override, rely on global app.css -- */
/* -- Grid: no horizontal scroll -- adaptive layout handles it -- */
[b-fvztiz25ip] .tab-config-grid {
    overflow-x: hidden;
}

/* -- Icon preview in grid cell and dropdown items -- */
[b-fvztiz25ip] .icon-preview {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.85rem;
    color: var(--lb-text);
}

[b-fvztiz25ip] .icon-preview .e-icons {
    font-size: 1rem;
    color: var(--lb-brand);
}

[b-fvztiz25ip] .icon-dd-item {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 2px 0;
    font-size: 0.85rem;
}

[b-fvztiz25ip] .icon-dd-item .e-icons {
    font-size: 1rem;
    width: 1.2rem;
    text-align: center;
    color: var(--lb-brand);
}

/* -- Locked (core) row: subtle visual indicator -- */
[b-fvztiz25ip] .e-grid .e-row.core-row .e-rowcell {
    color: var(--lb-text-muted);
}

/* -- Placeholder / empty state -- */
.empty-state[b-fvztiz25ip] {
    color: var(--lb-text-muted);
    padding: 1rem 0;
}

/* -- Admin SfTab panel -- */
[b-fvztiz25ip] .e-tab .e-content {
    padding: 1rem 0;
}

[b-fvztiz25ip] .e-tab .e-tab-header .e-toolbar-item .e-tab-text {
    font-weight: 600;
}

/* -- Shared header card -- */
.meta-header-card[b-fvztiz25ip] {
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 0.75rem 1.25rem;
    background-color: var(--lb-card);
    margin-bottom: 1rem;
}

.meta-header-grid[b-fvztiz25ip] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 0.75rem 1.5rem;
    margin-bottom: 0.75rem;
}

.meta-field[b-fvztiz25ip] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.meta-field-check[b-fvztiz25ip] {
    justify-content: flex-end;
    padding-bottom: 0.25rem;
    grid-column: 1 / -1;
}

.meta-label[b-fvztiz25ip] {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.meta-readonly[b-fvztiz25ip] {
    font-size: 0.9rem;
    color: var(--lb-text);
    padding: 0.3rem 0;
}

.meta-header-actions[b-fvztiz25ip] {
    display: flex;
    justify-content: flex-end;
    border-top: 1px solid var(--lb-border-light);
    padding-top: 0.5rem;
}

@media (max-width: 768px) {
    .meta-header-grid[b-fvztiz25ip] {
        grid-template-columns: 1fr;
    }
}

/* ============================================================
   Two-pane tab shelf (replaces the inline-edit grid)
   ============================================================ */

.shelf[b-fvztiz25ip] {
    display: grid;
    grid-template-columns: 1.15fr 0.85fr;
    gap: 1rem;
    align-items: start;
}

@media (max-width: 768px) {
    .shelf[b-fvztiz25ip] {
        grid-template-columns: 1fr;
    }
}

.shelf-col[b-fvztiz25ip] {
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    background: var(--lb-card);
    padding: 0.85rem 0.9rem 0.9rem;
}

.shelf-col-head[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.6rem;
}

.shelf-col-title[b-fvztiz25ip] {
    font-size: 0.72rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
}

.shelf-count[b-fvztiz25ip] {
    font-size: 0.72rem;
    font-weight: 700;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-pill);
    padding: 0.05rem 0.5rem;
}

.shelf-stack[b-fvztiz25ip] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    min-height: 120px;
}

.shelf-stack-hidden[b-fvztiz25ip] {
    border: 1px dashed var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 0.5rem;
    background: var(--lb-surface-alt);
}

.shelf-item[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    gap: 0.55rem;
    padding: 0.5rem 0.6rem;
    border: 1px solid var(--lb-border);
    border-radius: 7px;
    background: var(--lb-bg-white);
    cursor: pointer;
    user-select: none;
}

.shelf-item:hover[b-fvztiz25ip] {
    border-color: var(--lb-text-dim);
}

.shelf-item.core[b-fvztiz25ip] {
    background: var(--lb-surface-alt);
}

.shelf-item.sel[b-fvztiz25ip] {
    border-color: var(--lb-brand);
    box-shadow: 0 0 0 1px var(--lb-brand) inset;
}

.shelf-item.hidden-item[b-fvztiz25ip] {
    border-style: dashed;
    color: var(--lb-text-muted);
    cursor: grab;
}

/* drag handle drawn in CSS (no font-glyph dependency) */
.shelf-grip[b-fvztiz25ip] {
    flex: none;
    width: 0.7rem;
    height: 1rem;
    cursor: grab;
    background-image: radial-gradient(var(--lb-text-dim) 38%, transparent 40%);
    background-size: 0.35rem 0.35rem;
    background-position: 0 0.12rem;
    opacity: 0.7;
}

.shelf-item .ti[b-fvztiz25ip] {
    flex: none;
    width: 1.2rem;
    text-align: center;
    color: var(--lb-brand);
    font-size: 1rem;
}

.shelf-item .nm[b-fvztiz25ip] {
    font-weight: 600;
    color: var(--lb-text);
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.shelf-item.hidden-item .nm[b-fvztiz25ip] {
    color: var(--lb-text-muted);
}

/* badges */
.badge[b-fvztiz25ip] {
    display: inline-flex;
    align-items: center;
    font-size: 0.68rem;
    font-weight: 700;
    padding: 0.1rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    white-space: nowrap;
}

.module-badge[b-fvztiz25ip] {
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

.shelf-actions[b-fvztiz25ip] {
    display: inline-flex;
    align-items: center;
    gap: 0.1rem;
    flex: none;
}

.shelf-lock[b-fvztiz25ip] {
    color: var(--lb-text-dim);
    font-size: 0.95rem;
    padding: 0 0.35rem;
}

[b-fvztiz25ip] .shelf-actions .e-icon-btn {
    min-width: 1.8rem;
    padding: 0.25rem;
    line-height: 1;
}

[b-fvztiz25ip] .shelf-actions .e-icon-btn .e-btn-icon {
    font-size: 0.9rem;
    color: var(--lb-text-muted);
}

.shelf-empty[b-fvztiz25ip] {
    text-align: center;
    color: var(--lb-text-muted);
    padding: 1.4rem 0.5rem;
}

.shelf-empty .e-icons[b-fvztiz25ip] {
    font-size: 1.6rem;
    opacity: 0.35;
    display: block;
    margin-bottom: 0.4rem;
}

.shelf-empty p[b-fvztiz25ip] {
    font-size: 0.82rem;
    margin: 0;
}

.shelf-note[b-fvztiz25ip] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin: 0.6rem 0 0;
}

/* ── Contextual details panel ── */
.details-panel[b-fvztiz25ip] {
    margin-top: 1rem;
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    background: var(--lb-card);
    padding: 1rem 1.1rem 1.1rem;
}

.details-head[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    border-bottom: 1px solid var(--lb-border-light);
    padding-bottom: 0.6rem;
    margin-bottom: 0.85rem;
}

.details-head .ti[b-fvztiz25ip] {
    color: var(--lb-brand);
    font-size: 1.1rem;
}

.details-head h5[b-fvztiz25ip] {
    margin: 0;
    font-weight: 700;
    font-size: 1rem;
}

.details-grid[b-fvztiz25ip] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.85rem 1.25rem;
}

@media (max-width: 576px) {
    .details-grid[b-fvztiz25ip] {
        grid-template-columns: 1fr;
    }
}

.details-field[b-fvztiz25ip] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

/* ── Investigation config ── */
.investigation-config[b-fvztiz25ip] {
    margin-top: 1.1rem;
}

.form-section-header[b-fvztiz25ip] {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted);
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.35rem;
    margin: 0 0 0.85rem;
}

.invest-base[b-fvztiz25ip] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-bottom: 0.85rem;
}

.invest-base-value[b-fvztiz25ip] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-weight: 600;
    color: var(--lb-text);
}

.invest-base-value .e-icons[b-fvztiz25ip] {
    color: var(--lb-success);
}

.invest-base-wc .e-icons[b-fvztiz25ip] {
    color: var(--lb-info);
}

.invest-wc-note[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.6rem 0.9rem;
    background: var(--lb-info-bg);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.invest-wc-note .e-icons[b-fvztiz25ip] {
    color: var(--lb-info);
}

.ext-grid[b-fvztiz25ip] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 0.5rem 1.25rem;
    margin: 0.45rem 0 0.85rem;
}

.ext-item[b-fvztiz25ip] {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
}

.ext-desc[b-fvztiz25ip] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    padding-left: 1.6rem;
}

.invest-preview[b-fvztiz25ip] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.55rem 0.9rem;
    background: var(--lb-brand-light);
    border-radius: var(--lb-radius-card);
    font-size: 0.85rem;
    color: var(--lb-text);
}

.invest-preview .e-icons[b-fvztiz25ip] {
    color: var(--lb-brand);
}
/* /Components/Pages/Admin/HelpContentManagement.razor.rz.scp.css */
/* -- HelpContentManagement scoped styles -- */
/* Uses --lb-* design tokens. ASCII-only comments. No inline styles. */

.help-content-container[b-n9k4e0yl0j] {
    padding: 16px 24px;
    max-width: 1200px;
}

.page-title[b-n9k4e0yl0j] {
    font-size: 1.35rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 4px;
}

.page-subtitle[b-n9k4e0yl0j] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    margin-bottom: 16px;
}

/* -- Sync banner -- */

.help-sync-banner[b-n9k4e0yl0j] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 14px;
    margin-bottom: 12px;
    background: #F5F7FA;
    border-left: 3px solid var(--lb-border);
    border-radius: 4px;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

.help-sync-banner-icon[b-n9k4e0yl0j] {
    flex-shrink: 0;
    font-size: 0.95rem;
    color: var(--lb-text-muted);
}

/* -- Toolbar -- */

.help-toolbar[b-n9k4e0yl0j] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.help-toolbar-filters[b-n9k4e0yl0j] {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-left: auto;
}

.help-inactive-toggle[b-n9k4e0yl0j] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    cursor: pointer;
    white-space: nowrap;
}

/* -- Empty state -- */

.help-empty-state[b-n9k4e0yl0j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    color: var(--lb-text-muted);
    border: 1px dashed var(--lb-border);
    border-radius: 6px;
    background: var(--lb-surface-alt);
}

.help-empty-icon[b-n9k4e0yl0j] {
    font-size: 2.5rem;
    color: var(--lb-text-muted);
    margin-bottom: 12px;
    opacity: 0.5;
}

/* -- Edit form -- */

.help-edit-form[b-n9k4e0yl0j] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 8px 0;
}

.help-form-field[b-n9k4e0yl0j] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.help-form-field .field-label[b-n9k4e0yl0j] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Word count indicator -- */

.help-word-count[b-n9k4e0yl0j] {
    font-size: 0.75rem;
    margin-top: 2px;
}

.word-count-green[b-n9k4e0yl0j] {
    color: var(--lb-success);
}

.word-count-amber[b-n9k4e0yl0j] {
    color: var(--lb-warning-text);
}

.word-count-red[b-n9k4e0yl0j] {
    color: var(--lb-danger);
    font-weight: 600;
}

/* -- Role checkboxes -- */

.help-role-checkboxes[b-n9k4e0yl0j] {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}

.help-role-checkboxes label[b-n9k4e0yl0j] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
    color: var(--lb-text);
    cursor: pointer;
}

/* -- Import -- */

.import-file-name[b-n9k4e0yl0j] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin-top: 8px;
    font-style: italic;
}

/* -- Access denied -- */

.access-denied-panel[b-n9k4e0yl0j] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    color: var(--lb-text-muted);
}

/* -- Grid container adaptive override -- */

.help-content-container[b-n9k4e0yl0j]  .e-grid {
    overflow-x: hidden;
}

/* -- Responsive -- */

@media (max-width: 768px) {
    .help-content-container[b-n9k4e0yl0j] {
        padding: 12px;
    }

    .help-toolbar[b-n9k4e0yl0j] {
        flex-direction: column;
        align-items: stretch;
    }

    .help-toolbar-filters[b-n9k4e0yl0j] {
        margin-left: 0;
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Admin/IntakeStepConfigTab.razor.rz.scp.css */
/* IntakeStepConfigTab.razor.css */
/* All comments ASCII only */

.intake-steps-panel[b-zyhm7jzvkl] {
    padding: 0.25rem 0;
}

/* -- Toolbar ---------------------------------------------------------------- */
.intake-steps-toolbar[b-zyhm7jzvkl] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0.75rem 0 1rem;
    flex-wrap: wrap;
}

.intake-steps-loading[b-zyhm7jzvkl] {
    color: var(--lb-text-muted);
    padding: 1rem 0;
}

/* -- Steps table ------------------------------------------------------------ */
.intake-steps-table[b-zyhm7jzvkl] {
    width: 100%;
    border-collapse: collapse;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 0.375rem;
}

.intake-steps-table th[b-zyhm7jzvkl] {
    text-align: left;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    padding: 0.5rem 0.75rem;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
}

.intake-steps-table td[b-zyhm7jzvkl] {
    padding: 0.45rem 0.75rem;
    border-bottom: 1px solid var(--lb-border-light);
    vertical-align: middle;
}

.intake-steps-table tr:last-child td[b-zyhm7jzvkl] {
    border-bottom: none;
}

.step-row.core[b-zyhm7jzvkl] {
    background: var(--lb-surface-alt);
}

.step-row.core .step-title[b-zyhm7jzvkl] {
    color: var(--lb-text-muted);
}

/* -- Reorder column (drag grip + arrow buttons; no visible numbers) -------- */
.step-row-draggable[b-zyhm7jzvkl] {
    cursor: grab;
}

/* Insert-position indicator: the dragged step lands BEFORE the highlighted row */
.intake-steps-table .step-row.drop-target td[b-zyhm7jzvkl] {
    border-top: 2px solid var(--lb-brand);
}

/* -- Load-failure state ------------------------------------------------------ */
.load-error-panel[b-zyhm7jzvkl] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 0.9rem 1rem;
    border: 1px solid var(--lb-border);
    border-left: 3px solid var(--lb-danger);
    border-radius: 0.375rem;
    background: var(--lb-danger-bg);
    color: var(--lb-text);
}

.col-move[b-zyhm7jzvkl] {
    white-space: nowrap;
}

.drag-grip[b-zyhm7jzvkl] {
    display: inline-block;
    vertical-align: middle;
    width: 0.7rem;
    height: 1rem;
    margin-right: 0.35rem;
    cursor: grab;
    background-image: radial-gradient(var(--lb-text-dim) 38%, transparent 40%);
    background-size: 0.35rem 0.35rem;
    background-position: 0 0.12rem;
    opacity: 0.7;
}

.core-lock[b-zyhm7jzvkl] {
    color: var(--lb-text-dim);
    font-size: 0.8rem;
    padding-left: 0.3rem;
}

.visually-hidden-header[b-zyhm7jzvkl] {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.step-title[b-zyhm7jzvkl] {
    font-weight: 500;
    color: var(--lb-text);
    margin-right: 0.5rem;
}

/* -- Badges ------------------------------------------------------------------ */
.step-badge[b-zyhm7jzvkl] {
    display: inline-block;
    padding: 0.1rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    font-size: 0.7rem;
    font-weight: 500;
    white-space: nowrap;
}

.core-badge[b-zyhm7jzvkl] {
    background: var(--lb-brand-light);
    color: var(--lb-brand);
}

.playbook-na[b-zyhm7jzvkl] {
    color: var(--lb-text-dim);
}

/* -- Default-playbook / workflow-rule conflict note (#3272) -------------------- */
/* Advisory, not an error: the suppression it describes is correct behavior, so this
   reads as a note (warning tone) and never blocks Save. */
.playbook-rule-conflict[b-zyhm7jzvkl] {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    margin-top: 0.5rem;
    padding: 0.5rem 0.6rem;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: 0.375rem;
    font-size: 0.75rem;
    line-height: 1.35;
    color: var(--lb-text);
    white-space: normal;
}

.playbook-rule-conflict .e-icons[b-zyhm7jzvkl] {
    color: var(--lb-warning);
    font-size: 0.85rem;
    flex-shrink: 0;
    margin-top: 0.1rem;
}

/* -- Column sizing ------------------------------------------------------------ */
.col-move[b-zyhm7jzvkl] { width: 110px; }
.col-step[b-zyhm7jzvkl] { width: 34%; }
.col-toggle[b-zyhm7jzvkl] { width: 13%; }
.col-playbook[b-zyhm7jzvkl] { width: 28%; }

/* -- Run preview --------------------------------------------------------------- */
.run-preview[b-zyhm7jzvkl] {
    margin-top: 1rem;
    padding: 0.75rem 1rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 0.375rem;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.run-preview-label[b-zyhm7jzvkl] {
    font-weight: 600;
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    margin-right: 0.5rem;
}

.run-preview-steps[b-zyhm7jzvkl] {
    font-size: 0.8125rem;
    color: var(--lb-text);
}

/* -- Empty state --------------------------------------------------------------- */
.empty-state[b-zyhm7jzvkl] {
    color: var(--lb-text-muted);
    padding: 1.5rem 0;
}

/* -- Responsive ------------------------------------------------------------------ */
@media (max-width: 768px) {
    .intake-steps-table th.col-playbook[b-zyhm7jzvkl],
    .intake-steps-table td.col-playbook[b-zyhm7jzvkl] {
        display: none;
    }
}
/* /Components/Pages/Admin/PortalSettings.razor.rz.scp.css */
/* Client Portal settings: session length + the stage-map editor. */

.ps-loading[b-m2ui6vps4m],
.ps-state[b-m2ui6vps4m] {
    padding: 24px;
    color: var(--lb-text-muted, #6b7280);
}

.portal-settings[b-m2ui6vps4m] {
    max-width: 980px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.portal-settings h3[b-m2ui6vps4m] {
    margin: 0;
    font-size: 18px;
}

.ps-section[b-m2ui6vps4m] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border, #e5e7eb);
    border-radius: 8px;
    padding: 14px 16px;
}

.ps-section h4[b-m2ui6vps4m] {
    margin: 0 0 6px;
    font-size: 15px;
}

.ps-hint[b-m2ui6vps4m] {
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
    margin: 0 0 12px;
    max-width: 640px;
}

.ps-hint-sub[b-m2ui6vps4m] {
    margin: 8px 0 0;
    font-size: 12px;
}

.ps-session-row[b-m2ui6vps4m] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.ps-session-unit[b-m2ui6vps4m] {
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
}

.ps-window-row[b-m2ui6vps4m] {
    margin-bottom: 14px;
}

.field-label[b-m2ui6vps4m] {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 4px;
}

/* Stage table: checkbox | internal name | label | description */

.ps-stage-table[b-m2ui6vps4m] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.ps-stage-head[b-m2ui6vps4m],
.ps-stage-row[b-m2ui6vps4m] {
    display: grid;
    grid-template-columns: 44px 200px minmax(180px, 1fr) minmax(180px, 1fr);
    gap: 10px;
    align-items: center;
}

.ps-stage-head[b-m2ui6vps4m] {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted, #6b7280);
    padding: 0 2px 2px;
}

.ps-stage-row[b-m2ui6vps4m] {
    border: 1px solid var(--lb-border, #e5e7eb);
    border-radius: 8px;
    padding: 8px 10px;
    background: var(--lb-card);
}

.ps-stage-check[b-m2ui6vps4m] {
    display: flex;
    justify-content: center;
    cursor: pointer;
}

.ps-stage-internal[b-m2ui6vps4m] {
    font-size: 13px;
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ps-stage-actions[b-m2ui6vps4m] {
    display: flex;
    justify-content: flex-end;
    margin-top: 12px;
}

.lb-empty-state[b-m2ui6vps4m] {
    padding: 14px 4px;
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
}

.lb-empty-state p[b-m2ui6vps4m] { margin: 0 0 4px; }

@media (max-width: 900px) {
    .ps-stage-head[b-m2ui6vps4m] { display: none; }

    .ps-stage-row[b-m2ui6vps4m] {
        grid-template-columns: 44px 1fr;
        grid-auto-rows: auto;
    }

    .ps-stage-row[b-m2ui6vps4m]  .e-input-group { grid-column: 2; }
}

/* Branding: the swatch is a real <input type=color>, sized to sit level with
   the text box beside it. */
.ps-accent-swatch[b-m2ui6vps4m] {
    width: 44px;
    height: 34px;
    padding: 2px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-bg-white);
    cursor: pointer;
}

/* A refused colour is normal input, not a system failure -- it reads as
   guidance next to the field, not as an alarm. */
.ps-hint-error[b-m2ui6vps4m] { color: var(--lb-danger); font-weight: 600; }
/* Logo: the preview stands in for the client's header, so it is sized and
   coloured like one. Its background is set inline from the saved accent. */
.ps-logo-row[b-m2ui6vps4m] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
}

.ps-logo-preview[b-m2ui6vps4m] {
    display: grid;
    place-items: center;
    min-width: 168px;
    height: 56px;
    padding: 0 14px;
    border-radius: 6px;
}

/* Matches the portal's own header rule: fixed height, free width, never
   stretched -- so a wordmark and a square mark both preview honestly. */
.ps-logo-preview img[b-m2ui6vps4m] {
    height: 30px;
    max-width: 132px;
    width: auto;
    object-fit: contain;
}

/* The initials chip, drawn the same way the portal draws it. */
.ps-logo-initials[b-m2ui6vps4m] {
    width: 30px;
    height: 30px;
    border-radius: 6px;
    background: rgba(255, 255, 255, .2);
    /* Inherited from the preview div, which carries the derived on-accent
       colour -- so a light accent previews with black initials, exactly as
       the portal will render them. */
    color: inherit;
    display: grid;
    place-items: center;
    font-weight: 800;
    font-size: 13px;
}

.ps-logo-actions[b-m2ui6vps4m] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
/* /Components/Pages/Admin/SmsSettings.razor.rz.scp.css */
/* ================================================================
   SmsSettings.razor.css -- Scoped styles for SMS admin settings
   All colors use --lb-* design tokens from app.css.
   No !important, no inline styles, no non-ASCII characters.
   ================================================================ */

/* -- Page container -- */

.sms-settings-container[b-qqa3vvwu5p] {
    padding: 24px;
    max-width: 1200px;
    margin: 0 auto;
}

[b-qqa3vvwu5p] .page-title {
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px;
}

[b-qqa3vvwu5p] .page-subtitle {
    font-size: 0.9rem;
    color: var(--lb-text-dim);
    margin: 0 0 20px;
}

/* -- Access denied -- */

.access-denied-panel[b-qqa3vvwu5p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 40vh;
    color: var(--lb-text-dim);
    text-align: center;
    gap: 8px;
}

.access-denied-panel h4[b-qqa3vvwu5p]{
    color: var(--lb-text);
    margin: 0;
}

/* -- Tab panel -- */

[b-qqa3vvwu5p] .tab-panel {
    padding: 20px 0;
}

[b-qqa3vvwu5p] .tab-loading {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 24px;
    color: var(--lb-text-dim);
}

[b-qqa3vvwu5p] .tab-toolbar {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

[b-qqa3vvwu5p] .tab-hint {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 12px 16px;
    margin-bottom: 16px;
    font-size: 0.85rem;
    color: var(--lb-text-dim);
}

[b-qqa3vvwu5p] .tab-hint .e-icons {
    color: var(--lb-brand);
    flex-shrink: 0;
    margin-top: 1px;
}

/* -- Config form -- */

[b-qqa3vvwu5p] .config-form {
    max-width: 600px;
}

[b-qqa3vvwu5p] .form-row {
    margin-bottom: 16px;
}

[b-qqa3vvwu5p] .field-label {
    display: block;
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--lb-text);
    margin-bottom: 4px;
}

[b-qqa3vvwu5p] .required-indicator {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-hint[b-qqa3vvwu5p] {
    display: block;
    font-size: 0.75rem;
    color: var(--lb-text-dim);
    margin-top: 4px;
}

[b-qqa3vvwu5p] .api-key-row {
    display: flex;
    gap: 8px;
    align-items: center;
}

[b-qqa3vvwu5p] .api-key-row .e-textbox {
    flex: 1;
}

[b-qqa3vvwu5p] .config-actions {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-top: 24px;
    flex-wrap: wrap;
}

/* -- Test result -- */

[b-qqa3vvwu5p] .test-result {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
    font-weight: 500;
    padding: 4px 12px;
    border-radius: 4px;
}

[b-qqa3vvwu5p] .test-success {
    color: var(--lb-success);
    background: var(--lb-success-bg);
}

[b-qqa3vvwu5p] .test-failure {
    color: var(--lb-danger);
    background: var(--lb-danger-bg);
}

/* -- Webhook status icons -- */

[b-qqa3vvwu5p] .webhook-ok {
    color: var(--lb-success);
    font-size: 1rem;
}

[b-qqa3vvwu5p] .webhook-missing {
    color: var(--lb-text-dim);
    font-size: 1rem;
}

/* -- Template form -- */

.template-form .form-row[b-qqa3vvwu5p]{
    margin-bottom: 14px;
}

[b-qqa3vvwu5p] .char-counter {
    font-size: 0.7rem;
    color: var(--lb-text-dim);
    text-align: right;
    margin-top: 4px;
}

[b-qqa3vvwu5p] .char-over {
    color: var(--lb-danger);
    font-weight: 600;
}

/* -- Opt-out badges -- */

[b-qqa3vvwu5p] .badge-opted-out {
    display: inline-block;
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
}

[b-qqa3vvwu5p] .badge-opted-in {
    display: inline-block;
    background: var(--lb-success-bg);
    color: var(--lb-success);
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 10px;
}

/* -- Stat cards -- */

[b-qqa3vvwu5p] .stat-cards-row {
    display: flex;
    gap: 16px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

[b-qqa3vvwu5p] .stat-card {
    flex: 1;
    min-width: 140px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 16px;
    text-align: center;
}

[b-qqa3vvwu5p] .stat-card-danger {
    border-color: var(--lb-danger);
}

[b-qqa3vvwu5p] .stat-card-danger .stat-value {
    color: var(--lb-danger);
}

[b-qqa3vvwu5p] .stat-value {
    font-size: 1.8rem;
    font-weight: 700;
    color: var(--lb-text);
    line-height: 1;
    margin-bottom: 4px;
}

[b-qqa3vvwu5p] .stat-label {
    font-size: 0.8rem;
    color: var(--lb-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* -- Chart -- */

[b-qqa3vvwu5p] .chart-container {
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 16px;
    background: var(--lb-card);
}

/* -- Responsive -- */

@media (max-width: 768px) {
    .sms-settings-container[b-qqa3vvwu5p]{
        padding: 12px;
    }

    [b-qqa3vvwu5p] .stat-cards-row {
        gap: 8px;
    }

    [b-qqa3vvwu5p] .stat-card {
        min-width: 110px;
        padding: 12px;
    }

    [b-qqa3vvwu5p] .stat-value {
        font-size: 1.4rem;
    }

    [b-qqa3vvwu5p] .config-form {
        max-width: 100%;
    }

    [b-qqa3vvwu5p] .api-key-row {
        flex-direction: column;
        align-items: stretch;
    }

    [b-qqa3vvwu5p] .config-actions {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Admin/SmsWebhookLogs.razor.rz.scp.css */
.sms-webhook-logs-root[b-21w32y1aed] {
    --sms-webhook-grid-offset: 260px;
    --sms-webhook-pill-radius: 999px;
    --sms-webhook-status-fill: 18%;
    --sms-webhook-status-unknown-contrast: 70%;

    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
}

.sms-webhook-page-header[b-21w32y1aed] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    flex-wrap: wrap;
}

.sms-webhook-page-header-copy[b-21w32y1aed] {
    min-width: 260px;
}

.sms-webhook-page-title[b-21w32y1aed] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    color: var(--lb-text);
    font-weight: 600;
}

.sms-webhook-page-subtitle[b-21w32y1aed] {
    margin: 4px 0 0;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

.sms-webhook-page-toolbar[b-21w32y1aed] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.sms-webhook-loading[b-21w32y1aed] {
    display: flex;
    justify-content: center;
    padding: 40px 0;
}

.sms-webhook-status[b-21w32y1aed] {
    display: inline-block;
    padding: 0.2rem 0.5rem;
    border-radius: var(--sms-webhook-pill-radius);
    font-size: 0.78rem;
    font-weight: 600;
}

.sms-webhook-status-success[b-21w32y1aed] {
    background: color-mix(in sRGB, var(--lb-success, #198754) var(--sms-webhook-status-fill), transparent);
    color: var(--lb-success, #198754);
}

.sms-webhook-status-failed[b-21w32y1aed] {
    background: color-mix(in sRGB, var(--lb-danger, #dc3545) var(--sms-webhook-status-fill), transparent);
    color: var(--lb-danger, #dc3545);
}

.sms-webhook-status-rejected[b-21w32y1aed] {
    background: color-mix(in sRGB, var(--lb-danger, #dc3545) var(--sms-webhook-status-fill), transparent);
    color: var(--lb-danger, #dc3545);
}

.sms-webhook-status-unknown[b-21w32y1aed] {
    background: color-mix(in sRGB, var(--lb-warning, #ffc107) var(--sms-webhook-status-fill), transparent);
    color: color-mix(in sRGB, var(--lb-warning, #ffc107) var(--sms-webhook-status-unknown-contrast), #4a3b00);
}

.sms-webhook-status-cell[b-21w32y1aed] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    align-items: flex-start;
}

.sms-webhook-status-reason[b-21w32y1aed] {
    color: var(--lb-text-muted);
    font-size: 0.72rem;
    line-height: 1.2;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sms-webhook-pii-banner[b-21w32y1aed],
.sms-webhook-pii-inline[b-21w32y1aed] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-radius: 8px;
    font-size: 0.82rem;
    border: 1px solid color-mix(in sRGB, var(--lb-warning, #ffc107) 40%, var(--lb-border));
    background: color-mix(in sRGB, var(--lb-warning, #ffc107) 10%, transparent);
    color: var(--lb-text);
}

.sms-webhook-pii-banner .lock-icon[b-21w32y1aed],
.sms-webhook-pii-inline .e-icons[b-21w32y1aed] {
    color: var(--lb-warning, #ffc107);
    flex-shrink: 0;
}

.sms-webhook-body-masked[b-21w32y1aed] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--lb-text-muted);
    font-style: italic;
    font-size: 0.82rem;
}

.sms-webhook-body-masked .e-icons[b-21w32y1aed] {
    flex-shrink: 0;
}

.sms-webhook-error-icon[b-21w32y1aed] {
    color: var(--lb-danger, #dc3545);
    opacity: 0.7;
}

.sms-webhook-retry-btn[b-21w32y1aed] {
    margin-top: 0.5rem;
}

.sms-webhook-reveal-gate[b-21w32y1aed] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 10px;
    border-radius: 8px;
    border: 1px dashed var(--lb-border);
    background: var(--lb-bg-surface);
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

.sms-webhook-reveal-gate .e-icons[b-21w32y1aed] {
    flex-shrink: 0;
}

.sms-webhook-accordion-title[b-21w32y1aed] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.sms-webhook-details[b-21w32y1aed] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    font-size: 0.85rem;
}

.sms-webhook-error[b-21w32y1aed] {
    color: var(--lb-danger, #dc3545);
}

.sms-webhook-payload[b-21w32y1aed] {
    margin: 0;
    padding: 10px;
    border-radius: 8px;
    max-height: 280px;
    overflow: auto;
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
    color: var(--lb-text);
    font-size: 0.75rem;
}

.sms-webhook-footnote[b-21w32y1aed] {
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}
/* /Components/Pages/Admin/SupportTicketsAdmin.razor.rz.scp.css */
/* Cross-firm support submissions (Longbow admin). */

.lb-page-container[b-2d47xi9dkh] {
    padding: 1rem 1.25rem;
}

.lb-page-header[b-2d47xi9dkh] {
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.75rem;
    margin-bottom: 1rem;
}

.support-admin-filters[b-2d47xi9dkh] {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.support-admin-filter[b-2d47xi9dkh] {
    min-width: 200px;
}

.support-admin-loading[b-2d47xi9dkh] {
    display: flex;
    justify-content: center;
    padding: 3rem 1rem;
}

.sr-only[b-2d47xi9dkh] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.support-admin-error[b-2d47xi9dkh] {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-left-width: 3px;
    color: var(--lb-danger);
    border-radius: 6px;
    padding: 0.6rem 0.75rem;
    font-size: 0.85rem;
    margin-bottom: 1rem;
}

/* Status pills. Colour is never the only signal -- the label carries the meaning. */
.support-pill[b-2d47xi9dkh] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--lb-radius-pill);
    padding: 0.05rem 0.5rem;
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}

.support-pill-sent[b-2d47xi9dkh] { background: var(--lb-success-bg); color: var(--lb-success); }
.support-pill-failed[b-2d47xi9dkh] { background: var(--lb-danger-bg); color: var(--lb-danger); }
.support-pill-ai[b-2d47xi9dkh] { background: var(--lb-purple-bg); color: var(--lb-purple); }
.support-pill-rate[b-2d47xi9dkh] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.support-pill-pending[b-2d47xi9dkh] { background: var(--lb-elevated); color: var(--lb-text-muted); }

.lb-empty-state[b-2d47xi9dkh] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
}

.lb-empty-icon[b-2d47xi9dkh] {
    font-size: 2.5rem;
    opacity: 0.35;
    display: block;
    margin-bottom: 0.75rem;
}

.lb-empty-title[b-2d47xi9dkh] {
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 0.25rem;
}

.lb-empty-sub[b-2d47xi9dkh] {
    font-size: 0.875rem;
}

@media (max-width: 576px) {
    .lb-page-container[b-2d47xi9dkh] {
        padding: 0.75rem;
    }

    .support-admin-filter[b-2d47xi9dkh] {
        min-width: 100%;
    }
}
/* /Components/Pages/Admin/TrainingCatalogAdmin.razor.rz.scp.css */
/* TrainingCatalogAdmin.razor.css - central Training Library authoring grid */
/* ASCII-only comments; --lb-* tokens only, no hex fallbacks */

.tca-page[b-kqyrmtea26] {
    max-width: 1100px;
    padding: 0 1.25rem 2rem;
}

.tca-page .page-title[b-kqyrmtea26] { margin-bottom: 0.15rem; }
.tca-page .page-subtitle[b-kqyrmtea26] { color: var(--lb-text-muted); font-size: 0.85rem; margin-bottom: 1rem; }

/* -- All-firms warning banner ---------------------------------------------- */
.tca-warning[b-kqyrmtea26] {
    display: flex;
    align-items: flex-start;
    gap: 0.6rem;
    background: var(--lb-warning-bg);
    color: var(--lb-text);
    border: 1px solid var(--lb-warning);
    border-radius: var(--lb-radius-card);
    padding: 0.65rem 0.9rem;
    font-size: 0.85rem;
    margin-bottom: 1rem;
}

.tca-warning .e-icons[b-kqyrmtea26] {
    color: var(--lb-warning);
    margin-top: 0.1rem;
}

/* -- Toolbar ----------------------------------------------------------------- */
.tca-toolbar[b-kqyrmtea26] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 0.9rem;
}

/* Captions-health chip (Option 4 graft): count of videos with no captions */
.tca-chip[b-kqyrmtea26] {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    font: inherit;
    font-size: 0.78rem;
    font-weight: 600;
    border-radius: var(--lb-radius-pill);
    padding: 0.25rem 0.7rem;
    cursor: pointer;
    border: 1px solid var(--lb-border);
    background: var(--lb-card);
    color: var(--lb-text-muted);
}

.tca-chip-warn[b-kqyrmtea26] {
    border-color: var(--lb-warning);
    background: var(--lb-warning-bg);
    color: var(--lb-text);
}

.tca-chip-ok[b-kqyrmtea26] {
    border-color: var(--lb-success);
    background: var(--lb-success-bg);
    cursor: default;
}

.tca-chip-active[b-kqyrmtea26] {
    outline: 2px solid var(--lb-warning);
    outline-offset: 1px;
}

/* -- Catalog table ------------------------------------------------------------ */
.tca-table[b-kqyrmtea26] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.86rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
}

.tca-table th[b-kqyrmtea26] {
    text-align: left;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
    padding: 0.5rem 0.6rem;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
}

.tca-table td[b-kqyrmtea26] {
    padding: 0.4rem 0.6rem;
    border-top: 1px solid var(--lb-border-light);
    vertical-align: middle;
}

.col-move[b-kqyrmtea26] { width: 108px; white-space: nowrap; }
.col-status[b-kqyrmtea26] { width: 96px; white-space: nowrap; }
.col-health[b-kqyrmtea26] { width: 150px; white-space: nowrap; }
.col-actions[b-kqyrmtea26] { width: 320px; white-space: nowrap; text-align: right; }

.visually-hidden-header[b-kqyrmtea26] {
    position: absolute;
    width: 1px; height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
}

/* Category group header rows */
.tca-cat-row[b-kqyrmtea26] {
    background: var(--lb-surface-alt);
}

.tca-cat-row td[b-kqyrmtea26] { border-top: 2px solid var(--lb-border); }

.tca-cat-name[b-kqyrmtea26] { font-weight: 700; }

.tca-cat-count[b-kqyrmtea26] {
    color: var(--lb-text-muted);
    font-size: 0.75rem;
    margin-left: 0.5rem;
}

.tca-cat-desc[b-kqyrmtea26] {
    display: block;
    color: var(--lb-text-muted);
    font-size: 0.78rem;
}

/* Item rows */
.tca-item-row .col-content[b-kqyrmtea26] { padding-left: 1.4rem; }

.tca-item-type .e-icons[b-kqyrmtea26] {
    color: var(--lb-text-dim);
    font-size: 0.85rem;
    margin-right: 0.4rem;
}

.tca-item-title[b-kqyrmtea26] { font-weight: 500; }

.tca-area[b-kqyrmtea26] {
    display: inline-block;
    margin-left: 0.5rem;
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-pill);
    padding: 0.05rem 0.45rem;
}

/* Drag affordances (IntakeStepConfigTab pattern) */
.tca-cat-row[draggable="true"][b-kqyrmtea26], .tca-item-row[draggable="true"][b-kqyrmtea26] { cursor: grab; }

.drag-grip[b-kqyrmtea26] {
    display: inline-block;
    width: 10px;
    height: 16px;
    margin-right: 0.15rem;
    vertical-align: middle;
    background-image: radial-gradient(var(--lb-text-dim) 1px, transparent 1px);
    background-size: 5px 5px;
}

.drop-target td[b-kqyrmtea26] { border-top: 2px solid var(--lb-brand); }

/* Status badges */
.tca-badge[b-kqyrmtea26] {
    display: inline-block;
    padding: 0.12rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    font-size: 0.72rem;
    font-weight: 600;
}

.tca-badge.published[b-kqyrmtea26] { background: var(--lb-success-bg); color: var(--lb-success); }
.tca-badge.draft[b-kqyrmtea26] { background: var(--lb-surface-alt); color: var(--lb-text-muted); border: 1px dashed var(--lb-border); }
.tca-badge.retired[b-kqyrmtea26] { background: var(--lb-danger-bg); color: var(--lb-danger); }

/* Media health cell */
.tca-duration[b-kqyrmtea26] { color: var(--lb-text-muted); font-variant-numeric: tabular-nums; margin-right: 0.4rem; }

.tca-health-warn[b-kqyrmtea26] {
    color: var(--lb-warning);
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.tca-health-warn .e-icons[b-kqyrmtea26] { font-size: 0.75rem; }

/* Row action buttons: tighten Syncfusion paddings inside the table */
[b-kqyrmtea26] .tca-table .e-btn.e-small { margin-left: 0.15rem; }

[b-kqyrmtea26] .tca-danger-btn .e-btn-icon { color: var(--lb-danger); }

/* -- Loading / empty / error states ------------------------------------------ */
.tca-loading[b-kqyrmtea26] { color: var(--lb-text-muted); }

.tca-empty[b-kqyrmtea26] {
    text-align: center;
    color: var(--lb-text-muted);
    border: 1px dashed var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 2rem 1rem;
}

.tca-empty-icon[b-kqyrmtea26] { font-size: 1.6rem; display: block; margin-bottom: 0.5rem; }

.load-error-panel[b-kqyrmtea26] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--lb-danger);
    border: 1px solid var(--lb-danger);
    background: var(--lb-danger-bg);
    border-radius: var(--lb-radius-card);
    padding: 0.6rem 0.9rem;
}

/* -- Responsive ---------------------------------------------------------------- */
@media (max-width: 992px) {
    .col-actions[b-kqyrmtea26] { width: auto; }
    .tca-table th.col-health[b-kqyrmtea26], .tca-table td.col-health[b-kqyrmtea26] { display: none; }
}

@media (max-width: 768px) {
    .tca-page[b-kqyrmtea26] { padding: 0 0.75rem 1.5rem; }
    .col-move[b-kqyrmtea26] { width: 84px; }
}
/* /Components/Pages/CalendarList.razor.rz.scp.css */
/* === CalendarList -- scoped styles === */

/* -- Calendar toolbar + legend-row search -- */

/* The toolbar now owns its own row. The search box was pulled OUT of SfToolbar
   because, as a toolbar template item, every keystroke re-rendered the parent
   and the toolbar rebuilt the item DOM, destroying the focused input. It used
   to share the toolbar row too, but its fixed width squeezed the SfToolbar into
   a scrollable overflow (a top scrollbar); it now lives on the legend row. */
.cal-toolbar-row[b-8upyeesk8q] {
    display: flex;
    align-items: center;
}

/* Let the lone toolbar fill the row; min-width:0 leaves its own responsive
   overflow (scroll/popup) in charge on narrow phones. */
[b-8upyeesk8q] .cal-toolbar-row > .e-toolbar {
    flex: 1 1 auto;
    min-width: 0;
}

/* Legend chips (left) + FTS search (right) share one row below the toolbar. */
.cal-legend-row[b-8upyeesk8q] {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

/* The range on screen -- "July 2026", "June 14 – 20, 2026". Took over from Syncfusion's
   built-in header bar, which is now hidden (#3171). flex-shrink:0 keeps it legible when
   the legend chips crowd the row. */
.cal-range-title[b-8upyeesk8q] {
    flex: 0 0 auto;
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    white-space: nowrap;
}

.cal-search-wrap[b-8upyeesk8q] {
    display: flex;
    align-items: center;
    gap: 2px;
    flex: 0 0 auto;
    min-width: 240px;
    max-width: 360px;
    margin-left: auto;
    position: relative;
    z-index: 1;
}

/* On phones the search drops to its own full-width line within the legend row. */
@media (max-width: 767px) {
    .cal-search-wrap[b-8upyeesk8q] {
        flex: 1 1 100%;
        max-width: none;
    }
}

[b-8upyeesk8q] .cal-search-input {
    font-size: 13px;
    flex: 1 1 auto;
}

/* Ensure the search input inside the toolbar receives pointer events */
[b-8upyeesk8q] .cal-search-input .e-input,
[b-8upyeesk8q] .cal-search-input input {
    pointer-events: auto;
    cursor: text;
}

.cal-search-icon[b-8upyeesk8q] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    padding: 0 4px;
}

.cal-search-results[b-8upyeesk8q] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    margin: 6px 0;
    overflow: hidden;
}

.cal-search-header[b-8upyeesk8q] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
}

.cal-search-count[b-8upyeesk8q] {
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-text-primary);
}

.cal-search-grid[b-8upyeesk8q] {
    max-height: 240px;
    overflow-y: auto;
}

.cal-search-row[b-8upyeesk8q] {
    display: grid;
    grid-template-columns: 100px 1fr 160px 80px;
    padding: 6px 12px;
    border: none;
    border-bottom: 1px solid var(--lb-border);
    align-items: center;
    cursor: pointer;
    font-size: 13px;
    font-family: inherit;
    width: 100%;
    background: none;
    text-align: left;
    color: inherit;
}

.cal-search-row:last-child[b-8upyeesk8q] {
    border-bottom: none;
}

.cal-search-row:hover[b-8upyeesk8q] {
    background: var(--lb-surface-alt);
}

.cal-search-date[b-8upyeesk8q] {
    color: var(--lb-text-secondary);
    font-size: 12px;
}

.cal-search-desc[b-8upyeesk8q] {
    color: var(--lb-text-primary);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cal-search-case[b-8upyeesk8q] {
    color: var(--lb-brand);
    font-size: 12px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cal-search-time[b-8upyeesk8q] {
    color: var(--lb-text-secondary);
    font-size: 12px;
    text-align: right;
}

.cal-search-empty[b-8upyeesk8q] {
    padding: 16px;
    text-align: center;
    color: var(--lb-text-secondary);
    font-size: 13px;
}

.cal-search-more[b-8upyeesk8q] {
    padding: 8px 12px;
    border-top: 1px solid var(--lb-border);
    font-size: 12px;
    color: var(--lb-text-secondary);
    background: var(--lb-surface-alt);
    text-align: center;
}

/* On narrow phones the fixed 4-column search row (100px 1fr 160px 80px ~ 340px
   min) overflows. Restack into a readable block: description on its own line,
   then date + time, then the case reference. */
@media (max-width: 576px) {
    .cal-search-row[b-8upyeesk8q] {
        grid-template-columns: 1fr auto;
        grid-template-areas:
            "desc desc"
            "date time"
            "case case";
        row-gap: 2px;
        column-gap: 8px;
    }

    .cal-search-date[b-8upyeesk8q] { grid-area: date; }

    .cal-search-desc[b-8upyeesk8q] {
        grid-area: desc;
        white-space: normal;
    }

    .cal-search-case[b-8upyeesk8q] { grid-area: case; }

    .cal-search-time[b-8upyeesk8q] {
        grid-area: time;
        text-align: right;
    }
}

.calendar-page-wrapper[b-8upyeesk8q] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 80px);
    min-height: 0;
    overflow: hidden;
}

.calendar-main-layout[b-8upyeesk8q] {
    display: flex;
    flex-direction: row;
    position: relative;
    overflow: hidden;
    flex: 1 1 0;
    min-height: 0;
}

/* The scheduler's ONLY height budget (#3171). It fills whatever the flex column has
   left after the toolbar, the conditional Outlook sync row, the legend row (which
   wraps) and the FTS results panel; the SfSchedule inside carries Height="100%".
   min-height:0 is what actually lets flex shrink this below its content -- without it
   the box stays as tall as the grid wants, pushes past the wrapper's overflow:hidden,
   and the month tiles end up positioned against rows that scrolled out from under
   them. Do NOT reintroduce a second calc(100vh - N) on the SfSchedule: two budgets
   for one box is the bug. */
.calendar-main-layout .scheduler-container[b-8upyeesk8q] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    margin-top: 4px;
    display: flex;
    flex-direction: column;
}

[b-8upyeesk8q] .calendar-main-layout .agenda-grid-container {
    flex: 1;
    min-width: 0;
    min-height: 0;
    margin-top: 4px;
    display: flex;
    flex-direction: column;
}

/* Appointment template card */
[b-8upyeesk8q] .appt-template {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    text-align: left;
    width: 100%;
}

[b-8upyeesk8q] .appt-title {
    font-size: 0.875rem;
    font-weight: 600;
    margin-bottom: 2px;
}

[b-8upyeesk8q] .appt-detail {
    text-align: left;
    font-size: 0.8rem;
}

[b-8upyeesk8q] .appt-attendee {
    text-align: left;
    padding-left: 8px;
    font-size: 0.8rem;
}

[b-8upyeesk8q] .appt-note {
    margin-top: 4px;
    text-align: left;
    font-size: 0.8rem;
    word-wrap: break-word;
    overflow-wrap: break-word;
    white-space: normal;
    max-width: 100%;
}

/* Calendar Event Styles -- default appointment background */
[b-8upyeesk8q] .e-schedule .e-appointment {
    background-color: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand-hover);
}

/* Activity-type color palette (left-border indicator, applied via OnEventRendered) */
/* Rotates through 8 colors based on ActivityCode ID */

[b-8upyeesk8q] .e-appointment.activity-color-0 {
    border-left: 4px solid #dc2626;
}

[b-8upyeesk8q] .e-appointment.activity-color-1 {
    border-left: 4px solid #2563eb;
}

[b-8upyeesk8q] .e-appointment.activity-color-2 {
    border-left: 4px solid #16a34a;
}

[b-8upyeesk8q] .e-appointment.activity-color-3 {
    border-left: 4px solid #7c3aed;
}

[b-8upyeesk8q] .e-appointment.activity-color-4 {
    border-left: 4px solid #0891b2;
}

[b-8upyeesk8q] .e-appointment.activity-color-5 {
    border-left: 4px solid #d97706;
}

[b-8upyeesk8q] .e-appointment.activity-color-6 {
    border-left: 4px solid #be185d;
}

[b-8upyeesk8q] .e-appointment.activity-color-7 {
    border-left: 4px solid #6b7280;
}

/* Events with no activity code -- use brand color */
[b-8upyeesk8q] .e-appointment.activity-color-none {
    border-left: 4px solid var(--lb-brand);
}

/* !important required -- Syncfusion applies inline min-height to appointments */
[b-8upyeesk8q] .e-schedule .e-vertical-view .e-day-wrapper .e-appointment {
    min-height: 20px !important;
}

/* --- Outlook connected status indicator --- */

.calendar-sync-status[b-8upyeesk8q] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-success);
    padding: 4px 0;
}

.sync-status-dot[b-8upyeesk8q] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-success);
    flex-shrink: 0;
}

.sync-dot-syncing[b-8upyeesk8q] {
    background: var(--lb-brand);
    animation: sync-pulse-b-8upyeesk8q 1.2s ease-in-out infinite;
}

@keyframes sync-pulse-b-8upyeesk8q {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: 0.4; transform: scale(1.3); }
}

.sync-last-time[b-8upyeesk8q] {
    font-size: 0.7rem;
    font-weight: 400;
    color: var(--lb-text-muted);
    margin-left: 4px;
}

.sync-dot-warn[b-8upyeesk8q] {
    background: var(--lb-warning);
}

.sync-givenup[b-8upyeesk8q] {
    color: var(--lb-warning);
    margin-left: 8px;
}

/* Keep the inline retry control on the same quiet scale as the status text. */
[b-8upyeesk8q] .sync-retry-btn {
    font-size: 0.72rem;
    padding: 1px 8px;
}

/* --- Activity legend strip --- */

.activity-legend[b-8upyeesk8q] {
    --agenda-color-0: #dc2626;
    --agenda-color-1: #2563eb;
    --agenda-color-2: #16a34a;
    --agenda-color-3: #7c3aed;
    --agenda-color-4: #0891b2;
    --agenda-color-5: #d97706;
    --agenda-color-6: #be185d;
    --agenda-color-7: #6b7280;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    padding: 6px 0;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.legend-item[b-8upyeesk8q] {
    display: flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: none;
    padding: 2px 6px;
    border-radius: 4px;
    font: inherit;
    color: inherit;
    cursor: pointer;
    transition: opacity 0.15s ease, background-color 0.15s ease;
}

.legend-item:hover[b-8upyeesk8q] {
    background-color: var(--lb-surface-alt);
}

.legend-item.legend-dimmed[b-8upyeesk8q] {
    opacity: 0.35;
}

.legend-item.legend-dimmed .legend-dot[b-8upyeesk8q] {
    background-color: var(--lb-text-muted) !important;
}

.legend-dot[b-8upyeesk8q] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* --- Scheduler hidden when agenda view is active --- */

.scheduler-hidden[b-8upyeesk8q] {
    display: none;
}

/* === Mobile / Tablet responsive schedule === */
@media (max-width: 768px) {
    /* Scheduler view tabs: allow wrapping */
    [b-8upyeesk8q] .e-schedule .e-schedule-toolbar .e-toolbar-items {
        flex-wrap: wrap;
    }

    /* Toolbar: smaller date picker on mobile */
    [b-8upyeesk8q] .e-toolbar .e-datepicker {
        max-width: 160px;
    }

    /* Wrapper is a fixed-height flex column (calc(100vh - 80px)) -- on a phone
       the toolbar row, legend chips, and FTS search stack taller than the
       viewport, starving the flex:1 agenda area to zero height. Let the
       wrapper flow/scroll in normal order; the agenda grid keeps a one-
       viewport internal scroll region, and the SfSchedule already carries its
       own phone-aware inline height, so it needs no change. */
    .calendar-page-wrapper[b-8upyeesk8q] {
        height: auto;
        overflow: visible;
    }

    .calendar-main-layout[b-8upyeesk8q] {
        flex: none;
        overflow: visible;
    }

    [b-8upyeesk8q] .calendar-main-layout .agenda-grid-container {
        height: calc(100vh - 260px);
        flex: none;
    }

    /* The wrapper flows here rather than being a fixed-height flex column, so the
       scheduler has no flex area to fill and Height="100%" would collapse it to
       nothing. Give it an explicit one-viewport box, exactly as the agenda grid
       above gets. calc(100vh - 200px) is the value the old inline phone height
       used, kept verbatim so the phone layout is unchanged by #3171. */
    .calendar-main-layout .scheduler-container[b-8upyeesk8q] {
        height: calc(100vh - 200px);
        flex: none;
    }
}

/* --- Graph sync status badges (small dot in top-right corner of event tile) ---

   NEVER set `position` on .e-appointment. These three rules each carried
   `position: relative` to give the ::after dot a positioned ancestor, and that single
   declaration was the whole of #3171's "every Month tile is drawn one week row too low".

   Syncfusion lays a Month-view tile out as `position: absolute; top: <offset from the
   shared .e-event-table>`. Overriding position to `relative` does NOT move the tile to
   that offset -- it displaces the tile BY that offset from wherever normal flow already
   put it, so a tile carrying a sync status lands roughly a row low and the last row's
   tiles fall off the bottom of the grid entirely. Only synced tiles were affected, and
   the "+N more" indicators (which carry no sync class) stayed in the correct cell --
   which is why the cell layer looked right while the appointment layer did not.

   The override was never needed: `position: absolute` is itself a positioned ancestor,
   so the badge below resolves against the tile either way. Verified on a running app --
   with these declarations present 5 of 31 July tiles were misplaced and one rendered
   below the grid; with them gone, 0 of 31. */

[b-8upyeesk8q] .e-appointment.sync-pending::after {
    content: "";
    position: absolute;
    top: 4px;
    right: 4px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-warning);
    pointer-events: none;
}

[b-8upyeesk8q] .e-appointment.sync-ok::after {
    content: "";
    position: absolute;
    top: 4px;
    right: 4px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-success);
    opacity: 0.6;
    pointer-events: none;
}

[b-8upyeesk8q] .e-appointment.sync-failed::after {
    content: "";
    position: absolute;
    top: 4px;
    right: 4px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-danger);
    pointer-events: none;
}

/* -- Calendar view switcher (Agenda / Week / Month) --
   Labeled segmented control in the toolbar that replaces the old icon-only
   Agenda/Scheduler toggle. Buttons are joined into one group; the active view
   uses the filled (e-primary) style, the rest use e-outline. */
.cal-view-switch[b-8upyeesk8q] {
    display: inline-flex;
}

.cal-view-switch[b-8upyeesk8q]  .cal-view-btn {
    margin: 0;
    border-radius: 0;
}

.cal-view-switch[b-8upyeesk8q]  .cal-view-btn:first-child {
    border-top-left-radius: 4px;
    border-bottom-left-radius: 4px;
}

.cal-view-switch[b-8upyeesk8q]  .cal-view-btn:last-child {
    border-top-right-radius: 4px;
    border-bottom-right-radius: 4px;
}

/* Collapse the doubled border between adjacent outline buttons. */
.cal-view-switch[b-8upyeesk8q]  .cal-view-btn + .cal-view-btn {
    margin-left: -1px;
}
/* /Components/Pages/CaseForms/CalendarTab/CalendarAttendeePanel.razor.rz.scp.css */
/* CalendarAttendeePanel.razor.css -- Scoped styles for attendee list panel.
   Simple list layout with avatar circles. All colors via --lb-* tokens. ASCII-only. */

.attendee-panel[b-qz8k5a5kr3] {
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.attendee-list[b-qz8k5a5kr3] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.attendee-empty[b-qz8k5a5kr3] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    padding: 16px 0;
    text-align: center;
}

.attendee-row[b-qz8k5a5kr3] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px;
    border-radius: 6px;
    transition: background-color 0.15s ease;
}

.attendee-row:hover[b-qz8k5a5kr3] {
    background-color: var(--lb-hover-bg);
}

.attendee-avatar[b-qz8k5a5kr3] {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--lb-brand);
    color: var(--lb-bg-white);
    font-size: 0.7rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    letter-spacing: 0.03em;
}

.attendee-info[b-qz8k5a5kr3] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.attendee-name[b-qz8k5a5kr3] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.attendee-company[b-qz8k5a5kr3] {
    font-size: 0.72rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-qz8k5a5kr3] .attendee-remove-btn {
    flex-shrink: 0;
    opacity: 0.4;
    transition: opacity 0.15s;
}

.attendee-row:hover[b-qz8k5a5kr3]  .attendee-remove-btn {
    opacity: 1;
}

/* Touch fallback: on (hover: none) the remove-attendee button stays at 0.4
 * opacity (faint and easy to miss). Force full opacity on touch devices. */
@media (hover: none) {
    [b-qz8k5a5kr3] .attendee-remove-btn {
        opacity: 1;
    }
}

.attendee-add-row[b-qz8k5a5kr3] {
    padding-top: 4px;
    border-top: 1px solid var(--lb-border-light);
}

[b-qz8k5a5kr3] .attendee-picker {
    width: 100%;
}

.attendee-picker-item[b-qz8k5a5kr3] {
    display: flex;
    align-items: baseline;
    gap: 4px;
}

.attendee-picker-company[b-qz8k5a5kr3] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}
/* /Components/Pages/CaseForms/CalendarTab/CalendarEventDrawerForm.razor.rz.scp.css */
/* CalendarEventDrawerForm.razor.css -- Scoped styles for the event drawer form.
   2-column CSS grid layout. All colors via --lb-* tokens. ASCII-only. */

.drawer-form-grid[b-ebrbh9fda8] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 16px;
    padding: 4px 0;
}

.drawer-field[b-ebrbh9fda8] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 0;
}

.drawer-field.span-2[b-ebrbh9fda8] {
    grid-column: span 2;
}

.drawer-field-label[b-ebrbh9fda8] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    letter-spacing: 0.02em;
}

.drawer-required[b-ebrbh9fda8] {
    color: var(--lb-danger);
}

.drawer-link-btn[b-ebrbh9fda8] {
    background: none;
    border: none;
    color: var(--lb-brand);
    cursor: pointer;
    font-size: 0.8rem;
    padding: 0;
    text-align: left;
    text-decoration: underline;
}

.drawer-link-btn:hover[b-ebrbh9fda8] {
    color: var(--lb-brand-hover);
}

/* Stack to single column on narrow drawers / mobile */
@media (max-width: 576px) {
    .drawer-form-grid[b-ebrbh9fda8] {
        grid-template-columns: 1fr;
    }

    .drawer-field.span-2[b-ebrbh9fda8] {
        grid-column: span 1;
    }
}
/* /Components/Pages/CaseForms/CalendarTab/TaskListDrawerForm.razor.rz.scp.css */
/* ============================================================
   TaskListDrawerForm.razor.css -- Scoped styles for task drawer
   Follows the same pattern as CalendarEventDrawerForm.razor.css
   ============================================================ */

.drawer-form-grid[b-v3vr37zdfw] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 14px 16px;
    padding: 4px 0;
}

.drawer-field[b-v3vr37zdfw] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.drawer-field.span-2[b-v3vr37zdfw] {
    grid-column: 1 / -1;
}

.drawer-field-label[b-v3vr37zdfw] {
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    letter-spacing: 0.01em;
}

.drawer-required[b-v3vr37zdfw] {
    color: var(--lb-danger);
}
/* /Components/Pages/CaseForms/CaseCalendarItemsPage.razor.rz.scp.css */
/* CaseCalendarItemsPage.razor.css -- Scoped styles for the redesigned Calendar tab.
   Stat cards, filter pills, type badges, date/priority coloring, sync dots,
   task row muting, drawer tab pills. All colors via --lb-* tokens.
   No hardcoded hex. No !important. ASCII-only comments. */

/* ================================================================
   Stat card row
   ================================================================ */
.cal-stats-row[b-vlvvdxfhs2] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 12px;
}

@media (max-width: 768px) {
    .cal-stats-row[b-vlvvdxfhs2] {
        grid-template-columns: repeat(2, 1fr);
        gap: 6px;
    }

    /* Compact stat cards on phone -- the default ~110px per card eats
     * roughly 450px of vertical space across four cards before the user
     * reaches the grid. Shrink padding, value font, and remove the big
     * "Outlook Sync / Next deadline" subtext so each card is ~70px tall.
     * Total drops from ~450px to ~150px (2 cols x 2 rows x ~70px). */
    .cal-stats-row[b-vlvvdxfhs2]  .stat-card {
        padding: 6px 10px;
        min-height: 0;
    }

    .cal-stats-row[b-vlvvdxfhs2]  .stat-value {
        font-size: 1.15rem;
        line-height: 1.1;
    }

    .cal-stats-row[b-vlvvdxfhs2]  .stat-label {
        font-size: 0.6rem;
    }

    .cal-stats-row[b-vlvvdxfhs2]  .stat-sublabel {
        font-size: 0.65rem;
    }

    /* Tighter filter pills on phone -- aim for ~18px height so the row of
     * 5 pills (All / This week / Court / Depositions / Overdue) sits in a
     * single tight strip instead of wrapping. ICS drop zone is hidden by
     * markup gate on phone so its rule is unused here. */
    .cal-filter-pill[b-vlvvdxfhs2] {
        padding: 1px 8px;
        font-size: 0.65rem;
        gap: 3px;
    }

    .cal-filter-count[b-vlvvdxfhs2] {
        font-size: 0.6rem;
    }

    /* Add event button doesn't need to dominate the row on phone */
    .cal-filter-bar[b-vlvvdxfhs2]  .cal-add-btn {
        padding: 3px 10px;
        font-size: 0.78rem;
    }

    /* Give the grid host enough room to actually be useful. Without this
     * the host's default min-height of 300px combined with the chrome
     * above (stat cards + filter pills + Add event button + back-bar)
     * leaves only 2-3 grid rows visible before the user has to use the
     * pager. Setting min-height to 65vh makes the grid the dominant
     * element on the screen and ensures roughly 6-8 rows fit at a time. */
    .page-drawer-host[b-vlvvdxfhs2] {
        min-height: 65vh;
    }
}

/* Below 576px we keep 2-column stat cards (1-column wasted too much
 * vertical space before the grid was reachable). The compaction in the
 * 768px block above handles the visual density. */

/* ================================================================
   Filter pill bar
   ================================================================ */
.cal-filter-bar[b-vlvvdxfhs2] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.cal-filter-pill[b-vlvvdxfhs2] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 12px;
    border-radius: 16px;
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    color: var(--lb-text-muted);
    font-size: 0.78rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
}

.cal-filter-pill:hover[b-vlvvdxfhs2] {
    border-color: var(--lb-brand);
    color: var(--lb-text);
}

.cal-filter-pill.active[b-vlvvdxfhs2] {
    background: var(--lb-brand);
    border-color: var(--lb-brand);
    color: var(--lb-bg-white);
}

.cal-filter-count[b-vlvvdxfhs2] {
    font-size: 0.7rem;
    opacity: 0.75;
}

/* ================================================================
   ICS import drop zone (inline in filter bar)
   ================================================================ */
.cal-ics-drop-zone[b-vlvvdxfhs2] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 14px;
    border: 1.5px dashed var(--lb-border);
    border-radius: 16px;
    font-size: 0.78rem;
    color: var(--lb-text-secondary);
    cursor: pointer;
    overflow: hidden;
    transition: border-color 0.2s, background 0.2s;
    white-space: nowrap;
}

.cal-ics-drop-zone:hover[b-vlvvdxfhs2] {
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

.cal-ics-drop-zone.drag-over[b-vlvvdxfhs2] {
    border-color: var(--lb-brand);
    background: rgba(204, 108, 44, 0.08);
    color: var(--lb-brand);
}

.cal-ics-drop-zone.importing[b-vlvvdxfhs2] {
    opacity: 0.6;
    pointer-events: none;
}

.cal-ics-icon[b-vlvvdxfhs2] {
    font-size: 1rem;
}

.cal-ics-label[b-vlvvdxfhs2] {
    line-height: 1;
}

.cal-ics-drop-zone[b-vlvvdxfhs2]  .cal-ics-file-input {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    opacity: 0;
    cursor: pointer;
}

/* ================================================================
   Add event/task dropdown button (right-aligned on the filter bar)
   ================================================================ */
[b-vlvvdxfhs2] .cal-add-btn {
    margin-left: auto;
}

/* ================================================================
   Type badge (Event / Task pill in first grid column)
   ================================================================ */
.cal-type-badge[b-vlvvdxfhs2] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.03em;
    text-transform: uppercase;
    line-height: 1.4;
}

.cal-type-event[b-vlvvdxfhs2] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.cal-type-task[b-vlvvdxfhs2] {
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

/* ================================================================
   Date coloring
   ================================================================ */
.cal-date-overdue[b-vlvvdxfhs2] {
    color: var(--lb-danger);
    font-weight: 600;
}

.cal-date-upcoming[b-vlvvdxfhs2] {
    color: var(--lb-warning);
    font-weight: 500;
}

/* ================================================================
   Time column (#3037)
   Mirrors CalendarAgendaGrid's time cell so the case tab and the main
   agenda list read identically.
   ================================================================ */
.cal-time-stack[b-vlvvdxfhs2] {
    display: flex;
    flex-direction: column;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.3;
}

.cal-time-end[b-vlvvdxfhs2] {
    font-weight: 400;
    color: var(--lb-text-muted);
}

.cal-allday[b-vlvvdxfhs2] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--lb-danger);
}

/* Rows with no recorded start time (tasks, date-only legacy rows). Muted so a
   column of em-dashes never competes with the real times beside it. */
.cal-time-none[b-vlvvdxfhs2] {
    color: var(--lb-text-muted);
}

/* ================================================================
   Priority coloring
   ================================================================ */
.cal-priority-high[b-vlvvdxfhs2] {
    color: var(--lb-danger);
    font-weight: 700;
}

.cal-priority-low[b-vlvvdxfhs2] {
    color: var(--lb-success);
}

/* ================================================================
   Sync status dot
   ================================================================ */
.cal-sync-dot[b-vlvvdxfhs2] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    padding: 0;
    border: none;
    vertical-align: middle;
}

.cal-sync-synced[b-vlvvdxfhs2] {
    background: var(--lb-success);
}

.cal-sync-pending[b-vlvvdxfhs2] {
    background: var(--lb-warning);
}

.cal-sync-legacy[b-vlvvdxfhs2] {
    background: var(--lb-text-dim);
}

.cal-sync-failed[b-vlvvdxfhs2] {
    background: var(--lb-danger);
}

.cal-sync-clickable[b-vlvvdxfhs2] {
    cursor: pointer;
    transition: transform 0.15s ease;
}

.cal-sync-clickable:hover[b-vlvvdxfhs2] {
    transform: scale(1.4);
}

/* ================================================================
   Task row muting (read-only on Calendar tab)
   ================================================================ */
[b-vlvvdxfhs2] .cal-task-row {
    opacity: 0.6;
}

[b-vlvvdxfhs2] .cal-task-row td {
    color: var(--lb-text-muted);
}

/* ================================================================
   Overdue row: past date with no disposition (legacy "red row")
   ================================================================ */
/* Must match Syncfusion's own row-cell specificity (.e-grid .e-row .e-rowcell),
   or the grid theme wins the cascade and only the Date cell -- colored via its
   own template span -- turns red. Same anchored pattern as CaseTypeTabAdmin's
   core-row muting. */
[b-vlvvdxfhs2] .e-grid .e-row.cal-overdue-row .e-rowcell {
    color: var(--lb-danger);
    font-weight: 500;
}

/* ================================================================
   Drawer tab pills (inside RecordDrawer ChildContent)
   ================================================================ */
.cal-drawer-tabs[b-vlvvdxfhs2] {
    display: flex;
    gap: 4px;
    margin-bottom: 14px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--lb-border-light);
}

.cal-drawer-tab[b-vlvvdxfhs2] {
    padding: 4px 14px;
    border-radius: 14px;
    border: 1px solid var(--lb-border);
    background: transparent;
    color: var(--lb-text-muted);
    font-size: 0.76rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
}

.cal-drawer-tab:hover[b-vlvvdxfhs2] {
    border-color: var(--lb-brand);
    color: var(--lb-text);
}

.cal-drawer-tab.active[b-vlvvdxfhs2] {
    background: var(--lb-brand);
    border-color: var(--lb-brand);
    color: var(--lb-bg-white);
}

/* Delete button pushed to the right in drawer footer */
[b-vlvvdxfhs2] .cal-delete-btn {
    margin-left: auto;
}

/* ================================================================
   View mode toggle buttons
   ================================================================ */
.cal-view-toggle[b-vlvvdxfhs2] {
    display: inline-flex;
    gap: 2px;
    margin-right: 8px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 2px;
    background: var(--lb-bg-white);
}

[b-vlvvdxfhs2] .cal-view-btn {
    min-width: 32px;
    padding: 4px 8px;
    border-radius: 4px;
    transition: all 0.15s ease;
}

[b-vlvvdxfhs2] .cal-view-btn.cal-view-active {
    background: var(--lb-brand);
    color: var(--lb-bg-white);
}

[b-vlvvdxfhs2] .cal-view-btn.cal-view-active:hover {
    background: var(--lb-brand);
    color: var(--lb-bg-white);
}

/* ================================================================
   Scheduler container
   ================================================================ */
/* Header row hosting the ported Today/Day/Week/Month/Agenda view switch (#1443). */
.cal-scheduler-header[b-vlvvdxfhs2] {
    display: flex;
    align-items: center;
    margin-bottom: 8px;
}

.cal-scheduler-container[b-vlvvdxfhs2] {
    height: calc(100vh - 220px);
    min-height: 500px;
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    overflow: hidden;
}

/* Event tile. Replaces Syncfusion's native tile so a row whose end the projection
   had to invent shows its start only (#2808); the shape deliberately mirrors the
   native "time subject" line so nothing else about the grid changes. */
[b-vlvvdxfhs2] .cal-sched-tile {
    display: flex;
    align-items: baseline;
    gap: 4px;
    min-width: 0;
    padding: 0 2px;
    line-height: 1.3;
}

[b-vlvvdxfhs2] .cal-sched-tile-time {
    flex: 0 0 auto;
    font-size: 0.72rem;
    opacity: 0.85;
}

[b-vlvvdxfhs2] .cal-sched-tile-subject {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
}

/* Vertical Day/Week tiles are tall, not a single strip -- stack there and let the
   subject wrap instead of truncating it to one line. */
[b-vlvvdxfhs2] .e-schedule .e-vertical-view .cal-sched-tile {
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
}

[b-vlvvdxfhs2] .e-schedule .e-vertical-view .cal-sched-tile-subject {
    white-space: normal;
    overflow-wrap: anywhere;
}

/* ================================================================
   Scheduler quick info popup
   ================================================================ */
.cal-sched-qi-header[b-vlvvdxfhs2] {
    font-weight: 600;
    font-size: 0.95rem;
    padding: 8px 12px;
    color: var(--lb-text);
    border-bottom: 1px solid var(--lb-border-light);
}

.cal-sched-qi-content[b-vlvvdxfhs2] {
    padding: 10px 12px;
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.cal-sched-qi-row[b-vlvvdxfhs2] {
    margin-bottom: 6px;
}

.cal-sched-qi-label[b-vlvvdxfhs2] {
    font-weight: 600;
    color: var(--lb-text);
    margin-right: 4px;
}

.cal-sched-open-grid-btn[b-vlvvdxfhs2] {
    display: inline-block;
    margin-top: 8px;
    padding: 4px 12px;
    border-radius: 14px;
    border: 1px solid var(--lb-brand);
    background: transparent;
    color: var(--lb-brand);
    font-size: 0.76rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
}

.cal-sched-open-grid-btn:hover[b-vlvvdxfhs2] {
    background: var(--lb-brand);
    color: var(--lb-bg-white);
}

/* Drawer footer: passive note shown in place of the manual sync button while the
   event is unsaved -- the save itself pushes to Outlook, so there is nothing to click.
   flex: 1 0 100% claims a whole flex row, so the note reads as a caption above the
   button strip instead of sitting inline like a fifth button. */
.cal-sync-on-save-hint[b-vlvvdxfhs2] {
    flex: 1 0 100%;
    font-size: 0.78rem;
    line-height: 1.2;
    color: var(--lb-text-muted);
}
/* /Components/Pages/CaseForms/CaseContactsPage.razor.rz.scp.css */
/* === CaseContactsPage -- scoped styles === */

/* Adaptive grid -- no horizontal scroll needed */
[b-10scsy6c16] .e-grid {
    overflow-x: hidden;
}

/* Grid toolbar row */
.grid-toolbar-row[b-10scsy6c16] {
    display: flex;
    justify-content: flex-end;
    padding: 8px 0 4px;
}

/* Empty record template */
.empty-state[b-10scsy6c16] {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--lb-text-muted);
}

/* === Dialog chrome === */
/* NOTE: SfDialog portals content to <body>, outside CSS isolation scope.
   All .case-contact-dialog rules (including dialog layout, form grids,
   avatar header, footer split, udf, and relationship styles)
   live in app.css under the .case-contact-dialog selector. */
/* /Components/Pages/CaseForms/CaseDataForm.razor.rz.scp.css */
/* === CaseDataForm -- scoped styles === */

.casedata-shell[b-a3y3fivbym] {
    position: relative;
    min-height: 400px;
    display: flex;
    flex-direction: column;
    /* Fill the viewport below the chrome that stacks ABOVE the shell inside
       <main>. Two things eat vertical space and BOTH must be reserved, or the
       page overflows and grows a vertical scrollbar (measured: 15px over in
       focus-OFF, #2213):
         - the content <article>'s top padding -- 1.1rem (app.css `.content`)
         - the top bar -- --lb-topbar-height (56px) + its 1px bottom border --
           but ONLY in focus-OFF mode; focus mode hides the bar entirely.
       Base = focus-OFF reserve (bar + border + padding). It is also the safe
       fallback: if the focus-ON override below is not applied, the worst case is
       a little extra space at the bottom in focus mode, never a scrollbar. */
    height: calc(100vh - var(--lb-topbar-height) - 1px - 1.1rem);
    overflow-x: hidden; /* keep wide children (toolbar) within the shell so the
                           toolbar's own Scrollable overflow engages instead of
                           the content clipping off-screen */
}

/* Focus mode (the default on case routes) hides the top bar; MainLayout marks
   <main> with .lb-focus-active. Reclaim the bar's height -- reserve only the
   article padding -- so the shell fills the viewport instead of leaving a dead
   strip below the content. */
main.lb-focus-active .casedata-shell[b-a3y3fivbym] {
    height: calc(100vh - 1.1rem);
}

/* Constrain the toolbar to the shell width so SfToolbar OverflowMode="Scrollable"
   renders its left/right nav arrows instead of overflowing the viewport. */
[b-a3y3fivbym] .lb-case-toolbar {
    max-width: 100%;
    min-width: 0;
}

/* -- Phone tier (<768px): hide the desktop toolbar and the SfTab tab-header
 * row so CaseOverviewPhone owns the full screen. The user navigates via the
 * section-link list inside CaseOverviewPhone; tapping a section calls
 * HandlePulseTabNavigateAsync which switches the SfTab content underneath.
 * The 16-tab header and 6-zone toolbar are unusable at 390px width
 * regardless, so hiding them is no loss.
 */
@media (max-width: 767.98px) {
    .casedata-shell[b-a3y3fivbym]  .lb-case-toolbar {
        display: none;
    }

    .casedata-shell[b-a3y3fivbym]  .e-tab .e-tab-header {
        display: none;
    }
}

/* -- Phone tab back-bar --
 * Sits above the SfTab content area on phones when the user has navigated
 * from CaseOverviewPhone into another tab. Sticky-positioned so it stays
 * pinned at the top of the tab content while the tab body scrolls. Only
 * rendered (via @if Layout.Tier == Phone in the markup) at phone tier --
 * no @media query needed in this rule.
 */
.phone-tab-back-bar[b-a3y3fivbym] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background: var(--lb-bg-topbar);
    border-bottom: 1px solid var(--lb-border);
    position: sticky;
    top: 0;
    z-index: 10;
    min-height: 44px;
}

.phone-tab-back-btn[b-a3y3fivbym] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 6px 8px 6px 4px;
    background: transparent;
    border: none;
    border-radius: 6px;
    color: var(--lb-brand);
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.12s ease;
}

.phone-tab-back-btn:hover[b-a3y3fivbym],
.phone-tab-back-btn:focus-visible[b-a3y3fivbym] {
    background: var(--lb-brand-light);
    outline: none;
}

.phone-tab-back-btn .e-icons[b-a3y3fivbym] {
    font-size: 1rem;
}

.phone-tab-current[b-a3y3fivbym] {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}

/* Wrapping card around the case identity band (case name, file number,
   banner context row, workflow stage bar). Two-row workbench layout
   (spec: case-header-compact): left-aligned rows so identity and meta
   share lines instead of stacking centered. */
.case-header-card[b-a3y3fivbym] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    box-shadow: var(--lb-shadow);
    padding: 6px 12px 0;
    margin: 8px 0 12px;
}

/* Row 1: caption + file/docket number + status badge + health chip,
   with the save-status pill pushed to the far right corner. The bottom
   padding is the card's spacing floor for the window before the overview
   loads (and for cases with no banner data and no stages), when row 2
   does not render at all. */
.case-header-row1[b-a3y3fivbym] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding-bottom: 4px;
}

.case-caption[b-a3y3fivbym] {
    font-size: 1.15rem;
    font-weight: 700;
    color: var(--lb-text-bright);
    line-height: 1.25;
    margin: 0;
}

/* No nowrap: docket numbers are court-controlled free text and can exceed
   a phone viewport — the pair must be able to break at the separator. */
.case-file-no[b-a3y3fivbym] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

.save-status-corner[b-a3y3fivbym] {
    margin-left: auto;
}

/* Row 2: banner meta on the left, compact stage stepper pushed right.
   Wraps as a unit when the viewport is too narrow for one line. */
.case-header-row2[b-a3y3fivbym] {
    display: flex;
    align-items: center;
    gap: 4px 16px;
    flex-wrap: wrap;
    padding-bottom: 4px;
}

/* The stepper root lives inside the child component, so ::deep (scoped
   ancestor = .case-header-row2, which is this component's own markup). */
.case-header-row2[b-a3y3fivbym]  .stage-bar-compact {
    margin-left: auto;
}

@media (max-width: 767.98px) {
    /* Parity with the old standalone save-status row, which was hidden
       on phones. */
    .save-status-corner[b-a3y3fivbym] {
        display: none;
    }
}

@media (max-width: 576px) {
    /* Caption takes its own full line; badges and numbers flow below,
       and the stepper takes its own full line under the meta items. */
    .case-caption[b-a3y3fivbym] {
        flex-basis: 100%;
    }

    .case-header-row2[b-a3y3fivbym]  .stage-bar-compact {
        margin-left: 0;
        flex-basis: 100%;
    }
}

/* -- Content tabs fill remaining vertical space -- */
[b-a3y3fivbym] .edit-form {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    min-height: 0; /* allow flex children to shrink below content size */
    overflow: hidden;
}

[b-a3y3fivbym] .edit-form > .e-tab {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
}

[b-a3y3fivbym] .edit-form .e-content {
    flex: 1 1 0;
    min-height: 0;
    overflow: hidden;
}

/* Only the ACTIVE tab panel stretches -- inactive panels stay display:none.
   ~16px horizontal inner gutter (#1802) keeps Overview text off the folder
   border. Horizontal padding only -- NO vertical padding, which would push the
   grid/Kanban children past height:100% and add a vertical scrollbar.
   box-sizing:border-box absorbs the gutters into the panel width.
   overflow-x:hidden is REQUIRED, not decorative: overflow-y:auto makes the CSS
   spec compute overflow-x to `auto`, so the panel silently becomes a horizontal
   scroll container. box-sizing alone didn't stop it -- a child still exceeds the
   content box by a hair (e.g. the vertical scrollbar eating ~17px of width after
   layout), tripping a phantom bottom scrollbar (#2213). Declaring x `hidden`
   states the panel's real intent (scroll vertically, never horizontally). Grids
   are unaffected: each .e-grid keeps its OWN overflow-x:auto (app.css) and
   scrolls inside its own box, which fits the panel width. */
[b-a3y3fivbym] .edit-form .e-content > .e-item.e-active {
    height: 100%;
    display: flex;
    flex-direction: column;
    overflow-y: auto;
    overflow-x: hidden;
    box-sizing: border-box;
    padding-left: 16px;
    padding-right: 16px;
}

/* Grid containers inside the active tab panel fill available space */
[b-a3y3fivbym] .edit-form .e-content > .e-item.e-active > .e-grid,
[b-a3y3fivbym] .edit-form .e-content > .e-item.e-active > div > .e-grid {
    flex: 1 1 0;
    min-height: 0;
}

/* === Case content tabs -- connected "folder" tabs (Option A) ===
   The default SfTab header reads as a row of underlined links. These rules
   turn it into real tabs: the active tab is a white folder with an amber top
   accent that joins the content panel below; inactive tabs stay quiet until
   hover. Everything is scoped to #case-content-tab-host so tabs elsewhere
   (dialogs, other pages) keep the stock Syncfusion look. */

/* Hide the sliding underline indicator. fixTabIndicator (app.js) keeps
   positioning it, but display:none removes it visually -- the JS still
   usefully force-corrects the .e-active class our folder styles key off. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-indicator {
    display: none !important;
}

/* Header row: drop Syncfusion's own bottom rule (the content panel's top
   border becomes the shelf the tabs sit on), sit the tabs on that shelf,
   and inset the first tab slightly from the edge. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header,
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header::before {
    border: none;
}

#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-items {
    align-items: flex-end;
    padding-left: 8px;
}

/* Every tab reserves a 2px top accent + 1px side borders as transparent so
   activating a tab never shifts text baselines. Rounded top corners let both
   the hover fill and the active folder read as tab shapes. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item {
    background: transparent;
    border: 1px solid transparent;
    border-top-width: 2px;
    border-radius: 7px 7px 0 0;
    margin-right: 2px;
}

/* Let the list-item background show through -- Syncfusion normally paints the
   inner wrap, which would hide the folder fill. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item .e-tab-wrap {
    background: transparent !important;
    border-radius: 6px 6px 0 0;
}

/* Quiet inactive label. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item .e-tab-text {
    color: var(--lb-text-muted) !important;
    font-weight: 600 !important;
}

/* Hover on an inactive tab: subtle fill so it clearly reads as clickable. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item:not(.e-active):hover {
    background: var(--lb-surface-alt);
}

#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item:not(.e-active):hover .e-tab-text {
    color: var(--lb-text) !important;
}

/* Active tab = white folder joined to the panel: white fill, real side + top
   borders, amber top accent, and a -1px bottom margin so it paints over the
   panel's top border and reads as physically connected. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item.e-active {
    background: var(--lb-bg-white);
    border-color: var(--lb-border);
    border-top-color: var(--lb-brand);
    border-bottom: none;
    margin-bottom: -1px;
    position: relative;
    z-index: 2;
}

/* #1840: when the case tab strip overflows, Syncfusion overlays 32px-wide
   scroll arrows at each edge. A plain LTR .e-tab gets NO gutter in bootstrap5
   (only the spreadsheet / RTL variants inset the bar), so the edge tab -- most
   visibly the opaque active tab above -- sits *under* the arrow. Inset the
   scroll viewport by the arrow width so the arrows sit in their own gutter,
   beside the tabs instead of on top of the first one. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-items.e-hscroll .e-hscroll-bar {
    margin-left: 32px;
    margin-right: 32px;
}

/* Belt-and-suspenders: keep the arrows painting above the positioned active tab
   and give them a solid fill so no tab text bleeds through mid-scroll. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-scroll-nav {
    z-index: 3;
    background: var(--lb-bg-white);
}

#case-content-tab-host[b-a3y3fivbym]  .e-tab .e-tab-header .e-toolbar-item.e-active .e-tab-text {
    color: var(--lb-text-bright) !important;
    font-weight: 700 !important;
}

/* Content panel becomes the folder body: white card, full border, rounded
   bottom corners. Its top border is the shelf; the active folder above
   overlaps it to merge the two. */
#case-content-tab-host[b-a3y3fivbym]  .e-tab > .e-content {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 0 0 8px 8px;
}

/* -- Status badge -- */
.case-status-badge[b-a3y3fivbym] {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 2px 10px;
    border-radius: 12px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    vertical-align: middle;
}

.status-open[b-a3y3fivbym] {
    background: var(--lb-success-bg);
    color: var(--lb-success-text);
    border: 1px solid var(--lb-success-border);
}

.status-closed[b-a3y3fivbym] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger-text);
    border: 1px solid var(--lb-danger-border);
}

.case-health-badge--none[b-a3y3fivbym] {
    background: var(--lb-surface-alt, #2a2a2a);
    color: var(--lb-text-secondary, #999);
    border: 1px solid var(--lb-border, #444);
    font-style: italic;
    text-transform: none;
}

.ch-header-btn[b-a3y3fivbym] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: 1px solid var(--lb-border, #444);
    border-radius: 12px;
    padding: 2px 10px;
    cursor: pointer;
    font-size: 0.75rem;
    color: var(--lb-text-secondary, #999);
    vertical-align: middle;
    transition: border-color 0.2s, background 0.2s;
}

.ch-header-btn:hover:not(:disabled)[b-a3y3fivbym] {
    border-color: var(--lb-brand, rgb(204, 108, 44));
    background: color-mix(in srgb, var(--lb-brand, rgb(204, 108, 44)) 10%, transparent);
}

.ch-header-btn:disabled[b-a3y3fivbym] {
    opacity: 0.6;
    cursor: wait;
}

.ch-header-label[b-a3y3fivbym] {
    font-weight: 600;
}

/* Distinct failure state so a failed health evaluation is not mistaken
   for "Not evaluated" (issue 2498). */
.ch-header-failed[b-a3y3fivbym] {
    color: var(--lb-warning);
}

.status-default[b-a3y3fivbym] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text);
    border: 1px solid var(--lb-warning-border);
}

.handling-warning-banner[b-a3y3fivbym] {
    font-size: 0.95rem;
}

.handling-warning-banner .hw-message[b-a3y3fivbym] {
    min-width: 0;
}

/* Keep the action buttons grouped and never let them clip when the banner wraps. */
.handling-warning-banner .hw-actions[b-a3y3fivbym] {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}

/* -- Close/Reopen Case dialog inline error -- */
.close-reopen-error[b-a3y3fivbym] {
    color: var(--lb-danger);
    font-size: 0.9rem;
}

/* -- Access Denied panel (Strict case access mode) -- */
.access-denied-panel[b-a3y3fivbym] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 300px;
    padding: 2rem;
    text-align: center;
    color: var(--lb-text-muted);
}

.access-denied-panel .access-denied-icon[b-a3y3fivbym] {
    font-size: 3rem;
    margin-bottom: 1rem;
}

.access-denied-panel h4[b-a3y3fivbym] {
    color: var(--lb-danger);
    margin-bottom: 0.5rem;
}

.access-denied-panel p[b-a3y3fivbym] {
    max-width: 400px;
    line-height: 1.5;
}

/* ── Toolbar zone separators ─────────────────────────────────────────────
   Give the SfToolbar a slightly tighter feel and ensure separator lines
   are visible in both light and dark themes. */
[b-a3y3fivbym] .lb-case-toolbar .e-toolbar-items .e-separator {
    border-left-color: var(--lb-border-light);
    height: 20px;
    align-self: center;
}

/* ── Save-status indicator pill ─────────────────────────────────────────
   Shows "Saved HH:MM AM/PM" or "Loaded HH:MM AM/PM" in a subtle pill.
   Rendered in the header card's top-right corner (.save-status-corner).
   Three states: clean (saved), loaded (initial), and saving (spinner). */
.save-status-indicator[b-a3y3fivbym] {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 0.78rem;
    font-weight: 500;
    white-space: nowrap;
    user-select: none;
    cursor: default;
    transition: background 0.2s, color 0.2s;
}

.save-status-clean[b-a3y3fivbym] {
    background: var(--lb-success-bg);
    color: var(--lb-success-text);
    border: 1px solid var(--lb-success-border);
}

.save-status-loaded[b-a3y3fivbym] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-secondary);
    border: 1px solid var(--lb-border-light);
}

.save-status-saving[b-a3y3fivbym] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    border: 1px solid var(--lb-border-light);
}

/* #2708: read-only state for a closed file. Deliberately matches .closed-file-banner
   below so the pill and the banner read as one lock, not two unrelated signals.
   --lb-warning-text / --lb-warning-border are not declared in app.css, so both fall
   back to --lb-warning (which is, and carries dark-mode variants). */
.save-status-locked[b-a3y3fivbym] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text, var(--lb-warning));
    border: 1px solid var(--lb-warning-border, var(--lb-warning));
}

/* #3381: the last save did not persist. Danger-colored on purpose — this pill is the
   header's only standing answer to "is my work on file?", and the previous behavior was
   to keep showing the green "Saved h:mm" over a save that wrote nothing.
   --lb-danger-text / --lb-danger-border are not declared in app.css, so both fall back to
   --lb-danger (which is, and carries dark-mode variants) — same pattern as -locked. */
.save-status-failed[b-a3y3fivbym] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger-text, var(--lb-danger));
    border: 1px solid var(--lb-danger-border, var(--lb-danger));
    font-weight: 600;
}

.save-status-indicator .e-icons[b-a3y3fivbym] {
    font-size: 13px;
    flex-shrink: 0;
}

/* -- Closed file banner -- */
.closed-file-banner[b-a3y3fivbym] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    margin: 0.5rem 0;
    border-radius: 4px;
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text);
    border: 1px solid var(--lb-warning-border);
    font-size: 0.9rem;
    font-weight: 500;
    flex-shrink: 0;
}

.closed-file-banner .e-lock[b-a3y3fivbym] {
    font-size: 1rem;
    flex-shrink: 0;
}

.closed-banner-text[b-a3y3fivbym] {
    flex: 1 1 auto;
}

[b-a3y3fivbym] .closed-banner-reopen {
    margin-left: auto;
    flex-shrink: 0;
}

/* ── Phone FAB (floating action button) ───────────────────────────── */
.phone-fab-container[b-a3y3fivbym] {
    position: fixed;
    bottom: 24px;
    right: 16px;
    z-index: 1000;
    display: flex;
    flex-direction: column-reverse;
    align-items: flex-end;
    gap: 8px;
}

.phone-fab[b-a3y3fivbym] {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    border: none;
    background: var(--lb-brand, rgb(204, 108, 44));
    color: #fff;
    font-size: 1.3rem;
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: 0 3px 8px rgba(0,0,0,0.35);
    cursor: pointer;
    transition: transform 0.2s, background 0.2s;
}

.phone-fab--open[b-a3y3fivbym] {
    background: var(--lb-text-secondary, #888);
    transform: rotate(45deg);
}

.phone-fab-backdrop[b-a3y3fivbym] {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.3);
    z-index: -1;
}

.phone-fab-sheet[b-a3y3fivbym] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 6px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border, #444);
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.4);
    min-width: 160px;
}

.phone-fab-action[b-a3y3fivbym] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    border: none;
    border-radius: 8px;
    background: transparent;
    color: var(--lb-text, #eee);
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.12s;
}

.phone-fab-action:hover[b-a3y3fivbym],
.phone-fab-action:focus-visible[b-a3y3fivbym] {
    background: var(--lb-brand-light, rgba(204, 108, 44, 0.15));
}

.phone-fab-action .e-icons[b-a3y3fivbym] {
    font-size: 1rem;
    width: 20px;
    text-align: center;
    flex-shrink: 0;
}

.phone-fab-action--danger[b-a3y3fivbym] {
    color: var(--lb-danger-text, #f5a5a5);
}

.phone-fab-action--danger:hover[b-a3y3fivbym],
.phone-fab-action--danger:focus-visible[b-a3y3fivbym] {
    background: var(--lb-danger-bg, rgba(139, 58, 58, 0.2));
}
/* /Components/Pages/CaseForms/CaseDetailPage.razor.rz.scp.css */
/* === CaseDetailPage (Workers' Comp) - Litigation-style === */

/* -- Loading state -- */
.wc-loading[b-p6hjx1z3g0] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    color: var(--lb-text-secondary);
    font-size: 1rem;
}

/* ========== TOOLBAR ROW ========== */
.wc-toolbar-row[b-p6hjx1z3g0] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
    margin-bottom: 10px;
}

/* ========== CARD GRID LAYOUT ========== */
.wc-card-grid[b-p6hjx1z3g0] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 12px;
    margin-bottom: 16px;
}

.wc-section-card[b-p6hjx1z3g0] {
    background: var(--lb-card);
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-lg);
    padding: 14px;
    overflow: hidden;
}

.card-header[b-p6hjx1z3g0] {
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 0.5px solid var(--lb-border);
}

.card-body[b-p6hjx1z3g0] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px 14px;
}

.card-body--single-col[b-p6hjx1z3g0] {
    grid-template-columns: 1fr;
}

/* -- Field cells -- */
.field-cell[b-p6hjx1z3g0] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-cell--full[b-p6hjx1z3g0] {
    grid-column: 1 / -1;
}

.field-label[b-p6hjx1z3g0] {
    font-size: 11px;
    font-weight: 500;
    color: var(--lb-text-tertiary);
}

.field-value[b-p6hjx1z3g0] {
    font-size: 13px;
    color: var(--lb-text-primary);
    line-height: 1.4;
}

.field-value--empty[b-p6hjx1z3g0] {
    color: var(--lb-text-tertiary);
    font-style: italic;
}

.field-value--danger[b-p6hjx1z3g0] {
    color: var(--lb-danger);
    font-weight: 500;
}

.field-value--warning[b-p6hjx1z3g0] {
    color: var(--lb-warning);
    font-weight: 500;
}

.field-value--multiline[b-p6hjx1z3g0] {
    white-space: pre-wrap;
}

/* -- Field with gear button -- */
.field-with-gear[b-p6hjx1z3g0] {
    display: flex;
    gap: 6px;
    align-items: flex-start;
}

.field-with-gear[b-p6hjx1z3g0]  .e-dropdownlist {
    flex: 1;
}

.code-data-gear[b-p6hjx1z3g0] {
    flex-shrink: 0;
    background: transparent;
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-md);
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--lb-text-secondary);
    transition: background-color 0.2s, border-color 0.2s;
}

.code-data-gear:hover[b-p6hjx1z3g0] {
    background: var(--lb-hover);
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

/* -- Dropdown company text -- */
.dd-company[b-p6hjx1z3g0] {
    font-style: italic;
    font-weight: 400;
    color: var(--lb-text-secondary);
}

/* -- Validation errors -- */
.validation-errors[b-p6hjx1z3g0] {
    margin-top: 16px;
    padding: 14px;
    background-color: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: var(--border-radius-lg);
    color: var(--lb-danger);
}

.validation-errors h4[b-p6hjx1z3g0] {
    margin: 0 0 10px 0;
    font-size: 14px;
    font-weight: 600;
}

.validation-errors ul[b-p6hjx1z3g0] {
    margin: 0;
    padding-left: 20px;
    line-height: 1.6;
}

.validation-errors li[b-p6hjx1z3g0] {
    margin-bottom: 4px;
    font-size: 13px;
}

/* ========== RESPONSIVE ========== */
@media (max-width: 1200px) {
    .wc-card-grid[b-p6hjx1z3g0] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 768px) {
    .wc-card-grid[b-p6hjx1z3g0] {
        grid-template-columns: 1fr;
    }

    .card-body[b-p6hjx1z3g0] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/CaseForms/CaseDocumentsPage.razor.rz.scp.css */
/* ===== CaseDocumentsPage scoped styles ===== */
/* Two-zone layout: toolbar + colorful filter chips, split-pane grid + detail drawer */

/* -- Loading state -- */
.docs-loading[b-t5kmnput7p] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* ===== ZONE 1: Toolbar + Filter Chips ===== */
.docs-toolbar-zone[b-t5kmnput7p] {
    margin-bottom: 12px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background: var(--lb-bg-white);
}

/* Row A: Action Toolbar */
.docs-toolbar[b-t5kmnput7p] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    flex-wrap: wrap;
}

.docs-toolbar-left[b-t5kmnput7p] {
    display: flex;
    gap: 6px;
    align-items: center;
}

.docs-toolbar-center[b-t5kmnput7p] {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
    margin-left: auto;
    margin-right: auto;
}

.docs-toolbar-right[b-t5kmnput7p] {
    display: flex;
    gap: 6px;
    align-items: center;
    flex-shrink: 0;
    margin-left: auto;
}

[b-t5kmnput7p] .docs-search-input {
    max-width: 200px;
}

@media (max-width: 768px) {
    .docs-toolbar[b-t5kmnput7p] {
        flex-direction: column;
        align-items: stretch;
    }

    .docs-toolbar-center[b-t5kmnput7p],
    .docs-toolbar-right[b-t5kmnput7p] {
        margin-left: 0;
        margin-right: 0;
        justify-content: flex-start;
    }
}

/* Phone-tier toolbar variant: compact rows so the document grid lands above
   the fold. Replaces the wide drop zone (drag-drop is unsupported on touch)
   with a small "Upload" button and collapses the action group behind the
   "Actions" toggle. */
.docs-toolbar.docs-toolbar-phone[b-t5kmnput7p] {
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
    padding: 6px 8px;
}

.docs-toolbar-phone .docs-toolbar-left[b-t5kmnput7p] {
    flex-wrap: wrap;
    gap: 6px;
}

.docs-toolbar-phone .docs-toolbar-center[b-t5kmnput7p] {
    flex-wrap: wrap;
    gap: 6px;
    margin: 0;
}

.docs-toolbar-phone .docs-toolbar-right[b-t5kmnput7p] {
    margin: 0;
}

.docs-toolbar-phone[b-t5kmnput7p]  .docs-search-input {
    max-width: 100%;
    width: 100%;
}

.docs-actions-toggle[b-t5kmnput7p] {
    align-self: flex-start;
}

.docs-actions-toggle.expanded[b-t5kmnput7p]  .e-btn-icon.e-more-horizontal-1 {
    /* Subtle visual cue that "Actions" is currently open. */
    color: var(--lb-brand);
}

/* Icon-only Detail toggle on phone -- keeps the toolbar-right row narrow
   so the search box can stretch. */
.docs-detail-icon-btn[b-t5kmnput7p] {
    flex-shrink: 0;
}

/* Row B: Colorful Filter Chips */
.docs-filter-chips[b-t5kmnput7p] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px 8px;
    border-top: 1px solid var(--lb-border);
    overflow-x: auto;
    scrollbar-width: thin;
    /* The chip row scrolls horizontally to reach the type filters (Email,
       Discovery, ...). Without containment, swiping it sideways chained to the
       browser's edge swipe-back and bounced the user out of the case. Trap the
       horizontal pan here, matching the document viewer/drawer guards. */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

.docs-chip-group[b-t5kmnput7p] {
    display: flex;
    gap: 4px;
    align-items: center;
    flex-shrink: 0;
}

.docs-chip-divider[b-t5kmnput7p] {
    width: 1px;
    height: 20px;
    background: var(--lb-border);
    flex-shrink: 0;
    margin: 0 4px;
}

/* -- Colored dot indicator before type chip label -- */
.docs-chip-dot[b-t5kmnput7p] {
    display: inline-block;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    margin-right: 4px;
    flex-shrink: 0;
}

/* -- Base chip -- */
.docs-chip[b-t5kmnput7p] {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 500;
    border: 1px solid var(--lb-border);
    border-radius: 14px;
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
    line-height: 1.4;
    background: transparent;
    color: var(--lb-text);
}

/* -- "All" chip -- */
.chip-all[b-t5kmnput7p] {
    background: var(--lb-elevated);
    color: var(--lb-text);
}
.chip-all:hover[b-t5kmnput7p] {
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}
.chip-all.docs-chip-active[b-t5kmnput7p] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
    font-weight: 600;
}

/* -- Palette chip 1 (teal) -- */
.chip-color-1[b-t5kmnput7p] {
    border-color: var(--chip-1-accent, #2b9a72);
    color: var(--chip-1-text, #2b9a72);
}
.chip-color-1 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-1-accent, #2b9a72); }
.chip-color-1:hover[b-t5kmnput7p] { background: rgba(43, 154, 114, 0.08); }
.chip-color-1.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-1-accent, #2b9a72);
    color: #fff; font-weight: 600;
    border-color: var(--chip-1-accent, #2b9a72);
}

/* -- Palette chip 2 (blue) -- */
.chip-color-2[b-t5kmnput7p] {
    border-color: var(--chip-2-accent, #3085c3);
    color: var(--chip-2-text, #3085c3);
}
.chip-color-2 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-2-accent, #3085c3); }
.chip-color-2:hover[b-t5kmnput7p] { background: rgba(48, 133, 195, 0.08); }
.chip-color-2.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-2-accent, #3085c3);
    color: #fff; font-weight: 600;
    border-color: var(--chip-2-accent, #3085c3);
}

/* -- Palette chip 3 (purple) -- */
.chip-color-3[b-t5kmnput7p] {
    border-color: var(--chip-3-accent, #6e52c5);
    color: var(--chip-3-text, #6e52c5);
}
.chip-color-3 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-3-accent, #6e52c5); }
.chip-color-3:hover[b-t5kmnput7p] { background: rgba(110, 82, 197, 0.08); }
.chip-color-3.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-3-accent, #6e52c5);
    color: #fff; font-weight: 600;
    border-color: var(--chip-3-accent, #6e52c5);
}

/* -- Palette chip 4 (amber) -- */
.chip-color-4[b-t5kmnput7p] {
    border-color: var(--chip-4-accent, #d49a1a);
    color: var(--chip-4-text, #d49a1a);
}
.chip-color-4 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-4-accent, #d49a1a); }
.chip-color-4:hover[b-t5kmnput7p] { background: rgba(212, 154, 26, 0.08); }
.chip-color-4.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-4-accent, #d49a1a);
    color: #fff; font-weight: 600;
    border-color: var(--chip-4-accent, #d49a1a);
}

/* -- Palette chip 5 (pink) -- */
.chip-color-5[b-t5kmnput7p] {
    border-color: var(--chip-5-accent, #c94277);
    color: var(--chip-5-text, #c94277);
}
.chip-color-5 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-5-accent, #c94277); }
.chip-color-5:hover[b-t5kmnput7p] { background: rgba(201, 66, 119, 0.08); }
.chip-color-5.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-5-accent, #c94277);
    color: #fff; font-weight: 600;
    border-color: var(--chip-5-accent, #c94277);
}

/* -- Palette chip 6 (coral) -- */
.chip-color-6[b-t5kmnput7p] {
    border-color: var(--chip-6-accent, #e06040);
    color: var(--chip-6-text, #e06040);
}
.chip-color-6 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-6-accent, #e06040); }
.chip-color-6:hover[b-t5kmnput7p] { background: rgba(224, 96, 64, 0.08); }
.chip-color-6.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-6-accent, #e06040);
    color: #fff; font-weight: 600;
    border-color: var(--chip-6-accent, #e06040);
}

/* -- Palette chip 7 (sky) -- */
.chip-color-7[b-t5kmnput7p] {
    border-color: var(--chip-7-accent, #4a90d9);
    color: var(--chip-7-text, #4a90d9);
}
.chip-color-7 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-7-accent, #4a90d9); }
.chip-color-7:hover[b-t5kmnput7p] { background: rgba(74, 144, 217, 0.08); }
.chip-color-7.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-7-accent, #4a90d9);
    color: #fff; font-weight: 600;
    border-color: var(--chip-7-accent, #4a90d9);
}

/* -- Palette chip 8 (green) -- */
.chip-color-8[b-t5kmnput7p] {
    border-color: var(--chip-8-accent, #7cb342);
    color: var(--chip-8-text, #7cb342);
}
.chip-color-8 .docs-chip-dot[b-t5kmnput7p] { background: var(--chip-8-accent, #7cb342); }
.chip-color-8:hover[b-t5kmnput7p] { background: rgba(124, 179, 66, 0.08); }
.chip-color-8.docs-chip-active[b-t5kmnput7p] {
    background: var(--chip-8-accent, #7cb342);
    color: #fff; font-weight: 600;
    border-color: var(--chip-8-accent, #7cb342);
}

/* ===== ZONE 2: Split-Pane ===== */
/* Fill the remaining height of the tab content panel instead of using a fixed
   calc(100vh - 480px). The host panel (.e-item.e-active in CaseDataForm.razor.css)
   is a bounded flex column, so flex:1 1 auto + min-height:0 sizes this pane to the
   leftover space and lets the SfGrid (Height="100%") be the only internal scroller.
   The old fixed heights + margin-bottom overflowed the panel, stacking a page and a
   tab-content scrollbar on top of the grid's own = three scrollbars (#1589). */
.docs-split-pane[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

/* With the detail drawer open, lay the list panel and drawer side by side.
   align-items:stretch (the flex default) matches the drawer height to the list. */
.docs-split-with-detail[b-t5kmnput7p] {
    flex-direction: row;
    gap: 12px;
}

@media (max-width: 768px) {
    /* Phones stack the panes (the drawer is also a full-screen overlay below). */
    .docs-split-with-detail[b-t5kmnput7p] {
        flex-direction: column;
    }
}

/* -- Document List Panel -- */
.docs-list-panel[b-t5kmnput7p] {
    min-width: 0;
    overflow: hidden;
    position: relative;
    /* Flex to fill the split pane (column layout) or take the remaining width
       beside the detail drawer (row layout). The SfGrid (Height="100%") owns the
       single internal scrollbar. min-height is a floor for short / standalone-route
       viewports; on normal embedded viewports flex governs, so it never binds and
       cannot re-introduce the overflow this fix removes (#1589). */
    flex: 1 1 auto;
    min-height: 300px;
}

/* Document Name cell styles live in global app.css (search "Documents grid:
   name cell") because Blazor's scoped CSS attribute can be stripped by
   Syncfusion's SfGrid during virtual row updates -- global rules are the
   only reliable way to color the link/text inside the cell template. */

.docs-esign-badge[b-t5kmnput7p] {
    display: inline-block;
    font-size: 9px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 10px;
    background: var(--lb-success-bg);
    color: var(--lb-success);
    white-space: nowrap;
    flex-shrink: 0;
}

/* AI-origin marker shown next to AI-drafted documents (CaseDocument.AiGenerated). */
.docs-ai-badge[b-t5kmnput7p] {
    display: inline-block;
    font-size: 9px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 10px;
    background: var(--lb-info-bg);
    color: var(--lb-info);
    white-space: nowrap;
    flex-shrink: 0;
}

/* Client Portal marker: this document is actively published to the client
   (module-gated; absent entirely for firms without the ClientPortal module). */
.docs-portal-badge[b-t5kmnput7p] {
    display: inline-block;
    font-size: 9px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 10px;
    background: var(--lb-brand-light);
    color: var(--lb-brand);
    white-space: nowrap;
    flex-shrink: 0;
}

/* Desktop Word Editing lock badge: shown when a document is checked out
   (CheckedOutBy != null). Same pill treatment as the e-sign / AI badges;
   warning palette because the row is temporarily not editable by others. */
.docs-lock-badge[b-t5kmnput7p] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 9px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 10px;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    white-space: nowrap;
    flex-shrink: 0;
}

.docs-lock-badge .e-icons[b-t5kmnput7p] {
    font-size: 9px;
    line-height: 1;
}

/* .docs-name-meta also moved to global app.css alongside the rest of the
   doc-name cell styles. */

/* -- Bulk Selection Action Bar -- */
.docs-bulk-bar[b-t5kmnput7p] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: var(--lb-surface-alt);
    border-top: 1px solid var(--lb-border);
    border-radius: 0 0 8px 8px;
    flex-wrap: wrap;
}

.docs-bulk-count[b-t5kmnput7p] {
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text);
    margin-right: 4px;
}

/* ===== Detail Drawer ===== */
.docs-detail-drawer[b-t5kmnput7p] {
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background: var(--lb-bg-white);
    display: flex;
    flex-direction: column;
    overflow: hidden;
    /* Sit beside the list panel at a fixed width (this is the row layout's second
       column). align-items:stretch on .docs-split-pane matches the drawer height to
       the list panel instead of a fixed calc(100vh - 480px), so .drawer-tab-body stays
       the single internal scroller and no page-level scrollbar appears (#1589/#1302). */
    flex: 0 0 630px;
    min-height: 300px;
}

@media (max-width: 768px) {
    /* Phones: the detail drawer is the read-only document viewer. Present it as
       a full-screen overlay (OnRecordClick opens it via _showDrawer); the
       in-drawer close button (.drawer-close-mobile) dismisses it. */
    .docs-detail-drawer[b-t5kmnput7p] {
        position: fixed;
        inset: 0;
        height: 100vh;
        z-index: 1060;
        border: none;
        border-radius: 0;
        /* Trap pan gestures inside the full-screen viewer: stop overscroll from
           chaining to <body> (pull-to-refresh / edge swipe-back), which was
           bouncing the user out of the document when they scrolled around it. */
        overscroll-behavior: contain;
        touch-action: pan-x pan-y;
    }
}

/* In-drawer close affordance: hidden on desktop (the toolbar "Detail" toggle
   handles it there), shown as a right-aligned X in the tab strip on phones. */
.drawer-close-mobile[b-t5kmnput7p] {
    display: none;
}

@media (max-width: 768px) {
    .drawer-close-mobile[b-t5kmnput7p] {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        flex: 0 0 auto;
        margin-left: auto;
        padding: 10px 16px;
        background: none;
        border: none;
        color: var(--lb-text);
        cursor: pointer;
        font-size: 16px;
    }
}

/* -- Drawer Tab Strip -- */
.drawer-tabs[b-t5kmnput7p] {
    display: flex;
    border-bottom: 2px solid var(--lb-border);
    flex-shrink: 0;
}

.drawer-tab[b-t5kmnput7p] {
    flex: 1;
    padding: 10px 16px;
    font-size: 13px;
    font-weight: 500;
    color: var(--lb-text-muted);
    background: transparent;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    cursor: pointer;
    transition: color 0.15s ease, border-color 0.15s ease;
    text-align: center;
}

.drawer-tab:hover[b-t5kmnput7p] {
    color: var(--lb-text);
}

.drawer-tab-active[b-t5kmnput7p] {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
    font-weight: 600;
}

/* -- Tab Body -- */
.drawer-tab-body[b-t5kmnput7p] {
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    /* Keep a pan inside the viewer from chaining to the page (see drawer rule). */
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
}

/* A. Header */
.docs-preview-header[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.docs-preview-title[b-t5kmnput7p] {
    font-size: 14px;
    font-weight: 500;
    margin: 0;
    line-height: 1.3;
    word-break: break-word;
    color: var(--lb-text);
}

.docs-preview-meta[b-t5kmnput7p] {
    font-size: 12px;
    color: var(--lb-text-muted);
    line-height: 1.4;
}

/* B. Thumbnail / Preview Area */
.docs-preview-thumbnail[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 24px 16px;
    background: var(--lb-surface-alt);
    border: 1px dashed var(--lb-border);
    border-radius: 6px;
    cursor: default;
    flex: 1;
    min-height: 200px;
}

/* #2118: the two clickable preview thumbnails are now <button> for keyboard
   operability. Neutralize only the button-specific UA chrome so they render
   pixel-identical to the former <div>; background / border / padding still come
   from the .docs-preview-thumbnail rule above, so do NOT reset those here. */
button.docs-preview-thumbnail[b-t5kmnput7p] {
    appearance: none;
    -webkit-appearance: none;
    font: inherit;
    color: inherit;
    text-align: inherit;
    margin: 0;
}

.docs-preview-thumbnail:hover[b-t5kmnput7p] {
    background: var(--lb-surface-alt);
}

.docs-preview-click-text[b-t5kmnput7p] {
    font-size: 12px;
    color: var(--lb-text-muted);
}

/* Section labels */
.docs-preview-section[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.docs-preview-section-label[b-t5kmnput7p] {
    font-size: 12px;
    font-weight: 500;
    color: var(--lb-text-muted);
}

.docs-add-tag-pill[b-t5kmnput7p] {
    display: inline-block;
    font-size: 11px;
    padding: 2px 8px;
    border: 1px dashed var(--lb-border);
    border-radius: 10px;
    background: transparent;
    color: var(--lb-text-muted);
    cursor: pointer;
}

.docs-add-tag-pill:hover[b-t5kmnput7p] {
    border-color: var(--lb-primary);
    color: var(--lb-primary);
}

/* Tag pills */
.docs-tag-pill[b-t5kmnput7p] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 9px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 8px;
    color: #fff;
    white-space: nowrap;
    flex-shrink: 0;
    margin-left: 2px;
}

.docs-tag-list[b-t5kmnput7p] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    align-items: center;
}

.docs-tag-remove[b-t5kmnput7p] {
    background: none;
    border: none;
    color: rgba(255, 255, 255, 0.7);
    cursor: pointer;
    font-size: 9px;
    padding: 0 2px;
    line-height: 1;
}

.docs-tag-remove:hover[b-t5kmnput7p] {
    color: #fff;
}

/* Tag picker dropdown */
.docs-tag-picker[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 6px;
    padding: 6px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    max-height: 200px;
    overflow-y: auto;
}

.docs-tag-option[b-t5kmnput7p] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 8px;
    border: none;
    border-radius: 4px;
    background: transparent;
    cursor: pointer;
    font-size: 12px;
    color: var(--lb-text);
    text-align: left;
}

.docs-tag-option:hover:not(:disabled)[b-t5kmnput7p] {
    background: var(--lb-hover);
}

.docs-tag-option.docs-tag-assigned[b-t5kmnput7p] {
    opacity: 0.5;
    cursor: default;
}

/* Action Buttons */
.docs-preview-actions[b-t5kmnput7p] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    padding-top: 4px;
    border-top: 1px solid var(--lb-border);
}

/* Empty State */
.docs-preview-empty[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 60px 16px;
    color: var(--lb-text-dim);
    text-align: center;
    flex: 1;
}

.docs-preview-empty-icon[b-t5kmnput7p] {
    font-size: 32px;
    opacity: 0.4;
}

/* ===== Edit Details Tab Form ===== */
.drawer-edit-form[b-t5kmnput7p] {
    gap: 12px;
}

.drawer-field[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.drawer-label[b-t5kmnput7p] {
    font-size: 12px;
    font-weight: 500;
    color: var(--lb-text-muted);
}

.drawer-edit-actions[b-t5kmnput7p] {
    display: flex;
    gap: 6px;
    padding-top: 8px;
    border-top: 1px solid var(--lb-border);
}

/* -- Hidden file input --
   The input itself is positioned off-flow with opacity:0 + pointer-events:none
   (see the inline style on <InputFile>). The wrapper must NOT clip it to a
   zero-size box: browsers ignore a programmatic .click() on a zero-size/hidden
   input, which is why the dropzone click previously failed to open the picker
   (#651). Keep the wrapper from contributing layout, but don't collapse/clip. */
.file-input-wrapper[b-t5kmnput7p] {
    position: absolute;
}

/* ===== Inline Drop Zone (in toolbar) ===== */
.docs-inline-drop[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    padding: 8px 14px;
    min-height: 42px;
    border: 1px dashed var(--lb-border);
    border-radius: 6px;
    font-size: 12px;
    /* font-family inherit: the drop zone is now a <button> for keyboard access
       (A11y-CDOC-001); strip the user-agent button font so it matches the toolbar. */
    font-family: inherit;
    color: var(--lb-text-muted);
    cursor: pointer;
    transition: border-color 0.2s ease, background 0.2s ease;
    white-space: nowrap;
    flex-shrink: 0;
}

.docs-inline-drop:hover[b-t5kmnput7p] {
    border-color: var(--lb-brand);
    color: var(--lb-text);
}

.docs-inline-drop-active[b-t5kmnput7p] {
    border-color: var(--lb-brand);
    background: var(--lb-accent-tint);
    border-style: solid;
}

/* ===== Inline Preview Content ===== */
.docs-preview-inline[b-t5kmnput7p] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    overflow: hidden;
    background: var(--lb-card);
    flex: 1;
    min-height: 200px;
    display: flex;
    flex-direction: column;
}

.docs-preview-img[b-t5kmnput7p] {
    display: block;
    width: 100%;
    flex: 1;
    object-fit: contain;
}

.docs-preview-iframe[b-t5kmnput7p] {
    display: block;
    width: 100%;
    flex: 1;
    min-height: 350px;
    border: none;
}

.docs-preview-text-block[b-t5kmnput7p] {
    padding: 12px;
    cursor: default;
    flex: 1;
    min-height: 0;
}

.docs-preview-text-block pre[b-t5kmnput7p] {
    margin: 0;
    font-size: 12px;
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
    height: 100%;
    overflow-y: auto;
    color: var(--lb-text);
}

.docs-preview-word[b-t5kmnput7p] {
    min-height: 350px;
    flex: 1;
}

/* ===== Audio Player ===== */
.docs-audio-player[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 14px;
    padding: 32px 16px;
    flex: 1;
}

.docs-audio-name[b-t5kmnput7p] {
    font-size: 13px;
    font-weight: 500;
    color: var(--lb-text);
    text-align: center;
    word-break: break-word;
    max-width: 100%;
}

.docs-audio-element[b-t5kmnput7p] {
    width: 100%;
    max-width: 340px;
    border-radius: 6px;
}

/* Tint the native audio control to respect dark mode */
:global([data-theme="dark"]) .docs-audio-element[b-t5kmnput7p] {
    filter: invert(0.85) hue-rotate(180deg);
}

/* ===== Video Player ===== */
.docs-video-player[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 16px;
    flex: 1;
}

.docs-video-element[b-t5kmnput7p] {
    width: 100%;
    max-width: 640px;
    border-radius: 6px;
    background: #000;
}

/* ===== ICS Calendar Import Dialog ===== */
.ics-confirm-body[b-t5kmnput7p] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ics-summary[b-t5kmnput7p] {
    font-size: 15px;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px;
}

.ics-detail[b-t5kmnput7p] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    margin: 0;
}

.ics-desc[b-t5kmnput7p] {
    font-size: 12px;
    color: var(--lb-text-secondary);
    white-space: pre-wrap;
    margin: 6px 0 0;
    padding-top: 6px;
    border-top: 1px solid var(--lb-border);
    max-height: 120px;
    overflow-y: auto;
}

/* ===== Dark Mode Overrides ===== */
/* Outline chips use the accent color for border + text. In dark mode we
   lighten the text and accent slightly for better contrast on dark surfaces. */

:global([data-theme="dark"]) .chip-color-1[b-t5kmnput7p] {
    --chip-1-text: #6dd4a0;
    --chip-1-accent: #48c088;
}

:global([data-theme="dark"]) .chip-color-2[b-t5kmnput7p] {
    --chip-2-text: #7ab8e8;
    --chip-2-accent: #5aa4d8;
}

:global([data-theme="dark"]) .chip-color-3[b-t5kmnput7p] {
    --chip-3-text: #b0a0e8;
    --chip-3-accent: #9888d8;
}

:global([data-theme="dark"]) .chip-color-4[b-t5kmnput7p] {
    --chip-4-text: #e8c070;
    --chip-4-accent: #d8a830;
}

:global([data-theme="dark"]) .chip-color-5[b-t5kmnput7p] {
    --chip-5-text: #e890b0;
    --chip-5-accent: #d86898;
}

:global([data-theme="dark"]) .chip-color-6[b-t5kmnput7p] {
    --chip-6-text: #e8a090;
    --chip-6-accent: #d88060;
}

:global([data-theme="dark"]) .chip-color-7[b-t5kmnput7p] {
    --chip-7-text: #80b8e8;
    --chip-7-accent: #60a0d8;
}

:global([data-theme="dark"]) .chip-color-8[b-t5kmnput7p] {
    --chip-8-text: #a8d470;
    --chip-8-accent: #90c050;
}

/* -- Status chip (toggle) -- */
.chip-status[b-t5kmnput7p] {
    background: var(--lb-elevated);
    color: var(--lb-text);
    border: 1px solid var(--lb-border);
}
.chip-status:hover[b-t5kmnput7p] {
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}
.chip-status.docs-chip-active[b-t5kmnput7p] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
    font-weight: 600;
}

/* -- Recently uploaded chip -- */
.chip-recent[b-t5kmnput7p] {
    background: var(--lb-elevated);
    color: var(--lb-text);
    border: 1px solid var(--lb-border);
}
.chip-recent:hover[b-t5kmnput7p] {
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}
.chip-recent.docs-chip-active[b-t5kmnput7p] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
    font-weight: 600;
}

/* ===== Delete Confirmation List ===== */
.docs-delete-list[b-t5kmnput7p] {
    margin: 8px 0 0;
    padding-left: 20px;
    font-size: 13px;
    color: var(--lb-text);
    max-height: 200px;
    overflow-y: auto;
}

.docs-delete-list li[b-t5kmnput7p] {
    margin-bottom: 2px;
    word-break: break-word;
}

.docs-delete-more[b-t5kmnput7p] {
    font-style: italic;
    color: var(--lb-text-muted);
    list-style: none;
    margin-top: 4px;
}

/* ===== Dark / Light Mode -- Toolbar Controls ===== */
/* SfDropDownButton renders as .e-dropdown-btn, not .e-btn, so the global
   app.css flat-button tokens don't reach it. Force the token palette here. */
.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat,
.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat .e-btn {
    background-color: var(--lb-btn-flat-bg);
    border: 1px solid var(--lb-btn-flat-border);
    color: var(--lb-btn-flat-text);
    border-radius: var(--lb-radius-pill, 1.25rem);
}

.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat:hover,
.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat:focus,
.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat .e-btn:hover {
    background-color: var(--lb-btn-flat-hover-bg);
    border-color: var(--lb-btn-flat-hover-border);
    color: var(--lb-btn-flat-hover-text);
}

/* Toolbar flat buttons -- ensure disabled state is visible in both modes */
.docs-toolbar[b-t5kmnput7p]  .e-btn.e-flat:disabled,
.docs-toolbar[b-t5kmnput7p]  .e-btn.e-flat.e-disabled,
.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat:disabled,
.docs-toolbar[b-t5kmnput7p]  .e-dropdown-btn.e-flat.e-disabled {
    background-color: var(--lb-btn-flat-disabled-bg);
    border-color: var(--lb-btn-flat-disabled-border);
    color: var(--lb-btn-flat-disabled-text);
    opacity: 1;
}

/* Bulk-bar buttons also need the same treatment */
.docs-bulk-bar[b-t5kmnput7p]  .e-btn.e-flat {
    background-color: var(--lb-btn-flat-bg);
    border: 1px solid var(--lb-btn-flat-border);
    color: var(--lb-btn-flat-text);
}

.docs-bulk-bar[b-t5kmnput7p]  .e-btn.e-flat:hover,
.docs-bulk-bar[b-t5kmnput7p]  .e-btn.e-flat:focus {
    background-color: var(--lb-btn-flat-hover-bg);
    border-color: var(--lb-btn-flat-hover-border);
    color: var(--lb-btn-flat-hover-text);
}

/* ===== Dark / Light Mode -- Search Textbox ===== */
[b-t5kmnput7p] .docs-search-input.e-input-group {
    background-color: var(--lb-elevated);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-pill, 1.25rem);
    color: var(--lb-text);
}

[b-t5kmnput7p] .docs-search-input.e-input-group input.e-input,
[b-t5kmnput7p] .docs-search-input.e-input-group .e-input {
    color: var(--lb-text);
    background: transparent;
}

[b-t5kmnput7p] .docs-search-input.e-input-group input.e-input::placeholder {
    color: var(--lb-text-dim);
}

[b-t5kmnput7p] .docs-search-input.e-input-group:hover,
[b-t5kmnput7p] .docs-search-input.e-input-group.e-input-focus {
    border-color: var(--lb-brand);
}

/* ===== Dark / Light Mode -- Grid & Pager ===== */
.docs-list-panel[b-t5kmnput7p]  .e-grid {
    background: var(--lb-bg-white);
    color: var(--lb-text);
    border-color: var(--lb-border);
}

.docs-list-panel[b-t5kmnput7p]  .e-grid .e-headercell {
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
    border-color: var(--lb-border);
}

.docs-list-panel[b-t5kmnput7p]  .e-grid .e-rowcell {
    color: var(--lb-text);
    border-color: var(--lb-border-light);
}

.docs-list-panel[b-t5kmnput7p]  .e-grid .e-altrow .e-rowcell {
    background: var(--lb-surface-alt);
}

.docs-list-panel[b-t5kmnput7p]  .e-grid .e-row:hover .e-rowcell {
    background: var(--lb-accent-tint);
}

/* Pager: page numbers, text, dropdown */
.docs-list-panel[b-t5kmnput7p]  .e-gridpager {
    background: var(--lb-bg-white);
    border-color: var(--lb-border);
    color: var(--lb-text-muted);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-numericitem,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-link {
    color: var(--lb-text);
    background: transparent;
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-numericitem:hover,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-link:hover {
    background: var(--lb-elevated);
    color: var(--lb-text-bright);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-currentitem {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-pagercontainer input {
    background: var(--lb-elevated);
    color: var(--lb-text);
    border: 1px solid var(--lb-border);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-pagerdropdown,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-input-group {
    background: var(--lb-elevated);
    border-color: var(--lb-border);
    color: var(--lb-text);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-pagerdropdown .e-input,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-input-group .e-input {
    color: var(--lb-text);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-parentmsgbar {
    color: var(--lb-text-muted);
}

/* Pager navigation arrows */
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-icon-first,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-icon-prev,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-icon-next,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-icon-last {
    color: var(--lb-text-muted);
}

.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-prevpagedisabled .e-icon-prev,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-nextpagedisabled .e-icon-next,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-firstpagedisabled .e-icon-first,
.docs-list-panel[b-t5kmnput7p]  .e-gridpager .e-lastpagedisabled .e-icon-last {
    color: var(--lb-text-dim);
}

/* Grid filter icon */
.docs-list-panel[b-t5kmnput7p]  .e-grid .e-icon-filter {
    color: var(--lb-text-muted);
}

/* Grid checkbox */
.docs-list-panel[b-t5kmnput7p]  .e-grid .e-checkbox-wrapper .e-frame {
    border-color: var(--lb-border);
    background: var(--lb-bg-white);
}

.docs-list-panel[b-t5kmnput7p]  .e-grid .e-checkbox-wrapper .e-frame.e-check {
    background-color: var(--lb-brand);
    border-color: var(--lb-brand);
}

.docs-list-panel[b-t5kmnput7p]  .e-grid .e-checkbox-wrapper .e-frame.e-check::before {
    color: #fff;   /* visible white check on the amber box, both themes */
}

/* ===== Dark / Light Mode -- Drop Zone ===== */
.docs-inline-drop[b-t5kmnput7p] {
    background: var(--lb-surface-alt);
}

/* ===== Dark / Light Mode -- Detail Drawer ===== */
.docs-preview-thumbnail[b-t5kmnput7p] {
    background: var(--lb-surface-alt);
    border-color: var(--lb-border);
}

.docs-detail-drawer[b-t5kmnput7p]  .e-input-group {
    background: var(--lb-elevated);
    border-color: var(--lb-border);
    color: var(--lb-text);
}

.docs-detail-drawer[b-t5kmnput7p]  .e-input-group .e-input {
    color: var(--lb-text);
}

.docs-detail-drawer[b-t5kmnput7p]  .e-ddl.e-input-group {
    background: var(--lb-elevated);
    border-color: var(--lb-border);
}

.docs-detail-drawer[b-t5kmnput7p]  .e-ddl.e-input-group .e-input {
    color: var(--lb-text);
}

/* -- Paste confirmation dialog -- */

.paste-confirm-text[b-t5kmnput7p] {
    margin-bottom: 0.75rem;
}

.paste-doc-list[b-t5kmnput7p] {
    list-style: none;
    padding: 0;
    margin: 0;
}

.paste-doc-item[b-t5kmnput7p] {
    padding: 0.25rem 0;
    font-size: 0.8125rem;
    border-bottom: 1px solid var(--lb-border);
}

.paste-doc-ext[b-t5kmnput7p] {
    color: var(--lb-text-muted);
    font-size: 0.75rem;
}

.paste-doc-overflow[b-t5kmnput7p] {
    padding: 0.25rem 0;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* #2685 — Copy to another case dialog + visible Paste toolbar button */
.copy-case-text[b-t5kmnput7p] {
    margin-bottom: 0.75rem;
    font-size: 0.875rem;
}

.copy-case-label[b-t5kmnput7p] {
    display: block;
    margin-bottom: 0.375rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

.docs-paste-btn[b-t5kmnput7p] {
    font-weight: 600;
}

/* #3417 — long-press row menu on touch.
   app.js opens the row context menu after a 500 ms stationary press, which is the
   only way the menu's actions exist at all on iOS/iPadOS (Safari raises no
   `contextmenu` event). Left alone, that same press first pops Safari's native
   text-selection callout over the row. Suppress the callout on grid rows ONLY
   where the pointer is coarse, so desktop text selection in the grid is untouched.
   Header and toolbar are excluded — nothing long-presses there. */
@media (pointer: coarse) {
    .docs-list-panel[b-t5kmnput7p]  tr.e-row,
    .docs-list-panel[b-t5kmnput7p]  tr.e-row td {
        -webkit-touch-callout: none;
    }
}
/* /Components/Pages/CaseForms/CaseEmailPage.razor.rz.scp.css */
/* -- CaseEmailPage - scoped styles -- */

.case-email-toolbar[b-l4eq86k3qu] {
    border-bottom: 1px solid var(--lb-border);
    margin-bottom: 12px;
}

.file-input-wrapper[b-l4eq86k3qu] {
    margin-bottom: 8px;
}

/* The splitter fills this fixed-height box; each pane scrolls internally. */
.case-email-layout[b-l4eq86k3qu] {
    height: calc(100vh - 280px);
    min-height: 350px;
    outline: none;
}

/* Fills its splitter pane; the grid area flexes to fill it. The splitter's
   drag-bar is the divider now, so there is no border-right here. */
.case-email-grid-panel[b-l4eq86k3qu] {
    height: 100%;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

/* Grid fills the space above the count bar; the infinite-scroll grid owns its scrollbar.
   display:flex is load-bearing for the CARD list, not for the grid. InboxMessageCardList
   sizes itself with `flex: 1 1 auto; min-height: 0; overflow-y: auto` -- it expects to be
   a FLEX ITEM, and flex properties on the child of a plain block do nothing at all. As a
   block child the list took its content height (measured on-device: 3279px for 49 cards),
   an auto-height box has nothing to overflow, so `overflow-y: auto` never engaged and this
   wrapper -- overflow:hidden -- simply clipped it at the pane edge with no way to reach
   the rest. That is the landscape half of the case-tab scroll fault: portrait (<=768px)
   flows into the page scroll and was fixed separately in #3327, but any pane WIDER than
   768px falls here, which is where a tablet in landscape lands.
   Verified control/treatment with the real declarations: block wrapper -> list 3126px,
   scrolls:false, wrapper clips; flex wrapper -> list bounded to 322px, scrollHeight 3126,
   scrolls to the bottom, no clipping, and card height unchanged at 64px (a flex item's
   default min-height:auto floors it at its content, so the three text rows cannot squash).
   The grid path is unaffected -- a child with height:100% measures identically either way
   (322/290/2000, same scroll). */
.email-grid-wrapper[b-l4eq86k3qu] {
    flex: 1 1 auto;
    overflow: hidden;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* Count footer -- fixed row at the bottom of the grid panel. Shows the true total
   (the full bound list); the grid above virtualizes, so this confirms all rows loaded. */
.email-count-bar[b-l4eq86k3qu] {
    flex-shrink: 0;
    padding: 6px 10px;
    border-top: 1px solid var(--lb-border);
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    text-align: right;
}

/* The ONE scroller for the reading pane, in both axes. It also owns the
   overscroll containment that used to sit on .preview-body -- containment
   belongs on the box that actually scrolls; on a box that cannot, it only
   swallows the gesture (see .preview-body). */
.case-email-preview-panel[b-l4eq86k3qu] {
    height: 100%;
    overflow: auto;
    overscroll-behavior: contain;
    padding: 0 16px;
}

/* -- Grid - no border on top, clean look -- */

[b-l4eq86k3qu] .case-email-grid-panel .e-grid {
    border: none;
}

[b-l4eq86k3qu] .case-email-grid-panel .e-gridheader {
    border-top: none;
}

/* -- Adaptive grid: no horizontal scroll -- */

[b-l4eq86k3qu] .case-email-grid-panel {
    overflow-x: hidden;
}

/* -- Splitter drag-bar styling (mirrors the global Email Inbox) -- */

[b-l4eq86k3qu] .e-splitter .e-split-bar.e-split-bar-horizontal {
    background-color: var(--lb-border);
    cursor: col-resize;
}

[b-l4eq86k3qu] .e-splitter .e-split-bar.e-split-bar-horizontal:hover,
[b-l4eq86k3qu] .e-splitter .e-split-bar.e-split-bar-horizontal.e-split-bar-hover {
    background-color: var(--lb-brand);
}

[b-l4eq86k3qu] .e-splitter .e-split-bar.e-split-bar-vertical {
    background-color: var(--lb-border);
    cursor: row-resize;
}

[b-l4eq86k3qu] .e-splitter .e-split-bar.e-split-bar-vertical:hover,
[b-l4eq86k3qu] .e-splitter .e-split-bar.e-split-bar-vertical.e-split-bar-hover {
    background-color: var(--lb-brand);
}

/* Keep the grid's vertical scrollbar clear of the divider's wider drag zone,
   and stop the pane itself scrolling so only the grid's own scrollbar shows. */
[b-l4eq86k3qu] .e-splitter .e-pane:first-child {
    padding-right: 8px;
    box-sizing: border-box;
    overflow: hidden;
}

[b-l4eq86k3qu] .e-splitter .e-pane {
    cursor: default;
}

/* -- Preview panel -- */

.preview-header[b-l4eq86k3qu] {
    padding-top: 8px;
}

.preview-subject[b-l4eq86k3qu] {
    font-weight: 700;
    margin-bottom: 4px;
}

.preview-meta[b-l4eq86k3qu] {
    font-size: 0.88rem;
    color: var(--lb-text-muted);
    line-height: 1.6;
}

/* -- NOT a scroll container. The reading pane's scroller is
      .case-email-preview-panel above; this just lays the message out.

      It used to declare `overflow-x: auto`, and per CSS spec an `overflow`
      that is non-visible on ONE axis forces the other axis from `visible` to
      `auto` -- so this box silently became a scroll container in BOTH
      directions (measured: computed overflow-y `auto`, with no rule setting
      it). Vertically it never overflows, because its height is its content.
      A scroll container that cannot scroll is exactly what breaks a mouse
      wheel: a real wheel gesture LATCHES onto the nearest scroll container
      under the pointer and stays on it for the whole gesture, and the
      `overscroll-behavior: contain` that used to live here then refused to
      chain the scroll up to the panel that could move. Result: the scrollbar
      dragged fine, the wheel did nothing (user-reported 2026-08-04).

      Worth knowing for the next one of these: a CDP/synthetic wheel does NOT
      latch the same way, so an automated wheel scrolled the panel happily and
      the bug was invisible to it. This was confirmed by injecting the fix into
      a live page and having a human turn a real wheel. -- */
.preview-body[b-l4eq86k3qu] {
    padding: 8px 0;
    overflow: visible;
    word-break: break-word;
    line-height: 1.6;
    touch-action: pan-x pan-y;
}

.preview-loading[b-l4eq86k3qu] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
    font-size: 0.88rem;
    color: var(--lb-text-muted);
}

.preview-empty[b-l4eq86k3qu] {
    text-align: center;
    color: var(--lb-text-muted);
    padding-top: 60px;
}

/* -- Replied notice -- */

.email-replied-notice[b-l4eq86k3qu] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background-color: var(--lb-info-bg);
    color: var(--lb-info);
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.85rem;
    margin-top: 8px;
}

/* -- Quick actions bar (matches EmailInbox preview pane) -- */

.preview-quick-actions[b-l4eq86k3qu] {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 6px 0;
    border-bottom: 1px solid var(--lb-border);
    margin-bottom: 8px;
    flex-wrap: wrap;
}

/* Center the now icon-less Reply / Reply All / Forward labels (#1300). SfButton
   renders display:inline-block, so the theme's justify-content:center is inert
   and the labels read off-center once the dead glyphs (#709) are dropped. These
   panes are inline (not teleported), so scoped ::deep reaches the child .e-btn --
   no app.css needed, unlike the viewer dialog (#992/#1007). */
.preview-quick-actions[b-l4eq86k3qu]  .e-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

/* -- Constrain embedded images to preview width -- */

[b-l4eq86k3qu] .preview-body img {
    max-width: 100%;
    height: auto;
}

/* -- Inline (embedded) images are click-to-view: print or save to the case -- */

[b-l4eq86k3qu] .preview-body img[src^="data:image"] {
    cursor: zoom-in;
}

[b-l4eq86k3qu] .preview-body img[src^="data:image"]:hover {
    outline: 2px solid var(--lb-brand, #2563eb);
    outline-offset: 2px;
}

/* -- Attachments -- */

.attachments-section h6[b-l4eq86k3qu] {
    font-weight: 600;
    margin-bottom: 8px;
}

/* -- Attachment load error banner (Graph 401/403/404/429/5xx) -- */

.attachment-error-banner[b-l4eq86k3qu] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    margin-bottom: 8px;
    border-radius: 4px;
    background: var(--lb-warning-bg);
    color: var(--lb-text);
    border-left: 3px solid var(--lb-warning);
    font-size: 0.875rem;
}

.attachment-banner-close[b-l4eq86k3qu] {
    margin-left: auto;
    background: transparent;
    border: none;
    color: var(--lb-text-muted);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
}

.attachment-banner-close:hover[b-l4eq86k3qu] {
    color: var(--lb-text);
}

/* -- Responsive: phone tier --
 * The splitter switches to a vertical (stacked) orientation on phone, and the
 * fixed desktop height is dropped so the stacked preview is not clipped -- the
 * case form scrolls to reach it (mirrors the global Email Inbox, #1532).
 */
@media (max-width: 767.98px) {
    .case-email-layout[b-l4eq86k3qu] {
        height: auto;
        min-height: 0;
    }

    .case-email-preview-panel[b-l4eq86k3qu] {
        height: auto;
        overflow: visible;
        padding: 12px 0;
    }
}

/* -- Duplicate-copies badge + hidden-count footer note --
   The tab collapses identical copies into one row; this badge shows the copy count
   and opens the copies panel. The grid is inline (not teleported), so scoped ::deep
   reaches the cell button -- same as the quick-actions note above (the copies DIALOG,
   being teleported, is styled inline in the markup instead). */
[b-l4eq86k3qu] .dup-copies-badge {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    padding: 1px 7px 1px 5px;
    border: 1px solid var(--lb-border);
    border-radius: 10px;
    background: var(--lb-info-bg, #eef2ff);
    color: var(--lb-brand, #2563eb);
    font-size: 0.72rem;
    font-weight: 600;
    line-height: 1.4;
    cursor: pointer;
}

[b-l4eq86k3qu] .dup-copies-badge:hover,
[b-l4eq86k3qu] .dup-copies-badge:focus-visible {
    border-color: var(--lb-brand, #2563eb);
    background: var(--lb-brand, #2563eb);
    color: #fff;
}

[b-l4eq86k3qu] .dup-copies-caret {
    flex-shrink: 0;
}

.email-count-dupes[b-l4eq86k3qu] {
    white-space: nowrap;
}

/* ============================================================
   Email-interface parity with the global Inbox (2026-08-01)
   ============================================================ */

/* -- TOUCH: give panning back to the panes.
   Syncfusion's theme sets `touch-action: none` on the splitter ROOT
   (.e-splitter.e-splitter-horizontal / .e-splitter-vertical) so it can own
   drag-to-resize. touch-action is INTERSECTED from the touched element up
   through its ancestors, so that one declaration disables touch panning for
   everything inside the splitter — here, the email grid's own scroll viewport —
   while page chrome outside it still pans. Identical fix to the global Inbox
   (#3262): the case Email tab was dead to touch on a phone for the same reason.
   Must be overridden on the ROOT; a descendant cannot widen an ancestor's
   restriction. The split BAR keeps touch-action:none so drag-to-resize still
   belongs to Syncfusion. Not media-scoped: tablets and touchscreen laptops have
   the same dead touch. -- */
[b-l4eq86k3qu] .e-splitter,
[b-l4eq86k3qu] .e-splitter .e-pane {
    touch-action: auto !important;
}

[b-l4eq86k3qu] .e-split-bar {
    touch-action: none !important;
}

/* -- No blue cell-focus box on a read-only list (Inbox parity). The
   bootstrap5 themes draw it as an inset box-shadow on the focused cell;
   !important because the theme's selector outranks a scoped rule. Selection
   feedback is the row wash below; :focus-visible rings on real controls
   (the copies badge, links) are untouched. -- */
[b-l4eq86k3qu] .e-grid .e-rowcell:focus,
[b-l4eq86k3qu] .e-grid .e-rowcell:focus-visible,
[b-l4eq86k3qu] .e-grid .e-rowcell.e-focused {
    box-shadow: none !important;
    outline: none !important;
}

/* -- Selected row: amber wash + brand bar, matching the Inbox. Syncfusion
   marks selection on the CELLS, not the row element. -- */
[b-l4eq86k3qu] .e-grid .e-rowcell.e-selectionbackground,
[b-l4eq86k3qu] .e-grid .e-rowcell.e-active {
    background-color: var(--lb-active-bg);
}

/* -- Ask: the list is read-only but its text must stay copyable. -- */
[b-l4eq86k3qu] .e-grid .e-rowcell {
    user-select: text;
}

/* ============================================================
   Auto-morph list + reading-pane modes (Inbox parity, 2026-08-01)
   ============================================================ */

/* The element the lbInboxLayout ResizeObserver watches. Fills its splitter pane
   (or the whole tab in Off mode); the grid brings its own scrollbar, the card
   list brings its own -- the host itself never scrolls. */
.case-email-list-host[b-l4eq86k3qu] {
    height: 100%;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

/* Reading-pane segmented control. Plain buttons: three tiny toggles do not
   warrant a Syncfusion component (and its overflow re-layout risks, #2316). */
.case-email-readingpane-bar[b-l4eq86k3qu] {
    display: flex;
    justify-content: flex-end;
    padding: 0 0 6px;
}

.reading-pane-seg[b-l4eq86k3qu] {
    display: inline-flex;
    align-items: center;
}

.reading-pane-label[b-l4eq86k3qu] {
    color: var(--lb-text-muted);
    font-size: 0.78rem;
    margin-right: 6px;
    white-space: nowrap;
}

.reading-pane-seg button[b-l4eq86k3qu] {
    font: inherit;
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-right-width: 0;
    padding: 3px 10px;
    cursor: pointer;
}

.reading-pane-seg button:first-of-type[b-l4eq86k3qu] { border-radius: 6px 0 0 6px; }

.reading-pane-seg button:last-of-type[b-l4eq86k3qu] {
    border-radius: 0 6px 6px 0;
    border-right-width: 1px;
}

.reading-pane-seg button:hover[b-l4eq86k3qu] { background: var(--lb-surface-alt); }

.reading-pane-seg button.on[b-l4eq86k3qu] {
    background: var(--lb-active-bg);
    color: var(--lb-brand-hover);
    font-weight: 600;
}

.reading-pane-seg button:focus-visible[b-l4eq86k3qu] {
    box-shadow: var(--lb-focus-ring);
    outline: none;
    position: relative;
    z-index: 1;
}

/* ---- Phone: the PAGE scrolls, so the card list must FLOW into it ----
   MUST stay last in this file -- a media query adds no specificity, so these
   only beat the desktop rules above by source order (the Inbox lost exactly
   this cascade once, #3258).

   Only applies while cards are rendered: below 768px the pane is narrow, so the
   morph has already swapped the SfGrid out. That matters because the grid needs
   a FIXED-height scroll viewport for infinite scroll -- letting the page scroll
   around a grid is what broke block loading in #2033 / #2152. The card list
   windows its own rows and uses an IntersectionObserver sentinel against the
   viewport, so page scrolling suits it. */
@media (max-width: 768px) {
    [b-l4eq86k3qu] .e-splitter,
    [b-l4eq86k3qu] .e-splitter .e-pane,
    [b-l4eq86k3qu] .e-splitter .e-pane:first-child {
        height: auto !important;
        overflow: visible !important;
    }

    /* Every box between the pane and the cards must stop being a fixed-height
       clipper, AND stop being shrinkable. The case tab differs from the global
       Inbox in a way the first port missed: the Inbox is a top-level page, so the
       WINDOW scrolls, whereas this tab lives inside the case shell, where the
       scroller is `.edit-form .e-content > .e-item.e-active` (CaseDataForm) --
       a fixed-height box. Under that box, `.email-grid-wrapper`'s
       `flex: 1 1 auto` + `min-height: 0` + `overflow: hidden` is a
       shrink-and-clip pair: the wrapper collapses to whatever height is left and
       hides the rest of the list, so the panel has nothing left to scroll and
       the cards past the fold are simply unreachable (reported 2026-08-02, and
       the same shape as #3258 on the Inbox). `flex: 0 0 auto` is the half that
       matters -- height:auto alone still shrinks. */
    .case-email-list-host[b-l4eq86k3qu],
    .case-email-grid-panel[b-l4eq86k3qu],
    .email-grid-wrapper[b-l4eq86k3qu] {
        height: auto;
        overflow: visible;
        flex: 0 0 auto;
    }

    /* Same reason: as a flex item of the tab panel this must keep its content
       height rather than being squeezed to fit. */
    .case-email-layout[b-l4eq86k3qu] {
        flex: 0 0 auto;
    }
}
/* /Components/Pages/CaseForms/CaseFileManagementPage.razor.rz.scp.css */
/* === CaseFileManagementPage -- scoped styles === */

/* Hide empty FormButtons section that adds 24px dead space */
[b-ox9zgk1sfm] .e-data-form .e-button-left,
[b-ox9zgk1sfm] .e-data-form .e-button-right,
[b-ox9zgk1sfm] .e-data-form .e-button-center,
[b-ox9zgk1sfm] .e-data-form .e-button-stretch {
    display: none;
}

/* -- Collapsible section header -- */
.section-header[b-ox9zgk1sfm] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
    margin-top: 12px;
    cursor: pointer;
    user-select: none;
    border-bottom: 1px solid var(--lb-border-light);
}

    .section-header:hover[b-ox9zgk1sfm] {
        opacity: 0.85;
    }

.section-toggle[b-ox9zgk1sfm] {
    display: inline-block;
    width: 0;
    height: 0;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 6px solid var(--lb-text-muted);
    transition: transform 0.2s ease;
    flex-shrink: 0;
}

    .section-toggle.collapsed[b-ox9zgk1sfm] {
        transform: rotate(-90deg);
    }

.section-label[b-ox9zgk1sfm] {
    font-weight: 700;
    font-size: 0.95rem;
    color: var(--lb-text);
}

.section-subtitle[b-ox9zgk1sfm] {
    font-size: 0.75rem;
    font-style: italic;
    color: var(--lb-text-muted);
    margin-left: auto;
}

.section-body[b-ox9zgk1sfm] {
    padding: 8px 0 4px;
}

/* -- Case Facts display/edit toggle -- */
.case-facts-edit-btn[b-ox9zgk1sfm] {
    margin-left: auto;
    flex-shrink: 0;
}

.case-facts-display[b-ox9zgk1sfm] {
    font-size: 0.9rem;
    line-height: 1.6;
    color: var(--lb-text);
}

.case-facts-empty[b-ox9zgk1sfm] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    font-style: italic;
    padding: 4px 0;
}

.case-facts-done-row[b-ox9zgk1sfm] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    padding-top: 4px;
}

/* -- Section display-only read view -- */
.overview-display-grid[b-ox9zgk1sfm] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 8px 16px;
    padding: 4px 0;
}

.overview-display-field[b-ox9zgk1sfm] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.overview-display-label[b-ox9zgk1sfm] {
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
}

.overview-display-value[b-ox9zgk1sfm] {
    font-size: 0.88rem;
    color: var(--lb-text);
}

/* -- Playbook status indicator -- */
.playbook-indicator[b-ox9zgk1sfm] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    margin-top: 12px;
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    background: var(--lb-surface-alt);
    font-size: 0.8rem;
}

.playbook-check[b-ox9zgk1sfm] {
    color: var(--lb-success);
    font-size: 16px;
}

.playbook-applied[b-ox9zgk1sfm] {
    color: var(--lb-success);
    font-weight: 600;
}

.playbook-name[b-ox9zgk1sfm] {
    color: var(--lb-text-muted);
}

.playbook-prompt-icon[b-ox9zgk1sfm] {
    color: var(--lb-warning);
    font-size: 16px;
}

.playbook-prompt[b-ox9zgk1sfm] {
    color: var(--lb-warning);
    font-weight: 600;
}

.playbook-dot[b-ox9zgk1sfm] {
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background-color: var(--lb-text-dim);
    flex-shrink: 0;
}

/* -- Existing layout styles -- */

.form-group[b-ox9zgk1sfm] {
    margin-bottom: 20px;
}

.full-width[b-ox9zgk1sfm] {
    width: 100%;
}

.details-group[b-ox9zgk1sfm] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 20px;
}

.grid-container[b-ox9zgk1sfm] {
    width: 100%;
    margin-top: 20px;
    margin-bottom: 20px;
}

.horizontal-grids-container[b-ox9zgk1sfm] {
    display: none;
}

.grid-section[b-ox9zgk1sfm] {
    flex: 1 1 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.handling-grid-container[b-ox9zgk1sfm] {
    position: relative;
}

.handling-grid[b-ox9zgk1sfm] {
    position: relative;
}

/* -- Responsive -- */
@media (max-width: 768px) {
    .horizontal-grids-container[b-ox9zgk1sfm] {
        flex-direction: column;
    }
}

/* -- Inline grid styling (UDF + Handling grids inside sections) -- */
.section-body[b-ox9zgk1sfm]  .e-grid {
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    overflow: hidden;
    font-size: 0.82rem;
}

/* Compact, subtle header */
.section-body[b-ox9zgk1sfm]  .e-grid .e-headercell {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    padding: 6px 12px;
}

.section-body[b-ox9zgk1sfm]  .e-grid .e-headercelldiv {
    font-size: 0.7rem;
}

.section-body[b-ox9zgk1sfm]  .e-grid .e-gridheader {
    border-bottom: 1px solid var(--lb-border-light);
}

/* Compact rows */
.section-body[b-ox9zgk1sfm]  .e-grid .e-rowcell {
    padding: 5px 12px;
    font-size: 0.82rem;
    line-height: 1.4;
}

/* Subtle alt-row tinting */
.section-body[b-ox9zgk1sfm]  .e-grid .e-altrow {
    background-color: rgba(0, 0, 0, 0.015);
}

/* Lighter pager */
.section-body[b-ox9zgk1sfm]  .e-grid .e-gridpager {
    font-size: 0.75rem;
    padding: 4px 8px;
    border-top: 1px solid var(--lb-border-light);
}

/* -- Status change reason inline input -- */
.status-change-reason[b-ox9zgk1sfm] {
    margin-top: 8px;
    padding: 8px 10px;
    border: 1px dashed var(--lb-info);
    border-radius: 4px;
    background: rgba(58, 107, 154, 0.03);
}

.reason-label[b-ox9zgk1sfm] {
    display: block;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin-bottom: 4px;
}

.field-optional[b-ox9zgk1sfm] {
    font-weight: 400;
    font-style: italic;
    color: var(--lb-text-dim);
}

/* -- Handler avatar circle -- */
.handler-avatar[b-ox9zgk1sfm] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 0.6rem;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
    line-height: 1;
}

.handler-avatar.avatar-primary[b-ox9zgk1sfm] {
    background-color: var(--lb-brand);
}

.handler-avatar.avatar-purple[b-ox9zgk1sfm] {
    background-color: var(--lb-purple);
}

.handler-avatar.avatar-muted[b-ox9zgk1sfm] {
    background-color: var(--lb-text-muted);
}

/* -- Handler phone link -- */
.handler-phone-link[b-ox9zgk1sfm] {
    color: var(--lb-brand);
    text-decoration: none;
    font-size: 0.82rem;
}

    .handler-phone-link:hover[b-ox9zgk1sfm] {
        text-decoration: underline;
    }

/* -- Related Cases section -- */
.related-cases-list[b-ox9zgk1sfm] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 4px 0;
}

.related-case-row[b-ox9zgk1sfm] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 8px;
    border-radius: 4px;
    font-size: 0.84rem;
}

    .related-case-row:hover[b-ox9zgk1sfm] {
        background: rgba(0, 0, 0, 0.025);
    }

.link-type-badge[b-ox9zgk1sfm] {
    display: inline-block;
    font-size: 0.68rem;
    font-weight: 600;
    padding: 1px 8px;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
    flex-shrink: 0;
}

.badge-companion[b-ox9zgk1sfm] {
    background: rgba(107, 92, 160, 0.12);
    color: var(--lb-purple);
}

.badge-consolidated[b-ox9zgk1sfm] {
    background: rgba(58, 107, 154, 0.12);
    color: var(--lb-info);
}

.badge-subrogation[b-ox9zgk1sfm] {
    background: rgba(212, 137, 12, 0.12);
    color: var(--lb-brand);
}

.badge-related[b-ox9zgk1sfm] {
    background: rgba(108, 117, 125, 0.12);
    color: var(--lb-text-muted);
}

.related-case-link[b-ox9zgk1sfm] {
    color: var(--lb-brand);
    text-decoration: none;
    cursor: pointer;
    font-weight: 600;
}

    .related-case-link:hover[b-ox9zgk1sfm] {
        text-decoration: underline;
    }

.related-case-name[b-ox9zgk1sfm] {
    color: var(--lb-text);
    flex: 1;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.related-case-status[b-ox9zgk1sfm] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

.related-case-date[b-ox9zgk1sfm] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
}

.related-case-remove[b-ox9zgk1sfm] {
    color: var(--lb-text-dim);
    cursor: pointer;
    font-size: 14px;
    flex-shrink: 0;
    transition: color 0.15s;
}

    .related-case-remove:hover[b-ox9zgk1sfm] {
        color: var(--lb-danger);
    }

.related-empty[b-ox9zgk1sfm] {
    font-size: 0.8rem;
    color: var(--lb-text-dim);
    font-style: italic;
    padding: 4px 0;
}

/* A failed related-cases load must not read like the dimmed, italic "No related cases"
   empty state -- it has to look like a problem. Mirrors .sol-unavailable (#676/#2295). */
.related-unavailable[b-ox9zgk1sfm] {
    color: var(--lb-danger);
    font-style: normal;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

    .related-unavailable .e-icons[b-ox9zgk1sfm] {
        font-size: 12px;
    }

/* -- AI Summarize row below Case Facts editor -- */
.ai-summarize-row[b-ox9zgk1sfm] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 0 0;
}

.ai-summarize-hint[b-ox9zgk1sfm] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
    font-style: italic;
}

@media (max-width: 576px) {
    .related-case-row[b-ox9zgk1sfm] {
        flex-wrap: wrap;
        gap: 4px 8px;
    }

    .related-case-name[b-ox9zgk1sfm] {
        flex-basis: 100%;
        order: 1;
    }

    .related-case-status[b-ox9zgk1sfm],
    .related-case-date[b-ox9zgk1sfm] {
        font-size: 0.7rem;
    }

    .related-case-remove[b-ox9zgk1sfm] {
        order: 2;
        margin-left: auto;
    }

    .link-type-badge[b-ox9zgk1sfm] {
        font-size: 0.62rem;
    }
}

/* -- AI undo banner -- */
.ai-undo-banner[b-ox9zgk1sfm] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 10px;
    margin-top: 6px;
    border: 1px solid var(--lb-warning);
    border-radius: 4px;
    background: rgba(212, 137, 12, 0.06);
    font-size: 0.82rem;
    color: var(--lb-text);
}

/* === Case Health pulse card (sits alongside CasePulseCards in .section-body) === */

.section-body--pulse-row[b-ox9zgk1sfm] {
    display: flex;
    align-items: stretch;
    gap: 16px;
    flex-wrap: wrap;
}

    .section-body--pulse-row[b-ox9zgk1sfm]  .pulse-grid {
        flex: 1 1 auto;
        min-width: 0;
    }

.pulse-health-card[b-ox9zgk1sfm] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    background: var(--lb-card);
    cursor: pointer;
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
    min-width: 120px;
}

    .pulse-health-card:hover[b-ox9zgk1sfm],
    .pulse-health-card:focus-visible[b-ox9zgk1sfm] {
        border-color: var(--lb-brand);
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
        outline: none;
    }

.ph-score-row[b-ox9zgk1sfm] {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.ph-score[b-ox9zgk1sfm] {
    font-size: 1.5rem;
    font-weight: 700;
    line-height: 1.2;
}

.ph-score--good[b-ox9zgk1sfm] { color: var(--lb-health-good); }
.ph-score--warn[b-ox9zgk1sfm] { color: var(--lb-health-warn); }
.ph-score--crit[b-ox9zgk1sfm] { color: var(--lb-health-crit); }

.ph-trend[b-ox9zgk1sfm] {
    font-size: 1rem;
    font-weight: 600;
}

.ph-trend--up[b-ox9zgk1sfm]   { color: var(--lb-health-good); }
.ph-trend--down[b-ox9zgk1sfm] { color: var(--lb-health-crit); }
.ph-trend--flat[b-ox9zgk1sfm] { color: var(--lb-text-dim); }

.ph-label[b-ox9zgk1sfm] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* === Health detail panel wrapper (full-width below pulse row) === */

.health-detail-section[b-ox9zgk1sfm] {
    margin-top: 8px;
    border-top: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
    border-radius: 0 0 8px 8px;
    padding: 16px;
}
/* /Components/Pages/CaseForms/CaseHistoryPage.razor.rz.scp.css */
/* -- CaseHistoryPage scoped styles -- */
/* -- Timeline-based case history with type-colored cards -- */

/* -- Loading state -- */
.history-loading[b-4qdi0se4v0] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Header area: intro text + filter toolbar -- */
.history-header[b-4qdi0se4v0] {
    padding: 0 0 12px 0;
}

.history-intro[b-4qdi0se4v0] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin-bottom: 12px;
}

.history-intro-icon[b-4qdi0se4v0] {
    font-size: 1rem;
    color: var(--lb-brand);
}

.history-toolbar[b-4qdi0se4v0] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 12px;
    border-radius: 6px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
}

.history-filters[b-4qdi0se4v0] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}

.history-toggles[b-4qdi0se4v0] {
    display: flex;
    align-items: center;
    gap: 16px;
}

.history-count[b-4qdi0se4v0] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* Phone-tier filter collapse button. Mirrors MyCases.filters-toggle so the
   case grid (timeline here) lands above the fold on phone. */
.history-filters-toggle[b-4qdi0se4v0] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    color: var(--lb-text);
    font-size: 0.85rem;
    cursor: pointer;
}

.history-filters-toggle:hover[b-4qdi0se4v0] {
    background: var(--lb-bg-surface);
}

.history-filters-caret[b-4qdi0se4v0] {
    transition: transform 150ms ease;
}

.history-filters-toggle.expanded .history-filters-caret[b-4qdi0se4v0] {
    transform: rotate(180deg);
}

/* -- Error state -- */
.history-error[b-4qdi0se4v0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    gap: 8px;
}

.history-error-icon[b-4qdi0se4v0] {
    font-size: 2.5rem;
    color: var(--lb-danger);
    margin-bottom: 4px;
}

.history-error-title[b-4qdi0se4v0] {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--lb-text);
}

.history-error-text[b-4qdi0se4v0] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    max-width: 400px;
    margin-bottom: 8px;
}

/* -- Empty state -- */
.history-empty[b-4qdi0se4v0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
}

.history-empty-icon[b-4qdi0se4v0] {
    font-size: 2.5rem;
    color: var(--lb-text-dim);
    margin-bottom: 12px;
}

.history-empty-title[b-4qdi0se4v0] {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 6px;
}

.history-empty-text[b-4qdi0se4v0] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    max-width: 400px;
}

/* -- Timeline container -- */
.history-timeline-container[b-4qdi0se4v0] {
    padding: 8px 0;
    flex: 1 1 auto;
    min-height: 0;
    max-height: calc(100vh - 320px);
    overflow-y: auto;
}

/* ================================================================
   Custom vertical timeline -- icons + connector on left, cards right
   ================================================================ */
.history-timeline[b-4qdi0se4v0] {
    position: relative;
}

/* -- Each timeline row: gutter (left) + content (right) -- */
.tl-item[b-4qdi0se4v0] {
    display: flex;
    align-items: stretch;
    position: relative;
}

/* -- Left gutter: date label + dot -- */
.tl-gutter[b-4qdi0se4v0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 72px;
    flex-shrink: 0;
    position: relative;
}

/* -- Vertical connector line -- drawn as a pseudo-element on each gutter -- */
.tl-gutter[b-4qdi0se4v0]::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 2px;
    background: var(--lb-border);
    z-index: 0;
}

/* -- Hide connector line past the last item -- */
.tl-item:last-child .tl-gutter[b-4qdi0se4v0]::after {
    bottom: 50%;
}

/* -- Date label above the dot -- */
.tl-date[b-4qdi0se4v0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-bottom: 4px;
    z-index: 1;
    background: var(--lb-bg-surface);
}

.tl-date-day[b-4qdi0se4v0] {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--lb-text);
    line-height: 1.2;
    white-space: nowrap;
}

.tl-date-year[b-4qdi0se4v0] {
    font-size: 0.65rem;
    color: var(--lb-text-dim);
    line-height: 1.2;
}

/* -- Icon dot -- */
.tl-dot[b-4qdi0se4v0] {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--lb-text-muted);
    color: #fff;
    font-size: 13px;
    z-index: 1;
    flex-shrink: 0;
    border: 2px solid var(--lb-card);
    box-shadow: 0 0 0 2px var(--lb-border);
}

/* -- Per-type dot colors -- */
.tl-dot-email[b-4qdi0se4v0] {
    background: var(--lb-info);
}

.tl-dot-memo[b-4qdi0se4v0] {
    background: var(--lb-success);
}

.tl-dot-document[b-4qdi0se4v0] {
    background: var(--lb-purple);
}

.tl-dot-calendar[b-4qdi0se4v0] {
    background: var(--lb-brand);
}

.tl-dot-sms[b-4qdi0se4v0] {
    background: var(--lb-warning);
}

.tl-dot-activity[b-4qdi0se4v0] {
    background: var(--lb-text-muted);
}

/* -- Right content area -- */
.tl-content[b-4qdi0se4v0] {
    flex: 1;
    min-width: 0;
    padding: 0 0 16px 12px;
}

/* -- Timeline cards -- */
.history-card[b-4qdi0se4v0] {
    border-radius: 6px;
    padding: 12px 16px;
    border-left: 3px solid var(--lb-border);
    background: var(--lb-card);
    margin-bottom: 4px;
    transition: box-shadow 0.15s ease;
}

.history-card:hover[b-4qdi0se4v0] {
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
}

/* -- Type-specific left-border colors -- */
.history-card-email[b-4qdi0se4v0] {
    border-left-color: var(--lb-info);
}

.history-card-memo[b-4qdi0se4v0] {
    border-left-color: var(--lb-success);
}

.history-card-document[b-4qdi0se4v0] {
    border-left-color: var(--lb-purple);
}

.history-card-calendar[b-4qdi0se4v0] {
    border-left-color: var(--lb-brand);
}

.history-card-sms[b-4qdi0se4v0] {
    border-left-color: var(--lb-warning);
}

.history-card-activity[b-4qdi0se4v0] {
    border-left-color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
}

/* -- Card header: badge + date -- */
.history-card-header[b-4qdi0se4v0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
    gap: 8px;
}

/* -- Type badges -- */
.history-type-badge[b-4qdi0se4v0] {
    display: inline-block;
    padding: 1px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: #fff;
}

.history-badge-email[b-4qdi0se4v0] {
    background: var(--lb-info);
}

.history-badge-memo[b-4qdi0se4v0] {
    background: var(--lb-success);
}

.history-badge-document[b-4qdi0se4v0] {
    background: var(--lb-purple);
}

.history-badge-calendar[b-4qdi0se4v0] {
    background: var(--lb-brand);
}

.history-badge-sms[b-4qdi0se4v0] {
    background: var(--lb-warning);
}

.history-badge-activity[b-4qdi0se4v0] {
    background: var(--lb-text-muted);
}

/* -- Date display -- */
.history-date[b-4qdi0se4v0] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

.history-time[b-4qdi0se4v0] {
    margin-left: 4px;
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}

/* -- Card body -- */
.history-card-title[b-4qdi0se4v0] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 4px;
    line-height: 1.3;
}

.history-card-author[b-4qdi0se4v0] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin-bottom: 6px;
}

.history-author-icon[b-4qdi0se4v0] {
    font-size: 0.75rem;
}

/* -- Rich text content preview -- */
.history-card-content[b-4qdi0se4v0] {
    position: relative;
    max-height: 80px;
    overflow: hidden;
    font-size: 0.82rem;
    line-height: 1.4;
    color: var(--lb-text);
    background: transparent;
    cursor: pointer;
    border-top: 1px solid var(--lb-border);
    padding-top: 6px;
    margin-top: 4px;
}

.history-card-content[b-4qdi0se4v0]::after {
    content: "";
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    height: 28px;
    background: linear-gradient(transparent, var(--lb-card));
    pointer-events: none;
    transition: opacity 0.15s ease;
}

.history-card-content:hover[b-4qdi0se4v0],
.history-card-content:focus-within[b-4qdi0se4v0] {
    overflow-y: auto;
    max-height: 200px;
}

.history-card-content:hover[b-4qdi0se4v0]::after,
.history-card-content:focus-within[b-4qdi0se4v0]::after {
    opacity: 0;
}

/* Strip inline styles from rendered database HTML */
.history-card-content *:not(img)[b-4qdi0se4v0] {
    background-color: transparent !important;
    color: inherit !important;
}

.history-card-content p[b-4qdi0se4v0],
.history-card-content div[b-4qdi0se4v0] {
    margin: 0 0 2px 0;
}

/* -- Activity log before/after diff display -- */
.history-activity-diff[b-4qdi0se4v0] {
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--lb-border);
    font-size: 0.82rem;
}

.history-diff-row[b-4qdi0se4v0] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    margin-bottom: 3px;
    line-height: 1.4;
}

.history-diff-label[b-4qdi0se4v0] {
    font-weight: 600;
    font-size: 0.75rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
    flex-shrink: 0;
    min-width: 48px;
}

.history-diff-before-label[b-4qdi0se4v0] {
    color: var(--lb-danger);
}

.history-diff-after-label[b-4qdi0se4v0] {
    color: var(--lb-success);
}

.history-diff-value[b-4qdi0se4v0] {
    word-break: break-word;
}

.history-diff-before[b-4qdi0se4v0] {
    color: var(--lb-text-muted);
    text-decoration: line-through;
}

.history-diff-after[b-4qdi0se4v0] {
    color: var(--lb-text);
    font-weight: 500;
}

/* -- Grouped activity change list (one card per action) -- */
.history-activity-changes[b-4qdi0se4v0] {
    margin-top: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--lb-border);
    font-size: 0.8rem;
}

.history-change-row[b-4qdi0se4v0] {
    display: flex;
    gap: 8px;
    align-items: baseline;
    padding: 2px 0;
    line-height: 1.4;
}

.history-change-field[b-4qdi0se4v0] {
    flex: 0 0 130px;
    color: var(--lb-text-muted);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.history-change-values[b-4qdi0se4v0] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    gap: 6px;
    align-items: baseline;
    flex-wrap: wrap;
}

.history-change-before[b-4qdi0se4v0] {
    color: var(--lb-text-muted);
    text-decoration: line-through;
    word-break: break-word;
}

.history-change-after[b-4qdi0se4v0] {
    color: var(--lb-text);
    word-break: break-word;
}

.history-change-arrow[b-4qdi0se4v0] {
    color: var(--lb-text-dim);
    font-size: 0.65rem;
}

.history-changes-toggle[b-4qdi0se4v0] {
    margin-top: 4px;
    background: transparent;
    border: none;
    padding: 2px 0;
    color: var(--lb-brand);
    font-size: 0.78rem;
    cursor: pointer;
}

.history-changes-toggle:hover[b-4qdi0se4v0] {
    text-decoration: underline;
}

/* -- Load more button -- */
.history-load-more[b-4qdi0se4v0] {
    display: flex;
    justify-content: center;
    padding: 16px 0;
}

/* -- Responsive adjustments -- */
@media (max-width: 768px) {
    .history-toolbar[b-4qdi0se4v0] {
        flex-direction: column;
        align-items: stretch;
    }

    .history-filters[b-4qdi0se4v0] {
        flex-direction: column;
    }

    .history-toggles[b-4qdi0se4v0] {
        justify-content: space-between;
    }

    .history-card-header[b-4qdi0se4v0] {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

    .tl-gutter[b-4qdi0se4v0] {
        width: 32px;
    }

    .tl-date[b-4qdi0se4v0] {
        display: none;
    }

    .tl-dot[b-4qdi0se4v0] {
        width: 24px;
        height: 24px;
        font-size: 11px;
    }
}

@media (max-width: 576px) {
    .history-card[b-4qdi0se4v0] {
        padding: 10px 12px;
    }

    .history-card-title[b-4qdi0se4v0] {
        font-size: 0.85rem;
    }

    .history-empty[b-4qdi0se4v0] {
        padding: 32px 16px;
    }
}
/* /Components/Pages/CaseForms/CaseInvestigationPage.razor.rz.scp.css */
/* CaseInvestigationPage scoped styles */

/* -- Main layout: 45 / 55 split -- */
.investigation-layout[b-ab1a7u9j70] {
    display: flex;
    margin-top: 12px;
    gap: 0;
    min-height: 0;
    height: calc(100vh - 260px);
}

/* -- Zone 1: Incident Detail left panel -- */
.zone-one[b-ab1a7u9j70] {
    flex: 0 0 auto;
    width: 45%;
    min-width: 320px;
    height: 100%;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    overflow: hidden;
}

.zone-one-toolbar[b-ab1a7u9j70] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 12px;
    background: var(--lb-surface-alt);
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

.zone-one-title[b-ab1a7u9j70] {
    font-weight: 600;
    font-size: 1rem;
    color: var(--lb-text);
}

.zone-one-actions[b-ab1a7u9j70] {
    display: flex;
    gap: 6px;
    align-items: center;
}

.zone-one-error[b-ab1a7u9j70] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding: 6px 12px;
    background: var(--lb-danger-bg, #fdecea);
    color: var(--lb-danger, #d32f2f);
    font-size: 0.85rem;
    border-top: 1px solid var(--lb-danger, #d32f2f);
}

.zone-one-error-dismiss[b-ab1a7u9j70] {
    background: none;
    border: none;
    color: var(--lb-danger, #d32f2f);
    font-size: 1.1rem;
    cursor: pointer;
    padding: 0 4px;
    line-height: 1;
}

/* #2492: load-failure banner that replaces the incident form (never a blank form as truth). */
.zone-one-load-error[b-ab1a7u9j70] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 16px;
    margin: 8px 0;
    background: var(--lb-danger-bg, #fdecea);
    color: var(--lb-danger, #d32f2f);
    border: 1px solid var(--lb-danger, #d32f2f);
    border-radius: 4px;
}

.zone-one-load-error-body[b-ab1a7u9j70] {
    flex: 1;
}

.zone-one-load-error-body strong[b-ab1a7u9j70] {
    display: block;
    margin-bottom: 4px;
}

.zone-one-load-error-body p[b-ab1a7u9j70] {
    margin: 0;
    font-size: 0.85rem;
}

.zone-one-scroll[b-ab1a7u9j70] {
    flex: 1;
    overflow-y: auto;
    padding: 8px 12px 12px;
}

/* Extension label between accordion sections */
.extension-label[b-ab1a7u9j70] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-accent);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin: 16px 0 6px;
    padding-bottom: 4px;
    border-bottom: 2px solid var(--lb-accent);
}

/* -- Zone 1: Style Syncfusion accordion to match section-header pattern -- */

/* Strip Syncfusion item borders and background */
.zone-one[b-ab1a7u9j70]  .e-accordion,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-select,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-active,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-item-focus {
    border: none;
    background: transparent;
}

/* Header: flat bottom-border style matching .section-header */
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-select > .e-acrdn-header,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-active > .e-acrdn-header,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-item-focus > .e-acrdn-header {
    background: transparent;
    border: none;
    border-bottom: 1px solid var(--lb-border-light, var(--lb-border));
    padding: 8px 0;
}

/* Hover: subtle opacity shift like .section-header:hover */
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:hover,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:focus,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-select > .e-acrdn-header:hover,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-active > .e-acrdn-header:hover,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-item-focus > .e-acrdn-header:hover {
    background: transparent;
    opacity: 0.85;
}

/* Chevron: yellow accent on hover/focus/active */
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:hover .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:focus .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-select > .e-acrdn-header:hover .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-active > .e-acrdn-header:hover .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-item-focus > .e-acrdn-header:hover .e-toggle-icon {
    color: var(--lb-brand) !important;
}

/* Text and toggle icon: always --lb-text, never blue */
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header .e-acrdn-header-content,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-select > .e-acrdn-header .e-acrdn-header-content,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-select > .e-acrdn-header .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-active > .e-acrdn-header .e-acrdn-header-content,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-active > .e-acrdn-header .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-item-focus > .e-acrdn-header .e-acrdn-header-content,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item.e-item-focus > .e-acrdn-header .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:focus .e-acrdn-header-content,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:focus .e-toggle-icon,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:active .e-acrdn-header-content,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:active .e-toggle-icon {
    color: var(--lb-text) !important;
}

/* Header content text: match .section-label font weight */
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-header-content {
    font-weight: 700;
    font-size: 0.95rem;
}

/* Kill any focus outline/box-shadow Syncfusion adds */
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:focus-visible,
.zone-one[b-ab1a7u9j70]  .e-accordion .e-acrdn-item > .e-acrdn-header:focus {
    outline: none;
    box-shadow: none;
}


/* -- Zone 2: Make SfTab and grid content fill available height -- */
.investigation-layout[b-ab1a7u9j70]  .e-tab {
    flex: 1 1 0%;
    min-width: 0;
    display: flex;
    flex-direction: column;
    height: 100%;
}

.investigation-layout[b-ab1a7u9j70]  .e-tab .e-content {
    flex: 1;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}

.investigation-layout[b-ab1a7u9j70]  .e-tab .e-content > .e-item.e-active {
    flex: 1 1 auto;
    min-height: 0;
}

/* -- Draggable divider between the two zones (drag handled in investigation-resizer.js) -- */
.investigation-divider[b-ab1a7u9j70] {
    flex: 0 0 6px;
    align-self: stretch;
    margin: 0 3px;
    border-radius: 3px;
    background: var(--lb-border);
    cursor: col-resize;
    transition: background-color 0.12s ease;
}

.investigation-divider:hover[b-ab1a7u9j70],
.investigation-divider.dragging[b-ab1a7u9j70] {
    background: var(--lb-brand);
}

.investigation-divider:focus-visible[b-ab1a7u9j70] {
    background: var(--lb-brand);
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

/* Responsive: stack the two zones vertically on narrow screens */
@media (max-width: 992px) {
    .investigation-layout[b-ab1a7u9j70] {
        flex-direction: column;
        height: auto;
    }
    .zone-one[b-ab1a7u9j70] {
        width: 100% !important;
        min-width: unset;
        max-height: 50vh;
    }
    .investigation-divider[b-ab1a7u9j70] {
        flex: 0 0 12px;
        align-self: auto;
        width: 100%;
        margin: 4px 0;
        cursor: default;
    }
}

/* ?? Investigation dialog form grid ??????????????????????????????????? */
.dialog-form-grid[b-ab1a7u9j70] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px 20px;
    padding: 16px 8px;
}

.dialog-form-field--full[b-ab1a7u9j70] {
    grid-column: 1 / -1;
}

.dialog-form-grid .custom-label[b-ab1a7u9j70] {
    display: block;
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-label, var(--lb-text-muted));
    margin-bottom: 4px;
}

/* Grid empty state */
.grid-empty-message[b-ab1a7u9j70] {
    text-align: center;
    color: var(--lb-muted, #999);
    padding: 32px 16px;
    font-size: 0.9rem;
}

/* Fieldset used to disable all inputs in read-only mode */
.dialog-fieldset[b-ab1a7u9j70] {
    border: none;
    margin: 0;
    padding: 0;
}

/* Dialog save error */
.dialog-save-error[b-ab1a7u9j70] {
    padding: 6px 12px;
    margin-bottom: 8px;
    background: var(--lb-danger-bg, #fdecea);
    color: var(--lb-danger, #d32f2f);
    font-size: 0.85rem;
    border-radius: 4px;
    border: 1px solid var(--lb-danger, #d32f2f);
}

/* ?? Dialog footer ???????????????????????????????????????????????????? */
.dialog-footer-actions[b-ab1a7u9j70] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    padding: 8px 0;
}
/* /Components/Pages/CaseForms/CaseKanbanTab.razor.rz.scp.css */
/* ============================================================
   CaseKanbanTab.razor.css -- Scoped styles for case Kanban tab
   ============================================================ */

.casekanban-container[b-2k56mo733o] {
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    min-height: 0;
    margin-top: -8px;
}

/* Grid host and wrapper fill available space inside the container.
   page-drawer-host and page-drawer-grid are in THIS component's
   template so they already carry the scope attribute -- no ::deep.
   .e-grid is rendered by SfGrid (child component) so it needs ::deep
   anchored from a scoped parent. */
.page-drawer-host[b-2k56mo733o] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.page-drawer-grid[b-2k56mo733o] {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

.page-drawer-grid[b-2k56mo733o]  .e-grid {
    flex: 1 1 auto;
    min-height: 0;
}

/* Kanban board: bound the board height and scroll its columns internally.
   SfKanban has no Height set, so the board fills the fixed-height host but
   its content region has no vertical scroll -- a column with many cards is
   clipped at the bottom with no way to reach the last cards. Force the
   board into a flex column so the content region is height-bounded by CSS
   alone (no dependence on Syncfusion's JS height calc) and scrolls
   vertically, mirroring the .e-grid rule above. */
.page-drawer-grid[b-2k56mo733o]  .e-kanban {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
}

.page-drawer-grid[b-2k56mo733o]  .e-kanban .e-kanban-content {
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
}

.casekanban-loading[b-2k56mo733o],
.casekanban-empty[b-2k56mo733o] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px 16px;
    color: var(--lb-text-muted);
    font-size: 0.95rem;
}

/* --- Stage assignment prompt --- */
.casekanban-prompt[b-2k56mo733o] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    margin-bottom: 12px;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: 6px;
    font-size: 0.9rem;
    color: var(--lb-text);
    flex-wrap: wrap;
}

.casekanban-stage-select[b-2k56mo733o] {
    padding: 4px 8px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    font-size: 0.85rem;
    background: var(--lb-card);
    color: var(--lb-text);
    min-width: 160px;
}

/* --- Card styles --- */
.casekanban-card[b-2k56mo733o] {
    padding: 8px;
    font-size: 0.8rem;
    cursor: pointer;
}

.casekanban-card:focus-visible[b-2k56mo733o] {
    outline: none;
    box-shadow: 0 0 0 2px var(--lb-brand);
}

.casekanban-card-header[b-2k56mo733o] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 6px;
    margin-bottom: 4px;
}

/* Clamp to three lines with an ellipsis rather than letting a long description grow
 * the card without limit. In a narrow board column `word-break: break-word` alone
 * produced a 47px-wide, 288px-tall column of single words; the full text stays
 * available in the card's title attribute and in the drawer a click opens. Matches
 * the firm-wide board's card, which clamps at two. */
.casekanban-card-title[b-2k56mo733o] {
    font-weight: 500;
    color: var(--lb-text);
    word-break: break-word;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.casekanban-priority[b-2k56mo733o] {
    font-size: 0.65rem;
    padding: 1px 5px;
    border-radius: 3px;
    background: var(--lb-brand);
    color: #fff;
    white-space: nowrap;
}

.casekanban-card-due[b-2k56mo733o] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin-bottom: 4px;
}

.casekanban-card-due.overdue[b-2k56mo733o] {
    color: var(--lb-danger);
    font-weight: 600;
}

.casekanban-card-footer[b-2k56mo733o] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
    font-size: 0.7rem;
    color: var(--lb-text-muted);
}

.casekanban-status-dot[b-2k56mo733o] {
    display: inline-block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.casekanban-status-label[b-2k56mo733o] {
    white-space: nowrap;
}

.casekanban-checklist[b-2k56mo733o] {
    padding: 1px 4px;
    border: 1px solid var(--lb-border);
    border-radius: 3px;
    font-size: 0.65rem;
}

.casekanban-assignee[b-2k56mo733o] {
    margin-left: auto;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 100px;
}

/* ================================================================
   Toolbar + view toggle
   ================================================================ */
.casekanban-toolbar[b-2k56mo733o] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 4px 0;
    flex-wrap: wrap;
}

.casekanban-view-toggle[b-2k56mo733o] {
    display: inline-flex;
    gap: 2px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 2px;
    background: var(--lb-bg-white);
}

[b-2k56mo733o] .casekanban-view-btn {
    min-width: 32px;
    padding: 4px 8px;
    border-radius: 4px;
    transition: all 0.15s ease;
}

[b-2k56mo733o] .casekanban-view-btn.casekanban-view-active {
    background: var(--lb-brand);
    color: var(--lb-bg-white);
}

[b-2k56mo733o] .casekanban-view-btn.casekanban-view-active:hover {
    background: var(--lb-brand);
    color: var(--lb-bg-white);
}

[b-2k56mo733o] .casekanban-add-btn {
    margin-left: auto;
}

/* -- Timeline lens column headers --
 * The stage board uses Syncfusion's default header text; the Timeline lens
 * carries a count and mutes the columns that are not legal drop targets
 * (Overdue always, plus any week/month bucket whose live range has collapsed
 * empty), so the board explains its own refusals before a drag starts.
 */
[b-2k56mo733o] .casekanban-col-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

[b-2k56mo733o] .casekanban-col-label {
    font-weight: 600;
    font-size: 0.85rem;
}

[b-2k56mo733o] .casekanban-col-count {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border-radius: 10px;
    padding: 0 6px;
    min-width: 20px;
    text-align: center;
}

[b-2k56mo733o] .casekanban-col-overdue .casekanban-col-label {
    color: var(--lb-danger);
}

[b-2k56mo733o] .casekanban-col-muted {
    opacity: 0.6;
}

/* Floor the Timeline lens's column width so the board scrolls horizontally rather
 * than squeezing nine columns into the case shell: measured at ~143px per column a
 * card title wrapped to one word (sometimes one character) per line.
 *
 * Two things this had to work around:
 *   - KanbanColumn has no MinWidth property. Passing one compiles and then throws
 *     at first render, which the ErrorBoundary turns into a blank tab.
 *   - min-width on the cells themselves does nothing: Syncfusion lays the board out
 *     as a table whose widths come from its <colgroup>, so the floor has to go on
 *     the TABLE. --case-timeline-cols is stamped on the wrapper from
 *     TimelineBuckets.Length, so the figure stays derived if a bucket is ever added.
 */
[b-2k56mo733o] .casekanban-timeline-board .e-kanban-table {
    min-width: calc(var(--case-timeline-cols, 9) * 190px);
}

[b-2k56mo733o] .casekanban-timeline-board .e-kanban-content {
    overflow-x: auto;
}

/* ================================================================
   My tasks filter pill
   ================================================================ */
.casekanban-filter-pill[b-2k56mo733o] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 14px;
    border-radius: 16px;
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    color: var(--lb-text-muted);
    font-size: 0.78rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    white-space: nowrap;
}

.casekanban-filter-pill:hover[b-2k56mo733o] {
    background: var(--lb-hover);
    color: var(--lb-text);
}

.casekanban-filter-pill.active[b-2k56mo733o] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

/* ================================================================
   List view overdue date highlight
   ================================================================ */
.casekanban-list-overdue[b-2k56mo733o] {
    color: var(--lb-danger);
    font-weight: 600;
}

/* ================================================================
   Task drawer -- wider so the form rarely needs scrolling.
   The host min-height is raised so the absolute-positioned drawer
   has room to show the full task form without clipping.
   record-drawer--side is rendered by RecordDrawer child component,
   so it needs ::deep anchored from the scoped page-drawer-host.
   ================================================================ */
.page-drawer-host[b-2k56mo733o]  .record-drawer--side.record-drawer--open {
    width: 420px;
}
/* /Components/Pages/CaseForms/CaseLedgerPage.razor.rz.scp.css */
/* CaseLedgerPage -- component-scoped styles (single-pane layout) */

/* === Dialog Toolbar === */
[b-8zpo8sa247] .ledger-toolbar {
    flex-shrink: 0;
    margin-bottom: 10px;
    border-bottom: 1px solid var(--lb-border);
}

/* === Dialog Content Layout === */
.ledger-dialog-content[b-8zpo8sa247] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    overflow: auto;
    min-height: 0;
}

/* === Ledger Header Card === */
.ledger-header-card[b-8zpo8sa247] {
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 14px 16px;
    margin-bottom: 12px;
    flex-shrink: 0;
}

.ledger-header-fields[b-8zpo8sa247] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px 20px;
}

@media (max-width: 768px) {
    .ledger-header-fields[b-8zpo8sa247] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .ledger-header-fields[b-8zpo8sa247] {
        grid-template-columns: 1fr;
    }
}

.ledger-field[b-8zpo8sa247] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ledger-label[b-8zpo8sa247] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

/* Memo section -- always visible */
.ledger-memo-section[b-8zpo8sa247] {
    margin-top: 12px;
}

[b-8zpo8sa247] .ledger-memo-input textarea {
    min-height: 60px;
    resize: vertical;
}

/* Import Details section */
.ledger-import-section[b-8zpo8sa247] {
    margin-top: 14px;
    padding-top: 10px;
    border-top: 1px solid var(--lb-border);
}

.ledger-section-label[b-8zpo8sa247] {
    font-size: 0.82rem;
    font-weight: 700;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 8px;
    display: block;
}

.ledger-import-fields[b-8zpo8sa247] {
    display: grid;
    grid-template-columns: auto 1fr 1fr;
    gap: 12px 20px;
    align-items: end;
}

@media (max-width: 576px) {
    .ledger-import-fields[b-8zpo8sa247] {
        grid-template-columns: 1fr;
    }
}

/* Required field indicator */
.required-indicator[b-8zpo8sa247] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

/* === Grid Wrapper === */
.ledger-grid-wrapper[b-8zpo8sa247] {
    flex: 1 1 auto;
    min-height: 200px;
    overflow: hidden;
}

/* === Validation === */
.validation-summary[b-8zpo8sa247] {
    margin-top: 8px;
    flex-shrink: 0;
}

.validation-summary.valid[b-8zpo8sa247] {
    color: var(--lb-success);
}

.validation-summary.invalid[b-8zpo8sa247] {
    color: var(--lb-danger);
}

.validation-list[b-8zpo8sa247] {
    margin: 0;
    padding-left: 18px;
}

/* === Totals Bar === */
.totals-bar[b-8zpo8sa247] {
    margin-top: 8px;
    padding: 10px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    display: flex;
    gap: 24px;
    align-items: center;
    flex-wrap: wrap;
    flex-shrink: 0;
}

.totals-match[b-8zpo8sa247] {
    color: var(--lb-success);
}

.totals-mismatch[b-8zpo8sa247] {
    color: var(--lb-danger);
}

/* === Dialog override -- ensure content fills height === */
[b-8zpo8sa247] .ledger-dialog .e-dlg-content {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    padding-bottom: 8px;
}

/* === Spinner wrapper === */
.ledger-spinner-wrapper[b-8zpo8sa247] {
    min-height: 200px;
}

/* Activity log dialog placeholder used for both loading spinner and empty-state messaging. */
.ledger-log-loading-state[b-8zpo8sa247] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
    color: var(--lb-text-muted, #6c757d);
    font-size: 0.95rem;
}

/* === Main grid container === */
.ledger-grid-body[b-8zpo8sa247] {
    overflow-x: hidden;
}

/* === Page heading === */
.ledger-page-header[b-8zpo8sa247] {
    margin-top: 16px;
    margin-bottom: 10px;
}

/* Title + action button on the same row -- the "New Ledger" button replaces
   the desktop-only right-click "Add" so touch users have an entry point. */
.ledger-page-header-row[b-8zpo8sa247] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    flex-wrap: wrap;
}

.ledger-page-header h5[b-8zpo8sa247] {
    margin: 0 0 2px 0;
    font-size: 1.05rem;
    font-weight: 600;
}

.ledger-page-subtitle[b-8zpo8sa247] {
    font-size: 0.84rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* === Load / refresh failure banner (#3894) ===
   Sits above the summary strip. Deliberately loud: the strip and the grid keep
   rendering the last successful load, so this is the only cue that the balances
   on screen may not be the case's current money position. */
.ledger-load-error[b-8zpo8sa247] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    border: 1px solid var(--lb-danger);
    border-radius: var(--lb-radius-card);
    padding: 0.6rem 0.85rem;
    margin-bottom: 12px;
}

.ledger-load-error-text[b-8zpo8sa247] {
    flex: 1 1 260px;
    font-size: 0.9rem;
}

/* === Empty state === */
.ledger-empty-state[b-8zpo8sa247] {
    text-align: center;
    padding: 48px 16px;
    color: var(--lb-text-muted);
}

.ledger-empty-state p[b-8zpo8sa247] {
    margin: 4px 0;
}

.ledger-empty-icon[b-8zpo8sa247] {
    font-size: 2.4rem;
    margin-bottom: 8px;
    opacity: 0.5;
}

/* === Ledger Summary Strip === */
.ledger-summary-strip[b-8zpo8sa247] {
    margin-bottom: 16px;
}

.ledger-metric-grid[b-8zpo8sa247] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: 12px;
}

.ledger-metric-card[b-8zpo8sa247] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 14px;
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    background: var(--lb-card);
}

.ledger-metric-header[b-8zpo8sa247] {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

.ledger-metric-label[b-8zpo8sa247] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
}

.ledger-metric-value[b-8zpo8sa247] {
    font-size: 1.35rem;
    font-weight: 700;
    color: var(--lb-text);
    line-height: 1.2;
}

.ledger-metric-sub[b-8zpo8sa247] {
    font-size: 0.7rem;
    color: var(--lb-text-dim);
}

.metric-value--success[b-8zpo8sa247] {
    color: var(--lb-success);
}

.metric-value--danger[b-8zpo8sa247] {
    color: var(--lb-danger);
}

/* --- Collection progress bar --- */
.ledger-progress-row[b-8zpo8sa247] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
}

.ledger-progress-label[b-8zpo8sa247] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

.ledger-progress-track[b-8zpo8sa247] {
    flex: 1;
    height: 8px;
    border-radius: 4px;
    background: var(--lb-border-light);
    overflow: hidden;
}

.ledger-progress-fill[b-8zpo8sa247] {
    height: 100%;
    border-radius: 4px;
    background: var(--lb-success);
    transition: width 0.3s ease;
}

.ledger-progress-pct[b-8zpo8sa247] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-text);
    min-width: 32px;
    text-align: right;
}
/* /Components/Pages/CaseForms/CaseLitigationPage.razor.rz.scp.css */
/* === CaseLitigationPage - Redesigned Styles === */

/* -- Lawsuit empty-state guidance banner -- */
.litigation-empty-banner[b-plrudz9t87] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 8px 0 16px;
    padding: 12px 16px;
    border: 1px solid var(--lb-info-border, #b6d4fe);
    border-radius: 6px;
    background: var(--lb-info-bg, #eef6ff);
    color: var(--lb-info-text, #1c5d99);
    font-size: 0.9rem;
}

.litigation-empty-banner .e-icons[b-plrudz9t87] {
    font-size: 1.1rem;
    flex-shrink: 0;
}

/* -- Activity log dialog loading / empty state -- */
.log-loading-state[b-plrudz9t87] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
    color: var(--lb-text-muted, #6c757d);
    font-size: 0.95rem;
}

/* -- Loading state -- */
.litigation-loading[b-plrudz9t87] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    color: var(--lb-text-secondary);
    font-size: 1rem;
}

/* ========== CARD GRID LAYOUT ========== */
.litigation-card-grid[b-plrudz9t87] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 16px;
}

.litigation-section-card[b-plrudz9t87] {
    background: var(--lb-card);
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-lg);
    padding: 14px;
    overflow: hidden;
}

.litigation-section-card--full[b-plrudz9t87] {
    grid-column: 1 / -1;
}

.card-header[b-plrudz9t87] {
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-top: 0; /* card-header is now an <h3> (A11y-CLIT-001); cancel UA heading top margin */
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 0.5px solid var(--lb-border);
}

/* -- Inline guidance under a card header (e.g. statute slots, CLIT #1367) -- */
.card-help[b-plrudz9t87] {
    font-size: 11px;
    line-height: 1.45;
    color: var(--lb-text-muted);
    margin: -4px 0 12px;
}

.card-body[b-plrudz9t87] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 10px 14px;
}

/* -- Field cells: label + value pairs -- */
.field-cell[b-plrudz9t87] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-cell--full[b-plrudz9t87] {
    grid-column: 1 / -1;
}

.field-label[b-plrudz9t87] {
    font-size: 11px;
    font-weight: 500;
    color: var(--lb-text-tertiary);
}

/* Per-field guidance icon next to a statute / municipal-notice label (#1727). */
.field-label-help[b-plrudz9t87] {
    margin-left: 4px;
    font-size: 12px;
    color: var(--lb-text-tertiary);
    cursor: help;
    vertical-align: middle;
}

.field-value[b-plrudz9t87] {
    font-size: 13px;
    color: var(--lb-text-primary);
    line-height: 1.4;
}

.field-value--empty[b-plrudz9t87] {
    color: var(--lb-text-tertiary);
    font-style: italic;
}

.field-value--danger[b-plrudz9t87] {
    color: var(--lb-danger);
    font-weight: 500;
}

.field-value--warning[b-plrudz9t87] {
    color: var(--lb-warning);
    font-weight: 500;
}

.field-value--success[b-plrudz9t87] {
    color: var(--lb-success);
    font-weight: 500;
}

.field-value--multiline[b-plrudz9t87] {
    white-space: pre-wrap;
}

/* -- Field with gear button (code data manager) -- */
.field-with-gear[b-plrudz9t87] {
    display: flex;
    gap: 6px;
    align-items: flex-start;
}

.field-with-gear[b-plrudz9t87]  .e-dropdownlist {
    flex: 1;
}

.code-data-gear[b-plrudz9t87] {
    flex-shrink: 0;
    background: transparent;
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-md);
    width: 30px;
    height: 30px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--lb-text-secondary);
    transition: background-color 0.2s, border-color 0.2s;
}

.code-data-gear:hover[b-plrudz9t87] {
    background: var(--lb-hover);
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

/* -- Stage pill (read mode for Litigation Stage) -- */
.stage-pill[b-plrudz9t87] {
    display: inline-block;
    background: var(--lb-brand);
    color: white;
    padding: 4px 10px;
    border-radius: var(--border-radius-md);
    font-size: 12px;
    font-weight: 500;
}

/* ========== METRIC CARDS (Verdict Tab) ========== */
.litigation-metric-cards[b-plrudz9t87] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 10px;
    margin-bottom: 16px;
}

.metric-card[b-plrudz9t87] {
    background: var(--lb-card);
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-md);
    padding: 12px;
    text-align: center;
}

.metric-label[b-plrudz9t87] {
    font-size: 11px;
    color: var(--lb-text-secondary);
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

.metric-value[b-plrudz9t87] {
    font-size: 18px;
    font-weight: 600;
    color: var(--lb-text-primary);
}

.metric-value--empty[b-plrudz9t87] {
    color: var(--lb-text-tertiary);
    font-size: 14px;
    font-weight: 400;
}

/* ========== TOOLBAR ROW (Edit/Cancel buttons - top-right of tab content) ========== */
.litigation-toolbar-row[b-plrudz9t87] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 8px;
    margin-bottom: 10px;
}

/* Per-row Edit/Delete buttons in the Appeals grid (#1673, #1879) -- compact, centered icon buttons. */
.lb-grid-edit-btn[b-plrudz9t87],
.lb-grid-delete-btn[b-plrudz9t87] {
    min-width: 0;
    padding: 4px 6px;
    line-height: 1;
}

/* ========== TAB HEADER BADGES ========== */
.tab-badge[b-plrudz9t87] {
    display: inline-block;
    margin-left: 8px;
    padding: 2px 8px;
    border-radius: var(--border-radius-md);
    font-size: 11px;
    font-weight: 500;
}

.tab-badge--neutral[b-plrudz9t87] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-secondary);
    border: 0.5px solid var(--lb-border);
}

.completeness--done[b-plrudz9t87] {
    background: var(--lb-success);
    color: white;
}

.completeness--partial[b-plrudz9t87] {
    background: var(--lb-warning);
    color: white;
}

.completeness--empty[b-plrudz9t87] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-tertiary);
    border: 0.5px solid var(--lb-border);
}

/* ========== APPEALS EMPTY STATE ========== */
.appeals-empty-state[b-plrudz9t87] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 4rem 2rem;
    text-align: center;
    background: var(--lb-surface-alt);
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-lg);
    margin: 16px 0;
}

.empty-icon[b-plrudz9t87] {
    font-size: 48px;
    color: var(--lb-text-tertiary);
    margin-bottom: 16px;
}

.appeals-empty-state h4[b-plrudz9t87] {
    font-size: 16px;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin-bottom: 8px;
}

.appeals-empty-state p[b-plrudz9t87] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    margin-bottom: 20px;
}

/* ========== DIALOG CHROME STYLING ========== */
[b-plrudz9t87] .lb-styled-dialog.e-dialog {
    border-radius: var(--border-radius-lg);
    border: 0.5px solid var(--lb-border);
}

[b-plrudz9t87] .lb-styled-dialog .e-dlg-header-content {
    background: transparent;
    border-bottom: 0.5px solid var(--lb-border);
    padding: 12px 16px;
}

[b-plrudz9t87] .lb-styled-dialog .e-dlg-content {
    padding: 16px;
}

/* Dialog header with subtitle */
.dialog-header-with-subtitle[b-plrudz9t87] {
    display: flex;
    align-items: baseline;
    gap: 10px;
}

.dialog-subtitle[b-plrudz9t87] {
    font-size: 12px;
    font-weight: 400;
    color: var(--lb-text-secondary);
}

/* Dialog footer split layout */
.dialog-footer-split[b-plrudz9t87] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding: 12px 16px;
    border-top: 0.5px solid var(--lb-border);
}

.footer-left[b-plrudz9t87],
.footer-right[b-plrudz9t87] {
    display: flex;
    gap: 8px;
}

/* ========== DELETE CONFIRMATION DIALOG ========== */
.delete-confirm-message[b-plrudz9t87] {
    font-size: 14px;
    color: var(--lb-text-primary);
    line-height: 1.5;
    padding: 1rem 0;
}

.delete-confirm-actions[b-plrudz9t87] {
    display: flex;
    gap: 10px;
    justify-content: flex-end;
    padding-top: 1rem;
}

/* ========== RESPONSIVE ========== */
@media (max-width: 768px) {
    .litigation-card-grid[b-plrudz9t87] {
        grid-template-columns: 1fr;
    }

    .card-body[b-plrudz9t87] {
        grid-template-columns: 1fr;
    }

    .litigation-metric-cards[b-plrudz9t87] {
        grid-template-columns: repeat(2, 1fr);
    }

    .dialog-footer-split[b-plrudz9t87] {
        flex-direction: column;
        gap: 8px;
    }

    .footer-left[b-plrudz9t87],
    .footer-right[b-plrudz9t87] {
        width: 100%;
        justify-content: center;
    }
}

@media (max-width: 576px) {
    .litigation-metric-cards[b-plrudz9t87] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/CaseForms/CaseNotesPage.razor.rz.scp.css */
/* -- CaseNotesPage scoped styles -- */
/* All colors use --lb-* design tokens from app.css. */
/* No non-ASCII characters (Blazor CSS isolation safe). */

/* ---- Loading state ---- */

.notes-loading[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
}

/* ---- Main container (two-column flex) ---- */

.notes-container[b-gkp46ypsrz] {
    display: flex;
    height: 100%;
    min-height: 0;
    position: relative;
    outline: none;
}

/* ---- Feed column ---- */

.feed-column[b-gkp46ypsrz] {
    flex: 1 1 100%;
    display: flex;
    flex-direction: column;
    min-width: 0;
    transition: flex 300ms ease;
    overflow: hidden;
}

.pane-open .feed-column[b-gkp46ypsrz] {
    flex: 0 0 44%;
}

/* ---- Reading pane ---- */

.reading-pane[b-gkp46ypsrz] {
    flex: 0 0 0%;
    overflow: hidden;
    opacity: 0;
    border-left: 1px solid var(--lb-border-light);
    transition: flex 300ms ease, opacity 250ms ease;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.pane-open .reading-pane[b-gkp46ypsrz] {
    flex: 0 0 56%;
    opacity: 1;
    overflow-y: auto;
}

/* ---- Mobile: full-screen reading pane ---- */

.mobile-pane .feed-column[b-gkp46ypsrz] {
    display: none;
}

.mobile-pane .reading-pane[b-gkp46ypsrz] {
    flex: 1 1 100%;
    opacity: 1;
    overflow-y: auto;
    border-left: none;
}

/* ---- Quick-Add Bar ---- */

.quick-add-bar[b-gkp46ypsrz] {
    padding: 0.75rem;
    border-bottom: 1px solid var(--lb-border-light);
    background: var(--lb-card);
}

.quick-add-top[b-gkp46ypsrz] {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
}

.quick-add-textarea[b-gkp46ypsrz] {
    flex: 1;
    resize: vertical;
    min-height: 60px;
    max-height: 160px;
    padding: 0.5rem 0.75rem;
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card, 8px);
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--lb-text);
    background: var(--lb-bg-white);
    font-family: inherit;
}

.quick-add-textarea:focus[b-gkp46ypsrz] {
    outline: none;
    border-color: var(--lb-brand);
    box-shadow: 0 0 0 2px rgba(var(--lb-brand-rgb), 0.15);
}

.quick-add-actions[b-gkp46ypsrz] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 0.5rem;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.quick-add-left[b-gkp46ypsrz] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    flex-wrap: wrap;
}

.quick-add-right[b-gkp46ypsrz] {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.quick-add-financial[b-gkp46ypsrz] {
    display: flex;
    gap: 0.75rem;
    margin-top: 0.5rem;
    flex-wrap: wrap;
}

/* ---- Filter Row ---- */

.filter-row[b-gkp46ypsrz] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 0.75rem;
    gap: 0.5rem;
    border-bottom: 1px solid var(--lb-border-light);
    background: var(--lb-bg-surface);
    flex-wrap: wrap;
}

.filter-chips-wrapper[b-gkp46ypsrz] {
    position: relative;
    flex: 1;
    min-width: 0;
    overflow: hidden;
}

.filter-chips-wrapper[b-gkp46ypsrz]::after {
    content: "";
    position: absolute;
    right: 0;
    top: 0;
    bottom: 0;
    width: 2rem;
    background: linear-gradient(to right, transparent, var(--lb-bg-surface));
    pointer-events: none;
    opacity: 0;
    transition: opacity 150ms ease;
}

.filter-chips-wrapper.has-overflow[b-gkp46ypsrz]::after {
    opacity: 1;
}

.filter-chips[b-gkp46ypsrz] {
    display: flex;
    gap: 0.375rem;
    flex-wrap: nowrap;
    overflow-x: auto;
    min-width: 0;
    scrollbar-width: none;
    -ms-overflow-style: none;
    padding-right: 1rem;
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

.filter-chips[b-gkp46ypsrz]::-webkit-scrollbar {
    display: none;
}

.filter-chip[b-gkp46ypsrz] {
    padding: 0.25rem 0.75rem;
    border-radius: var(--lb-radius-pill, 1.25rem);
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
    cursor: pointer;
    transition: background 150ms ease, color 150ms ease, border-color 150ms ease;
    white-space: nowrap;
}

.filter-chip:hover[b-gkp46ypsrz] {
    background: var(--lb-elevated);
    color: var(--lb-text);
}

.filter-chip.active[b-gkp46ypsrz] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

.filter-search[b-gkp46ypsrz] {
    flex-shrink: 0;
    position: relative;
    display: flex;
    align-items: center;
    /* Desktop default: cap the search input at a comfortable typing width.
     * On phones the existing @@media (max-width: 768px) block at the bottom
     * of this file overrides to width: 100% so the input fills the row. */
    width: 220px;
    max-width: 100%;
}

[b-gkp46ypsrz] .filter-search .e-textbox,
[b-gkp46ypsrz] .filter-search .e-input-group {
    width: 100%;
}

.search-clear-btn[b-gkp46ypsrz] {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 22px;
    height: 22px;
    border: none;
    border-radius: 50%;
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.625rem;
    transition: background 150ms ease, color 150ms ease;
    z-index: 1;
}

.search-clear-btn:hover[b-gkp46ypsrz] {
    background: var(--lb-border);
    color: var(--lb-text);
}

/* ---- Feed scroll area ---- */

.feed-scroll[b-gkp46ypsrz] {
    flex: 1 1 0%;
    overflow-y: auto;
    padding: 0.5rem 0.75rem;
}

/* ---- Section headers ---- */

.section-header[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0.5rem 0;
}

.pinned-header[b-gkp46ypsrz] {
    color: var(--lb-danger);
}

/* ---- Date divider ---- */

.date-divider[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0 0.25rem;
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
    font-weight: 600;
}

.date-divider[b-gkp46ypsrz]::before,
.date-divider[b-gkp46ypsrz]::after {
    content: "";
    flex: 1;
    height: 1px;
    background: var(--lb-border-light);
}

/* ---- Chronological timeline ----
   Same vertical-timeline treatment as CaseHistoryPage (.tl-* there): a left gutter
   holding the date and a type-colored icon dot, a connector line running through it,
   and the note card on the right. Pinned notes render outside the timeline -- they are
   out of chronological order, so a dot on the line would misplace them. */

.tl-item[b-gkp46ypsrz] {
    display: flex;
    align-items: stretch;
    position: relative;
}

.tl-gutter[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 64px;
    flex-shrink: 0;
    position: relative;
}

/* Connector line, drawn behind the date label and dot on every row. */
.tl-gutter[b-gkp46ypsrz]::after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 50%;
    transform: translateX(-50%);
    width: 2px;
    background: var(--lb-border);
    z-index: 0;
}

/* Stop the line at the last dot instead of trailing off the end of the feed. */
.tl-item:last-child .tl-gutter[b-gkp46ypsrz]::after {
    bottom: 50%;
}

.tl-date[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-bottom: 4px;
    z-index: 1;
    /* Opaque so the connector line does not run through the date text. */
    background: var(--lb-bg-surface);
}

.tl-date-day[b-gkp46ypsrz] {
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--lb-text);
    line-height: 1.2;
    white-space: nowrap;
}

.tl-date-year[b-gkp46ypsrz] {
    font-size: 0.65rem;
    color: var(--lb-text-dim);
    line-height: 1.2;
}

.tl-dot[b-gkp46ypsrz] {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--lb-text-muted);
    color: #fff;
    font-size: 13px;
    z-index: 1;
    flex-shrink: 0;
    border: 2px solid var(--lb-card);
    box-shadow: 0 0 0 2px var(--lb-border);
}

/* Per-kind dot colors -- see GetNoteKind in the .razor. */
.tl-dot-call[b-gkp46ypsrz] {
    background: var(--lb-success);
}

.tl-dot-email[b-gkp46ypsrz] {
    background: var(--lb-info);
}

.tl-dot-medical[b-gkp46ypsrz] {
    background: var(--lb-purple);
}

.tl-dot-settlement[b-gkp46ypsrz] {
    background: var(--lb-brand);
}

.tl-dot-court[b-gkp46ypsrz] {
    background: var(--lb-warning);
}

.tl-dot-general[b-gkp46ypsrz] {
    background: var(--lb-text-muted);
}

.tl-content[b-gkp46ypsrz] {
    flex: 1;
    min-width: 0;
    padding: 0 0 0.5rem 0.75rem;
}

/* The row's own padding supplies the gap between cards. */
.tl-content .note-card[b-gkp46ypsrz] {
    margin-bottom: 0;
}

/* ---- Note card ---- */

.note-card[b-gkp46ypsrz] {
    position: relative;
    padding: 0.75rem;
    margin-bottom: 0.5rem;
    border-radius: var(--lb-radius-card, 8px);
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-left: 3px solid transparent;
    cursor: pointer;
    transition: border-color 150ms ease, box-shadow 150ms ease;
}

.note-card:hover[b-gkp46ypsrz] {
    box-shadow: var(--lb-shadow);
}

.note-card.active[b-gkp46ypsrz] {
    border-left-color: var(--lb-brand);
    box-shadow: var(--lb-shadow);
}

/* Context-menu target: right-click acts on the card under the pointer, which is
   not necessarily the card selected in the reading pane, so outline it for as
   long as the menu is open. Cleared by the menu's Closed handler. */
.note-card.ctx-target[b-gkp46ypsrz] {
    outline: 2px solid var(--lb-brand);
    outline-offset: -1px;
}

/* Deep-link highlight: pulses when navigated to from /notes search */
.note-card.note-target-highlight[b-gkp46ypsrz] {
    animation: noteHighlightPulse-b-gkp46ypsrz 2s ease-in-out;
}

@keyframes noteHighlightPulse-b-gkp46ypsrz {
    0%   { background: color-mix(in srgb, var(--lb-brand) 25%, transparent); }
    50%  { background: color-mix(in srgb, var(--lb-brand) 15%, transparent); }
    100% { background: var(--lb-card); }
}

.note-card.card-pinned[b-gkp46ypsrz] {
    border-left-color: var(--lb-danger);
}

.note-card.card-pinned.active[b-gkp46ypsrz] {
    border-left-color: var(--lb-brand);
}

.note-card.card-email[b-gkp46ypsrz] {
    border-left-color: var(--lb-info);
}

.note-card.card-email.active[b-gkp46ypsrz] {
    border-left-color: var(--lb-brand);
}

/* ---- Card internals ---- */

.card-header-row[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.375rem;
}

.card-meta[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.card-author[b-gkp46ypsrz] {
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-date[b-gkp46ypsrz] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.card-contacts[b-gkp46ypsrz] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
    margin-bottom: 0.375rem;
}

.contact-chip[b-gkp46ypsrz] {
    font-size: 0.75rem;
    padding: 0.125rem 0.5rem;
    border-radius: var(--lb-radius-pill, 1.25rem);
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
    white-space: nowrap;
}

.card-memo-text[b-gkp46ypsrz] {
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--lb-text);
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
}

/* Compressed in split mode */
.pane-open .card-memo-text[b-gkp46ypsrz] {
    -webkit-line-clamp: 2;
}

/* Strip inline styles from rendered HTML */
[b-gkp46ypsrz] .card-memo-text *:not(img) {
    background-color: transparent !important;
    color: inherit !important;
}

[b-gkp46ypsrz] .card-memo-text p,
[b-gkp46ypsrz] .card-memo-text div {
    margin: 0 0 2px 0;
}

/* Expanded: drop the line clamp so the full note shows inline. */
.card-memo-text.note-expanded[b-gkp46ypsrz] {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
}

/* "Expand" / "Collapse" toggle, shown only on clipped notes (see code-behind). */
.note-expand-toggle[b-gkp46ypsrz] {
    margin-top: 2px;
    padding: 0;
    border: none;
    background: none;
    color: var(--lb-brand);
    font-size: 0.75rem;
    font-weight: 600;
    cursor: pointer;
}

.note-expand-toggle:hover[b-gkp46ypsrz] {
    text-decoration: underline;
}

.card-financial[b-gkp46ypsrz] {
    display: flex;
    gap: 0.5rem;
    margin-top: 0.375rem;
    flex-wrap: wrap;
}

.financial-chip[b-gkp46ypsrz] {
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.125rem 0.5rem;
    border-radius: var(--lb-radius-pill, 1.25rem);
}

.demanded-chip[b-gkp46ypsrz] {
    background: rgba(var(--lb-brand-rgb), 0.12);
    color: var(--lb-brand);
}

.offered-chip[b-gkp46ypsrz] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.card-email-indicator[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-top: 0.375rem;
    font-size: 0.75rem;
    color: var(--lb-info);
}

/* ---- Card hover actions ---- */

.card-hover-actions[b-gkp46ypsrz] {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    display: flex;
    gap: 0.25rem;
    opacity: 0;
    transition: opacity 150ms ease;
}

.note-card:hover .card-hover-actions[b-gkp46ypsrz] {
    opacity: 1;
}

/* Touch fallback: phones and tablets can't trigger :hover, so the per-note
 * actions (edit, delete, etc.) would stay at opacity: 0 and be unreachable.
 * Always show on (hover: none) devices. */
@media (hover: none) {
    .card-hover-actions[b-gkp46ypsrz] {
        opacity: 1;
    }
}

.card-action-btn[b-gkp46ypsrz] {
    width: 28px;
    height: 28px;
    border: none;
    border-radius: 4px;
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8125rem;
    transition: background 150ms ease, color 150ms ease;
}

.card-action-btn:hover[b-gkp46ypsrz] {
    background: var(--lb-border);
    color: var(--lb-text);
}

.card-action-btn.action-delete:hover[b-gkp46ypsrz] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

/* ---- Delete-confirm dialog: note identifiers so staff can verify the target ---- */

.delete-confirm-lead[b-gkp46ypsrz] {
    margin: 0 0 0.5rem;
}

.delete-confirm-meta[b-gkp46ypsrz] {
    margin: 0 0 0.5rem;
}

.delete-confirm-snippet[b-gkp46ypsrz] {
    margin: 0 0 0.75rem;
    padding-left: 0.75rem;
    border-left: 3px solid var(--lb-border);
    color: var(--lb-text-muted);
}

.delete-confirm-warning[b-gkp46ypsrz] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.875rem;
}

/* ---- Avatar circles ---- */

.avatar-circle[b-gkp46ypsrz] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.8125rem;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
    text-transform: uppercase;
}

.avatar-sm[b-gkp46ypsrz] {
    width: 28px;
    height: 28px;
    font-size: 0.6875rem;
}

.avatar-current-user[b-gkp46ypsrz] {
    background: var(--lb-brand);
}

.avatar-attorney[b-gkp46ypsrz] {
    background: var(--lb-info);
}

.avatar-assistant[b-gkp46ypsrz] {
    background: var(--lb-purple);
}

.avatar-muted[b-gkp46ypsrz] {
    background: var(--lb-text-muted);
}

/* ---- Note type badges ---- */

.note-type-badge[b-gkp46ypsrz] {
    display: inline-block;
    padding: 0.1875rem 0.625rem;
    border-radius: var(--lb-radius-pill, 1.25rem);
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.3;
}

.badge-sm[b-gkp46ypsrz] {
    padding: 0.125rem 0.5rem;
    font-size: 0.6875rem;
}

.badge-phone[b-gkp46ypsrz] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.badge-demand[b-gkp46ypsrz] {
    background: rgba(var(--lb-brand-rgb), 0.12);
    color: var(--lb-brand);
}

.badge-medical[b-gkp46ypsrz] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.badge-email[b-gkp46ypsrz] {
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

.badge-internal[b-gkp46ypsrz] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.badge-general[b-gkp46ypsrz] {
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
}

/* ---- Reading Pane ---- */

.pane-header[b-gkp46ypsrz] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 0.75rem 1rem;
    border-bottom: 1px solid var(--lb-border-light);
    background: var(--lb-card);
    flex-wrap: wrap;
}

.pane-header-left[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex: 1;
    min-width: 0;
}

.pane-header-info[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.pane-author[b-gkp46ypsrz] {
    font-weight: 600;
    font-size: 0.9375rem;
    color: var(--lb-text);
}

.pane-date[b-gkp46ypsrz] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.pinned-badge[b-gkp46ypsrz] {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-danger);
    padding: 0.125rem 0.5rem;
    border-radius: var(--lb-radius-pill, 1.25rem);
    background: var(--lb-danger-bg);
    white-space: nowrap;
}

.pane-header-actions[b-gkp46ypsrz] {
    display: flex;
    gap: 0.375rem;
    align-items: center;
    flex-shrink: 0;
}

.pane-close-btn[b-gkp46ypsrz] {
    width: 32px;
    height: 32px;
    border: none;
    border-radius: 4px;
    background: transparent;
    color: var(--lb-text-muted);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1rem;
    transition: background 150ms ease;
}

.pane-close-btn:hover[b-gkp46ypsrz] {
    background: var(--lb-elevated);
    color: var(--lb-text);
}

.back-btn[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    border: none;
    background: transparent;
    color: var(--lb-brand);
    font-size: 0.875rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0.25rem 0;
}

/* ---- Pane body ---- */

.pane-body[b-gkp46ypsrz] {
    flex: 1;
    padding: 1rem;
    overflow-y: auto;
}

/* Contact references block */
.contact-refs[b-gkp46ypsrz] {
    margin: 0.75rem 0;
    padding: 0.625rem 0.75rem;
    border-radius: var(--lb-radius-card, 8px);
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border-light);
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
}

.contact-ref-item[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
}

.contact-ref-label[b-gkp46ypsrz] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.contact-ref-name[b-gkp46ypsrz] {
    font-size: 0.875rem;
    color: var(--lb-text);
    font-weight: 500;
}

/* Full memo text in reading pane */
.pane-memo-text[b-gkp46ypsrz] {
    font-size: 0.9375rem;
    line-height: 1.7;
    color: var(--lb-text);
    margin: 0.75rem 0;
}

[b-gkp46ypsrz] .pane-memo-text *:not(img) {
    background-color: transparent !important;
    color: inherit !important;
}

[b-gkp46ypsrz] .pane-memo-text p,
[b-gkp46ypsrz] .pane-memo-text div {
    margin: 0 0 4px 0;
}

.no-content[b-gkp46ypsrz] {
    color: var(--lb-text-dim);
    font-style: italic;
}

/* Financial cards in reading pane */
.financial-cards[b-gkp46ypsrz] {
    display: flex;
    gap: 0.75rem;
    margin: 1rem 0;
    flex-wrap: wrap;
}

.financial-card[b-gkp46ypsrz] {
    flex: 1 1 120px;
    padding: 0.75rem 1rem;
    border-radius: var(--lb-radius-card, 8px);
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.financial-card.demanded[b-gkp46ypsrz] {
    background: rgba(var(--lb-brand-rgb), 0.08);
    border: 1px solid rgba(var(--lb-brand-rgb), 0.2);
}

.financial-card.offered[b-gkp46ypsrz] {
    background: var(--lb-success-bg);
    border: 1px solid var(--lb-success);
}

.financial-label[b-gkp46ypsrz] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
}

.financial-value[b-gkp46ypsrz] {
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--lb-text);
}

/* Email link button */
.email-link-section[b-gkp46ypsrz] {
    margin-top: 0.75rem;
}

[b-gkp46ypsrz] .email-link-btn {
    background: var(--lb-info-bg);
    color: var(--lb-info);
    gap: 0.375rem;
}

/* ---- Pane footer (prev/next) ---- */

.pane-footer[b-gkp46ypsrz] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.5rem 1rem;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-card);
}

.pane-position[b-gkp46ypsrz] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

/* ---- Empty state ---- */

.empty-feed[b-gkp46ypsrz] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
    text-align: center;
    gap: 0.75rem;
}

/* ---- Phone-only quick-add collapse ---- */

/* Collapsed-state tap target shown on phones when _quickAddExpanded is false.
 * Replaces the full quick-add-bar (avatar + 3-row textarea + 4 controls)
 * which would otherwise take ~half the viewport before any notes are
 * visible. Tapping expands into the full form. */
.quick-add-collapsed[b-gkp46ypsrz] {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    padding: 12px 16px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text-muted);
    font-size: 0.95rem;
    text-align: left;
    cursor: pointer;
    transition: background 0.12s ease, border-color 0.12s ease;
    min-height: 44px;
}

.quick-add-collapsed:hover[b-gkp46ypsrz],
.quick-add-collapsed:focus-visible[b-gkp46ypsrz] {
    background: var(--lb-bg-surface);
    border-color: var(--lb-text-muted);
    outline: none;
}

.quick-add-collapsed .e-icons[b-gkp46ypsrz] {
    color: var(--lb-brand);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.quick-add-collapsed-label[b-gkp46ypsrz] {
    flex: 1;
}

/* Inline collapse button shown on phones inside the expanded quick-add-top.
 * Lets the user tap to re-collapse without saving (no-op cancel). */
.quick-add-collapse-btn[b-gkp46ypsrz] {
    width: 28px;
    height: 28px;
    border: none;
    border-radius: 4px;
    background: transparent;
    color: var(--lb-text-muted);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    transition: background 0.12s ease;
}

.quick-add-collapse-btn:hover[b-gkp46ypsrz],
.quick-add-collapse-btn:focus-visible[b-gkp46ypsrz] {
    background: var(--lb-bg-surface);
    outline: none;
}

/* ---- Responsive: small screens ---- */

@media (max-width: 768px) {
    .quick-add-actions[b-gkp46ypsrz] {
        flex-direction: column;
        align-items: stretch;
    }

    .quick-add-left[b-gkp46ypsrz],
    .quick-add-right[b-gkp46ypsrz] {
        justify-content: flex-start;
    }

    .filter-row[b-gkp46ypsrz] {
        flex-direction: column;
        align-items: flex-start;
    }

    .filter-search[b-gkp46ypsrz] {
        width: 100%;
    }

    .contact-refs[b-gkp46ypsrz] {
        grid-template-columns: 1fr;
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    .pane-footer[b-gkp46ypsrz] {
        flex-wrap: wrap;
    }

    /* A 64px gutter costs a sixth of a 390px phone. Narrow it and drop the year --
       the month divider above each run already carries it. */
    .tl-gutter[b-gkp46ypsrz] {
        width: 46px;
    }

    .tl-date-year[b-gkp46ypsrz] {
        display: none;
    }

    .tl-date-day[b-gkp46ypsrz] {
        font-size: 0.68rem;
    }

    .tl-content[b-gkp46ypsrz] {
        padding-left: 0.5rem;
    }
}
/* /Components/Pages/CaseForms/CasePortalPane.razor.rz.scp.css */
/* Case portal pane: three stacked cards (access, thread, uploads). */

.portal-pane-loading[b-414q0q93cv] {
    padding: 24px;
    color: var(--lb-text-muted, #6b7280);
}

.portal-pane[b-414q0q93cv] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 12px 4px 24px;
    max-width: 860px;
}

/* Wide tab: the message thread is a chat, so it lives in its own right-hand
   40% column instead of leaving half the tab dead -- the other three
   sections stack in the remaining 60%. Grid AREAS, not DOM order, so the
   narrow layout keeps its natural single-column reading order.

   The grid claims the tab's full width AND height: min-height uses the same
   case-tab offset token every case-tab grid sizes against, the review row is
   the 1fr so the left column's last card grows to the bottom edge, and the
   messages column spans all three rows -- both columns land on the same
   bottom line, nothing trails off early. */
@media (min-width: 992px) {
    .portal-pane[b-414q0q93cv] {
        display: grid;
        grid-template-columns: minmax(0, 3fr) minmax(0, 2fr);
        grid-template-rows: auto auto minmax(0, 1fr);
        grid-template-areas:
            "who      messages"
            "status   messages"
            "review   messages";
        max-width: none;
        /* The shared offset token budgets for a grid's filter/toolbar row --
           chrome this pane does not have -- so the raw token leaves ~90px of
           dead space under both columns. Stay tethered to the token (if the
           case header grows, every tab moves together) but give back the
           toolbar row's worth of height. */
        min-height: calc(100vh - var(--lb-case-tab-grid-offset, 300px) + 70px);
    }

    .pane-who[b-414q0q93cv]      { grid-area: who; }
    .pane-status[b-414q0q93cv]   { grid-area: status; }
    .pane-review[b-414q0q93cv]   { grid-area: review; }

    .pane-messages[b-414q0q93cv] {
        grid-area: messages;
        display: flex;
        flex-direction: column;
        min-height: 0;
    }

    /* Inside the full-height column the thread takes the available space
       (not the narrow layout's fixed 420px cap) and the composer anchors to
       the bottom like a texting app -- margin-top:auto keeps it there even
       when the thread is empty and only the empty-state card renders. */
    .pane-messages .portal-thread[b-414q0q93cv] {
        max-height: none;
        flex: 1 1 auto;
        min-height: 0;
    }

    .pane-messages .portal-composer[b-414q0q93cv] {
        margin-top: auto;
        padding-top: 10px;
    }
}

.portal-pane-section[b-414q0q93cv] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border, #e5e7eb);
    border-radius: 8px;
    padding: 14px 16px;
}

.portal-pane-section-head[b-414q0q93cv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 10px;
}

.portal-pane-section-head h4[b-414q0q93cv] {
    margin: 0;
    font-size: 15px;
}

.portal-pane-hint[b-414q0q93cv] {
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
    margin: 10px 0 0;
}

/* The case-close pause notice (v3 item C): informational, not an alarm --
   nothing is broken and nothing was deleted, so it reads as a quiet
   explanation, warning-tinted only enough to be found. */
.portal-pane-paused[b-414q0q93cv] {
    font-size: 13px;
    margin: 0 0 10px;
    padding: 8px 12px;
    border-radius: 8px;
    background: var(--lb-warning-bg, #FBF0E8);
    color: var(--lb-text, #1C2536);
    border: 1px solid var(--lb-warning, #C05F1A);
}

/* ── Access list ─────────────────────────────────────────────────── */

.portal-pane-grants[b-414q0q93cv] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.portal-pane-grants li[b-414q0q93cv] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px;
    font-size: 13px;
}

.portal-pane-grants .grant-name[b-414q0q93cv] { font-weight: 600; }

.portal-pane-grants .grant-email[b-414q0q93cv] { color: var(--lb-text-muted, #6b7280); }

.portal-pane-grants .grant-state.pending[b-414q0q93cv] { color: var(--lb-warning, #C05F1A); }

.portal-pane-grants .grant-state.active[b-414q0q93cv] { color: var(--lb-text-muted, #6b7280); }

/* ── Thread ──────────────────────────────────────────────────────── */

.portal-thread[b-414q0q93cv] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-height: 420px;
    overflow-y: auto;
    padding: 4px 2px;
}

.portal-msg[b-414q0q93cv] {
    max-width: 78%;
    border-radius: 10px;
    padding: 8px 12px;
    font-size: 14px;
}

.portal-msg.from-client[b-414q0q93cv] {
    align-self: flex-start;
    background: var(--lb-surface-alt, #f3f4f6);
    border: 1px solid var(--lb-border, #e5e7eb);
}

.portal-msg.from-firm[b-414q0q93cv] {
    align-self: flex-end;
    background: var(--lb-brand-light, #FDF6EC);
    border: 1px solid var(--lb-brand, #D4890C);
}

.portal-msg-meta[b-414q0q93cv] {
    display: flex;
    gap: 8px;
    align-items: baseline;
    margin-bottom: 3px;
}

.portal-msg-author[b-414q0q93cv] {
    font-size: 12px;
    font-weight: 600;
}

.portal-msg-time[b-414q0q93cv] {
    font-size: 11px;
    color: var(--lb-text-muted, #6b7280);
}

.portal-msg-body[b-414q0q93cv] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
}

.portal-msg-receipt[b-414q0q93cv] {
    font-size: 11px;
    color: var(--lb-text-muted, #6b7280);
    text-align: right;
    margin-top: 3px;
}

/* ── Composer ────────────────────────────────────────────────────── */

.portal-composer[b-414q0q93cv] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--lb-border, #e5e7eb);
}

.portal-composer-target[b-414q0q93cv] {
    max-width: 320px;
}

.portal-composer-send[b-414q0q93cv] {
    align-self: flex-end;
}

.field-label[b-414q0q93cv] {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 4px;
}

/* ── Uploads ─────────────────────────────────────────────────────── */

.portal-pane-uploads[b-414q0q93cv] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.portal-pane-uploads li[b-414q0q93cv] {
    border: 1px dashed var(--lb-border, #e5e7eb);
    border-radius: 8px;
    padding: 8px 12px;
}

.upload-main[b-414q0q93cv] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px;
}

.upload-name[b-414q0q93cv] {
    font-weight: 600;
    overflow-wrap: anywhere;
}

.upload-meta[b-414q0q93cv] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
}

.upload-note[b-414q0q93cv] {
    font-size: 13px;
    font-style: italic;
    color: var(--lb-text-muted, #6b7280);
    margin-top: 4px;
    overflow-wrap: anywhere;
}

.upload-held[b-414q0q93cv] {
    display: inline-block;
    margin-top: 6px;
    font-size: 11px;
    font-weight: 600;
    padding: 1px 8px;
    border-radius: 10px;
    background: var(--lb-warning-bg, #FBF0E8);
    color: var(--lb-warning, #C05F1A);
}

/* Status on the portal: the actions sit under the text area; the meta line
   states what is live so "send" vs "on the portal" never blurs. */
.portal-status-actions[b-414q0q93cv] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 8px;
}

.portal-status-meta[b-414q0q93cv] {
    margin: 8px 0 0;
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
}

/* An AI failure is guidance next to the field, not an alarm -- the text area
   still works (same treatment as PortalSettings' refused colour). */
.portal-status-problem[b-414q0q93cv] {
    margin: 6px 0 0;
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-danger, #b91c1c);
}

/* A collision is not a failure -- both staffers wrote something real. Warning
   colours, not danger, and the colleague's words get quoted so the staffer can
   compare them against their own, still sitting in the text area above. */
.portal-status-conflict[b-414q0q93cv] {
    margin: 8px 0 0;
    padding: 10px 12px;
    border-left: 4px solid var(--lb-warning, #C05F1A);
    border-radius: 0 6px 6px 0;
    background: var(--lb-warning-bg, #FBF0E8);
    font-size: 13px;
    color: var(--lb-text, #1f2937);
}

.portal-status-conflict p[b-414q0q93cv] { margin: 0; }

.portal-status-conflict blockquote[b-414q0q93cv] {
    margin: 8px 0 0;
    padding-left: 10px;
    border-left: 2px solid var(--lb-border, #d1d5db);
    color: var(--lb-text-muted, #6b7280);
    white-space: pre-wrap;
}

/* Empty states shared with the access dialog's conventions. */
.lb-empty-state[b-414q0q93cv] {
    padding: 10px 4px;
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
}

.lb-empty-state p[b-414q0q93cv] { margin: 0 0 4px; }
/* /Components/Pages/CaseForms/CaseSettlementPage.razor.rz.scp.css */
/* ----------------------------------------------------------------
   CaseSettlementPage.razor.css -- Scoped styles for the settlement page.
   Workup uses a centered SfDialog overlay. Sub-tabs use RecordDrawer.
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ---------------------------------------------------------------- */

/* -- Workup header (action buttons, right-aligned) --
   #1743: this div lives inside the SfTab ContentTemplate, whose only authored
   ancestors are Syncfusion components -- none carry the CSS-isolation scope
   attribute. A *leading* `::deep` compiles to `[scope] .workup-header`, which
   has no scoped ancestor to match, so the whole rule was inert -- the buttons
   fell back to default flow (left-aligned, no spacing above/below). Dropping the
   leading `::deep` targets the authored element directly (`.workup-header[scope]`),
   so the flex layout and margins finally apply. (The `::deep` child rules below
   still work: their scoped ancestor is this `.workup-header`.) */
.workup-header[b-tcidseskfz] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 1.25rem;
    margin-bottom: 0.75rem;
    padding: 0.5rem 0;
}

[b-tcidseskfz] .workup-header__actions {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

[b-tcidseskfz] .workup-header__actions .e-btn {
    padding: 6px 12px;
    font-size: 0.875rem;
}

/* -- Workup grid fill-space -- */

.workup-grid-container[b-tcidseskfz] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.workup-grid-container[b-tcidseskfz]  .e-grid {
    flex: 1 1 auto;
}

[b-tcidseskfz] .settlement-active-icon {
    color: var(--lb-success);
}

/* -- Workup grid status badges -- */

[b-tcidseskfz] .status-badge {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.4;
    padding: 0.25rem 0.5rem;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    /* #1099: keep the pill on one line and immune to any inherited text-decoration. */
    white-space: nowrap;
    text-decoration: none;
}

[b-tcidseskfz] .status-badge--draft {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    border: 1px solid var(--lb-border-light);
}

[b-tcidseskfz] .status-badge--presented {
    background: var(--lb-info-bg);
    color: var(--lb-info);
    border: 1px solid var(--lb-info);
}

[b-tcidseskfz] .status-badge--accepted {
    background: var(--lb-success-bg);
    color: var(--lb-success);
    border: 1px solid var(--lb-success);
}

[b-tcidseskfz] .status-badge--rejected {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    border: 1px solid var(--lb-danger);
}

/* -- Active workup row accent border -- */

[b-tcidseskfz] .workup-row--active td:first-child {
    border-left: 3px solid var(--lb-brand);
}

/* -- Empty state -- */

[b-tcidseskfz] .workup-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--lb-text-muted);
}

[b-tcidseskfz] .workup-empty p {
    max-width: 400px;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

/* -- PI workup dialog -- */

.pi-workup-dialog__loading[b-tcidseskfz] {
    min-height: 200px;
    display: flex;
    align-items: center;
    justify-content: center;
}

/* pi-workup-dialog footer styles moved to app.css (dialog portals to body) */

/* -- AI check result dialog -- */

.ai-check-result[b-tcidseskfz] {
    max-height: 400px;
    overflow-y: auto;
}

[b-tcidseskfz] .ai-check-result__text {
    white-space: pre-wrap;
    word-wrap: break-word;
    font-size: 0.85rem;
    line-height: 1.5;
    background: var(--lb-surface-alt);
    padding: 0.75rem;
    border-radius: 4px;
    border: 1px solid var(--lb-border-light);
    color: var(--lb-text);
}

/* -- Page drawer grid spacing (match Liens tab right margin) -- */

.page-drawer-host[b-tcidseskfz]{
    padding-right: 1rem;
}

/* -- Responsive: stack header on mobile -- */
@media (max-width: 576px) {
    .workup-header[b-tcidseskfz] {
        flex-direction: column;
        align-items: stretch;
    }

    [b-tcidseskfz] .workup-header__actions {
        justify-content: flex-end;
    }
}

/* -- #1041 Special Damages grid: keep headers readable. Per-column widths (in
      the razor) size each caption to one line where practical; this lets any
      longer caption wrap cleanly with the header row growing to fit, instead of
      a fixed-height cell clipping it into a squished stack. Scoped to this grid
      by ID so the other settlement grids are untouched. The header row is absent
      in the mobile (Phone tier) vertical RowDirection, so phone layout is
      unaffected. -- */
[b-tcidseskfz] #SpecialDamageGrid .e-columnheader .e-headercell .e-headercelldiv {
    white-space: normal;
    line-height: 1.2;
    height: auto;
    overflow: visible;
}

/* -- #1041 Insurance grid: same header-wrap fix as SpecialDamageGrid above. Its
      narrow columns (Primary 70px, Subrogation 80px, Deductible 90px) otherwise
      clip their captions into "Prima ry" / "Subrog ation" / "Deducti ble". Scoped
      by ID; the header row is absent in the mobile (Phone tier) vertical
      RowDirection, so phone layout is unaffected. -- */
[b-tcidseskfz] #InsuranceGrid .e-columnheader .e-headercell .e-headercelldiv {
    white-space: normal;
    line-height: 1.2;
    height: auto;
    overflow: visible;
}

/* -- #1442 Wage Loss grid: same header-wrap fix as the two grids above (#1041
      missed this one). Its narrow columns (Continuing 90px, Verification 100px)
      otherwise clip their captions into "Continui ng" / "Verificatio n". Scoped
      by ID; the header row is absent in the mobile (Phone tier) vertical
      RowDirection, so phone layout is unaffected. -- */
[b-tcidseskfz] #WageLossGrid .e-columnheader .e-headercell .e-headercelldiv {
    white-space: normal;
    line-height: 1.2;
    height: auto;
    overflow: visible;
}
/* /Components/Pages/CaseForms/CaseSettlementWcPage.razor.rz.scp.css */
/* ----------------------------------------------------------------
   CaseSettlementWcPage.razor.css -- Scoped styles for the WC
   settlement page. Mirrors CaseSettlementPage.razor.css (PI).
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ASCII-only comments to avoid CSS isolation bundler issues.
   ---------------------------------------------------------------- */

/* -- Workup header (action buttons, right-aligned) --
   #1743: like the PI page, a leading ::deep here is inert -- .workup-header is a
   top-level element with no scoped ancestor for [scope] .workup-header to match,
   so the flex / alignment / margins never applied and the buttons fell back to a
   cramped left flow. Target the authored element directly. margin-top added to
   match the breathing room the PI page already had. */
.workup-header[b-roz1318cku] {
    display: flex;
    justify-content: flex-end;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 1.25rem;
    margin-bottom: 0.75rem;
    padding: 0.5rem 0;
}

[b-roz1318cku] .workup-header__actions {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

/* Match the PI twin's toolbar button sizing so both settlement pages read the same. */
[b-roz1318cku] .workup-header__actions .e-btn {
    padding: 6px 12px;
    font-size: 0.875rem;
}

[b-roz1318cku] .settlement-active-icon {
    color: var(--lb-success);
}

/* -- Grid fills remaining vertical space under tab -- */

.workup-grid-container[b-roz1318cku] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

.workup-grid-container[b-roz1318cku]  .e-grid {
    flex: 1 1 auto;
}

/* -- Workup grid status badges -- */

[b-roz1318cku] .status-badge {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    /* #1099: this WC page never received the #657 PI fix — match it. line-height + vertical
       padding stop PRESENTED/REJECTED text overflowing the pill; nowrap keeps it on one line;
       text-decoration:none guards against any inherited strikethrough. */
    line-height: 1.4;
    padding: 0.25rem 0.5rem;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    white-space: nowrap;
    text-decoration: none;
}

[b-roz1318cku] .status-badge--draft {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    border: 1px solid var(--lb-border-light);
}

[b-roz1318cku] .status-badge--presented {
    background: var(--lb-info-bg);
    color: var(--lb-info);
    border: 1px solid var(--lb-info);
}

[b-roz1318cku] .status-badge--accepted {
    background: var(--lb-success-bg);
    color: var(--lb-success);
    border: 1px solid var(--lb-success);
}

[b-roz1318cku] .status-badge--rejected {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    border: 1px solid var(--lb-danger);
}

/* -- Active workup row accent border -- */

[b-roz1318cku] .workup-row--active td:first-child {
    border-left: 3px solid var(--lb-brand);
}

/* -- Empty state -- */

[b-roz1318cku] .workup-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 1.5rem;
    text-align: center;
    color: var(--lb-text-muted);
}

[b-roz1318cku] .workup-empty p {
    max-width: 400px;
    margin-bottom: 1rem;
    font-size: 0.9rem;
}

/* -- AI check result dialog -- */

.ai-check-result[b-roz1318cku] {
    max-height: 400px;
    overflow-y: auto;
}

[b-roz1318cku] .ai-check-result__text {
    white-space: pre-wrap;
    word-wrap: break-word;
    font-size: 0.85rem;
    line-height: 1.5;
    background: var(--lb-surface-alt);
    padding: 0.75rem;
    border-radius: 4px;
    border: 1px solid var(--lb-border-light);
    color: var(--lb-text);
}

/* -- Responsive: stack header on mobile -- */
@media (max-width: 576px) {
    .workup-header[b-roz1318cku] {
        flex-direction: column;
        align-items: stretch;
    }

    [b-roz1318cku] .workup-header__actions {
        justify-content: flex-end;
    }
}
/* /Components/Pages/CaseForms/CaseSignaturesTab.razor.rz.scp.css */
.signatures-container[b-ozr30dt5hb] {
    overflow-x: hidden;
}

/* Status pill styles moved to wwwroot/app.css (.sig-status-*) — scoped
   styles don't reach Syncfusion grid template HTML. */

[b-ozr30dt5hb] .action-buttons {
    display: flex;
    gap: 4px;
    justify-content: center;
    flex-wrap: wrap;
}

[b-ozr30dt5hb] .empty-state {
    text-align: center;
    padding: 2rem;
    color: #6c757d;
}
/* /Components/Pages/CaseForms/CaseSmsTab.razor.rz.scp.css */
/* ================================================================
   CaseSmsTab.razor.css -- Scoped styles for the case SMS tab.
   Uses --lb-* design tokens from app.css. ASCII comments only.
   ================================================================ */

/* -- Module disabled state -- */
.case-sms-disabled[b-9hq2g99mro] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    text-align: center;
    color: var(--lb-text-muted);
    gap: 12px;
}

/* -- Container layout (horizontal two-panel like SmsInbox) -- */
.case-sms-container[b-9hq2g99mro] {
    display: flex;
    height: calc(100vh - 320px);
    min-height: 400px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    background: var(--lb-card);
}

/* -- Left Rail (35% of container) -- */
[b-9hq2g99mro] .case-sms-rail {
    width: 35%;
    min-width: 240px;
    max-width: 380px;
    border-right: 1px solid var(--lb-border);
    display: flex;
    flex-direction: column;
    background: var(--lb-surface-alt);
    overflow-y: auto;
}

[b-9hq2g99mro] .case-sms-rail-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

[b-9hq2g99mro] .case-sms-rail-header h6 {
    margin: 0;
    font-weight: 600;
    font-size: 14px;
}

/* New Conversation button in rail header (matches SmsInbox compose btn) */
[b-9hq2g99mro] .sms-new-conv-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.75rem;
    font-weight: 600;
    color: #fff;
    background: var(--lb-brand);
    border: none;
    border-radius: 6px;
    padding: 5px 10px;
    cursor: pointer;
    transition: background 0.15s;
    white-space: nowrap;
}

[b-9hq2g99mro] .sms-new-conv-btn:hover {
    background: var(--lb-brand-hover, var(--lb-brand));
    filter: brightness(1.1);
}

[b-9hq2g99mro] .sms-new-conv-btn .e-icons {
    font-size: 0.7rem;
}

/* -- Conversation cards in rail -- */
[b-9hq2g99mro] .case-sms-conv-card {
    padding: 10px 14px;
    border-bottom: 1px solid var(--lb-border-light);
    cursor: pointer;
    transition: background 0.15s;
}

[b-9hq2g99mro] .case-sms-conv-card:hover {
    background: var(--lb-hover);
}

[b-9hq2g99mro] .case-sms-conv-card.active {
    background: var(--lb-brand-light);
    border-left: 3px solid var(--lb-brand);
}

[b-9hq2g99mro] .conv-card-top-row {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-9hq2g99mro] .conv-card-name {
    font-weight: 600;
    font-size: 13px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
    min-width: 0;
}

[b-9hq2g99mro] .conv-card-line-badge {
    font-size: 10px;
    font-weight: 600;
    padding: 1px 6px;
    border-radius: 3px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    color: var(--lb-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

[b-9hq2g99mro] .conv-card-preview {
    font-size: 12px;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-top: 2px;
}

[b-9hq2g99mro] .conv-card-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 4px;
}

[b-9hq2g99mro] .conv-card-time {
    font-size: 11px;
    color: var(--lb-text-muted);
}

[b-9hq2g99mro] .conv-card-badge {
    background: var(--lb-brand);
    color: #fff;
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 10px;
    min-width: 18px;
    text-align: center;
}

/* -- Right Chat Panel (fills remaining ~65%) -- */
[b-9hq2g99mro] .case-sms-chat {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    background: var(--lb-bg-white);
}

[b-9hq2g99mro] .case-sms-chat-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 16px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
    background: var(--lb-bg-surface);
    gap: 8px;
}

[b-9hq2g99mro] .chat-header-info {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

[b-9hq2g99mro] .chat-header-name {
    font-weight: 600;
    font-size: 14px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-9hq2g99mro] .chat-header-actions {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
}

/* -- Message thread (scrollable area fills remaining height) -- */
[b-9hq2g99mro] .case-sms-messages {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* -- Compose footer (pinned to bottom) -- */
[b-9hq2g99mro] .case-sms-compose {
    flex-shrink: 0;
    padding: 12px 16px;
    border-top: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
}

/* -- No-selection placeholder -- */
[b-9hq2g99mro] .case-sms-no-selection {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    color: var(--lb-text-muted);
    gap: 12px;
}

/* -- Empty state -- */
[b-9hq2g99mro] .case-sms-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 20px;
    text-align: center;
    color: var(--lb-text-muted);
    gap: 12px;
}

[b-9hq2g99mro] .case-sms-empty .e-icons {
    font-size: 40px;
    opacity: 0.3;
}

[b-9hq2g99mro] .sms-inbox-link {
    font-size: 13px;
    color: var(--lb-brand);
    text-decoration: none;
}

[b-9hq2g99mro] .sms-inbox-link:hover {
    text-decoration: underline;
}

/* -- Mobile dropdown selector -- */
[b-9hq2g99mro] .case-sms-mobile-selector {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border);
}

[b-9hq2g99mro] .chat-header-line-badge {
    font-size: 10px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 3px;
    background: var(--lb-brand-light);
    color: var(--lb-brand);
    white-space: nowrap;
}

[b-9hq2g99mro] .chat-header-phone {
    font-size: 12px;
    color: var(--lb-brand);
    text-decoration: none;
}

[b-9hq2g99mro] .chat-header-phone:hover {
    text-decoration: underline;
}

/* -- Opted-out banner -- */
[b-9hq2g99mro] .sms-opted-out-banner {
    background: var(--lb-danger-light);
    color: var(--lb-danger);
    padding: 8px 16px;
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-shrink: 0;
    border-bottom: 1px solid var(--lb-border);
}

/* -- Load More -- */
[b-9hq2g99mro] .sms-load-more {
    text-align: center;
    padding: 8px 0;
}

/* -- Date separator -- */
[b-9hq2g99mro] .sms-date-separator {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 12px 0 4px;
}

[b-9hq2g99mro] .sms-date-separator::before,
[b-9hq2g99mro] .sms-date-separator::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--lb-border-light);
}

[b-9hq2g99mro] .sms-date-separator span {
    font-size: 11px;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* -- Chat bubbles -- */
[b-9hq2g99mro] .sms-bubble {
    max-width: 75%;
    padding: 8px 12px;
    border-radius: 12px;
    font-size: 14px;
    line-height: 1.4;
    word-wrap: break-word;
}

[b-9hq2g99mro] .sms-bubble-inbound {
    align-self: flex-start;
    background: var(--lb-surface-alt);
    border-bottom-left-radius: 4px;
}

[b-9hq2g99mro] .sms-bubble-outbound {
    align-self: flex-end;
    background: var(--lb-brand);
    color: #fff;
    border-bottom-right-radius: 4px;
}

[b-9hq2g99mro] .sms-bubble-sender {
    display: block;
    font-size: 11px;
    font-weight: 600;
    opacity: 0.8;
    margin-bottom: 2px;
}

[b-9hq2g99mro] .sms-bubble-text {
    white-space: pre-wrap;
}

[b-9hq2g99mro] .sms-bubble-redacted {
    font-style: italic;
    color: var(--lb-text-muted);
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-bubble-redacted {
    color: rgba(255, 255, 255, 0.7);
}

[b-9hq2g99mro] .sms-bubble-meta {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
}

[b-9hq2g99mro] .sms-bubble-time {
    font-size: 11px;
    color: var(--lb-text-muted);
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-bubble-time {
    color: rgba(255, 255, 255, 0.75);
}

[b-9hq2g99mro] .sms-status-icon {
    font-size: 12px;
    color: var(--lb-text-muted);
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-status-icon {
    color: rgba(255, 255, 255, 0.75);
}

[b-9hq2g99mro] .sms-status-delivered {
    color: var(--lb-success);
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-status-delivered {
    color: rgba(255, 255, 255, 0.9);
}

[b-9hq2g99mro] .sms-status-failed {
    color: var(--lb-danger);
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-status-failed {
    color: #ffc9c9;
}

/* -- Typing indicator -- */
[b-9hq2g99mro] .sms-typing-indicator {
    align-self: flex-start;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 10px 14px;
    background: var(--lb-surface-alt);
    border-radius: 12px;
    border-bottom-left-radius: 4px;
}

[b-9hq2g99mro] .sms-typing-dot {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--lb-text-muted);
    opacity: 0.4;
    animation: smsTypingBounce-b-9hq2g99mro 1.4s infinite ease-in-out;
}

[b-9hq2g99mro] .sms-typing-dot:nth-child(2) {
    animation-delay: 0.2s;
}

[b-9hq2g99mro] .sms-typing-dot:nth-child(3) {
    animation-delay: 0.4s;
}

@keyframes smsTypingBounce-b-9hq2g99mro {
    0%, 80%, 100% { transform: translateY(0); opacity: 0.4; }
    40% { transform: translateY(-5px); opacity: 1; }
}

/* -- Save All row -- */
[b-9hq2g99mro] .sms-save-all-row {
    margin-top: 6px;
    text-align: right;
}

/* -- Attachment styles -- */
[b-9hq2g99mro] .sms-inline-image {
    max-width: 280px;
    border-radius: 8px;
    margin-top: 6px;
    display: block;
}

[b-9hq2g99mro] .sms-attachment-card {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-top: 6px;
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-attachment-card {
    background: rgba(255, 255, 255, 0.15);
    border-color: rgba(255, 255, 255, 0.3);
}

[b-9hq2g99mro] .sms-attachment-icon {
    font-size: 20px;
    color: var(--lb-text-muted);
    flex-shrink: 0;
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-attachment-icon {
    color: rgba(255, 255, 255, 0.8);
}

[b-9hq2g99mro] .sms-attachment-info {
    flex: 1;
    min-width: 0;
}

[b-9hq2g99mro] .sms-attachment-name {
    font-size: 13px;
    font-weight: 500;
    display: block;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-9hq2g99mro] .sms-attachment-size {
    font-size: 11px;
    color: var(--lb-text-muted);
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-attachment-size {
    color: rgba(255, 255, 255, 0.7);
}

[b-9hq2g99mro] .sms-attachment-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
}

[b-9hq2g99mro] .sms-attachment-download {
    color: var(--lb-brand);
    font-size: 16px;
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-attachment-download {
    color: #fff;
}

[b-9hq2g99mro] .sms-attachment-saved {
    color: var(--lb-success);
    font-size: 12px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 4px;
}

[b-9hq2g99mro] .sms-bubble-outbound .sms-attachment-saved {
    color: rgba(255, 255, 255, 0.9);
}

[b-9hq2g99mro] .sms-compose-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
}

[b-9hq2g99mro] .sms-compose-row .e-input-group {
    flex: 1;
}

[b-9hq2g99mro] .sms-char-counter {
    font-size: 11px;
    color: var(--lb-text-muted);
    text-align: right;
    margin-top: 4px;
}

[b-9hq2g99mro] .sms-char-warn {
    color: var(--lb-danger);
    font-weight: 600;
}

/* -- Summary panel -- */
[b-9hq2g99mro] .sms-summary-panel {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 10px 16px;
    margin: 0 16px;
    background: var(--lb-surface-alt);
    flex-shrink: 0;
}

[b-9hq2g99mro] .sms-summary-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

[b-9hq2g99mro] .sms-summary-title {
    font-weight: 600;
    font-size: 13px;
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-9hq2g99mro] .sms-summary-actions {
    display: flex;
    gap: 4px;
}

[b-9hq2g99mro] .sms-summary-text {
    font-size: 13px;
    line-height: 1.5;
    white-space: pre-wrap;
}

/* -- Signature requests (in-rail) -- */
[b-9hq2g99mro] .sig-requests-section {
    border-top: 1px solid var(--lb-border);
    margin-top: auto;
}

[b-9hq2g99mro] .sig-requests-header {
    padding: 8px 14px;
    cursor: pointer;
    background: var(--lb-surface-alt);
}

[b-9hq2g99mro] .sig-requests-header h6 {
    margin: 0;
    font-size: 12px;
    font-weight: 600;
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-9hq2g99mro] .sig-requests-list {
    max-height: 200px;
    overflow-y: auto;
}

[b-9hq2g99mro] .sig-request-card {
    padding: 8px 14px;
    border-bottom: 1px solid var(--lb-border-light);
    font-size: 12px;
}

[b-9hq2g99mro] .sig-request-doc {
    font-weight: 600;
    font-size: 12px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-9hq2g99mro] .sig-request-signer {
    font-size: 11px;
    color: var(--lb-text-muted);
    margin-top: 1px;
}

[b-9hq2g99mro] .sig-request-footer {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 4px;
}

[b-9hq2g99mro] .sig-status-badge {
    font-size: 10px;
    font-weight: 700;
    padding: 1px 6px;
    border-radius: 3px;
    text-transform: uppercase;
}

[b-9hq2g99mro] .sig-badge-pending {
    background: var(--lb-warning-light);
    color: var(--lb-warning);
}

[b-9hq2g99mro] .sig-badge-signed {
    background: var(--lb-success-light);
    color: var(--lb-success);
}

[b-9hq2g99mro] .sig-badge-expired {
    background: var(--lb-danger-light);
    color: var(--lb-danger);
}

[b-9hq2g99mro] .sig-badge-cancelled {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

[b-9hq2g99mro] .sig-badge-viewed {
    background: var(--lb-info-light);
    color: var(--lb-info);
}

/* #2134: a send that failed at the provider — distinct danger badge so an orphaned
   request is never mistaken for a delivered ("Pending") one. */
[b-9hq2g99mro] .sig-badge-failed {
    background: var(--lb-danger-light);
    color: var(--lb-danger);
}

/* -- Loading state -- */
.sms-tab-loading[b-9hq2g99mro] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Responsive: <768px -- */
@media (max-width: 767px) {
    .case-sms-container[b-9hq2g99mro] {
        flex-direction: column;
        height: calc(100vh - 280px);
        min-height: 350px;
    }

    [b-9hq2g99mro] .case-sms-rail {
        display: none;
    }

    [b-9hq2g99mro] .case-sms-chat {
        width: 100%;
    }

    [b-9hq2g99mro] .sms-bubble {
        max-width: 90%;
    }

    [b-9hq2g99mro] .case-sms-chat-header {
        flex-direction: column;
        align-items: flex-start;
    }

    [b-9hq2g99mro] .chat-header-actions {
        flex-wrap: wrap;
    }

    [b-9hq2g99mro] .sms-inline-image {
        max-width: 200px;
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    [b-9hq2g99mro] .sig-request-footer {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/CaseForms/CaseSubpoenasPage.razor.rz.scp.css */
/* Breathing room below the case tab bar so the stat cards aren't crammed against it. */
.sub-tab[b-otcaq7av2e] {
    padding: 1rem 0 0;
}

.sub-header[b-otcaq7av2e] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 0.9rem;
    flex-wrap: wrap;
}

/* Stat cards come from the shared <StatCard> component; this just lays them out. */
.sub-header .stat-row[b-otcaq7av2e] {
    flex: 1;
    min-width: 240px;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 0.6rem;
}

@media (max-width: 768px) {
    .sub-header .stat-row[b-otcaq7av2e] {
        grid-template-columns: repeat(2, 1fr);
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    .sub-dialog-footer[b-otcaq7av2e] {
        flex-wrap: wrap;
    }
}

.sub-prov[b-otcaq7av2e] {
    font-weight: 600;
    color: var(--lb-text-bright);
}

.sub-prov-sub[b-otcaq7av2e] {
    font-size: 0.72rem;
    color: var(--lb-text-muted);
}

.sub-badge[b-otcaq7av2e] {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 600;
    padding: 0.12rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    border: 1px solid transparent;
    white-space: nowrap;
}

.s-requested[b-otcaq7av2e] { background: var(--lb-elevated); color: var(--lb-text); }
.s-prep[b-otcaq7av2e] { background: var(--lb-info-bg); color: var(--lb-info); }
.s-issued[b-otcaq7av2e] { background: var(--lb-brand-light); color: var(--lb-brand-hover); border-color: rgba(var(--lb-brand-rgb), 0.35); }
.s-partial[b-otcaq7av2e] { background: var(--lb-info-bg); color: var(--lb-info); }
.s-received[b-otcaq7av2e] { background: var(--lb-success-bg); color: var(--lb-success); }
.s-cancelled[b-otcaq7av2e] { background: var(--lb-elevated); color: var(--lb-text-muted); text-decoration: line-through; }

.sub-days[b-otcaq7av2e] { font-weight: 700; }
.sub-days.hot[b-otcaq7av2e] { color: var(--lb-danger); }
.sub-days.warn[b-otcaq7av2e] { color: var(--lb-warning); }
.sub-days.cool[b-otcaq7av2e] { color: var(--lb-text-muted); }

.sub-dim[b-otcaq7av2e] { color: var(--lb-text-dim); }

.sub-chip[b-otcaq7av2e] {
    display: inline-block;
    font-size: 0.74rem;
    font-weight: 600;
    padding: 0.1rem 0.45rem;
    border-radius: 6px;
}

.sub-chip.in[b-otcaq7av2e] { background: var(--lb-success-bg); color: var(--lb-success); }
.sub-chip.out[b-otcaq7av2e] { background: var(--lb-danger-bg); color: var(--lb-danger); }
.sub-chip.na[b-otcaq7av2e] { color: var(--lb-text-dim); }

.sub-fu-overdue[b-otcaq7av2e] { color: var(--lb-danger); font-weight: 600; }

.sub-actions[b-otcaq7av2e] {
    display: inline-flex;
    gap: 0.15rem;
    justify-content: center;
    flex-wrap: nowrap;
}

.sub-empty[b-otcaq7av2e] {
    text-align: center;
    padding: 2.5rem 1rem;
    color: var(--lb-text-muted);
}

.sub-empty-icon[b-otcaq7av2e] {
    font-size: 2.25rem;
    opacity: 0.35;
    display: block;
    margin-bottom: 0.6rem;
}

.sub-empty-title[b-otcaq7av2e] {
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.25rem;
}

.sub-empty-sub[b-otcaq7av2e] {
    font-size: 0.85rem;
    margin: 0;
}

.sub-dialog-context[b-otcaq7av2e] {
    font-weight: 600;
    color: var(--lb-text-bright);
    margin: 0 0 0.6rem;
}

.sub-dialog-note[b-otcaq7av2e] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    margin: 0.6rem 0 0;
}

.sub-dialog-footer[b-otcaq7av2e] {
    display: flex;
    justify-content: flex-end;
    gap: 0.5rem;
}

.sub-check[b-otcaq7av2e] {
    margin-bottom: 0.5rem;
}

/* Attached-document cell (received chip + "View" link) in the grid */
.sub-doc-cell[b-otcaq7av2e] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    justify-content: center;
    flex-wrap: wrap;
}

.sub-doc-link[b-otcaq7av2e] {
    border: none;
    background: none;
    padding: 0;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
    text-decoration: underline;
}

.sub-doc-link:hover[b-otcaq7av2e] {
    color: var(--lb-brand-hover);
}

/* Document picker under a checked "received" box in the receive dialog */
.sub-doc-pick[b-otcaq7av2e] {
    margin: 0 0 0.6rem 1.6rem;
}

.sub-doc-pick .form-label[b-otcaq7av2e] {
    font-size: 0.76rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.2rem;
}

/* Edit dialog (#1375) */
.sub-edit-field[b-otcaq7av2e] {
    margin-bottom: 0.75rem;
}

.sub-edit-dates[b-otcaq7av2e] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
}

@media (max-width: 560px) {
    .sub-edit-dates[b-otcaq7av2e] {
        grid-template-columns: 1fr;
        gap: 0;
    }
}

.sub-edit-error[b-otcaq7av2e] {
    margin-top: 0.6rem;
    padding: 0.5rem 0.65rem;
    border-radius: 6px;
    background: var(--lb-danger-bg, rgba(220, 53, 69, 0.1));
    color: var(--lb-danger);
    font-size: 0.82rem;
}
/* /Components/Pages/CaseForms/CaseTimeBilling.razor.rz.scp.css */
/* -- Adaptive grid: disable horizontal scrollbar (Syncfusion handles layout natively) -- */
[b-7xt6r84r0n] .e-grid {
    overflow-x: hidden;
}

/* -- First-load spinner: center in the content area (#1617) -- */
.ctb-loading[b-7xt6r84r0n] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 240px;
}

/* -- Load / refresh failure banner (#3880) --
   Sits above the stat cards. Deliberately loud: the cards and the grid keep
   rendering the last successful load, so this is the only cue that the time
   record on screen may not be the current one. */
.ctb-load-error[b-7xt6r84r0n] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    border: 1px solid var(--lb-danger);
    border-radius: var(--lb-radius-card);
    padding: 0.6rem 0.85rem;
    margin-bottom: 10px;
}

.ctb-load-error-text[b-7xt6r84r0n] {
    flex: 1 1 260px;
    font-size: 0.9rem;
}

/* -- Empty state message styling -- */
[b-7xt6r84r0n] .empty-state-message {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 2rem 1rem;
    color: var(--lb-text-muted);
}

[b-7xt6r84r0n] .empty-state-message p {
    margin: 0;
    font-size: 0.95rem;
}

/* ============================================================
   ZONE 1 - Stat card strip
   ============================================================ */
.stat-row[b-7xt6r84r0n] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 10px;
}

@media (max-width: 992px) {
    .stat-row[b-7xt6r84r0n] {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Stay 2-column even on phone -- 4 single-column stat cards eat ~320px of
   vertical real estate and push the grid below the fold. 2x2 keeps the
   stats glanceable without burying the data. */
@media (max-width: 576px) {
    .stat-row[b-7xt6r84r0n] {
        grid-template-columns: repeat(2, 1fr);
        gap: 6px;
    }
}

/* ============================================================
   ZONE 2 - Quick-entry bar
   ============================================================ */
.quick-entry-bar[b-7xt6r84r0n] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 8px;
    padding: 10px 12px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 10px;
}

.qe-field[b-7xt6r84r0n] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.qe-label[b-7xt6r84r0n] {
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    color: var(--lb-text-muted);
    line-height: 1.2;
}

/* Field sizing -- description capped so it does not starve other fields */
.qe-date[b-7xt6r84r0n]        { flex: 0 0 120px; }
.qe-workcode[b-7xt6r84r0n]    { flex: 0 0 130px; }
.qe-activity[b-7xt6r84r0n]    { flex: 1 1 150px; max-width: 240px; }
.qe-description[b-7xt6r84r0n] { flex: 1 1 180px; max-width: 340px; }
.qe-hours[b-7xt6r84r0n]       { flex: 0 0 100px; }
.qe-rate[b-7xt6r84r0n]        { flex: 0 0 110px; }
.qe-amount[b-7xt6r84r0n]      { flex: 0 0 auto;  align-self: flex-end; }
.qe-action[b-7xt6r84r0n]      { flex: 0 0 auto;  align-self: flex-end; }

.qe-amount-display[b-7xt6r84r0n] {
    font-size: 1.05rem;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: var(--lb-text);
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 5px 10px;
    min-width: 80px;
    text-align: right;
    line-height: 1.6;
}

/* Hide spin buttons on quick-entry numeric inputs -- saves horizontal space */
[b-7xt6r84r0n] .qe-hours .e-spin-up,
[b-7xt6r84r0n] .qe-hours .e-spin-down,
[b-7xt6r84r0n] .qe-rate .e-spin-up,
[b-7xt6r84r0n] .qe-rate .e-spin-down {
    display: none;
}

/* Save button aligns to the bottom of the row */
[b-7xt6r84r0n] .qe-save-btn {
    white-space: nowrap;
}

/* -- Responsive: stack quick-entry bar on mobile -- */
@media (max-width: 768px) {
    .quick-entry-bar[b-7xt6r84r0n] {
        flex-direction: column;
        align-items: stretch;
    }

    .qe-field[b-7xt6r84r0n] {
        flex: 1 1 100%;
    }

    .qe-description[b-7xt6r84r0n] {
        max-width: none;
    }

    .qe-action[b-7xt6r84r0n] {
        align-self: stretch;
    }

    .qe-amount-display[b-7xt6r84r0n] {
        text-align: left;
    }
}
/* /Components/Pages/CaseForms/Contacts/ContactCard.razor.rz.scp.css */
/* === ContactCard -- scoped styles === */

.contact-card[b-wlyyear3xd] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 14px 16px;
    cursor: pointer;
    transition: border-color 0.15s ease;
}

.contact-card:hover[b-wlyyear3xd] {
    border-color: var(--lb-border-hover);
}

/* Client accent border */
.contact-card--client[b-wlyyear3xd] {
    border: 2px solid var(--lb-info);
}

/* -- Header row -- */
.contact-card-header[b-wlyyear3xd] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

.contact-card-identity[b-wlyyear3xd] {
    flex: 1 1 auto;
    min-width: 0;
}

.contact-card-name[b-wlyyear3xd] {
    font-weight: 600;
    font-size: 14px;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.contact-card-role[b-wlyyear3xd] {
    font-size: 12px;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.contact-card-pills[b-wlyyear3xd] {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
}

/* -- Avatar circle -- */
.contact-avatar[b-wlyyear3xd] {
    width: 36px;
    height: 36px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 500;
    font-size: 13px;
    flex-shrink: 0;
    line-height: 1;
}

.avatar--info[b-wlyyear3xd] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.avatar--purple[b-wlyyear3xd] {
    background: #EEEDFE;
    color: #3C3489;
}

.avatar--coral[b-wlyyear3xd] {
    background: #FAECE7;
    color: #712B13;
}

.avatar--teal[b-wlyyear3xd] {
    background: #E1F5EE;
    color: #085041;
}

.avatar--amber[b-wlyyear3xd] {
    background: #FAEEDA;
    color: #633806;
}

.avatar--gray[b-wlyyear3xd] {
    background: var(--lb-bg-surface);
    color: var(--lb-text-muted);
}

/* -- Role pills -- */
.role-pill[b-wlyyear3xd] {
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 11px;
    font-weight: 500;
    white-space: nowrap;
    line-height: 1.4;
}

.role-pill--info[b-wlyyear3xd] {
    background: #b6effb;
    color: #032830;
    font-weight: 600;
}

.role-pill--green[b-wlyyear3xd] {
    background: #a3cfbb;
    color: #051b11;
    font-weight: 600;
}

.role-pill--neutral[b-wlyyear3xd] {
    background: var(--lb-bg-surface);
    color: var(--lb-text);
    border: 1px solid var(--lb-border);
    font-weight: 600;
}

/* -- Divider -- */
.contact-card-divider[b-wlyyear3xd] {
    height: 1px;
    background: var(--lb-border-light);
    margin: 10px 0;
}

/* -- Detail fields -- */
.contact-card-details[b-wlyyear3xd] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.contact-card-field[b-wlyyear3xd] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 13px;
    min-width: 0;
}

.card-field-label[b-wlyyear3xd] {
    color: var(--lb-text-muted);
    font-size: 12px;
    flex-shrink: 0;
    min-width: 50px;
}

.card-field-value[b-wlyyear3xd] {
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-field-empty[b-wlyyear3xd] {
    color: var(--lb-text-dim);
    font-style: italic;
    font-size: 12px;
}

.card-email-link[b-wlyyear3xd] {
    color: var(--lb-info);
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.card-email-link:hover[b-wlyyear3xd] {
    text-decoration: underline;
}

.card-copy-btn[b-wlyyear3xd] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 2px 4px;
    color: var(--lb-text-muted, #888);
    font-size: 12px;
    opacity: 0.6;
    transition: opacity 0.15s;
}

.card-copy-btn:hover[b-wlyyear3xd] {
    opacity: 1;
    color: var(--lb-info);
}
/* /Components/Pages/CaseForms/Contacts/ContactCardGrid.razor.rz.scp.css */
/* === ContactCardGrid -- scoped styles === */

/* -- Filter bar -- */
.ccg-filter-bar[b-315crfjbqe] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 0 12px;
    flex-wrap: wrap;
}

.ccg-filters[b-315crfjbqe] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.ccg-actions[b-315crfjbqe] {
    display: flex;
    gap: 6px;
    align-items: center;
}

/* -- Filter pills -- */
.filter-pill[b-315crfjbqe] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 16px;
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    color: var(--lb-text);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.15s ease;
    line-height: 1.4;
}

.filter-pill:hover[b-315crfjbqe] {
    border-color: var(--lb-border-hover);
    background: var(--lb-bg-surface);
}

.filter-pill--active[b-315crfjbqe] {
    background: var(--lb-brand-light);
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

/* -- Filter badges -- */
.filter-badge[b-315crfjbqe] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
    background: var(--lb-bg-surface);
    color: var(--lb-text-muted);
}

.filter-badge--green[b-315crfjbqe] {
    background: var(--lb-success-bg);
    color: #0a3622;
}

.filter-badge--info[b-315crfjbqe] {
    background: var(--lb-info-bg);
    color: #055160;
}

/* -- Card grid -- */
.ccg-card-grid[b-315crfjbqe] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: 10px;
}

/* -- Dashed add card -- */
.ccg-add-card[b-315crfjbqe] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    min-height: 120px;
    border: 0.5px dashed var(--lb-border);
    border-radius: 8px;
    cursor: pointer;
    transition: border-color 0.15s ease, background 0.15s ease;
    padding: 16px;
}

.ccg-add-card:hover[b-315crfjbqe] {
    border-color: var(--lb-border-hover);
    background: var(--lb-bg-surface);
}

.ccg-add-icon[b-315crfjbqe] {
    font-size: 20px;
    color: var(--lb-text-muted);
}

.ccg-add-text[b-315crfjbqe] {
    font-size: 13px;
    color: var(--lb-text-muted);
}

/* -- Responsive -- */
@media (max-width: 576px) {
    .ccg-card-grid[b-315crfjbqe] {
        grid-template-columns: 1fr;
    }

    .ccg-filter-bar[b-315crfjbqe] {
        flex-direction: column;
        align-items: stretch;
    }

    .ccg-actions[b-315crfjbqe] {
        justify-content: flex-end;
    }
}
/* /Components/Pages/CaseForms/Investigation/AutoAccidentIncidentSection.razor.rz.scp.css */
/* AutoAccidentIncidentSection scoped styles */
/* -- Field grid: 3 columns, responsive -- */
.field-grid[b-beytm46nv9] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 8px 20px;
    padding: 8px 0;
}

.field-cell[b-beytm46nv9] {
    min-width: 0;
}

.field-cell--full[b-beytm46nv9] {
    grid-column: 1 / -1;
}

.field-label[b-beytm46nv9] {
    font-size: 0.7rem;
    font-weight: 500;
    color: var(--lb-text-dim);
    margin-bottom: 4px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.field-value[b-beytm46nv9] {
    font-size: 1rem;
    font-weight: 500;
    color: var(--lb-text-bright);
    padding: 4px 0;
    min-height: 1.5em;
    word-break: break-word;
}

.field-value--empty[b-beytm46nv9] {
    font-style: italic;
    font-weight: 400;
    color: var(--lb-text-muted);
}

/* -- Section header row with completeness pill -- */
.section-header-row[b-beytm46nv9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    padding-right: 8px;
}

.section-title[b-beytm46nv9] {
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--lb-text);
}

/* -- Completeness pills -- */
.completeness-pill[b-beytm46nv9] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.completeness--done[b-beytm46nv9] {
    background-color: var(--lb-success-bg);
    color: var(--lb-success);
}

.completeness--partial[b-beytm46nv9] {
    background-color: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.completeness--empty[b-beytm46nv9] {
    background-color: var(--lb-elevated);
    color: var(--lb-text-muted);
}

/* -- Field-with-gear (dropdown + admin gear button) -- */
.field-with-gear[b-beytm46nv9] {
    display: flex;
    align-items: center;
    gap: 4px;
}

[b-beytm46nv9] .field-with-gear .e-ddl {
    flex: 1;
}

/* -- Responsive breakpoints -- */
@media (max-width: 768px) {
    .field-grid[b-beytm46nv9] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 576px) {
    .field-grid[b-beytm46nv9] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/CaseForms/Investigation/CaseTypeAttributeAccordion.razor.rz.scp.css */
/* CaseTypeAttributeAccordion scoped styles */
/* -- Amber tint wrapper for EAV section -- */
.eav-accordion-wrapper[b-ypwd5th8q6] {
    border-left: 3px solid var(--lb-warning-border);
    padding-left: 8px;
    margin-top: 12px;
}

/* -- Section header with completeness pill -- */
.section-header-row[b-ypwd5th8q6] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding-right: 8px;
}

.section-title[b-ypwd5th8q6] {
    font-weight: 600;
    font-size: 0.95rem;
}

.completeness-pill[b-ypwd5th8q6] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.completeness--done[b-ypwd5th8q6] {
    background: var(--lb-success-bg);
    color: var(--lb-success-text);
}

.completeness--partial[b-ypwd5th8q6] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text);
}

.completeness--empty[b-ypwd5th8q6] {
    background: var(--lb-secondary-bg);
    color: var(--lb-secondary-text);
}

/* -- Field grid layout -- */
.field-grid[b-ypwd5th8q6] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 8px 20px;
    padding: 12px 0;
}

.field-cell[b-ypwd5th8q6] {
    min-width: 0;
}

.field-label[b-ypwd5th8q6] {
    font-size: 0.8rem;
    color: var(--lb-label);
    margin-bottom: 4px;
    font-weight: 500;
}

.field-value[b-ypwd5th8q6] {
    font-size: 0.9rem;
    color: var(--lb-text);
    word-break: break-word;
}

.field-value--empty[b-ypwd5th8q6] {
    color: var(--lb-muted);
    font-style: italic;
}

.required-indicator[b-ypwd5th8q6] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-validation-error[b-ypwd5th8q6] {
    color: var(--lb-danger, #d32f2f);
    font-size: 0.75rem;
    margin-top: 2px;
}

/* -- Responsive breakpoints -- */
@media (max-width: 768px) {
    .field-grid[b-ypwd5th8q6] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 576px) {
    .field-grid[b-ypwd5th8q6] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/CaseForms/Investigation/Extensions/AutoAccidentExtensionSection.razor.rz.scp.css */
/* AutoAccidentExtensionSection scoped styles */
/* -- Section header with completeness pill -- */
.section-header-row[b-dhwa8jddfl] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding-right: 8px;
}

.section-title[b-dhwa8jddfl] {
    font-weight: 600;
    font-size: 0.95rem;
}

.completeness-pill[b-dhwa8jddfl] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.completeness--done[b-dhwa8jddfl] {
    background: var(--lb-success-bg);
    color: var(--lb-success-text);
}

.completeness--partial[b-dhwa8jddfl] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text);
}

.completeness--empty[b-dhwa8jddfl] {
    background: var(--lb-secondary-bg);
    color: var(--lb-secondary-text);
}

/* -- Field grid layout -- */
.field-grid[b-dhwa8jddfl] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 8px 20px;
    padding: 12px 0;
}

.field-cell[b-dhwa8jddfl] {
    min-width: 0;
}

.field-cell--full[b-dhwa8jddfl] {
    grid-column: 1 / -1;
}

.field-label[b-dhwa8jddfl] {
    font-size: 0.8rem;
    color: var(--lb-label);
    margin-bottom: 4px;
    font-weight: 500;
}

.field-value[b-dhwa8jddfl] {
    font-size: 0.9rem;
    color: var(--lb-text);
    word-break: break-word;
}

.field-value--empty[b-dhwa8jddfl] {
    color: var(--lb-muted);
    font-style: italic;
}

.field-with-gear[b-dhwa8jddfl] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.field-with-gear > :first-child[b-dhwa8jddfl] {
    flex: 1;
}

.code-data-gear[b-dhwa8jddfl] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    color: var(--lb-muted);
}

.code-data-gear:hover[b-dhwa8jddfl] {
    color: var(--lb-brand);
}

@media (max-width: 768px) {
    .field-grid[b-dhwa8jddfl] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 576px) {
    .field-grid[b-dhwa8jddfl] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/CaseForms/Investigation/Extensions/ConstructionAccidentSection.razor.rz.scp.css */
/* ConstructionAccidentSection scoped styles */
.section-header-row[b-xwcchl0pyz] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-xwcchl0pyz] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-xwcchl0pyz] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-xwcchl0pyz] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-xwcchl0pyz] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-xwcchl0pyz] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-xwcchl0pyz] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-xwcchl0pyz] { min-width: 0; }
.field-cell--full[b-xwcchl0pyz] { grid-column: 1 / -1; }
.field-label[b-xwcchl0pyz] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-xwcchl0pyz] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-xwcchl0pyz] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-xwcchl0pyz] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-xwcchl0pyz] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/FelaDetailSection.razor.rz.scp.css */
/* FelaDetailSection scoped styles */
.section-header-row[b-nf904e4uwk] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-nf904e4uwk] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-nf904e4uwk] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-nf904e4uwk] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-nf904e4uwk] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-nf904e4uwk] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-nf904e4uwk] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-nf904e4uwk] { min-width: 0; }
.field-cell--full[b-nf904e4uwk] { grid-column: 1 / -1; }
.field-label[b-nf904e4uwk] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-nf904e4uwk] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-nf904e4uwk] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-nf904e4uwk] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-nf904e4uwk] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/MedicalMalpracticeSection.razor.rz.scp.css */
/* MedicalMalpracticeSection scoped styles */
.section-header-row[b-rmavrhqtg2] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-rmavrhqtg2] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-rmavrhqtg2] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-rmavrhqtg2] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-rmavrhqtg2] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-rmavrhqtg2] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-rmavrhqtg2] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-rmavrhqtg2] { min-width: 0; }
.field-cell--full[b-rmavrhqtg2] { grid-column: 1 / -1; }
.field-label[b-rmavrhqtg2] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-rmavrhqtg2] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-rmavrhqtg2] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-rmavrhqtg2] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-rmavrhqtg2] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/NursingHomeDetailSection.razor.rz.scp.css */
/* NursingHomeDetailSection scoped styles */
.section-header-row[b-88f6lbo6to] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-88f6lbo6to] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-88f6lbo6to] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-88f6lbo6to] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-88f6lbo6to] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-88f6lbo6to] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-88f6lbo6to] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-88f6lbo6to] { min-width: 0; }
.field-cell--full[b-88f6lbo6to] { grid-column: 1 / -1; }
.field-label[b-88f6lbo6to] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-88f6lbo6to] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-88f6lbo6to] { color: var(--lb-muted); font-style: italic; }
.field-validation-error[b-88f6lbo6to] { color: var(--lb-danger, #d32f2f); font-size: 0.75rem; margin-top: 2px; }
@media (max-width: 768px) { .field-grid[b-88f6lbo6to] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-88f6lbo6to] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/PremisesLiabilitySection.razor.rz.scp.css */
/* PremisesLiabilitySection scoped styles */
.section-header-row[b-s0zn5nago0] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-s0zn5nago0] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-s0zn5nago0] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-s0zn5nago0] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-s0zn5nago0] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-s0zn5nago0] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-s0zn5nago0] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-s0zn5nago0] { min-width: 0; }
.field-cell--full[b-s0zn5nago0] { grid-column: 1 / -1; }
.field-label[b-s0zn5nago0] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-s0zn5nago0] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-s0zn5nago0] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-s0zn5nago0] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-s0zn5nago0] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/ProductLiabilitySection.razor.rz.scp.css */
/* ProductLiabilitySection scoped styles */
.section-header-row[b-k7f46hh9tn] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-k7f46hh9tn] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-k7f46hh9tn] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-k7f46hh9tn] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-k7f46hh9tn] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-k7f46hh9tn] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-k7f46hh9tn] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-k7f46hh9tn] { min-width: 0; }
.field-cell--full[b-k7f46hh9tn] { grid-column: 1 / -1; }
.field-label[b-k7f46hh9tn] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-k7f46hh9tn] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-k7f46hh9tn] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-k7f46hh9tn] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-k7f46hh9tn] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/SexualAbuseSection.razor.rz.scp.css */
/* SexualAbuseSection scoped styles */
.section-header-row[b-fepo6sgb42] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-fepo6sgb42] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-fepo6sgb42] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-fepo6sgb42] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-fepo6sgb42] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-fepo6sgb42] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-fepo6sgb42] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-fepo6sgb42] { min-width: 0; }
.field-cell--full[b-fepo6sgb42] { grid-column: 1 / -1; }
.field-label[b-fepo6sgb42] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-fepo6sgb42] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-fepo6sgb42] { color: var(--lb-muted); font-style: italic; }
.field-validation-error[b-fepo6sgb42] { color: var(--lb-danger, #d32f2f); font-size: 0.75rem; margin-top: 2px; }
@media (max-width: 768px) { .field-grid[b-fepo6sgb42] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-fepo6sgb42] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/ToxicTortSection.razor.rz.scp.css */
/* ToxicTortSection scoped styles */
.section-header-row[b-61uthe81fo] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-61uthe81fo] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-61uthe81fo] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-61uthe81fo] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-61uthe81fo] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-61uthe81fo] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-61uthe81fo] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-61uthe81fo] { min-width: 0; }
.field-cell--full[b-61uthe81fo] { grid-column: 1 / -1; }
.field-label[b-61uthe81fo] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-61uthe81fo] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-61uthe81fo] { color: var(--lb-muted); font-style: italic; }
.field-validation-error[b-61uthe81fo] { color: var(--lb-danger, #d32f2f); font-size: 0.75rem; margin-top: 2px; }
@media (max-width: 768px) { .field-grid[b-61uthe81fo] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-61uthe81fo] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/TruckingDetailSection.razor.rz.scp.css */
/* TruckingDetailSection scoped styles */
.section-header-row[b-gi2dm4v79m] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-gi2dm4v79m] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-gi2dm4v79m] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-gi2dm4v79m] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-gi2dm4v79m] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-gi2dm4v79m] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-gi2dm4v79m] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-gi2dm4v79m] { min-width: 0; }
.field-cell--full[b-gi2dm4v79m] { grid-column: 1 / -1; }
.field-label[b-gi2dm4v79m] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-gi2dm4v79m] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-gi2dm4v79m] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-gi2dm4v79m] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-gi2dm4v79m] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/Extensions/WrongfulDeathSection.razor.rz.scp.css */
/* WrongfulDeathSection scoped styles */
.section-header-row[b-uapnsmuf3r] { display: flex; justify-content: space-between; align-items: center; width: 100%; padding-right: 8px; }
.section-title[b-uapnsmuf3r] { font-weight: 600; font-size: 0.95rem; }
.completeness-pill[b-uapnsmuf3r] { display: inline-flex; align-items: center; padding: 2px 10px; border-radius: 12px; font-size: 0.75rem; font-weight: 600; white-space: nowrap; }
.completeness--done[b-uapnsmuf3r] { background: var(--lb-success-bg); color: var(--lb-success-text); }
.completeness--partial[b-uapnsmuf3r] { background: var(--lb-warning-bg); color: var(--lb-warning-text); }
.completeness--empty[b-uapnsmuf3r] { background: var(--lb-secondary-bg); color: var(--lb-secondary-text); }
.field-grid[b-uapnsmuf3r] { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 8px 20px; padding: 12px 0; }
.field-cell[b-uapnsmuf3r] { min-width: 0; }
.field-cell--full[b-uapnsmuf3r] { grid-column: 1 / -1; }
.field-label[b-uapnsmuf3r] { font-size: 0.8rem; color: var(--lb-label); margin-bottom: 4px; font-weight: 500; }
.field-value[b-uapnsmuf3r] { font-size: 0.9rem; color: var(--lb-text); word-break: break-word; }
.field-value--empty[b-uapnsmuf3r] { color: var(--lb-muted); font-style: italic; }
@media (max-width: 768px) { .field-grid[b-uapnsmuf3r] { grid-template-columns: 1fr 1fr; } }
@media (max-width: 576px) { .field-grid[b-uapnsmuf3r] { grid-template-columns: 1fr; } }
/* /Components/Pages/CaseForms/Investigation/IncidentDetailAccordion.razor.rz.scp.css */
/* IncidentDetailAccordion scoped styles */
/* -- Section header with completeness pill -- */
.section-header-row[b-zdo06ar7ti] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    width: 100%;
    padding-right: 8px;
}

.section-title[b-zdo06ar7ti] {
    font-weight: 600;
    font-size: 0.95rem;
}

.completeness-pill[b-zdo06ar7ti] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.completeness--done[b-zdo06ar7ti] {
    background: var(--lb-success-bg);
    color: var(--lb-success-text);
}

.completeness--partial[b-zdo06ar7ti] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text);
}

.completeness--empty[b-zdo06ar7ti] {
    background: var(--lb-secondary-bg);
    color: var(--lb-secondary-text);
}

/* -- Field grid layout -- */
.field-grid[b-zdo06ar7ti] {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 8px 20px;
    padding: 12px 0;
}

.field-cell[b-zdo06ar7ti] {
    min-width: 0;
}

.field-cell--full[b-zdo06ar7ti] {
    grid-column: 1 / -1;
}

.field-label[b-zdo06ar7ti] {
    font-size: 0.8rem;
    color: var(--lb-label);
    margin-bottom: 4px;
    font-weight: 500;
}

.field-value[b-zdo06ar7ti] {
    font-size: 0.9rem;
    color: var(--lb-text);
    word-break: break-word;
}

.field-value--empty[b-zdo06ar7ti] {
    color: var(--lb-muted);
    font-style: italic;
}

/* -- Responsive breakpoints -- */
@media (max-width: 768px) {
    .field-grid[b-zdo06ar7ti] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 576px) {
    .field-grid[b-zdo06ar7ti] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/CaseForms/Investigation/WcIncidentSection.razor.rz.scp.css */
/* WcIncidentSection scoped styles */
.field-grid[b-h7v2s1quuu] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px 20px;
    padding: 8px 0;
}

.field-grid-2col[b-h7v2s1quuu] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px 20px;
    padding: 8px 0;
}

.field-cell[b-h7v2s1quuu] {
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.field-cell--full[b-h7v2s1quuu],
.field-cell--full-width[b-h7v2s1quuu] {
    grid-column: 1 / -1;
}

.field-label[b-h7v2s1quuu] {
    font-size: 11px;
    font-weight: 500;
    color: var(--lb-text-dim);
    margin-bottom: 4px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.field-value[b-h7v2s1quuu] {
    min-height: 20px;
    font-size: 13px;
    color: var(--lb-text-bright);
    word-break: break-word;
}

.field-value--empty[b-h7v2s1quuu] {
    color: var(--lb-text-muted);
    font-style: italic;
}

.field-value--checkbox[b-h7v2s1quuu] {
    display: inline-flex;
    align-items: center;
}

.section-header-row[b-h7v2s1quuu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    width: 100%;
    padding-right: 8px;
}

.section-title[b-h7v2s1quuu] {
    font-size: 0.95rem;
    font-weight: 600;
    color: var(--lb-text);
}

.completeness-pill[b-h7v2s1quuu] {
    display: inline-flex;
    align-items: center;
    border-radius: 999px;
    padding: 2px 10px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.completeness--done[b-h7v2s1quuu] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.completeness--partial[b-h7v2s1quuu] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.completeness--empty[b-h7v2s1quuu] {
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
}

.field-with-gear[b-h7v2s1quuu] {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-h7v2s1quuu] .field-with-gear .e-ddl {
    flex: 1;
}

.sub-label[b-h7v2s1quuu] {
    margin: 4px 0 8px;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--lb-border);
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-dim);
}

.contact-link[b-h7v2s1quuu] {
    color: var(--lb-info);
    text-decoration: underline;
}

.check-row[b-h7v2s1quuu] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    padding: 8px 0;
}

.check-item[b-h7v2s1quuu] {
    min-width: 160px;
}

.checkbox-icon[b-h7v2s1quuu] {
    width: 16px;
    height: 16px;
}

/* MarkupString-injected SVGs bypass CSS isolation; constrain from parent */
.field-value--checkbox[b-h7v2s1quuu]  svg,
.field-value--checkbox svg[b-h7v2s1quuu] {
    width: 16px;
    height: 16px;
}

.code-data-gear[b-h7v2s1quuu] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-card);
    color: var(--lb-text-dim);
    cursor: pointer;
}

.code-data-gear:hover[b-h7v2s1quuu] {
    background: var(--lb-elevated);
    color: var(--lb-text);
}

@media (max-width: 768px) {
    .field-grid[b-h7v2s1quuu],
    .field-grid-2col[b-h7v2s1quuu] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 576px) {
    .field-grid[b-h7v2s1quuu],
    .field-grid-2col[b-h7v2s1quuu] {
        grid-template-columns: minmax(0, 1fr);
    }
}
/* /Components/Pages/CaseForms/Phone/CaseOverviewPhone.razor.rz.scp.css */
/* ===================================================================
 * CaseOverviewPhone.razor.css -- Phone-tier case overview styling
 * ===================================================================
 * All sizing is in rem/px values appropriate for a 390-768px viewport.
 * Component is rendered inside CaseDataForm at Phone tier only, so we
 * don't need @media queries to scope -- the markup gating handles it.
 * Tokens used from app.css :root: --lb-card, --lb-bg-surface, --lb-text,
 * --lb-text-muted, --lb-text-dim, --lb-border, --lb-border-light,
 * --lb-radius-card, --lb-brand, --lb-danger, --lb-warning, --lb-info,
 * --lb-success.
 */

.ovp-shell[b-ljfc5fxso6] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 12px;
}

/* -- Generic card (used by Header, Key Dates, Sections) -- */
.ovp-card[b-ljfc5fxso6] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 12px 14px;
}

.ovp-card-label[b-ljfc5fxso6] {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    margin-bottom: 8px;
}

/* -- Header card -- */
.ovp-header-top[b-ljfc5fxso6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 4px;
}

.ovp-file-num[b-ljfc5fxso6] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    font-variant-numeric: tabular-nums;
}

.ovp-status-pill[b-ljfc5fxso6] {
    font-size: 0.65rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    padding: 2px 8px;
    border-radius: 999px;
    text-transform: uppercase;
}

.ovp-status-pill.ovp-open[b-ljfc5fxso6] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.ovp-status-pill.ovp-closed[b-ljfc5fxso6] {
    background: var(--lb-text-dim);
    color: var(--lb-bg-white);
}

.ovp-case-name[b-ljfc5fxso6] {
    margin: 0 0 6px 0;
    font-size: 1.05rem;
    font-weight: 600;
    color: var(--lb-text);
    line-height: 1.3;
    word-break: break-word;
}

.ovp-stage-row[b-ljfc5fxso6] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

.ovp-stage-dot[b-ljfc5fxso6] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.ovp-stage-name[b-ljfc5fxso6] {
    color: var(--lb-text);
    font-weight: 500;
}

.ovp-case-type[b-ljfc5fxso6] {
    color: var(--lb-text-muted);
}

/* -- Key dates strip -- */
.ovp-keydates-strip[b-ljfc5fxso6] {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding-bottom: 4px;
    -webkit-overflow-scrolling: touch;
    scroll-snap-type: x proximity;
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

.ovp-keydate[b-ljfc5fxso6] {
    flex: 0 0 auto;
    min-width: 110px;
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border-light);
    border-left: 3px solid var(--lb-text-muted);
    border-radius: 6px;
    padding: 8px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    scroll-snap-align: start;
}

.ovp-keydate-label[b-ljfc5fxso6] {
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.ovp-keydate-value[b-ljfc5fxso6] {
    font-size: 0.85rem;
    color: var(--lb-text);
    font-weight: 500;
    font-variant-numeric: tabular-nums;
}

.ovp-keydate-countdown[b-ljfc5fxso6] {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    font-variant-numeric: tabular-nums;
}

.ovp-keydate-filed[b-ljfc5fxso6] {
    font-size: 0.7rem;
    color: var(--lb-success);
    font-weight: 600;
}

.ovp-urgency-warning[b-ljfc5fxso6] {
    border-left-color: var(--lb-warning);
}

.ovp-urgency-warning .ovp-keydate-countdown[b-ljfc5fxso6] {
    color: var(--lb-warning);
    font-weight: 600;
}

.ovp-urgency-critical[b-ljfc5fxso6] {
    border-left-color: var(--lb-danger);
    background: var(--lb-danger-bg);
}

.ovp-urgency-critical .ovp-keydate-countdown[b-ljfc5fxso6] {
    color: var(--lb-danger);
    font-weight: 700;
}

.ovp-urgency-critical .ovp-keydate-value[b-ljfc5fxso6] {
    color: var(--lb-danger);
}

/* -- Pulse 2x2 grid -- */
.ovp-pulse-grid[b-ljfc5fxso6] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
}

.ovp-pulse-card[b-ljfc5fxso6] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 10px 12px;
    min-height: 70px;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ovp-pulse-label[b-ljfc5fxso6] {
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.ovp-pulse-value[b-ljfc5fxso6] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}

.ovp-pulse-value-sm[b-ljfc5fxso6] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    line-height: 1.2;
}

.ovp-pulse-sub[b-ljfc5fxso6] {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ovp-pulse-sub.ovp-pulse-warning[b-ljfc5fxso6] {
    color: var(--lb-warning);
    font-weight: 600;
}

/* -- Section navigator -- */
.ovp-sections[b-ljfc5fxso6] {
    padding: 12px 0 8px 0;
}

.ovp-sections .ovp-card-label[b-ljfc5fxso6] {
    padding: 0 14px;
}

.ovp-section-link[b-ljfc5fxso6] {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 12px 14px;
    background: transparent;
    border: none;
    border-top: 1px solid var(--lb-border-light);
    color: var(--lb-text);
    font-size: 0.95rem;
    text-align: left;
    cursor: pointer;
    transition: background 0.12s ease;
    min-height: 44px;
}

.ovp-section-link:first-of-type[b-ljfc5fxso6] {
    border-top: 1px solid var(--lb-border-light);
}

.ovp-section-link:hover[b-ljfc5fxso6],
.ovp-section-link:focus-visible[b-ljfc5fxso6] {
    background: var(--lb-bg-surface);
    outline: none;
}

/* SOL lookup failed (issue #676) — danger-styled card so a missing legally-significant
   deadline reads as an error, never as a benign "no SOL on file". */
.ovp-sol-unavailable[b-ljfc5fxso6] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    border-color: var(--lb-danger);
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
    font-size: 0.85rem;
    font-weight: 600;
}

.ovp-sol-unavailable .e-icons[b-ljfc5fxso6] {
    flex-shrink: 0;
    margin-top: 2px;
}

.ovp-section-icon[b-ljfc5fxso6] {
    color: var(--lb-text-muted);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.ovp-section-name[b-ljfc5fxso6] {
    flex: 1;
    font-weight: 500;
}

.ovp-section-count[b-ljfc5fxso6] {
    font-size: 0.75rem;
    font-weight: 600;
    background: var(--lb-info-bg);
    color: var(--lb-info);
    padding: 2px 8px;
    border-radius: 999px;
    font-variant-numeric: tabular-nums;
    flex-shrink: 0;
}

.ovp-section-count.ovp-section-count-warning[b-ljfc5fxso6] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.ovp-section-caret[b-ljfc5fxso6] {
    color: var(--lb-text-dim);
    font-size: 0.85rem;
    flex-shrink: 0;
}
/* /Components/Pages/CaseLeads.razor.rz.scp.css */
/* CaseLeads.razor.css -- consolidated styles for case leads page */

.cl-container[b-gwt4hkqzwp] {
    padding: 0 1.5rem 1.5rem;
    max-width: 1400px;
    margin: 0 auto;
}

/* -- Tab Header -- */

.cl-tab-bar[b-gwt4hkqzwp] {
    display: flex;
    gap: 0;
    border-bottom: 2px solid var(--lb-border);
    margin-bottom: 1.25rem;
    padding-top: 0.25rem;
}

.cl-tab[b-gwt4hkqzwp] {
    padding: 0.6rem 1rem;
    font-size: 0.875rem;
    font-weight: 500;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    color: var(--lb-text-muted);
    cursor: pointer;
    transition: color 0.15s, border-color 0.15s;
}

.cl-tab:hover:not(:disabled)[b-gwt4hkqzwp] {
    color: var(--lb-text);
}

.cl-tab:disabled[b-gwt4hkqzwp] {
    opacity: 0.5;
    cursor: default;
}

.cl-tab-active[b-gwt4hkqzwp] {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
    font-weight: 600;
}

.cl-tab-badge[b-gwt4hkqzwp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 1.25rem;
    height: 1.25rem;
    padding: 0 0.35rem;
    margin-left: 0.35rem;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 700;
    background: var(--lb-brand);
    color: #fff;
}

/* -- Header -- */

.cl-header[b-gwt4hkqzwp] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 1.25rem;
    gap: 1rem;
}

.cl-title[b-gwt4hkqzwp] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text-bright);
}

.cl-subtitle[b-gwt4hkqzwp] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    margin-top: 0.25rem;
}

.cl-intake-btn[b-gwt4hkqzwp] {
    white-space: nowrap;
    border-radius: 6px;
    font-weight: 600;
}

/* -- Stat Cards row -- */

.cl-stat-row[b-gwt4hkqzwp] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 1.5rem;
}

/* -- Toolbar (pills + view toggle) -- */

.cl-toolbar[b-gwt4hkqzwp] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.cl-status-pills[b-gwt4hkqzwp] {
    display: flex;
    gap: 0;
}

.cl-pill[b-gwt4hkqzwp] {
    padding: 0.4rem 0.85rem;
    font-size: 0.8125rem;
    font-weight: 500;
    background: none;
    border: 1px solid var(--lb-border);
    color: var(--lb-text-muted);
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.cl-pill:first-child[b-gwt4hkqzwp] {
    border-radius: 16px 0 0 16px;
}

.cl-pill:last-child[b-gwt4hkqzwp] {
    border-radius: 0 16px 16px 0;
}

.cl-pill:not(:first-child)[b-gwt4hkqzwp] {
    margin-left: -1px;
}

.cl-pill:hover[b-gwt4hkqzwp] {
    background: var(--lb-surface-alt);
}

.cl-pill-active[b-gwt4hkqzwp] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
    z-index: 1;
    position: relative;
}

.cl-pill-active:hover[b-gwt4hkqzwp] {
    background: var(--lb-brand-hover);
    color: #fff;
}

/* -- View toggle -- */

.cl-view-toggle[b-gwt4hkqzwp] {
    display: inline-flex;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    overflow: hidden;
}

.cl-toggle-btn[b-gwt4hkqzwp] {
    padding: 0.4rem 0.85rem;
    font-size: 0.8125rem;
    font-weight: 500;
    background: var(--lb-bg-white);
    color: var(--lb-text-muted);
    border: none;
    cursor: pointer;
    transition: background 0.15s, color 0.15s;
}

.cl-toggle-btn:not(:last-child)[b-gwt4hkqzwp] {
    border-right: 1px solid var(--lb-border);
}

.cl-toggle-btn:hover[b-gwt4hkqzwp] {
    background: var(--lb-surface-alt);
}

.cl-toggle-active[b-gwt4hkqzwp] {
    background: var(--lb-surface-alt);
    color: var(--lb-text);
    font-weight: 600;
}

/* -- Search + Priority filter bar -- */

.cl-filter-bar[b-gwt4hkqzwp] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.cl-fb-dropdown[b-gwt4hkqzwp] {
    min-width: 140px;
    max-width: 180px;
}

.cl-fb-search-wrap[b-gwt4hkqzwp] {
    flex: 1 1 240px;
    max-width: 360px;
}

.cl-fb-apply[b-gwt4hkqzwp],
.cl-fb-clear[b-gwt4hkqzwp] {
    flex: 0 0 auto;
}

/* -- Grid -- */

.cl-grid-container[b-gwt4hkqzwp] {
    position: relative;
}

/* -- Grid: Status dot + text (::deep for Syncfusion template slots) -- */

.cl-grid-container[b-gwt4hkqzwp]  .cl-status-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-right: 0.4rem;
    vertical-align: middle;
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-status-text {
    font-size: 0.8125rem;
    font-weight: 500;
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-new { background: var(--lb-info); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-new { color: var(--lb-info); }

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-contacted { background: var(--lb-brand); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-contacted { color: var(--lb-brand); }

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-under-review { background: var(--lb-warning); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-under-review { color: var(--lb-warning); }

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-approved { background: var(--lb-success); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-approved { color: var(--lb-success); }

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-signed { background: var(--lb-success); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-signed { color: var(--lb-success); }

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-declined { background: var(--lb-danger); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-declined { color: var(--lb-danger); }

.cl-grid-container[b-gwt4hkqzwp]  .cl-dot-withdrawn { background: var(--lb-text-muted); }
.cl-grid-container[b-gwt4hkqzwp]  .cl-text-withdrawn { color: var(--lb-text-muted); }

/* -- Grid: Phone link -- */

.cl-grid-container[b-gwt4hkqzwp]  .cl-phone-link {
    color: var(--lb-text);
    text-decoration: none;
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-phone-link:hover {
    color: var(--lb-brand);
    text-decoration: underline;
}

/* -- Grid: Unassigned -- */

.cl-grid-container[b-gwt4hkqzwp]  .cl-unassigned {
    color: var(--lb-brand);
    font-style: italic;
    font-size: 0.8125rem;
}

/* -- Grid: SOL date -- */

.cl-grid-container[b-gwt4hkqzwp]  .cl-sol-date {
    font-weight: 600;
    color: var(--lb-text);
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-sol-warn {
    color: var(--lb-warning);
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-sol-days {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin-left: 0.25rem;
}

/* -- Grid: Priority -- */

.cl-grid-container[b-gwt4hkqzwp]  .cl-pri-urgent {
    color: var(--lb-danger);
    font-weight: 600;
    font-size: 0.8125rem;
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-pri-high {
    color: var(--lb-warning);
    font-weight: 600;
    font-size: 0.8125rem;
}

.cl-grid-container[b-gwt4hkqzwp]  .cl-pri-normal {
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
}

/* -- Grid: Convert-to-Case row action (#1127) -- */
/* Wrapper around the disabled "Convert to Case" button on non-Approved leads.
   It carries the explanatory tooltip and not-allowed cursor, since a disabled
   button does not itself receive hover events. */
.cl-grid-container[b-gwt4hkqzwp]  .cl-convert-locked {
    display: inline-flex;
    cursor: not-allowed;
}

/* -- Status badges (used in review queue cards) -- */

.cl-status-badge[b-gwt4hkqzwp] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.cl-status-new[b-gwt4hkqzwp] { background: var(--lb-info-bg); color: var(--lb-info); }
.cl-status-contacted[b-gwt4hkqzwp] { background: color-mix(in srgb, var(--lb-brand) 12%, transparent); color: var(--lb-brand); }
.cl-status-under-review[b-gwt4hkqzwp] { background: var(--lb-warning-bg); color: var(--lb-warning); }
.cl-status-approved[b-gwt4hkqzwp] { background: var(--lb-success-bg); color: var(--lb-success); }
.cl-status-signed[b-gwt4hkqzwp] { background: var(--lb-success-bg); color: var(--lb-success); }
.cl-status-declined[b-gwt4hkqzwp] { background: var(--lb-danger-bg); color: var(--lb-danger); }
.cl-status-withdrawn[b-gwt4hkqzwp] { background: var(--lb-elevated); color: var(--lb-text-muted); }

/* -- Priority badges (review queue) -- */

.cl-priority-badge[b-gwt4hkqzwp] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.75rem;
    font-weight: 600;
    white-space: nowrap;
}

.cl-priority-low[b-gwt4hkqzwp] { background: var(--lb-elevated); color: var(--lb-text-muted); }
.cl-priority-normal[b-gwt4hkqzwp] { background: var(--lb-info-bg); color: var(--lb-info); }
.cl-priority-high[b-gwt4hkqzwp] { background: var(--lb-warning-bg); color: var(--lb-warning); }
.cl-priority-urgent[b-gwt4hkqzwp] { background: var(--lb-danger-bg); color: var(--lb-danger); }

/* -- Kanban (::deep for Syncfusion template slots) -- */

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card {
    padding: 0.5rem 0.6rem;
    cursor: pointer;
    border-left: 3px solid var(--lb-border);
    border-radius: 4px;
}

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-urgent { border-left-color: var(--lb-danger); }
.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-high { border-left-color: var(--lb-warning); }

.cl-container[b-gwt4hkqzwp]  .cl-kanban-col-header { display: flex; align-items: center; gap: 0.5rem; }
.cl-container[b-gwt4hkqzwp]  .cl-kanban-col-count {
    background: var(--lb-surface-alt);
    border-radius: 10px;
    padding: 0.1rem 0.45rem;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-name {
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-type { font-size: 0.75rem; color: var(--lb-text-muted); margin-top: 0.15rem; }

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-footer {
    display: flex;
    gap: 0.5rem;
    align-items: center;
    margin-top: 0.35rem;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-value { font-weight: 600; color: var(--lb-success); }
.cl-container[b-gwt4hkqzwp]  .cl-kanban-sol { display: flex; align-items: center; gap: 0.2rem; }
.cl-container[b-gwt4hkqzwp]  .cl-kanban-sol-urgent { color: var(--lb-danger); font-weight: 600; }
.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-days { margin-left: auto; }

.cl-container[b-gwt4hkqzwp]  .cl-kanban-card-assigned {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-top: 0.25rem;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Review Queue Cards -- */

.cl-rq-cards[b-gwt4hkqzwp] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 1rem;
}

.cl-rq-card[b-gwt4hkqzwp] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 0.75rem 1rem;
    cursor: pointer;
    transition: box-shadow 0.15s;
}

.cl-rq-card:hover[b-gwt4hkqzwp] {
    box-shadow: var(--lb-shadow-lg);
}

.cl-rq-card-top[b-gwt4hkqzwp] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
}

.cl-rq-card-name[b-gwt4hkqzwp] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--lb-text);
}

.cl-rq-card-name:hover[b-gwt4hkqzwp] {
    color: var(--lb-brand);
    text-decoration: underline;
}

.cl-rq-card-desc[b-gwt4hkqzwp] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.5rem;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.cl-rq-card-meta[b-gwt4hkqzwp] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.5rem;
}

.cl-rq-card-bottom[b-gwt4hkqzwp] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.cl-rq-card-actions[b-gwt4hkqzwp] { display: flex; gap: 0.35rem; }
.cl-rq-card-age[b-gwt4hkqzwp] { font-size: 0.75rem; color: var(--lb-text-muted); }

.cl-rq-empty[b-gwt4hkqzwp] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
}

/* -- SOL alerts section -- */

.cl-sol-section[b-gwt4hkqzwp] {
    margin-top: 1.5rem;
    border-top: 1px solid var(--lb-border);
    padding-top: 1rem;
}

.cl-sol-toggle[b-gwt4hkqzwp] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-text);
    font-weight: 600;
    font-size: 0.9rem;
}

.cl-sol-title[b-gwt4hkqzwp] { display: flex; align-items: center; gap: 0.5rem; }

.cl-sol-badge[b-gwt4hkqzwp] {
    background: var(--lb-danger);
    color: #fff;
    border-radius: 10px;
    padding: 0.1rem 0.55rem;
    font-size: 0.8rem;
    font-weight: 600;
}

.cl-sol-indicator[b-gwt4hkqzwp] { font-size: 0.75rem; transition: transform 0.2s; }

/* -- Days badge (::deep for SOL alerts grid) -- */

.cl-sol-section[b-gwt4hkqzwp]  .cl-days-badge {
    display: inline-block;
    padding: 0.15rem 0.6rem;
    border-radius: 4px;
    font-weight: 600;
    font-size: 0.85rem;
}

.cl-sol-section[b-gwt4hkqzwp]  .cl-days-critical { background: var(--lb-danger); color: #fff; }
.cl-sol-section[b-gwt4hkqzwp]  .cl-days-warning { background: var(--lb-warning); color: #fff; }
.cl-sol-section[b-gwt4hkqzwp]  .cl-days-ok { background: var(--lb-success); color: #fff; }

/* -- Utility -- */

.cl-loading[b-gwt4hkqzwp] {
    display: flex;
    justify-content: center;
    padding: 3rem;
    color: var(--lb-text-muted);
}

.cl-disabled[b-gwt4hkqzwp] {
    opacity: 0.6;
    pointer-events: none;
}

/* -- Responsive -- */

@media (max-width: 768px) {
    .cl-stat-row[b-gwt4hkqzwp] {
        grid-template-columns: repeat(2, 1fr);
    }

    .cl-toolbar[b-gwt4hkqzwp] {
        flex-direction: column;
        align-items: flex-start;
    }

    .cl-rq-cards[b-gwt4hkqzwp] {
        grid-template-columns: 1fr;
    }

    .cl-header[b-gwt4hkqzwp] {
        flex-direction: column;
    }
}

@media (max-width: 576px) {
    .cl-stat-row[b-gwt4hkqzwp] {
        grid-template-columns: 1fr;
    }

    .cl-status-pills[b-gwt4hkqzwp] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Cases/AttorneyRequestsPage.razor.rz.scp.css */
/* Attorney Requests page styles */

.ar-loading[b-4nnsv9wnme],
.ar-grid-loading[b-4nnsv9wnme] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

.ar-header[b-4nnsv9wnme] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    padding: 1.25rem 1.5rem 0.75rem;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.ar-header-left[b-4nnsv9wnme] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.ar-back-link[b-4nnsv9wnme] {
    font-size: 0.8125rem;
    color: var(--lb-text-secondary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

    .ar-back-link:hover[b-4nnsv9wnme] {
        color: var(--lb-brand);
    }

.ar-title[b-4nnsv9wnme] {
    font-size: 1.375rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 0;
}

.ar-subtitle[b-4nnsv9wnme] {
    font-size: 0.8125rem;
    color: var(--lb-text-secondary);
}

.ar-grid-container[b-4nnsv9wnme] {
    padding: 0 1.5rem;
}

.ar-case-link[b-4nnsv9wnme] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-brand);
    cursor: pointer;
    font: inherit;
    text-align: left;
}

    .ar-case-link:hover[b-4nnsv9wnme] {
        text-decoration: underline;
    }

.ar-type-badge[b-4nnsv9wnme] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 500;
}

.ar-type--document[b-4nnsv9wnme] {
    background: var(--lb-info-bg, #e8f4fd);
    color: var(--lb-info, #0277bd);
}

.ar-type--task[b-4nnsv9wnme] {
    background: var(--lb-warning-bg, #fff3e0);
    color: var(--lb-warning, #e65100);
}

.ar-status-badge[b-4nnsv9wnme] {
    display: inline-block;
    padding: 0.125rem 0.5rem;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 500;
    background: var(--lb-danger-bg, #fde8e8);
    color: var(--lb-danger, #c62828);
}

.ar-footer[b-4nnsv9wnme] {
    padding: 0.75rem 1.5rem;
    font-size: 0.8125rem;
    color: var(--lb-text-secondary);
}
/* /Components/Pages/Cases/CasesByPhase.razor.rz.scp.css */
.byphase-root[b-zjxtl2zc8k] {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    min-height: 0;
}

.filter-toolbar[b-zjxtl2zc8k] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.65rem;
}

.filter-group[b-zjxtl2zc8k] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(170px, 1fr));
    gap: 0.55rem;
    width: 100%;
}

.byphase-content[b-zjxtl2zc8k] {
    min-height: 420px;
}

.byphase-loading[b-zjxtl2zc8k],
.byphase-empty[b-zjxtl2zc8k] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 280px;
    color: var(--lb-text-muted);
}

.phase-card[b-zjxtl2zc8k] {
    cursor: pointer;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    padding: 0.75rem;
}

.phase-card-header[b-zjxtl2zc8k] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

.phase-card-title[b-zjxtl2zc8k] {
    font-weight: 600;
    color: var(--lb-text);
}

.phase-card-meta[b-zjxtl2zc8k] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}
/* /Components/Pages/Cases/MyCases.razor.rz.scp.css */
/* -- My Cases page scoped styles -- */

.mycases-root[b-82kkyek4fu] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
    height: calc(100vh - 70px);
    min-height: 0;
}

/* -- Stat cards row -- */
.stat-row[b-82kkyek4fu] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

@media (max-width: 768px) {
    .stat-row[b-82kkyek4fu] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .stat-row[b-82kkyek4fu] {
        grid-template-columns: 1fr;
    }
}

/* -- Filter toolbar (wrapper holds both bar and chip bar) -- */
.filter-toolbar[b-82kkyek4fu] {
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    overflow: hidden;
}

/* -- Compact inline filter bar -- */
.filter-bar[b-82kkyek4fu] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
    background: var(--lb-surface-alt);
}

/* Dropdowns: fixed compact width */
[b-82kkyek4fu] .fb-dropdown.e-ddl {
    max-width: 140px;
    min-width: 100px;
}

/* Search wrapper: icon + input */
.fb-search-wrap[b-82kkyek4fu] {
    position: relative;
    display: flex;
    align-items: center;
    flex: 1 1 120px;
    max-width: 200px;
    min-width: 120px;
}

.fb-search[b-82kkyek4fu] {
    width: 100%;
}

/* Apply button: compact */
[b-82kkyek4fu] .fb-apply.e-btn {
    padding: 5px 14px;
    font-size: 12px;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Vertical separator between dropdowns and search */
.fb-separator[b-82kkyek4fu] {
    display: inline-block;
    width: 0.5px;
    height: 22px;
    background: var(--lb-border-light);
    flex-shrink: 0;
}

/* "Include closed cases" toggle: keep it inline and un-squished beside the
   dropdowns on the flex row; the label stays on a single line. */
[b-82kkyek4fu] .fb-checkbox {
    flex-shrink: 0;
    white-space: nowrap;
}

/* When chips are present: remove bottom radius from bar, let chip bar connect */
.filter-toolbar.has-chips .filter-bar[b-82kkyek4fu] {
    border-radius: 0;
}

/* -- Phone tier: filters collapse behind a single toggle button --
 * Only renders on Phone tier (gated by @if in markup) so this CSS only
 * affects the .filters-toggle button itself; the .filter-bar styles
 * upstream still apply when expanded.
 */
.filters-toggle[b-82kkyek4fu] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 10px 14px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text);
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s, border-color 0.15s;
}

.filters-toggle:hover[b-82kkyek4fu],
.filters-toggle:focus-visible[b-82kkyek4fu] {
    background: var(--lb-bg-surface);
    border-color: var(--lb-text-muted);
    outline: none;
}

.filters-toggle .filters-toggle-label[b-82kkyek4fu] {
    flex: 1;
}

.filters-toggle .filters-toggle-caret[b-82kkyek4fu] {
    transition: transform 200ms ease;
    color: var(--lb-text-muted);
}

.filters-toggle.expanded .filters-toggle-caret[b-82kkyek4fu] {
    transform: rotate(180deg);
}

/* When the toggle is followed by an expanded filter-bar, square off the
 * shared edge so they read as a single unit. */
.filters-toggle.expanded[b-82kkyek4fu] {
    border-bottom-left-radius: 0;
    border-bottom-right-radius: 0;
    border-bottom: none;
}

.filters-toggle.expanded + .filter-bar[b-82kkyek4fu] {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

/* -- Chip bar -- */
.chip-bar[b-82kkyek4fu] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
    padding: 5px 8px;
    background: var(--lb-surface-alt);
    border-top: 0.5px solid var(--lb-border-light);
}

/* -- Individual chip -- */
.filter-chip[b-82kkyek4fu] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    border-radius: 99px;
    background: var(--lb-bg-white);
    border: 0.5px solid var(--lb-border-light);
    padding: 2px 8px;
    font-size: 11px;
    line-height: 1.4;
}

.chip-label[b-82kkyek4fu] {
    color: var(--lb-text-muted);
}

.chip-value[b-82kkyek4fu] {
    color: var(--lb-text);
    font-weight: 500;
}

.chip-dismiss[b-82kkyek4fu] {
    background: none;
    border: none;
    padding: 0 0 0 3px;
    cursor: pointer;
    font-size: 13px;
    line-height: 1;
    color: var(--lb-text-muted);
    transition: color 0.12s ease;
}

.chip-dismiss:hover[b-82kkyek4fu] {
    color: var(--lb-danger);
}

/* Clear all link */
.chip-clear-all[b-82kkyek4fu] {
    background: none;
    border: none;
    padding: 0;
    margin-left: auto;
    cursor: pointer;
    font-size: 11px;
    color: var(--lb-text-muted);
    text-decoration: underline;
    transition: color 0.12s ease;
}

.chip-clear-all:hover[b-82kkyek4fu] {
    color: var(--lb-text);
}

@media (max-width: 768px) {
    .filter-bar[b-82kkyek4fu] {
        flex-direction: column;
        align-items: stretch;
    }

    [b-82kkyek4fu] .fb-dropdown.e-ddl {
        max-width: 100%;
        width: 100%;
    }

    .fb-search-wrap[b-82kkyek4fu] {
        max-width: 100%;
        width: 100%;
    }

    .fb-separator[b-82kkyek4fu] {
        display: none;
    }
}

/* -- Tablet portrait (768-1199): two-column filter grid --
 * The default flex layout collapses each dropdown onto its own row at this
 * width because Syncfusion's intrinsic dropdown width exceeds half the
 * available space. Switching to an explicit 2-column CSS grid puts:
 *   Row 1: Status + Type
 *   Row 2: Stage + Attorney (or Stage alone for non-managing roles)
 *   Row 3: Search + Apply
 * Saves ~3 row heights vs the stacked layout, fitting more of the case
 * grid above the fold without forcing the user to expand a filter chip.
 */
@media (min-width: 768px) and (max-width: 1199.98px) {
    .filter-bar[b-82kkyek4fu] {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 6px 8px;
        align-items: stretch;
    }

    [b-82kkyek4fu] .fb-dropdown.e-ddl {
        max-width: none;
        min-width: 0;
        width: 100%;
    }

    .fb-search-wrap[b-82kkyek4fu] {
        max-width: none;
        min-width: 0;
        width: 100%;
    }

    .fb-separator[b-82kkyek4fu] {
        display: none;
    }
}

/* -- Grid container -- */
.mycases-grid-container[b-82kkyek4fu] {
    position: relative;
    min-height: 200px;
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

[b-82kkyek4fu] .mycases-grid-container .e-grid {
    flex: 1 1 0;
    min-height: 0;
}

/* On phone the shell (height: calc(100vh - 70px)) is one fixed screen and the
   grid fills the leftover space. But the stacked chrome -- 4 full-width stat
   cards plus the expanded filter panel -- already exceeds the viewport, so the
   flex:1 grid was starved to zero height: the matching rows loaded (the footer
   showed "N filtered cases") but had nowhere to render. Release the fixed
   height, let the page scroll in normal document order, and let the grid keep
   its own inline Height (calc(100vh - 310px)) so the results are reachable. */
@media (max-width: 768px) {
    .mycases-root[b-82kkyek4fu] {
        height: auto;
    }

    .mycases-grid-container[b-82kkyek4fu] {
        flex: 0 0 auto;
    }

    [b-82kkyek4fu] .mycases-grid-container .e-grid {
        flex: 0 0 auto;
    }
}

.grid-loading[b-82kkyek4fu] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

/* -- Cell templates -- */
.file-number[b-82kkyek4fu] {
    font-family: "Cascadia Code", "Fira Code", monospace;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.case-name[b-82kkyek4fu] {
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Stage pill -- */
.stage-pill[b-82kkyek4fu] {
    display: inline-block;
    padding: 2px 8px;
    border-left: 3px solid var(--lb-text-muted);
    border-radius: 3px;
    font-size: 0.8rem;
    background: var(--lb-bg-white);
    color: var(--lb-text);
}

/* -- SOL badges -- */
.sol-badge[b-82kkyek4fu] {
    display: inline-block;
    padding: 2px 6px;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 600;
    text-align: center;
    min-width: 32px;
}

.sol-expired[b-82kkyek4fu] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.sol-urgent[b-82kkyek4fu] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.sol-filed[b-82kkyek4fu] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.sol-normal[b-82kkyek4fu] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

.sol-none[b-82kkyek4fu] {
    font-size: 0.8rem;
    color: var(--lb-text-dim);
}

/* -- Task overdue count -- */
.overdue-count[b-82kkyek4fu] {
    color: var(--lb-danger);
    font-weight: 600;
    font-size: 0.8rem;
    margin-left: 2px;
}

/* -- Stale text -- */
.stale-text[b-82kkyek4fu] {
    color: var(--lb-warning);
}

/* -- Pin button -- */
.pin-btn[b-82kkyek4fu] {
    background: none;
    border: none;
    cursor: pointer;
    opacity: 0.3;
    padding: 4px;
    font-size: 1rem;
    color: var(--lb-brand);
    transition: opacity 0.15s ease;
}

.pin-btn:hover[b-82kkyek4fu],
.pin-btn.pinned[b-82kkyek4fu] {
    opacity: 1;
}

/* Touch fallback: on (hover: none) devices the unpinned pin button stays at
 * its default low opacity. Force full opacity so it's always visible as an
 * actionable button on phones and tablets. */
@media (hover: none) {
    .pin-btn[b-82kkyek4fu] {
        opacity: 1;
    }
}

.pin-btn.pinned[b-82kkyek4fu] {
    color: var(--lb-brand);
}

/* -- Row urgency indicators -- */
/* SOL risk: unfiled case (no court docket #) at/within 60 days of its statute. */
[b-82kkyek4fu] .e-grid .e-row.row-sol-risk {
    border-left: 4px solid var(--lb-danger);
    background-color: color-mix(in srgb, var(--lb-danger) 6%, transparent);
}

[b-82kkyek4fu] .e-grid .e-row.row-stale {
    opacity: 0.75;
}

/* -- Status bar (below grid) -- */
.pager-bar[b-82kkyek4fu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 16px;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-bg-white);
    border-radius: 0 0 8px 8px;
    font-size: 0.85rem;
}

.pager-info[b-82kkyek4fu] {
    color: var(--lb-text-muted);
}

/* Active sort, stated in words (#3038). The header arrow is unavailable here —
   the client sort is cancelled so the server can order the whole caseload — so
   this is the only confirmation the chosen sort is applied and remembered. */
.pager-sort[b-82kkyek4fu] {
    margin-left: 4px;
}

.pager-load-more-group[b-82kkyek4fu] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

/* #3750: a failed "Load more" must read as failed, not as a dead button. */
.pager-load-error[b-82kkyek4fu] {
    font-size: 0.85rem;
}

.loading-more-indicator[b-82kkyek4fu] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

/* Invisible sentinel that triggers the IntersectionObserver */
.scroll-sentinel[b-82kkyek4fu] {
    height: 1px;
    width: 100%;
}

@media (max-width: 576px) {
    .pager-bar[b-82kkyek4fu] {
        flex-direction: column;
        gap: 8px;
        text-align: center;
    }
}

/* -- Empty state (no cases match filters) -- */
.lb-empty-state[b-82kkyek4fu] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    color: var(--lb-text-muted);
    text-align: center;
}

.lb-empty-icon[b-82kkyek4fu] {
    font-size: 2rem;
    margin-bottom: 12px;
    color: var(--lb-text-dim);
}

.lb-empty-title[b-82kkyek4fu] {
    margin: 0 0 6px 0;
    font-size: 0.95rem;
    font-weight: 500;
    max-width: 400px;
}

.lb-empty-sub[b-82kkyek4fu] {
    margin: 0 0 16px 0;
    font-size: 0.875rem;
    max-width: 400px;
}

[b-82kkyek4fu] .lb-empty-btn.e-btn {
    font-size: 0.85rem;
}

/* -- Excel-style column filter (custom, server-backed) -- */

/* Header cell: column title + funnel button on one line. Styled without ::deep,
   matching .pin-btn (scoped attributes reach template markup authored here). */
.colf-header[b-82kkyek4fu] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
    width: 100%;
    min-width: 0;
}

.colf-btn[b-82kkyek4fu] {
    background: none;
    border: none;
    padding: 2px 4px;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-muted);
    opacity: 0.55;
    line-height: 1;
    font-size: 0.8rem;
    transition: opacity 0.15s ease, color 0.15s ease;
}

.colf-btn:hover[b-82kkyek4fu],
.colf-btn:focus-visible[b-82kkyek4fu] {
    opacity: 1;
    color: var(--lb-text);
    outline: none;
}

/* Active filter on this column: funnel stays lit in brand color (Excel-like cue) */
.colf-btn.colf-active[b-82kkyek4fu] {
    opacity: 1;
    color: var(--lb-brand);
}

/* Touch devices never hover: keep the funnel visible */
@media (hover: none) {
    .colf-btn[b-82kkyek4fu] {
        opacity: 1;
    }
}

/* The popup panel styles (.colf-backdrop / .colf-popup / .colf-row / .colf-list / …)
   moved to the shared ExcelFilterPopup component's scoped CSS. Only the header funnel
   button styles above stay here, since the funnel lives in this page's HeaderTemplate. */
/* /Components/Pages/Cases/NextReviews.razor.rz.scp.css */
.nextreviews-root[b-1qkmnn9gnh] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
    height: calc(100vh - 70px);
    min-height: 0;
}

.stat-row[b-1qkmnn9gnh] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

@media (max-width: 768px) {
    .stat-row[b-1qkmnn9gnh] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .stat-row[b-1qkmnn9gnh] {
        grid-template-columns: 1fr;
    }
}

.filter-toolbar[b-1qkmnn9gnh] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    padding: 12px 16px;
    display: flex;
    flex-direction: column;
    gap: 12px;
}

.chip-row[b-1qkmnn9gnh] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

.reason-chip[b-1qkmnn9gnh] {
    border: 1px solid var(--lb-border-light);
    border-radius: 999px;
    background: var(--lb-bg-white);
    color: var(--lb-text);
    font-size: 0.78rem;
    padding: 3px 10px;
}

.reason-chip.active[b-1qkmnn9gnh] {
    background: var(--lb-brand-bg);
    color: var(--lb-brand);
    border-color: var(--lb-brand);
}

.filter-group[b-1qkmnn9gnh] {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    align-items: center;
}

.filter-group > *[b-1qkmnn9gnh] {
    min-width: 140px;
    max-width: 220px;
}

@media (max-width: 768px) {
    .filter-group[b-1qkmnn9gnh] {
        flex-direction: column;
    }

    .filter-group > *[b-1qkmnn9gnh] {
        width: 100%;
        max-width: 100%;
    }

    /* Page shell is a fixed-height flex column (height: calc(100vh - 70px)) --
       on a phone the stacked chrome (header, stat cards, filter toolbar, reason
       chips) exceeds the viewport, starving the flex:1 grid to zero height.
       The grid is Height="100%" with no infinite scrolling (a bounded review
       list), so releasing the shell lets it auto-size and the page scroll --
       that is the intended behavior here. */
    .nextreviews-root[b-1qkmnn9gnh] {
        height: auto;
    }

    .nextreviews-grid-container[b-1qkmnn9gnh] {
        flex: 0 0 auto;
    }
}

.nextreviews-grid-container[b-1qkmnn9gnh] {
    flex: 1 1 0;
    min-height: 220px;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.case-cell[b-1qkmnn9gnh] {
    display: flex;
    flex-direction: column;
}

.case-name[b-1qkmnn9gnh] {
    font-weight: 600;
}

.client-name[b-1qkmnn9gnh] {
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

.priority-bar[b-1qkmnn9gnh] {
    width: 38px;
    height: 6px;
    border-radius: 4px;
    background: var(--lb-border-light);
}

.priority-critical[b-1qkmnn9gnh] {
    background: var(--lb-danger);
}

.priority-high[b-1qkmnn9gnh] {
    background: var(--lb-warning);
}

.priority-medium[b-1qkmnn9gnh] {
    background: var(--lb-info);
}

.priority-low[b-1qkmnn9gnh] {
    background: var(--lb-success);
}

.score-cell[b-1qkmnn9gnh] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.score-value[b-1qkmnn9gnh] {
    font-weight: 600;
    font-size: 0.8rem;
}

.score-track[b-1qkmnn9gnh] {
    width: 100%;
    height: 6px;
    border-radius: 4px;
    background: var(--lb-border-light);
    overflow: hidden;
}

.score-fill[b-1qkmnn9gnh] {
    height: 100%;
    background: var(--lb-brand);
}

.reason-stack[b-1qkmnn9gnh] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.reason-badge[b-1qkmnn9gnh] {
    display: inline-block;
    background: var(--lb-brand-bg);
    color: var(--lb-brand);
    border-radius: 4px;
    padding: 1px 6px;
    font-size: 0.75rem;
    width: fit-content;
}

.pin-btn[b-1qkmnn9gnh] {
    background: none;
    border: none;
    cursor: pointer;
    opacity: 0.3;
    padding: 4px;
    font-size: 1rem;
    color: var(--lb-brand);
}

.pin-btn.pinned[b-1qkmnn9gnh],
.pin-btn:hover[b-1qkmnn9gnh] {
    opacity: 1;
}

/* Touch fallback: on (hover: none) devices the unpinned pin button would stay
 * at opacity: 0.3 (faintly visible but easy to miss). Boost to full opacity
 * so it reads as an actionable button on phones and tablets. */
@media (hover: none) {
    .pin-btn[b-1qkmnn9gnh] {
        opacity: 1;
    }
}

.pager-bar[b-1qkmnn9gnh] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 16px;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-bg-white);
    border-radius: 0 0 8px 8px;
    font-size: 0.85rem;
}

.pager-info[b-1qkmnn9gnh] {
    color: var(--lb-text-muted);
}

/* Sort feedback caption (#2444): header sorts run server-side, so the grid's own
 * sort arrows never render — this caption is the visible sort state. */
.sort-info[b-1qkmnn9gnh] {
    white-space: nowrap;
}

/* SOL cell emphasis (#2441): color + icon + weight, never color alone.
 * Elements are authored in this component's grid Template, so plain scoped
 * classes reach them (no ::deep needed). */
.sol-cell[b-1qkmnn9gnh] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

.sol-cell .e-icons[b-1qkmnn9gnh] {
    font-size: 0.8rem;
}

.sol-past[b-1qkmnn9gnh] {
    color: var(--lb-danger);
    font-weight: 700;
}

.sol-imminent[b-1qkmnn9gnh] {
    color: var(--lb-warning);
    font-weight: 600;
}

/* Failed-load state (#2443): visually distinct from the two "empty" states. */
.nr-error-state .lb-empty-icon[b-1qkmnn9gnh],
.nr-error-state .lb-empty-title[b-1qkmnn9gnh] {
    color: var(--lb-danger);
}

.nr-error-state .lb-empty-icon[b-1qkmnn9gnh] {
    opacity: 1;
}

.pager-buttons[b-1qkmnn9gnh] {
    display: flex;
    gap: 8px;
}

/* The thresholds-dialog (.nrt-*) styles moved to NextReviewThresholdsDialog.razor.css:
 * scoped CSS only attributes elements authored in ITS OWN component, so rules living
 * here could never reach the dialog's markup — they were dead. */
/* /Components/Pages/Cases/NextReviewThresholdsDialog.razor.rz.scp.css */
/* Thresholds dialog styles. Moved here from NextReviews.razor.css: scoped CSS only
 * attributes elements authored in its OWN component, so these rules were dead while
 * they lived in the page's stylesheet. The dialog content is authored in this
 * component, so plain scoped classes reach it even after SfDialog teleports it. */

.nrt-body[b-nzi6g76j09] {
    padding: 4px;
}

.nrt-grid[b-nzi6g76j09] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 14px;
    align-items: center;
}

.nrt-grid label[b-nzi6g76j09] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

.nrt-footer[b-nzi6g76j09] {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

.nrt-error[b-nzi6g76j09] {
    margin-top: 10px;
    color: var(--lb-danger);
}

/* ── Confirm phase (#2442) ─────────────────────────────────────────────── */

.nrt-confirm[b-nzi6g76j09] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.nrt-confirm-lead[b-nzi6g76j09] {
    margin: 0;
}

.nrt-change-list[b-nzi6g76j09] {
    margin: 0;
    padding-left: 20px;
}

.nrt-change-name[b-nzi6g76j09] {
    font-weight: 600;
}

.nrt-narrow-warning[b-nzi6g76j09] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    color: var(--lb-danger);
    font-weight: 600;
}

.nrt-impact[b-nzi6g76j09] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    padding: 10px 12px;
}

.nrt-impact-title[b-nzi6g76j09] {
    font-weight: 600;
    margin-bottom: 4px;
}

.nrt-impact ul[b-nzi6g76j09] {
    margin: 0;
    padding-left: 20px;
}

.nrt-impact-loading[b-nzi6g76j09],
.nrt-impact-error[b-nzi6g76j09] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

.nrt-impact-error[b-nzi6g76j09] {
    color: var(--lb-warning);
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .nrt-footer[b-nzi6g76j09] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/CaseSearchPage.razor.rz.scp.css */
/* === CaseSearchPage -- scoped styles === */

.cs-root[b-dbe8c7yblk] {
    padding: 16px 20px;
    max-width: 1200px;
}

.cs-header[b-dbe8c7yblk] {
    margin-bottom: 12px;
}

.cs-title[b-dbe8c7yblk] {
    font-size: 18px;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 0;
}

.cs-search-bar[b-dbe8c7yblk] {
    display: flex;
    gap: 8px;
    margin-bottom: 8px;
}

[b-dbe8c7yblk] .cs-search-input {
    flex: 1;
}

.cs-search-icon[b-dbe8c7yblk] {
    color: var(--lb-text-secondary);
    padding: 0 4px;
}

/* -- FTS search tips -- */

.fts-query-help[b-dbe8c7yblk] {
    margin-bottom: 10px;
    font-size: 0.875rem;
}

.fts-query-help summary[b-dbe8c7yblk] {
    cursor: pointer;
    color: var(--lb-brand);
    font-weight: 600;
}

.fts-query-help ul[b-dbe8c7yblk] {
    margin-top: 8px;
    padding-left: 20px;
}

.fts-query-help li[b-dbe8c7yblk] {
    margin-bottom: 4px;
}

.cs-filter-chips[b-dbe8c7yblk] {
    display: flex;
    gap: 5px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}

.cs-chip[b-dbe8c7yblk] {
    font-size: 12px;
    padding: 4px 10px;
    border-radius: 14px;
    border: 1px solid var(--lb-border);
    color: var(--lb-text-secondary);
    background: var(--lb-card);
    cursor: pointer;
    transition: all 0.15s;
}

.cs-chip:hover[b-dbe8c7yblk] {
    border-color: var(--lb-brand);
}

.cs-chip-active[b-dbe8c7yblk] {
    background: color-mix(in srgb, var(--lb-brand) 15%, transparent);
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

.cs-result-count[b-dbe8c7yblk] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    margin-bottom: 12px;
}

.cs-result-count strong[b-dbe8c7yblk] {
    color: var(--lb-text-primary);
}

.cs-loading[b-dbe8c7yblk], .cs-empty[b-dbe8c7yblk] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--lb-text-secondary);
}

.cs-empty-icon[b-dbe8c7yblk] {
    font-size: 36px;
    margin-bottom: 12px;
}

.cs-case-card[b-dbe8c7yblk] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 10px;
    overflow: hidden;
}

.cs-case-header[b-dbe8c7yblk] {
    display: flex;
    align-items: stretch;
}

/* Primary tap target: opens the case in a new tab (#1467). Carries the row
   padding so the whole left area is clickable; the toggle button sits at the end. */
.cs-case-open[b-dbe8c7yblk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    flex: 1;
    min-width: 0;
    padding: 10px 14px;
    cursor: pointer;
    transition: background 0.1s;
    text-decoration: none;
    color: inherit;
}

.cs-case-open:hover[b-dbe8c7yblk] {
    background: var(--lb-surface-alt);
}

.cs-case-open:focus-visible[b-dbe8c7yblk] {
    outline: 2px solid var(--lb-brand);
    outline-offset: -2px;
}

/* Secondary affordance: expand/collapse the match details (#1467). */
.cs-case-toggle[b-dbe8c7yblk] {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    border: none;
    border-left: 1px solid var(--lb-border);
    background: transparent;
    color: var(--lb-text-secondary);
    cursor: pointer;
    transition: background 0.1s;
}

.cs-case-toggle:hover[b-dbe8c7yblk] {
    background: var(--lb-surface-alt);
}

.cs-case-toggle:focus-visible[b-dbe8c7yblk] {
    outline: 2px solid var(--lb-brand);
    outline-offset: -2px;
}

.cs-case-info[b-dbe8c7yblk] {
    display: flex;
    align-items: center;
    gap: 10px;
    min-width: 0;
}

.cs-file-num[b-dbe8c7yblk] {
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-brand);
    flex-shrink: 0;
}

.cs-case-name[b-dbe8c7yblk] {
    font-size: 14px;
    font-weight: 500;
    color: var(--lb-text-primary);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cs-case-meta[b-dbe8c7yblk] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.cs-badge[b-dbe8c7yblk] {
    font-size: 11px;
    padding: 2px 8px;
    border-radius: 10px;
    font-weight: 500;
}

.cs-badge-open[b-dbe8c7yblk] {
    background: color-mix(in srgb, #22c55e 15%, transparent);
    color: #22c55e;
}

.cs-badge-closed[b-dbe8c7yblk] {
    background: color-mix(in srgb, #6b7280 20%, transparent);
    color: var(--lb-text-secondary);
}

.cs-match-count[b-dbe8c7yblk] {
    font-size: 12px;
    color: var(--lb-text-secondary);
}

.cs-chevron[b-dbe8c7yblk] {
    color: var(--lb-text-secondary);
    font-size: 12px;
}

.cs-case-body[b-dbe8c7yblk] {
    border-top: 1px solid var(--lb-border);
    padding: 10px 14px 12px;
}

.cs-match-group[b-dbe8c7yblk] {
    margin-bottom: 10px;
}

.cs-match-group:last-of-type[b-dbe8c7yblk] {
    margin-bottom: 8px;
}

.cs-group-label[b-dbe8c7yblk] {
    font-size: 11px;
    font-weight: 600;
    color: var(--lb-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.4px;
    margin-bottom: 4px;
    display: flex;
    align-items: center;
    gap: 6px;
}

.cs-group-icon[b-dbe8c7yblk] {
    width: 16px;
    height: 16px;
    border-radius: 3px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    /* Sized for the e-icons glyph (CS-1: replaced the C/P/N/E letter badges with icons). */
    font-size: 11px;
    font-weight: 700;
    color: #fff;
}

.cs-icon-case[b-dbe8c7yblk] { background: #22c55e; }
.cs-icon-contact[b-dbe8c7yblk] { background: #3b82f6; }
.cs-icon-note[b-dbe8c7yblk] { background: #8b5cf6; }
.cs-icon-event[b-dbe8c7yblk] { background: #f59e0b; }

.cs-match-item[b-dbe8c7yblk] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    padding: 3px 0 3px 22px;
    line-height: 1.4;
}

.cs-role-tag[b-dbe8c7yblk] {
    font-size: 11px;
    color: var(--lb-text-secondary);
    font-style: italic;
    margin-left: 4px;
}

.cs-note-type[b-dbe8c7yblk] {
    font-weight: 500;
    color: var(--lb-text-primary);
    margin-right: 4px;
}

.cs-hit-date[b-dbe8c7yblk] {
    font-size: 11px;
    color: var(--lb-text-secondary);
}

.cs-open-case[b-dbe8c7yblk] {
    margin-top: 8px;
    padding-top: 8px;
    border-top: 1px solid var(--lb-border);
}

.cs-open-link[b-dbe8c7yblk] {
    font-size: 12px;
    color: var(--lb-brand);
    text-decoration: none;
    font-weight: 500;
}

.cs-open-link:hover[b-dbe8c7yblk] {
    text-decoration: underline;
}

/* Invisible sentinel that triggers the IntersectionObserver */
.cs-scroll-sentinel[b-dbe8c7yblk] {
    height: 1px;
    width: 100%;
}
/* /Components/Pages/CasesList.razor.rz.scp.css */
/* === CasesList (Case Search) -- scoped styles === */

.casesearch-root[b-2ztqzk23v2] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 16px;
    height: calc(100vh - 70px);
    min-height: 0;
}

/* -- Stat cards row -- */
.stat-row[b-2ztqzk23v2] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
}

@media (max-width: 768px) {
    .stat-row[b-2ztqzk23v2] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .stat-row[b-2ztqzk23v2] {
        grid-template-columns: 1fr;
    }
}

/* -- Filter toolbar (wrapper holds both bar and chip bar) -- */
.filter-toolbar[b-2ztqzk23v2] {
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    overflow: hidden;
}

/* -- Compact inline filter bar -- */
.filter-bar[b-2ztqzk23v2] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    padding: 6px 8px;
    background: var(--lb-surface-alt);
}

/* Dropdowns: fixed compact width */
[b-2ztqzk23v2] .fb-dropdown.e-ddl {
    max-width: 140px;
    min-width: 100px;
}

/* Search wrapper: the primary action on this bar, so it gets more room than the
   compact dropdowns (flex-grow 2, wider max) and a leading magnifier icon. */
.fb-search-wrap[b-2ztqzk23v2] {
    position: relative;
    display: flex;
    align-items: center;
    flex: 2 1 260px;
    max-width: 380px;
    min-width: 200px;
}

/* Leading magnifier sits inside the input's left padding (brand-colored cue) */
.fb-search-icon[b-2ztqzk23v2] {
    position: absolute;
    left: 10px;
    z-index: 2;
    font-size: 15px;
    color: var(--lb-brand);
    pointer-events: none;
}

[b-2ztqzk23v2] .fb-search {
    width: 100%;
}

/* Taller, fully-bordered field so search reads as prominent, not just another
   dropdown. SfTextBox applies CssClass to its .e-input-group wrapper. */
[b-2ztqzk23v2] .fb-search.e-input-group,
[b-2ztqzk23v2] .fb-search.e-input-group.e-control-wrapper {
    height: 34px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    padding-left: 24px;
    transition: border-color 0.12s ease, box-shadow 0.12s ease;
}

[b-2ztqzk23v2] .fb-search.e-input-group input.e-input {
    font-size: 13px;
}

/* Brand focus ring */
[b-2ztqzk23v2] .fb-search.e-input-group.e-input-focus {
    border-color: var(--lb-brand);
    box-shadow: 0 0 0 3px var(--lb-accent-tint);
}

/* Include-closed toggle */
.fb-toggle-wrap[b-2ztqzk23v2] {
    display: flex;
    align-items: center;
    white-space: nowrap;
    font-size: 12px;
}

/* Apply button: compact */
[b-2ztqzk23v2] .fb-apply.e-btn {
    padding: 5px 14px;
    font-size: 12px;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Advanced toggle button */
[b-2ztqzk23v2] .fb-advanced.e-btn {
    padding: 5px 10px;
    font-size: 12px;
    white-space: nowrap;
    flex-shrink: 0;
}

/* Vertical separator between dropdowns and search */
.fb-separator[b-2ztqzk23v2] {
    display: inline-block;
    width: 0.5px;
    height: 22px;
    background: var(--lb-border-light);
    flex-shrink: 0;
}

/* When chips are present: remove bottom radius from bar */
.filter-toolbar.has-chips .filter-bar[b-2ztqzk23v2] {
    border-radius: 0;
}

/* -- Chip bar -- */
.chip-bar[b-2ztqzk23v2] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
    padding: 5px 8px;
    background: var(--lb-surface-alt);
    border-top: 0.5px solid var(--lb-border-light);
}

/* -- Individual chip -- */
.filter-chip[b-2ztqzk23v2] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    border-radius: 99px;
    background: var(--lb-bg-white);
    border: 0.5px solid var(--lb-border-light);
    padding: 2px 8px;
    font-size: 11px;
    line-height: 1.4;
}

.chip-label[b-2ztqzk23v2] {
    color: var(--lb-text-muted);
}

.chip-value[b-2ztqzk23v2] {
    color: var(--lb-text);
    font-weight: 500;
}

.chip-dismiss[b-2ztqzk23v2] {
    background: none;
    border: none;
    padding: 0 0 0 3px;
    cursor: pointer;
    font-size: 13px;
    line-height: 1;
    color: var(--lb-text-muted);
    transition: color 0.12s ease;
}

.chip-dismiss:hover[b-2ztqzk23v2] {
    color: var(--lb-danger);
}

/* Clear all link */
.chip-clear-all[b-2ztqzk23v2] {
    background: none;
    border: none;
    padding: 0;
    margin-left: auto;
    cursor: pointer;
    font-size: 11px;
    color: var(--lb-text-muted);
    text-decoration: underline;
    transition: color 0.12s ease;
}

.chip-clear-all:hover[b-2ztqzk23v2] {
    color: var(--lb-text);
}

/* -- Advanced search panel -- */
.advanced-panel[b-2ztqzk23v2] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    padding: 16px;
}

.adv-grid[b-2ztqzk23v2] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px 24px;
}

.adv-section-title[b-2ztqzk23v2] {
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    margin-bottom: 10px;
    padding-bottom: 4px;
    border-bottom: 1px solid var(--lb-border-light);
}

.adv-fields[b-2ztqzk23v2] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.adv-field[b-2ztqzk23v2] {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

.adv-label[b-2ztqzk23v2] {
    font-size: 12px;
    font-weight: 550;
    color: var(--lb-text-muted);
}

@media (max-width: 768px) {
    .adv-grid[b-2ztqzk23v2] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid toolbar row -- */
.grid-toolbar-row[b-2ztqzk23v2] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0;
}

.grid-toolbar-left[b-2ztqzk23v2] {
    flex: 1;
}

.result-count[b-2ztqzk23v2] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.footer-note[b-2ztqzk23v2] {
    color: var(--lb-text-dim);
    font-style: italic;
}

.grid-actions[b-2ztqzk23v2] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.icon-btn[b-2ztqzk23v2] {
    width: 32px;
    height: 32px;
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    background: var(--lb-bg-white);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    color: var(--lb-text-muted);
    font-size: 14px;
    transition: background 0.12s ease;
}

.icon-btn:hover[b-2ztqzk23v2] {
    background: var(--lb-surface-alt);
    color: var(--lb-text);
}

/* -- Grid container -- */
.grid-container[b-2ztqzk23v2] {
    display: flex;
    flex-direction: column;
    flex: 1 1 0;
    min-height: 0;
}

[b-2ztqzk23v2] .grid-container .e-grid {
    flex: 1 1 0;
    min-height: 0;
}

/* On phone the shell (height: calc(100vh - 70px)) is one fixed screen. The 4
   full-width stat cards plus the 4 stacked filter dropdowns overflow it, so
   flexbox shrank the children: the filter toolbar (overflow: hidden) clipped
   off its own search box, "Include closed", Search, and Advanced controls --
   the user saw only the dropdowns and no Search button -- and the results grid
   collapsed to zero height. Release the fixed height so the page flows and
   scrolls, stop the filter toolbar from shrinking (so nothing is clipped), and
   let the grid keep its inline Height (calc(100vh - 370px)). */
@media (max-width: 768px) {
    .casesearch-root[b-2ztqzk23v2] {
        height: auto;
    }

    .filter-toolbar[b-2ztqzk23v2] {
        flex-shrink: 0;
    }

    .grid-container[b-2ztqzk23v2] {
        flex: 0 0 auto;
    }

    [b-2ztqzk23v2] .grid-container .e-grid {
        flex: 0 0 auto;
    }
}

/* Column header: intentionally no override -- inherits the Syncfusion theme
   default so it matches the My Cases grid header. */

/* -- Cell templates -- */
.file-number[b-2ztqzk23v2] {
    font-family: "Cascadia Code", "Fira Code", monospace;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.case-name-link[b-2ztqzk23v2] {
    font-weight: 600;
    color: var(--lb-info);
    cursor: pointer;
    transition: text-decoration 0.12s ease;
    background: none;
    border: none;
    padding: 0;
    font-size: inherit;
    font-family: inherit;
    text-align: left;
}

.case-name-link:hover[b-2ztqzk23v2] {
    text-decoration: underline;
}

.attorney-name[b-2ztqzk23v2] {
    font-size: 0.85rem;
    color: var(--lb-text);
}

/* -- Status pills -- */
.status-pill[b-2ztqzk23v2] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 99px;
    font-size: 0.75rem;
    font-weight: 600;
    text-align: center;
}

.status-open[b-2ztqzk23v2] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.status-closed[b-2ztqzk23v2] {
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
}

.status-pending[b-2ztqzk23v2] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.status-default[b-2ztqzk23v2] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

/* -- Open in new tab button -- */
.open-tab-btn[b-2ztqzk23v2] {
    background: none;
    border: none;
    cursor: pointer;
    padding: 4px;
    color: var(--lb-text-dim);
    font-size: 14px;
    border-radius: 4px;
    transition: color 0.12s ease;
}

.open-tab-btn:hover[b-2ztqzk23v2] {
    color: var(--lb-info);
}

/* -- Empty state -- */
.empty-state[b-2ztqzk23v2] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    color: var(--lb-text-muted);
    text-align: center;
}

.empty-state .e-icons[b-2ztqzk23v2] {
    font-size: 2rem;
    margin-bottom: 12px;
    color: var(--lb-text-dim);
}

.empty-state p[b-2ztqzk23v2] {
    margin: 0 0 12px 0;
    font-size: 0.9rem;
    max-width: 400px;
}

[b-2ztqzk23v2] .empty-state-btn.e-btn {
    font-size: 0.85rem;
}

/* -- Responsive -- */
@media (max-width: 768px) {
    .filter-bar[b-2ztqzk23v2] {
        flex-direction: column;
        align-items: stretch;
    }

    [b-2ztqzk23v2] .fb-dropdown.e-ddl {
        max-width: 100%;
        width: 100%;
    }

    .fb-search-wrap[b-2ztqzk23v2] {
        max-width: 100%;
        width: 100%;
    }

    .fb-separator[b-2ztqzk23v2] {
        display: none;
    }

    .grid-toolbar-row[b-2ztqzk23v2] {
        flex-direction: column;
        align-items: flex-start;
        gap: 8px;
    }
}

@media (max-width: 576px) {
    .casesearch-root[b-2ztqzk23v2] {
        padding: 8px;
    }

    .grid-actions[b-2ztqzk23v2] {
        flex-wrap: wrap;
    }
}

/* -- Results render-failure card (#1092): shown by the LoggingErrorBoundary's
   ErrorContent when the grid can't render, in place of a circuit crash. Mirrors
   the .empty-state layout so a failure reads as a calm in-page state, not a crash. -- */
.cases-results-error[b-2ztqzk23v2] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    text-align: center;
    color: var(--lb-text-muted);
}

.cases-results-error-icon[b-2ztqzk23v2] {
    font-size: 2rem;
    margin-bottom: 12px;
    color: #c2410c;
}

.cases-results-error-title[b-2ztqzk23v2] {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 6px;
}

.cases-results-error-text[b-2ztqzk23v2] {
    margin: 0 0 14px 0;
    font-size: 0.9rem;
    max-width: 420px;
}
/* /Components/Pages/ComingSoon.razor.rz.scp.css */
/* -- Coming Soon placeholder page -- */

.coming-soon-container[b-op77tkvhq3] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 70vh;
    padding: 2rem 1rem;
}

.coming-soon-card[b-op77tkvhq3] {
    text-align: center;
    max-width: 480px;
    width: 100%;
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 12px;
    padding: 3rem 2.5rem;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
}

.icon-wrapper[b-op77tkvhq3] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 72px;
    height: 72px;
    border-radius: 50%;
    background: var(--lb-accent-tint);
    margin-bottom: 1.5rem;
}

.icon-wrapper .e-icons[b-op77tkvhq3] {
    font-size: 32px;
    color: var(--lb-brand);
}

.coming-soon-title[b-op77tkvhq3] {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0 0 0.75rem;
    letter-spacing: -0.02em;
}

.coming-soon-message[b-op77tkvhq3] {
    font-size: 1rem;
    line-height: 1.6;
    color: var(--lb-text-muted);
    margin: 0 0 1.5rem;
}

.coming-soon-divider[b-op77tkvhq3] {
    width: 48px;
    height: 3px;
    background: var(--lb-brand);
    border-radius: 2px;
    margin: 0 auto 1.5rem;
}

.coming-soon-hint[b-op77tkvhq3] {
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--lb-text-dim);
    margin: 0 0 2rem;
}

.coming-soon-back[b-op77tkvhq3] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.625rem 1.5rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: #fff;
    background: var(--lb-brand);
    border-radius: 6px;
    text-decoration: none;
    transition: background 0.15s ease;
}

.coming-soon-back:hover[b-op77tkvhq3],
.coming-soon-back:focus-visible[b-op77tkvhq3] {
    background: var(--lb-brand-hover);
    color: #fff;
    text-decoration: none;
}

.coming-soon-back .e-icons[b-op77tkvhq3] {
    font-size: 14px;
}

/* -- Responsive -- */
@media (max-width: 576px) {
    .coming-soon-card[b-op77tkvhq3] {
        padding: 2rem 1.25rem;
    }

    .coming-soon-title[b-op77tkvhq3] {
        font-size: 1.5rem;
    }
}
/* /Components/Pages/Communications/ChatCenter.razor.rz.scp.css */
/* =====================================================================
   ChatCenter.razor.css -- Three-pane chat layout
   =====================================================================
   Uses --lb-* design tokens. Left (240px) | Center (flex) | Right (260px).
   ===================================================================== */

/* ================================================================
   TOP-LEVEL TABS -- Channels / Analytics switch
   ================================================================ */
.cc-top-tabs[b-8y99ggppc4] {
    display: flex;
    gap: 0;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    padding: 0 16px;
    flex-shrink: 0;
}

.cc-top-tab[b-8y99ggppc4] {
    padding: 10px 20px;
    border: none;
    background: transparent;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    transition: color 0.15s ease, border-color 0.15s ease;
}

.cc-top-tab:hover[b-8y99ggppc4] {
    color: var(--lb-text);
}

.cc-top-tab.active[b-8y99ggppc4] {
    color: var(--lb-brand);
    border-bottom-color: var(--lb-brand);
}

.cc-analytics-container[b-8y99ggppc4] {
    height: calc(100vh - 100px);
    overflow-y: auto;
    background: var(--lb-bg-surface);
}

/* ================================================================
   SHELL -- full-height three-column flexbox
   ================================================================ */
.cc-shell[b-8y99ggppc4] {
    display: flex;
    height: calc(100vh - 60px);
    overflow: hidden;
    background: var(--lb-bg-white);
}

/* ================================================================
   LEFT PANE -- Channel list
   ================================================================ */
.cc-left-pane[b-8y99ggppc4] {
    width: 240px;
    min-width: 240px;
    display: flex;
    flex-direction: column;
    border-right: 0.5px solid var(--lb-border);
    background: var(--lb-bg-white);
    overflow: hidden;
}

/* -- Toolbar -- */
.cc-left-toolbar[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 12px;
    border-bottom: 1px solid var(--lb-border);
}

.cc-left-title[b-8y99ggppc4] {
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--lb-text-primary);
}

.cc-left-actions[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.cc-toolbar-btn[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border: none;
    border-radius: 4px;
    background: none;
    color: var(--lb-brand);
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease;
}

.cc-toolbar-btn:hover:not(:disabled)[b-8y99ggppc4] {
    background: var(--lb-bg-hover);
}

.cc-toolbar-btn:disabled[b-8y99ggppc4] {
    color: var(--lb-text-muted);
    cursor: not-allowed;
    opacity: 0.5;
}

.cc-btn-label[b-8y99ggppc4] {
    font-size: 0.78rem;
}

/* -- Search -- */
.cc-search-row[b-8y99ggppc4] {
    padding: 6px 10px;
    border-bottom: 1px solid var(--lb-border);
}

[b-8y99ggppc4] .cc-search-input {
    font-size: 0.82rem;
}

/* -- Filter tabs -- */
.cc-filter-tabs[b-8y99ggppc4] {
    display: flex;
    gap: 2px;
    padding: 6px 10px;
    border-bottom: 1px solid var(--lb-border);
    flex-wrap: wrap;
}

[b-8y99ggppc4] .cc-filter-tab.e-btn {
    padding: 3px 8px;
    border: none;
    border-radius: 12px;
    background: none;
    color: var(--lb-text-muted);
    font-size: 0.72rem;
    font-weight: 500;
    cursor: pointer;
    text-transform: none;
    transition: color 0.15s ease, background 0.15s ease;
    white-space: nowrap;
}

[b-8y99ggppc4] .cc-filter-tab.e-btn:hover {
    background: var(--lb-bg-hover);
    color: var(--lb-text-primary);
}

[b-8y99ggppc4] .cc-filter-tab.e-btn.active {
    color: var(--lb-brand);
    border-bottom: 2px solid var(--lb-brand);
    border-radius: 0;
    font-weight: 600;
}

/* -- Channel list (scrollable) -- */
.cc-channel-list[b-8y99ggppc4] {
    flex: 1;
    overflow-y: auto;
    overflow-x: hidden;
}

.cc-channel-loading[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px;
    color: var(--lb-text-muted);
}

/* -- Coming soon placeholder -- */
.cc-coming-soon[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 16px;
    color: var(--lb-text-muted);
    text-align: center;
    gap: 8px;
}

.cc-coming-soon .e-icons[b-8y99ggppc4] {
    font-size: 1.5rem;
}

.cc-coming-soon p[b-8y99ggppc4] {
    margin: 0;
    font-size: 0.85rem;
}

/* -- Archived channel item (muted + strikethrough name) -- */
.cc-channel-archived[b-8y99ggppc4] {
    opacity: 0.6;
}

.cc-channel-archived .cc-channel-name[b-8y99ggppc4] {
    text-decoration: line-through;
}

/* -- Section headers -- */
.cc-section-header[b-8y99ggppc4] {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: var(--lb-text-dim);
    padding: 12px 12px 4px;
}

/* -- Channel item -- */
.cc-channel-item[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 7px 12px;
    border: none;
    border-left: 3px solid transparent;
    background: none;
    cursor: pointer;
    transition: background 0.12s ease;
    text-align: left;
}

.cc-channel-item:hover[b-8y99ggppc4] {
    background: var(--lb-bg-surface);
}

.cc-channel-item.active[b-8y99ggppc4] {
    border-left-color: var(--lb-brand);
    background: var(--lb-accent-tint);
}

/* -- Channel icon (avatar) -- */
.cc-channel-icon[b-8y99ggppc4] {
    width: 32px;
    height: 32px;
    min-width: 32px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
    font-weight: 600;
    color: #fff;
}

.cc-icon-dm[b-8y99ggppc4] {
    background: var(--lb-brand);
}

.cc-icon-case[b-8y99ggppc4] {
    background: #5b7fa5;
}

.cc-icon-firm[b-8y99ggppc4] {
    background: #6b7b8d;
    font-size: 0.85rem;
}

/* -- Channel info -- */
.cc-channel-info[b-8y99ggppc4] {
    flex: 1;
    min-width: 0;
    overflow: hidden;
}

.cc-channel-name-row[b-8y99ggppc4] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 6px;
}

.cc-channel-name[b-8y99ggppc4] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cc-channel-time[b-8y99ggppc4] {
    font-size: 0.68rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

.cc-channel-preview[b-8y99ggppc4] {
    margin-top: 1px;
}

.cc-preview-text[b-8y99ggppc4] {
    font-size: 0.76rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
}

.cc-preview-author[b-8y99ggppc4] {
    font-weight: 600;
    margin-right: 3px;
}

.cc-preview-empty[b-8y99ggppc4] {
    font-size: 0.76rem;
    color: var(--lb-text-dim);
    font-style: italic;
}

/* -- Unread badge -- */
.cc-badge[b-8y99ggppc4] {
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--lb-brand);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.cc-badge-mention[b-8y99ggppc4] {
    background: var(--lb-danger);
}

/* -- Empty state -- */
.cc-empty-state[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 16px;
    text-align: center;
}

.cc-empty-icon[b-8y99ggppc4] {
    font-size: 2rem;
    color: var(--lb-text-dim);
    margin-bottom: 12px;
}

.cc-empty-text[b-8y99ggppc4] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    margin: 0 0 4px;
}

.cc-empty-sub[b-8y99ggppc4] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    margin: 0 0 12px;
}

.cc-empty-action[b-8y99ggppc4] {
    padding: 6px 14px;
    border: 1px solid var(--lb-brand);
    border-radius: 4px;
    background: none;
    color: var(--lb-brand);
    font-size: 0.8rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}

.cc-empty-action:hover[b-8y99ggppc4] {
    background: var(--lb-brand);
    color: #fff;
}

/* -- Archive toggle -- */
.cc-archive-toggle[b-8y99ggppc4] {
    padding: 8px 12px;
    border-top: 1px solid var(--lb-border);
}

[b-8y99ggppc4] .cc-archive-label {
    font-size: 0.76rem;
    color: var(--lb-text-muted);
    cursor: pointer;
}

[b-8y99ggppc4] .cc-archive-label .e-label {
    font-size: 0.76rem;
    color: var(--lb-text-muted);
}

/* ================================================================
   CENTER PANE -- Conversation
   ================================================================ */
.cc-center-pane[b-8y99ggppc4] {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    background: var(--lb-bg-white);
    border-right: 0.5px solid var(--lb-border);
    overflow: hidden;
}

/* -- No channel selected state -- */
.cc-no-channel[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    gap: 12px;
    color: var(--lb-text-muted);
}

.cc-no-channel-icon[b-8y99ggppc4] {
    font-size: 2.5rem;
    color: var(--lb-text-dim);
}

.cc-no-channel-text[b-8y99ggppc4] {
    font-size: 0.9rem;
    margin: 0;
}

/* ================================================================
   RIGHT PANE -- Channel details
   ================================================================ */
.cc-right-pane[b-8y99ggppc4] {
    width: 260px;
    min-width: 260px;
    display: flex;
    flex-direction: column;
    background: var(--lb-bg-white);
    overflow-y: auto;
    overflow-x: hidden;
}

.cc-detail-empty[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
}

.cc-detail-empty-text[b-8y99ggppc4] {
    font-size: 0.82rem;
    color: var(--lb-text-dim);
}

.cc-detail-loading[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 32px;
    color: var(--lb-text-muted);
}

/* -- Detail toolbar -- */
.cc-detail-toolbar[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    padding: 10px 14px;
    border-bottom: 1px solid var(--lb-border);
}

.cc-detail-title[b-8y99ggppc4] {
    font-weight: 600;
    font-size: 0.88rem;
    color: var(--lb-text-primary);
}

/* -- Detail body (scrollable sections) -- */
.cc-detail-body[b-8y99ggppc4] {
    padding: 12px 14px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.cc-detail-section[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cc-section-label[b-8y99ggppc4] {
    font-size: 0.68rem;
    font-weight: 600;
    letter-spacing: 0.4px;
    text-transform: uppercase;
    color: var(--lb-text-dim);
}

/* -- Channel name/badge in detail -- */
.cc-detail-name[b-8y99ggppc4] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lb-text-primary);
    margin: 0;
}

.cc-type-badge[b-8y99ggppc4] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.68rem;
    font-weight: 600;
    width: fit-content;
}

.cc-type-direct[b-8y99ggppc4] {
    background: rgba(204, 108, 44, 0.12);
    color: var(--lb-brand);
}

.cc-type-case[b-8y99ggppc4] {
    background: rgba(91, 127, 165, 0.12);
    color: #5b7fa5;
}

.cc-type-firm[b-8y99ggppc4] {
    background: rgba(107, 123, 141, 0.12);
    color: #6b7b8d;
}

.cc-detail-desc[b-8y99ggppc4] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* -- Case info -- */
.cc-case-info[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.cc-case-row[b-8y99ggppc4] {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 6px;
}

.cc-case-label[b-8y99ggppc4] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    font-weight: 500;
    flex-shrink: 0;
}

.cc-case-value[b-8y99ggppc4] {
    font-size: 0.78rem;
    color: var(--lb-text-primary);
    text-align: right;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.cc-sol-urgent[b-8y99ggppc4] {
    color: var(--lb-danger);
    font-weight: 600;
}

.cc-sol-days[b-8y99ggppc4] {
    font-weight: 400;
    font-size: 0.72rem;
    color: inherit;
    margin-left: 2px;
}

.cc-open-case-link[b-8y99ggppc4] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
    padding: 0;
    border: none;
    background: none;
    color: var(--lb-brand);
    font-size: 0.78rem;
    font-weight: 600;
    cursor: pointer;
    transition: opacity 0.15s ease;
}

.cc-open-case-link:hover[b-8y99ggppc4] {
    opacity: 0.8;
}

/* -- Members list -- */
.cc-members-list[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.cc-member-row[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.cc-member-avatar[b-8y99ggppc4] {
    position: relative;
    width: 28px;
    height: 28px;
    min-width: 28px;
    border-radius: 50%;
    background: var(--lb-brand);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.62rem;
    font-weight: 600;
}

.cc-presence-dot[b-8y99ggppc4] {
    position: absolute;
    bottom: -1px;
    right: -1px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    border: 1.5px solid var(--lb-bg-white);
}

.cc-online[b-8y99ggppc4] {
    background: #28a745;
}

.cc-offline[b-8y99ggppc4] {
    background: var(--lb-text-dim);
}

.cc-member-info[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.cc-member-name[b-8y99ggppc4] {
    font-size: 0.78rem;
    font-weight: 500;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.cc-member-role-badge[b-8y99ggppc4] {
    font-size: 0.65rem;
    color: var(--lb-text-muted);
    text-transform: capitalize;
}

/* -- Shared files -- */
.cc-files-list[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.cc-file-row[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 5px 6px;
    border: none;
    border-radius: 4px;
    background: none;
    cursor: pointer;
    text-align: left;
    transition: background 0.12s ease;
    width: 100%;
}

.cc-file-row:hover[b-8y99ggppc4] {
    background: var(--lb-bg-hover);
}

.cc-file-row .e-icons[b-8y99ggppc4] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    flex-shrink: 0;
}

.cc-file-name[b-8y99ggppc4] {
    font-size: 0.76rem;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ================================================================
   RESPONSIVE -- class-driven pane visibility
   Controlled by Blazor component via ViewMode enum, not @media queries.
   ================================================================ */

/* -- Backdrop overlay for tablet/phone pane overlays -- */
.cc-backdrop[b-8y99ggppc4] {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.35);
    z-index: 900;
}

/* -- Desktop (>= 1200px): three panes side-by-side -- */
.cc-mode-desktop .cc-left-pane[b-8y99ggppc4] {
    display: flex;
}

.cc-mode-desktop .cc-center-pane[b-8y99ggppc4] {
    display: flex;
}

.cc-mode-desktop .cc-right-pane[b-8y99ggppc4] {
    display: flex;
}

/* -- Tablet (992-1199px): left visible, right is overlay -- */
.cc-mode-tablet .cc-left-pane[b-8y99ggppc4] {
    display: flex;
}

.cc-mode-tablet .cc-center-pane[b-8y99ggppc4] {
    display: flex;
    border-right: none;
}

.cc-mode-tablet .cc-right-pane[b-8y99ggppc4] {
    position: fixed;
    top: 60px;
    right: -280px;
    width: 280px;
    height: calc(100vh - 60px);
    z-index: 910;
    box-shadow: -2px 0 12px rgba(0, 0, 0, 0.15);
    transition: right 0.25s ease;
    display: flex;
}

.cc-mode-tablet .cc-right-pane.cc-right-overlay-open[b-8y99ggppc4] {
    right: 0;
}

/* -- Phone (< 992px): single pane, overlays for left + right -- */
.cc-mode-phone .cc-left-pane[b-8y99ggppc4] {
    display: flex;
    position: fixed;
    top: 60px;
    left: -280px;
    width: 280px;
    height: calc(100vh - 60px);
    z-index: 910;
    box-shadow: 2px 0 12px rgba(0, 0, 0, 0.15);
    transition: left 0.25s ease;
}

.cc-mode-phone .cc-left-pane.cc-left-overlay-open[b-8y99ggppc4] {
    left: 0;
}

.cc-mode-phone .cc-center-pane[b-8y99ggppc4] {
    display: flex;
    flex: 1;
    border-right: none;
    min-width: 0;
}

.cc-mode-phone .cc-right-pane[b-8y99ggppc4] {
    position: fixed;
    top: 60px;
    right: -280px;
    width: 280px;
    height: calc(100vh - 60px);
    z-index: 910;
    box-shadow: -2px 0 12px rgba(0, 0, 0, 0.15);
    transition: right 0.25s ease;
    display: flex;
}

.cc-mode-phone .cc-right-pane.cc-right-overlay-open[b-8y99ggppc4] {
    right: 0;
}

/* -- Responsive conversation header (tablet/phone only) -- */
.cc-conv-header[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    flex-shrink: 0;
}

.cc-conv-header-btn[b-8y99ggppc4] {
    background: none;
    border: none;
    padding: 6px;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-muted);
    line-height: 1;
    transition: background 0.15s ease;
    flex-shrink: 0;
}

.cc-conv-header-btn:hover[b-8y99ggppc4] {
    background: var(--lb-bg-hover);
    color: var(--lb-text-primary);
}

.cc-conv-header-title[b-8y99ggppc4] {
    flex: 1;
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--lb-text-primary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* -- Close button row inside overlay panes -- */
.cc-overlay-close-row[b-8y99ggppc4] {
    display: flex;
    justify-content: flex-end;
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

/* ---------------------------------------------------------------
   Admin actions - member remove, add link, admin section
   --------------------------------------------------------------- */

.cc-member-remove[b-8y99ggppc4] {
    background: none;
    border: none;
    color: var(--lb-text-muted);
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
    font-size: 0.7rem;
    line-height: 1;
    opacity: 0;
    transition: opacity 0.15s, color 0.15s, background 0.15s;
    margin-left: auto;
    flex-shrink: 0;
}

.cc-member-row:hover .cc-member-remove[b-8y99ggppc4] {
    opacity: 1;
}

/* Touch fallback: phones and tablets can't trigger :hover, so the remove-
 * member affordance would stay at opacity: 0 and be unreachable. Show
 * always on (hover: none) devices. */
@media (hover: none) {
    .cc-member-remove[b-8y99ggppc4] {
        opacity: 1;
    }
}

.cc-member-remove:hover[b-8y99ggppc4] {
    color: var(--lb-danger);
    background: rgba(220, 53, 69, 0.08);
}

.cc-member-dm[b-8y99ggppc4] {
    background: none;
    border: none;
    color: var(--lb-text-muted);
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
    font-size: 0.78rem;
    line-height: 1;
    flex-shrink: 0;
    margin-left: auto;
    transition: color 0.15s, background 0.15s;
}

/* When both DM and remove buttons are present, only the first claims the
   auto margin so they sit together at the right edge. */
.cc-member-dm + .cc-member-remove[b-8y99ggppc4] {
    margin-left: 4px;
}

.cc-member-dm:hover[b-8y99ggppc4] {
    color: var(--lb-brand);
    background: rgba(0, 0, 0, 0.05);
}

.cc-add-member-link[b-8y99ggppc4] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 6px 0 0;
    transition: color 0.15s;
}

.cc-add-member-link:hover[b-8y99ggppc4] {
    color: var(--lb-brand-hover);
    text-decoration: underline;
}

.cc-admin-section[b-8y99ggppc4] {
    border-top: 1px solid var(--lb-border);
    margin-top: 8px;
}

.cc-admin-actions[b-8y99ggppc4] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.cc-admin-action[b-8y99ggppc4] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: none;
    border: none;
    width: 100%;
    text-align: left;
    padding: 7px 8px;
    font-size: 0.84rem;
    color: var(--lb-text-primary);
    cursor: pointer;
    border-radius: 4px;
    transition: background 0.15s, color 0.15s;
}

.cc-admin-action:hover[b-8y99ggppc4] {
    background: var(--lb-hover-bg);
}

.cc-admin-action .e-icons[b-8y99ggppc4] {
    font-size: 0.9rem;
    flex-shrink: 0;
}

.cc-admin-danger[b-8y99ggppc4] {
    color: var(--lb-danger);
}

.cc-admin-danger:hover[b-8y99ggppc4] {
    background: rgba(220, 53, 69, 0.06);
    color: var(--lb-danger);
}

.cc-dialog-form[b-8y99ggppc4] {
    padding: 8px 0;
}

.cc-dialog-form .field-label[b-8y99ggppc4] {
    display: block;
    font-size: 0.84rem;
    font-weight: 500;
    margin-bottom: 6px;
    color: var(--lb-text-primary);
}

.cc-dialog-hint[b-8y99ggppc4] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 8px 0 0;
}

.cc-confirm-text[b-8y99ggppc4] {
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--lb-text-primary);
    margin: 4px 0;
}
/* /Components/Pages/Communications/SmsInbox.razor.rz.scp.css */
/* ================================================================
   SmsInbox.razor.css -- Scoped styles for the SMS Inbox page
   All colors use --lb-* design tokens from app.css.
   No !important, no inline styles, no non-ASCII characters.
   ================================================================ */

/* -- Container layout -- */

.sms-inbox-container[b-u5msig4hxk] {
    display: flex;
    height: calc(100vh - 64px);
    overflow: hidden;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background: var(--lb-card);
}

/* -- Left panel: Conversation list -- */

[b-u5msig4hxk] .sms-conversation-list {
    width: 30%;
    min-width: 280px;
    border-right: 1px solid var(--lb-border);
    display: flex;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    background: var(--lb-card);
}

[b-u5msig4hxk] .sms-list-header {
    padding: 16px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-list-title-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}

[b-u5msig4hxk] .sms-list-title {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

[b-u5msig4hxk] .sms-compose-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 0.8rem;
    font-weight: 600;
    color: #fff;
    background: var(--lb-brand);
    border: none;
    border-radius: 4px;
    padding: 5px 12px;
    cursor: pointer;
    transition: background 0.15s ease;
    white-space: nowrap;
}

[b-u5msig4hxk] .sms-compose-btn:hover {
    opacity: 0.88;
}

[b-u5msig4hxk] .sms-compose-btn .e-icons {
    font-size: 0.85rem;
}

[b-u5msig4hxk] .sms-manage-links {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

[b-u5msig4hxk] .sms-manage-link {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.75rem;
    color: var(--lb-brand);
    text-decoration: none;
    padding: 3px 8px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    transition: all 0.15s ease;
    white-space: nowrap;
}

[b-u5msig4hxk] .sms-manage-link:hover {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

[b-u5msig4hxk] .sms-manage-link .e-icons {
    font-size: 0.8rem;
}

[b-u5msig4hxk] .sms-search-row {
    margin-bottom: 12px;
}

[b-u5msig4hxk] .sms-search-input {
    width: 100%;
}

/* -- Filter tabs -- */

[b-u5msig4hxk] .sms-filter-tabs {
    display: flex;
    gap: 4px;
    overflow-x: auto;
    flex-wrap: nowrap;
    -ms-overflow-style: none;
    scrollbar-width: none;
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

[b-u5msig4hxk] .sms-filter-tabs::-webkit-scrollbar {
    display: none;
}

[b-u5msig4hxk] .sms-filter-tab {
    background: transparent;
    border: 1px solid var(--lb-border);
    border-radius: 16px;
    padding: 4px 12px;
    font-size: 0.8rem;
    color: var(--lb-text-dim);
    cursor: pointer;
    white-space: nowrap;
    transition: all 0.15s ease;
}

[b-u5msig4hxk] .sms-filter-tab:hover {
    background: var(--lb-surface-alt);
    color: var(--lb-text);
}

[b-u5msig4hxk] .sms-filter-active {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

/* -- Conversation list body -- */

[b-u5msig4hxk] .sms-list-body {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
}

[b-u5msig4hxk] .sms-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 24px;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-empty-list {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 24px;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-empty-icon {
    font-size: 2.5rem;
    margin-bottom: 12px;
    opacity: 0.4;
}

/* -- Conversation card -- */

[b-u5msig4hxk] .sms-conv-card {
    padding: 12px 16px;
    border-bottom: 1px solid var(--lb-border-light, var(--lb-border));
    cursor: pointer;
    transition: background 0.15s ease;
    border-left: 3px solid transparent;
}

[b-u5msig4hxk] .sms-conv-card:hover {
    background: var(--lb-surface-alt);
}

[b-u5msig4hxk] .sms-conv-active {
    background: var(--lb-surface-alt);
    border-left-color: var(--lb-brand);
}

[b-u5msig4hxk] .sms-conv-unread .sms-conv-name {
    font-weight: 700;
}

[b-u5msig4hxk] .sms-conv-card-top {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 4px;
}

[b-u5msig4hxk] .sms-conv-name {
    font-size: 0.9rem;
    color: var(--lb-text);
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
    margin-right: 8px;
}

[b-u5msig4hxk] .sms-conv-time {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-conv-card-mid {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

[b-u5msig4hxk] .sms-conv-preview {
    font-size: 0.82rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    flex: 1;
}

[b-u5msig4hxk] .sms-conv-direction-out {
    color: var(--lb-text-dim);
    font-weight: 500;
}

[b-u5msig4hxk] .sms-unread-badge {
    background: var(--lb-brand);
    color: #fff;
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: 10px;
    min-width: 20px;
    height: 20px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 6px;
    flex-shrink: 0;
}

/* -- "No reply Nh" badge: inbound message still waiting for a reply after 24h -- */
[b-u5msig4hxk] .sms-noreply-badge {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    font-size: 0.7rem;
    font-weight: 700;
    border-radius: 10px;
    padding: 1px 7px;
    white-space: nowrap;
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-conv-card-bottom {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

[b-u5msig4hxk] .sms-flag-icon {
    color: var(--lb-warning);
    font-size: 0.85rem;
}

[b-u5msig4hxk] .sms-case-chip {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    padding: 1px 6px;
    font-size: 0.7rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
}

[b-u5msig4hxk] .sms-case-chip-link {
    cursor: pointer;
    transition: background 0.15s;
}

[b-u5msig4hxk] .sms-case-chip-link:hover {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

[b-u5msig4hxk] .sms-case-chip-more {
    font-size: 0.7rem;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-assigned-initials {
    background: var(--lb-brand);
    color: #fff;
    font-size: 0.65rem;
    font-weight: 700;
    border-radius: 50%;
    width: 22px;
    height: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-left: auto;
}

/* -- Right panel: Conversation detail -- */

[b-u5msig4hxk] .sms-detail-panel {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    min-height: 0;
    height: 100%;
    overflow: hidden;
    background: var(--lb-card);
}

[b-u5msig4hxk] .sms-detail-empty {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 100%;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-detail-empty-icon {
    font-size: 3rem;
    opacity: 0.3;
    margin-bottom: 16px;
}

/* -- Detail header -- */

[b-u5msig4hxk] .sms-detail-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
    flex-wrap: wrap;
}

[b-u5msig4hxk] .sms-detail-header-info {
    flex: 1;
    min-width: 0;
}

[b-u5msig4hxk] .sms-detail-name {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

[b-u5msig4hxk] .sms-detail-phone {
    font-size: 0.85rem;
    color: var(--lb-brand);
    text-decoration: none;
}

[b-u5msig4hxk] .sms-detail-phone:hover {
    text-decoration: underline;
}

[b-u5msig4hxk] .sms-detail-cases {
    display: flex;
    align-items: center;
    gap: 4px;
    margin-top: 4px;
    flex-wrap: wrap;
}

/* #3425: link status is stated in words, so a bare file-number chip is never
   mistaken for a tag and the delete refusal is never a surprise. */
[b-u5msig4hxk] .sms-detail-cases-label {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.72rem;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-detail-cases-label .e-icons {
    font-size: 0.8rem;
}

[b-u5msig4hxk] .sms-detail-cases-none {
    font-style: italic;
}

[b-u5msig4hxk] .sms-detail-actions {
    display: flex;
    gap: 4px;
    flex-shrink: 0;
    flex-wrap: wrap;
}

/* -- Smart match banner -- */

[b-u5msig4hxk] .sms-match-banner {
    background: var(--lb-warning-bg);
    border-bottom: 1px solid var(--lb-warning);
    padding: 10px 16px;
    display: flex;
    align-items: flex-start;
    gap: 8px;
    flex-wrap: wrap;
}

[b-u5msig4hxk] .sms-match-icon {
    color: var(--lb-warning);
    font-size: 1.1rem;
    flex-shrink: 0;
    margin-top: 2px;
}

[b-u5msig4hxk] .sms-match-text {
    font-size: 0.85rem;
    color: var(--lb-text);
}

[b-u5msig4hxk] .sms-match-candidates {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    width: 100%;
    margin-top: 6px;
}

[b-u5msig4hxk] .sms-match-card {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 6px 12px;
    cursor: pointer;
    transition: border-color 0.15s;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

[b-u5msig4hxk] .sms-match-card:hover {
    border-color: var(--lb-brand);
}

[b-u5msig4hxk] .sms-match-name {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text);
}

[b-u5msig4hxk] .sms-match-cases {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}

/* -- Opted out banner -- */

[b-u5msig4hxk] .sms-opted-out-banner {
    background: var(--lb-danger-bg);
    border-bottom: 1px solid var(--lb-danger);
    padding: 10px 16px;
    display: flex;
    align-items: center;
    gap: 8px;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

/* -- Message thread -- */

[b-u5msig4hxk] .sms-message-thread {
    flex: 1 1 0;
    min-height: 0;
    overflow-y: auto;
    padding: 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

/* -- Chat bubbles -- */

[b-u5msig4hxk] .sms-bubble {
    max-width: 75%;
    padding: 10px 14px;
    border-radius: 16px;
    word-break: break-word;
    position: relative;
}

[b-u5msig4hxk] .sms-bubble-inbound {
    align-self: flex-start;
    background: var(--lb-surface-alt);
    color: var(--lb-text);
    border-bottom-left-radius: 4px;
}

[b-u5msig4hxk] .sms-bubble-outbound {
    align-self: flex-end;
    background: var(--lb-brand);
    color: #fff;
    border-bottom-right-radius: 4px;
}

[b-u5msig4hxk] .sms-bubble-text {
    font-size: 0.9rem;
    line-height: 1.4;
    white-space: pre-wrap;
}

[b-u5msig4hxk] .sms-redacted {
    font-style: italic;
    color: var(--lb-text-dim);
    font-size: 0.85rem;
}

[b-u5msig4hxk] .sms-bubble-meta {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
    font-size: 0.7rem;
    opacity: 0.7;
}

[b-u5msig4hxk] .sms-bubble-outbound .sms-bubble-meta {
    justify-content: flex-end;
}

[b-u5msig4hxk] .sms-bubble-time {
    white-space: nowrap;
}

[b-u5msig4hxk] .sms-delivery-icon {
    font-size: 0.75rem;
}

[b-u5msig4hxk] .sms-delivery-delivered {
    color: var(--lb-success);
}

[b-u5msig4hxk] .sms-delivery-failed {
    color: var(--lb-danger);
}

[b-u5msig4hxk] .sms-bubble-sender {
    font-size: 0.7rem;
}

[b-u5msig4hxk] .sms-redact-btn {
    background: none;
    border: none;
    cursor: pointer;
    font-size: 0.7rem;
    opacity: 0;
    transition: opacity 0.15s;
    padding: 0;
    color: inherit;
}

[b-u5msig4hxk] .sms-bubble:hover .sms-redact-btn {
    opacity: 0.6;
}

[b-u5msig4hxk] .sms-redact-btn:hover {
    opacity: 1;
}

/* Touch fallback: phones and tablets can't trigger :hover, so the redact
 * button would stay at opacity: 0 and be invisible. Show at 0.6 -- discreet
 * but discoverable -- so users can tap to redact a message. */
@media (hover: none) {
    [b-u5msig4hxk] .sms-redact-btn {
        opacity: 0.6;
    }
}

/* -- Attachments -- */

[b-u5msig4hxk] .sms-attachment-image {
    max-width: 300px;
    max-height: 250px;
    border-radius: 8px;
    margin-top: 6px;
    display: block;
}

[b-u5msig4hxk] .sms-attachment-card {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 8px 12px;
    margin-top: 6px;
}

[b-u5msig4hxk] .sms-attachment-name {
    font-size: 0.82rem;
    color: var(--lb-text);
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-u5msig4hxk] .sms-attachment-size {
    font-size: 0.7rem;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-attachment-download {
    color: var(--lb-brand);
    text-decoration: none;
}

[b-u5msig4hxk] .sms-attachment-download:hover {
    color: var(--lb-brand-hover);
}

/* -- Inline image for MMS -- */

[b-u5msig4hxk] .sms-inline-image {
    max-width: 300px;
    max-height: 250px;
    border-radius: 8px;
    margin-top: 6px;
    display: block;
    cursor: pointer;
}

/* -- Attachment actions row -- */

[b-u5msig4hxk] .sms-attachment-actions {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
}

[b-u5msig4hxk] .sms-attachment-saved {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--lb-success);
    font-size: 0.78rem;
    font-weight: 500;
}

/* -- File attachment info/icon -- */

[b-u5msig4hxk] .sms-attachment-icon {
    font-size: 1.2rem;
    color: var(--lb-text-dim);
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-attachment-info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

/* -- Typing indicator -- */

[b-u5msig4hxk] .sms-typing-indicator {
    display: flex;
    gap: 4px;
    padding: 8px 14px;
    align-self: flex-start;
}

[b-u5msig4hxk] .sms-typing-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--lb-text-dim);
    animation: sms-typing-bounce-b-u5msig4hxk 1.2s infinite;
}

[b-u5msig4hxk] .sms-typing-dot:nth-child(2) {
    animation-delay: 0.2s;
}

[b-u5msig4hxk] .sms-typing-dot:nth-child(3) {
    animation-delay: 0.4s;
}

@keyframes sms-typing-bounce-b-u5msig4hxk {
    0%, 60%, 100% { transform: translateY(0); }
    30% { transform: translateY(-4px); }
}

/* -- Compose area -- */

[b-u5msig4hxk] .sms-compose {
    border-top: 1px solid var(--lb-border);
    padding: 12px 16px;
    flex-shrink: 0;
    background: var(--lb-card);
}

[b-u5msig4hxk] .sms-compose-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
}

[b-u5msig4hxk] .sms-compose-input {
    flex: 1;
}

[b-u5msig4hxk] .sms-template-btn {
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-send-btn {
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-char-counter {
    font-size: 0.7rem;
    color: var(--lb-text-dim);
    text-align: right;
    margin-top: 4px;
}

[b-u5msig4hxk] .sms-char-over {
    color: var(--lb-danger);
    font-weight: 600;
}

[b-u5msig4hxk] .sms-compose-disabled {
    text-align: center;
    padding: 12px;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

/* -- Disabled notice -- */

.sms-disabled-notice[b-u5msig4hxk] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    height: 60vh;
    color: var(--lb-text-dim);
    text-align: center;
    gap: 12px;
}

.sms-disabled-notice .e-icons[b-u5msig4hxk]{
    font-size: 3rem;
    opacity: 0.3;
}

/* -- Query string filter banner -- */

[b-u5msig4hxk] .sms-query-filter-banner {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    background: var(--lb-info-bg);
    border-bottom: 1px solid var(--lb-info);
    font-size: 0.85rem;
    color: var(--lb-text);
}

[b-u5msig4hxk] .sms-query-filter-banner .e-icons {
    color: var(--lb-info);
    font-size: 1rem;
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-query-filter-label {
    flex: 1;
    font-weight: 500;
}

/* -- Search results -- */

[b-u5msig4hxk] .sms-search-results {
    flex: 1;
    overflow-y: auto;
    padding: 8px 0;
}

[b-u5msig4hxk] .sms-search-header {
    padding: 8px 16px;
    font-size: 0.8rem;
    color: var(--lb-text-dim);
    border-bottom: 1px solid var(--lb-border);
}

[b-u5msig4hxk] .sms-search-result-card {
    padding: 12px 16px;
    border-bottom: 1px solid var(--lb-border-light, var(--lb-border));
    cursor: pointer;
    transition: background 0.15s ease;
}

[b-u5msig4hxk] .sms-search-result-card:hover {
    background: var(--lb-surface-alt);
}

[b-u5msig4hxk] .sms-search-result-top {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 4px;
}

[b-u5msig4hxk] .sms-search-result-name {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text);
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    margin-right: 8px;
}

[b-u5msig4hxk] .sms-search-result-direction {
    font-size: 0.7rem;
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 600;
    flex-shrink: 0;
}

[b-u5msig4hxk] .sms-direction-inbound {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

[b-u5msig4hxk] .sms-direction-outbound {
    background: var(--lb-surface-alt);
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-search-result-body {
    font-size: 0.85rem;
    color: var(--lb-text);
    line-height: 1.4;
    margin-bottom: 4px;
    word-break: break-word;
}

[b-u5msig4hxk] .sms-search-result-time {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-search-result-cases {
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
    margin-top: 4px;
}

/* -- AI Summary panel -- */

[b-u5msig4hxk] .sms-summary-panel {
    border-bottom: 1px solid var(--lb-border);
    padding: 12px 16px;
    background: var(--lb-surface-alt);
    animation: sms-slide-down-b-u5msig4hxk 0.2s ease-out;
}

[b-u5msig4hxk] .sms-summary-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 8px;
}

[b-u5msig4hxk] .sms-summary-title {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text);
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-u5msig4hxk] .sms-summary-title .e-icons {
    color: var(--lb-brand);
}

[b-u5msig4hxk] .sms-summary-actions {
    display: flex;
    gap: 4px;
}

[b-u5msig4hxk] .sms-summary-text {
    font-size: 0.85rem;
    color: var(--lb-text);
    line-height: 1.5;
    white-space: pre-wrap;
    max-height: 200px;
    overflow-y: auto;
    padding: 8px 12px;
    background: var(--lb-surface-alt);
    border-radius: 6px;
    border: 1px solid var(--lb-border);
}

@keyframes sms-slide-down-b-u5msig4hxk {
    from {
        opacity: 0;
        transform: translateY(-8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* -- Scheduled / Cancelled message styles -- */

[b-u5msig4hxk] .sms-bubble-scheduled {
    align-self: flex-end;
    background: var(--lb-surface-alt);
    color: var(--lb-text);
    border: 1px dashed var(--lb-border);
    border-bottom-right-radius: 4px;
}

[b-u5msig4hxk] .sms-bubble-cancelled {
    align-self: flex-end;
    background: var(--lb-surface-alt);
    color: var(--lb-text-dim);
    border: 1px solid var(--lb-border);
    border-bottom-right-radius: 4px;
    opacity: 0.7;
}

[b-u5msig4hxk] .sms-cancelled-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-danger);
    margin-bottom: 2px;
}

[b-u5msig4hxk] .sms-scheduled-info {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.7rem;
    color: var(--lb-text-dim);
}

[b-u5msig4hxk] .sms-scheduled-info .e-icons {
    font-size: 0.75rem;
}

[b-u5msig4hxk] .sms-cancel-schedule-btn {
    font-size: 0.7rem;
    margin-left: 4px;
}

/* -- Send group (primary send + schedule dropdown) -- */

[b-u5msig4hxk] .sms-send-group {
    display: flex;
    align-items: stretch;
    gap: 0;
    flex-shrink: 0;
}

/* Left half: primary Send button keeps only its left corners rounded. */
[b-u5msig4hxk] .sms-send-group .sms-send-btn {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* Right half: the Schedule caret. CssClass lands on the rendered .e-dropdown-btn,
   so target .sms-send-dropdown directly. Reserve width and allow the chevron to
   paint so it can never clip at narrow compose widths. */
[b-u5msig4hxk] .sms-send-group .sms-send-dropdown {
    flex-shrink: 0;
    min-width: 34px;
    padding-left: 6px;
    padding-right: 6px;
    overflow: visible;
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
    border-left: 1px solid rgba(255, 255, 255, 0.3);
}

[b-u5msig4hxk] .sms-send-group .sms-send-dropdown .e-icons {
    margin: 0;
}

/* -- Mobile responsive -- */

@media (max-width: 768px) {
    .sms-inbox-container.sms-mobile[b-u5msig4hxk] {
        flex-direction: column;
        height: calc(100vh - 56px);
    }

    [b-u5msig4hxk] .sms-mobile .sms-conversation-list {
        width: 100%;
        min-width: 0;
        max-height: 40vh;
        border-right: none;
        border-bottom: 1px solid var(--lb-border);
    }

    [b-u5msig4hxk] .sms-mobile .sms-detail-panel {
        flex: 1;
    }

    [b-u5msig4hxk] .sms-hidden-mobile {
        display: none;
    }

    [b-u5msig4hxk] .sms-detail-header {
        flex-direction: column;
        align-items: flex-start;
    }

    [b-u5msig4hxk] .sms-detail-actions {
        width: 100%;
        justify-content: flex-start;
    }

    [b-u5msig4hxk] .sms-bubble {
        max-width: 85%;
    }
}

@media (max-width: 576px) {
    [b-u5msig4hxk] .sms-list-header {
        padding: 10px;
    }

    [b-u5msig4hxk] .sms-conv-card {
        padding: 10px;
    }

    [b-u5msig4hxk] .sms-compose {
        padding: 8px 10px;
    }

    [b-u5msig4hxk] .sms-bubble {
        max-width: 90%;
    }
}

/* -- Back button (mobile) -- */

[b-u5msig4hxk] .sms-back-btn {
    flex-shrink: 0;
}

/* -- Delete dialog: linked-case warning (#3425) --
   NO ::deep here. A modal SfDialog reparents its container to <body>, so a
   "[b-xxx] .foo" rule (what a leading ::deep compiles to) loses its scoped
   ancestor and stops matching. Written unprefixed, these compile to
   ".foo[b-xxx]" and match the element itself wherever it ends up. */

.sms-delete-linked-warning[b-u5msig4hxk] {
    display: flex;
    gap: 8px;
    margin-top: 0.85rem;
    padding: 8px 10px;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: 4px;
    font-size: 0.85rem;
}

.sms-delete-linked-warning .e-icons[b-u5msig4hxk] {
    color: var(--lb-warning);
    flex-shrink: 0;
    margin-top: 2px;
}

.sms-delete-linked-list[b-u5msig4hxk] {
    margin: 4px 0 6px;
    padding-left: 18px;
}

.sms-delete-linked-note[b-u5msig4hxk] {
    color: var(--lb-text-dim);
    font-size: 0.8rem;
}
/* /Components/Pages/ContactManagement/ContactDetail.razor.rz.scp.css */
/* -- Contact 360 Detail Page -- scoped styles -- */

.contact-detail-root[b-zc7w2wkzvf] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
    min-height: 0;
}

/* ── Loading state ── */

.contact-loading[b-zc7w2wkzvf] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 300px;
}

/* ── Header row (card + quick actions) ── */

.contact-header-row[b-zc7w2wkzvf] {
    display: flex;
    flex-direction: column;
}

.contact-header-card[b-zc7w2wkzvf] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    padding: 20px 24px;
    box-shadow: var(--lb-shadow);
}

.header-top[b-zc7w2wkzvf] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}

.header-identity[b-zc7w2wkzvf] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.contact-name[b-zc7w2wkzvf] {
    margin: 0;
    color: var(--lb-text);
    font-weight: 700;
    font-size: 1.35rem;
}

.contact-company[b-zc7w2wkzvf] {
    color: var(--lb-text-muted);
    font-size: 0.92rem;
}

.category-badge[b-zc7w2wkzvf] {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 2px 10px;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    width: fit-content;
    margin-top: 4px;
}

.vendor-badge[b-zc7w2wkzvf] {
    background: var(--lb-badge-other-bg);
    color: var(--lb-badge-other);
    border: 1px solid var(--lb-badge-other);
}

.quick-actions[b-zc7w2wkzvf] {
    display: flex;
    gap: 8px;
    flex-shrink: 0;
    align-items: center;
}

[b-zc7w2wkzvf] .quick-actions .pin-active {
    color: var(--lb-brand);
}

/* ── Detail fields 2-column grid ── */

.detail-fields[b-zc7w2wkzvf] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px 32px;
}

@media (max-width: 768px) {
    .detail-fields[b-zc7w2wkzvf] {
        grid-template-columns: 1fr;
    }
}

.detail-col[b-zc7w2wkzvf] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.detail-field[b-zc7w2wkzvf] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.field-label[b-zc7w2wkzvf] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
}

.field-value[b-zc7w2wkzvf] {
    font-size: 0.9rem;
    color: var(--lb-text);
}

.age-calc[b-zc7w2wkzvf] {
    color: var(--lb-text-muted);
    font-size: 0.82rem;
}

.note-value[b-zc7w2wkzvf] {
    white-space: pre-wrap;
    word-break: break-word;
}

.note-toggle[b-zc7w2wkzvf] {
    background: none;
    border: none;
    color: var(--lb-brand);
    cursor: pointer;
    font-size: 0.82rem;
    padding: 0;
    margin-left: 4px;
    text-decoration: underline;
}

.note-toggle:hover[b-zc7w2wkzvf] {
    color: var(--lb-brand-hover);
}

/* ── Sub-sections (Addresses, Phones, Emails) ── */

.contact-sub-section[b-zc7w2wkzvf] {
    margin-top: 16px;
    padding-top: 12px;
    border-top: 1px solid var(--lb-border-light);
}

.sub-section-label[b-zc7w2wkzvf] {
    margin: 0 0 8px 0;
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
}

/* ── Address cards ── */

.address-cards[b-zc7w2wkzvf] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
}

.address-card[b-zc7w2wkzvf] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 14px;
    border-radius: 6px;
    border: 1px solid var(--lb-border-light);
    background: var(--lb-surface-alt);
    font-size: 0.88rem;
    color: var(--lb-text);
    min-width: 200px;
}

.address-card.primary[b-zc7w2wkzvf] {
    border-color: var(--lb-brand);
    border-left-width: 3px;
}

.primary-flag[b-zc7w2wkzvf] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--lb-brand);
    letter-spacing: 0.04em;
}

.addr-desc[b-zc7w2wkzvf] {
    font-weight: 600;
    color: var(--lb-text);
}

/* ── Inline lists (Phones, Emails) ── */

.inline-list[b-zc7w2wkzvf] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 20px;
    font-size: 0.88rem;
}

.inline-list a[b-zc7w2wkzvf] {
    color: var(--lb-brand);
    text-decoration: none;
}

.inline-list a:hover[b-zc7w2wkzvf] {
    text-decoration: underline;
    color: var(--lb-brand-hover);
}

.primary-item[b-zc7w2wkzvf] {
    font-weight: 700;
}

.item-desc[b-zc7w2wkzvf] {
    color: var(--lb-text-muted);
    font-size: 0.82rem;
}

/* ── Tabbed detail area ── */

.contact-tabs-container[b-zc7w2wkzvf] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--lb-shadow);
}

.tab-content-panel[b-zc7w2wkzvf] {
    padding: 16px;
    min-height: 200px;
}

.tab-loading[b-zc7w2wkzvf] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

.tab-empty[b-zc7w2wkzvf] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 150px;
    color: var(--lb-text-muted);
    font-size: 0.92rem;
}

/* ── Grid cell templates ── */

.file-number-link[b-zc7w2wkzvf] {
    font-family: "Cascadia Code", "Fira Code", monospace;
    font-size: 0.85rem;
    color: var(--lb-brand);
    text-decoration: none;
    cursor: pointer;
}

.file-number-link:hover[b-zc7w2wkzvf] {
    text-decoration: underline;
    color: var(--lb-brand-hover);
}

.status-badge[b-zc7w2wkzvf] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.78rem;
    font-weight: 600;
}

.status-badge.active[b-zc7w2wkzvf] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.status-badge.closed[b-zc7w2wkzvf] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

.important-icon[b-zc7w2wkzvf] {
    color: var(--lb-warning);
    font-size: 0.9rem;
}

.restricted-note[b-zc7w2wkzvf] {
    margin-top: 10px;
    padding: 8px 12px;
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

/* ── Responsive ── */

@media (max-width: 576px) {
    .contact-detail-root[b-zc7w2wkzvf] {
        padding: 10px;
    }

    .contact-header-card[b-zc7w2wkzvf] {
        padding: 14px 16px;
    }

    .header-top[b-zc7w2wkzvf] {
        flex-direction: column;
    }

    .quick-actions[b-zc7w2wkzvf] {
        width: 100%;
        justify-content: flex-start;
    }

    .address-cards[b-zc7w2wkzvf] {
        flex-direction: column;
    }

    .address-card[b-zc7w2wkzvf] {
        min-width: unset;
    }

    .tab-content-panel[b-zc7w2wkzvf] {
        padding: 10px;
    }
}
/* /Components/Pages/ContactManagement/ContactsAiQuery.razor.rz.scp.css */
/* ContactsAiQuery.razor.css */
/* ASCII-only comments per css-component skill */

.aiq-root[b-ueb5oxn5o8] {
    padding: 1rem 1.25rem;
}

.aiq-header[b-ueb5oxn5o8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.75rem;
    margin-bottom: 0.75rem;
}

.aiq-title[b-ueb5oxn5o8] {
    margin: 0;
}

.aiq-intro[b-ueb5oxn5o8] {
    color: var(--lb-text-muted);
    max-width: 60rem;
    margin-bottom: 0.75rem;
}

/* -- Prompt panel --------------------------------------------------------- */
.aiq-prompt-panel[b-ueb5oxn5o8] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 0.375rem;
    padding: 0.75rem;
    max-width: 60rem;
}

[b-ueb5oxn5o8] .aiq-prompt-box textarea {
    min-height: 4.5rem;
}

.aiq-prompt-actions[b-ueb5oxn5o8] {
    display: flex;
    justify-content: flex-end;
    margin-top: 0.5rem;
}

/* -- Example chips --------------------------------------------------------- */
.aiq-examples[b-ueb5oxn5o8] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    margin: 0.75rem 0;
    max-width: 60rem;
}

.aiq-examples-label[b-ueb5oxn5o8] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.aiq-example-chip[b-ueb5oxn5o8] {
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 1rem;
    padding: 0.2rem 0.7rem;
    font-size: 0.8125rem;
    color: var(--lb-text);
    cursor: pointer;
}

.aiq-example-chip:hover:not(:disabled)[b-ueb5oxn5o8] {
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

.aiq-example-chip:disabled[b-ueb5oxn5o8] {
    opacity: 0.6;
    cursor: default;
}

/* -- Result area ------------------------------------------------------------ */
.aiq-result-bar[b-ueb5oxn5o8] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin: 0.5rem 0;
}

.aiq-result-count[b-ueb5oxn5o8] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
}

.aiq-sql-details[b-ueb5oxn5o8] {
    margin-bottom: 0.75rem;
}

.aiq-sql-details summary[b-ueb5oxn5o8] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    cursor: pointer;
}

.aiq-sql[b-ueb5oxn5o8] {
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 0.25rem;
    padding: 0.6rem 0.75rem;
    font-size: 0.8125rem;
    white-space: pre-wrap;
    word-break: break-word;
    margin-top: 0.4rem;
}

.aiq-grid-container[b-ueb5oxn5o8] {
    margin-top: 0.25rem;
}

/* -- States ------------------------------------------------------------------ */
.aiq-loading[b-ueb5oxn5o8] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--lb-text-muted);
    padding: 2rem 0;
}

.aiq-error[b-ueb5oxn5o8] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 0.375rem;
    padding: 0.75rem 1rem;
    max-width: 60rem;
}

.aiq-error .error-icon[b-ueb5oxn5o8] {
    color: var(--lb-danger);
    margin-top: 0.15rem;
}

.aiq-error p[b-ueb5oxn5o8] {
    margin: 0 0 0.25rem;
}

/* Second line of an empty/blocked state: the "what to do about it" sentence,
   quieter than the headline sentence above it. */
.aiq-state-sub[b-ueb5oxn5o8] {
    font-size: 0.875rem;
    margin-top: -0.35rem;
}

/* Retry action on the check-FAILED state -- a failed check is recoverable,
   unlike a firm without the module, so give the button room to read as one. */
[b-ueb5oxn5o8] .aiq-state-btn {
    margin-top: 0.75rem;
}

@media (max-width: 768px) {
    .aiq-root[b-ueb5oxn5o8] {
        padding: 0.75rem;
    }
}
/* /Components/Pages/ContactManagement/ContactsList.razor.rz.scp.css */
/* -- Contacts list page scoped styles -- */

.contacts-root[b-59o1u44lvk] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
    height: calc(100vh - 70px);
    min-height: 0;
    /* Prevent wide grid content from forcing the page past the viewport
       (flex children default to min-width:auto), which clipped the right edge. */
    min-width: 0;
    max-width: 100%;
    overflow-x: hidden;
}

/* -- Loading / Error states -- */
.contacts-loading[b-59o1u44lvk],
.contacts-error[b-59o1u44lvk] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    min-height: 300px;
    gap: 12px;
    color: var(--lb-text-muted);
}

.error-icon[b-59o1u44lvk] {
    font-size: 2rem;
    color: var(--lb-danger);
}

/* -- Page header -- */
.contacts-header[b-59o1u44lvk] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
}

.contacts-title[b-59o1u44lvk] {
    margin: 0;
    color: var(--lb-text);
    font-weight: 600;
}

.header-actions[b-59o1u44lvk] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}

/* -- Search bar -- */
.contacts-search[b-59o1u44lvk] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    padding: 12px 16px;
}

.search-icon[b-59o1u44lvk] {
    color: var(--lb-text-muted);
    padding: 0 8px;
}

[b-59o1u44lvk] .search-input {
    width: 100%;
}

/* -- FTS search tips (SfAccordion) -- */

.fts-query-help[b-59o1u44lvk] {
    margin: 8px 0 10px;
    font-size: 0.875rem;
}

[b-59o1u44lvk] .fts-query-help .e-acrdn-header-content {
    color: var(--lb-brand);
    font-weight: 600;
}

[b-59o1u44lvk] .fts-query-help .e-acrdn-panel {
    padding: 0;
}

[b-59o1u44lvk] .fts-query-help ul {
    margin-top: 8px;
    padding-left: 20px;
}

[b-59o1u44lvk] .fts-query-help li {
    margin-bottom: 4px;
}

/* -- Category stat cards (uses shared StatCard component) -- */
.stat-row[b-59o1u44lvk] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 12px;
}

/* -- Case status toggle -- */
.case-status-toggle[b-59o1u44lvk] {
    display: flex;
    gap: 0;
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    overflow: hidden;
    width: fit-content;
}

.status-btn[b-59o1u44lvk] {
    padding: 6px 16px;
    font-size: 0.82rem;
    font-weight: 500;
    cursor: pointer;
    border: none;
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
    transition: all 0.15s ease;
    border-right: 1px solid var(--lb-border-light);
}

.status-btn:last-child[b-59o1u44lvk] {
    border-right: none;
}

.status-btn:hover[b-59o1u44lvk] {
    color: var(--lb-brand);
    background: var(--lb-bg-white);
}

.status-btn.status-active[b-59o1u44lvk] {
    background: var(--lb-brand);
    color: var(--lb-text-on-brand);
}

/* -- Grid container -- */
.contacts-grid-container[b-59o1u44lvk] {
    position: relative;
    flex: 1 1 0;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

[b-59o1u44lvk] .contacts-grid-container .e-grid {
    flex: 1 1 0;
    min-height: 0;
}

.grid-loading[b-59o1u44lvk] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

/* -- Empty state -- */
.lb-empty-state[b-59o1u44lvk] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 16px;
    color: var(--lb-text-muted);
    gap: 12px;
}

.lb-empty-icon[b-59o1u44lvk] {
    font-size: 2.5rem;
    opacity: 0.4;
}

/* -- Cell templates -- */
.contact-name-link[b-59o1u44lvk] {
    font-weight: 600;
    color: var(--lb-brand);
    text-decoration: none;
    cursor: pointer;
}

.contact-name-link:hover[b-59o1u44lvk] {
    text-decoration: underline;
}

.contact-link[b-59o1u44lvk] {
    color: var(--lb-link);
    text-decoration: none;
}

.contact-link:hover[b-59o1u44lvk] {
    text-decoration: underline;
}

.roles-text[b-59o1u44lvk] {
    display: inline-block;
    max-width: 180px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* -- Category badges -- */
.category-badge[b-59o1u44lvk] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.75rem;
    font-weight: 600;
    text-align: center;
    white-space: nowrap;
}

.badge-client[b-59o1u44lvk] {
    background: var(--lb-badge-client-bg);
    color: var(--lb-badge-client);
}

.badge-medical[b-59o1u44lvk] {
    background: var(--lb-badge-medical-bg);
    color: var(--lb-badge-medical);
}

.badge-adjuster[b-59o1u44lvk] {
    background: var(--lb-badge-adjuster-bg);
    color: var(--lb-badge-adjuster);
}

.badge-defense[b-59o1u44lvk] {
    background: var(--lb-badge-defense-bg);
    color: var(--lb-badge-defense);
}

.badge-expert[b-59o1u44lvk] {
    background: var(--lb-badge-expert-bg);
    color: var(--lb-badge-expert);
}

.badge-staff[b-59o1u44lvk] {
    background: var(--lb-badge-staff-bg);
    color: var(--lb-badge-staff);
}

.badge-other[b-59o1u44lvk] {
    background: var(--lb-badge-other-bg);
    color: var(--lb-badge-other);
}

/* -- Custom pager bar -- */
.pager-bar[b-59o1u44lvk] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 16px;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-bg-white);
    border-radius: 0 0 8px 8px;
    font-size: 0.85rem;
}

.pager-info[b-59o1u44lvk] {
    color: var(--lb-text-muted);
}

.pager-buttons[b-59o1u44lvk] {
    display: flex;
    gap: 8px;
}

/* -- Bulk action toolbar -- */
.bulk-toolbar[b-59o1u44lvk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 16px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    flex-wrap: wrap;
}

.bulk-count-text[b-59o1u44lvk] {
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
}

.bulk-actions[b-59o1u44lvk] {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}

[b-59o1u44lvk] .bulk-actions .e-danger-text .e-btn-content {
    color: var(--lb-danger);
}

.bulk-limit-warning[b-59o1u44lvk] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 16px;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning-border);
    border-radius: 6px;
    font-size: 0.8rem;
    color: var(--lb-warning-text);
}

.warning-icon[b-59o1u44lvk] {
    color: var(--lb-warning-text);
    font-size: 1rem;
}

/* -- Responsive -- */
@media (max-width: 768px) {
    .contacts-header[b-59o1u44lvk] {
        flex-direction: column;
        align-items: flex-start;
    }

    .header-actions[b-59o1u44lvk] {
        width: 100%;
    }

    .stat-row[b-59o1u44lvk] {
        grid-template-columns: repeat(3, 1fr);
    }

    .case-status-toggle[b-59o1u44lvk] {
        width: 100%;
    }

    .status-btn[b-59o1u44lvk] {
        flex: 1;
        text-align: center;
    }

    .bulk-toolbar[b-59o1u44lvk] {
        flex-direction: column;
        align-items: flex-start;
    }

    .bulk-actions[b-59o1u44lvk] {
        width: 100%;
    }

    /* The page shell is a fixed-height flex column (height: calc(100vh - 70px)),
       so on desktop the grid fills the leftover space and scrolls internally. On
       a phone the stacked chrome -- header, search box, "Search query tips"
       accordion, the Open/Closed/All toggle, and 8 stat cards -- is taller than
       the viewport, so the flex:1 grid was starved to zero height: the rows
       loaded but were invisible (only the counts and the "N contacts" footer
       showed). Release the fixed height here -- let the page flow and scroll in
       normal document order, and let the grid keep its own inline Height so the
       result list is reachable by scrolling down. */
    .contacts-root[b-59o1u44lvk] {
        height: auto;
        overflow: visible;
    }

    .contacts-grid-container[b-59o1u44lvk] {
        flex: 0 0 auto;
    }

    [b-59o1u44lvk] .contacts-grid-container .e-grid {
        flex: 0 0 auto;
    }
}

@media (max-width: 576px) {
    .contacts-root[b-59o1u44lvk] {
        padding: 8px;
        gap: 10px;
    }

    .stat-row[b-59o1u44lvk] {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* /Components/Pages/ContactManagement/DuplicateContacts.razor.rz.scp.css */
/* -- Duplicate Contacts page -- scoped styles -- */

.dedup-root[b-bxd6eq3uww] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
}

/* ── Page header ── */

.dedup-header[b-bxd6eq3uww] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.back-link[b-bxd6eq3uww] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
    color: var(--lb-brand);
    text-decoration: none;
    margin-bottom: 4px;
    width: fit-content;
}

.back-link:hover[b-bxd6eq3uww] {
    color: var(--lb-brand-hover);
    text-decoration: underline;
}

.page-title[b-bxd6eq3uww] {
    margin: 0;
    color: var(--lb-text);
    font-weight: 700;
}

.page-subtitle[b-bxd6eq3uww] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

/* ── Scan bar ── */

.scan-bar[b-bxd6eq3uww] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    padding: 12px 16px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
}

.scan-summary[b-bxd6eq3uww] {
    font-size: 0.88rem;
    color: var(--lb-text-muted);
}

.scan-loading[b-bxd6eq3uww] {
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: center;
    padding: 32px;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

/* ── No results ── */

.no-results[b-bxd6eq3uww] {
    display: flex;
    align-items: center;
    gap: 8px;
    justify-content: center;
    padding: 32px;
    color: var(--lb-success);
    font-size: 0.92rem;
}

.no-results-icon[b-bxd6eq3uww] {
    font-size: 1.2rem;
    color: var(--lb-success);
}

/* ── Cap info banner ── */

.cap-info-banner[b-bxd6eq3uww] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 16px;
    background: var(--lb-info-bg);
    border: 1px solid var(--lb-info-border);
    border-radius: 8px;
    font-size: 0.85rem;
    color: var(--lb-info-text);
}

.cap-info-icon[b-bxd6eq3uww] {
    font-size: 1rem;
    color: var(--lb-info-text);
    flex-shrink: 0;
}

/* ── Re-scan bar ── */

.rescan-bar[b-bxd6eq3uww] {
    display: flex;
    justify-content: center;
    padding: 12px 0;
}

/* ── Groups list ── */

.groups-list[b-bxd6eq3uww] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

/* ── Group card ── */

.group-card[b-bxd6eq3uww] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    overflow: hidden;
    box-shadow: var(--lb-shadow);
}

.group-header[b-bxd6eq3uww] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    cursor: pointer;
    user-select: none;
    gap: 12px;
}

.group-header:hover[b-bxd6eq3uww] {
    background: var(--lb-accent-tint);
}

.group-header-left[b-bxd6eq3uww] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    min-width: 0;
}

.expand-icon[b-bxd6eq3uww] {
    font-size: 0.9rem;
    color: var(--lb-text-muted);
    flex-shrink: 0;
}

.group-key[b-bxd6eq3uww] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.group-count[b-bxd6eq3uww] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

/* ── Match type badges ── */

.match-badge[b-bxd6eq3uww] {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
    flex-shrink: 0;
}

.badge-name[b-bxd6eq3uww] {
    background: var(--lb-badge-client-bg);
    color: var(--lb-badge-client);
}

.badge-phone[b-bxd6eq3uww] {
    background: var(--lb-badge-adjuster-bg);
    color: var(--lb-badge-adjuster);
}

.badge-email[b-bxd6eq3uww] {
    background: var(--lb-badge-expert-bg);
    color: var(--lb-badge-expert);
}

.badge-multi[b-bxd6eq3uww] {
    background: var(--lb-badge-medical-bg);
    color: var(--lb-badge-medical);
}

/* ── Group body ── */

.group-body[b-bxd6eq3uww] {
    padding: 0 16px 16px 16px;
    border-top: 1px solid var(--lb-border-light);
}

.group-actions[b-bxd6eq3uww] {
    display: flex;
    justify-content: flex-end;
    padding-top: 10px;
}

/* ── Contact table ── */

.contact-table[b-bxd6eq3uww] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.88rem;
    margin-top: 12px;
}

.contact-table th[b-bxd6eq3uww] {
    text-align: left;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    padding: 6px 8px;
    border-bottom: 1px solid var(--lb-border-light);
}

.contact-table td[b-bxd6eq3uww] {
    padding: 8px;
    color: var(--lb-text);
    border-bottom: 1px solid var(--lb-border-light);
    vertical-align: middle;
}

.contact-table tr:last-child td[b-bxd6eq3uww] {
    border-bottom: none;
}

.contact-link[b-bxd6eq3uww] {
    font-weight: 600;
    color: var(--lb-brand);
    text-decoration: none;
    cursor: pointer;
}

.contact-link:hover[b-bxd6eq3uww] {
    text-decoration: underline;
    color: var(--lb-brand-hover);
}

.contact-table a[b-bxd6eq3uww] {
    color: var(--lb-brand);
    text-decoration: none;
}

.contact-table a:hover[b-bxd6eq3uww] {
    text-decoration: underline;
    color: var(--lb-brand-hover);
}

/* ── Responsive ── */

@media (max-width: 768px) {
    .dedup-root[b-bxd6eq3uww] {
        padding: 10px;
    }

    .scan-bar[b-bxd6eq3uww] {
        flex-direction: column;
        align-items: stretch;
    }

    .hide-md[b-bxd6eq3uww] {
        display: none;
    }
}

@media (max-width: 576px) {
    .group-header-left[b-bxd6eq3uww] {
        flex-direction: column;
        align-items: flex-start;
        gap: 4px;
    }

    .hide-sm[b-bxd6eq3uww] {
        display: none;
    }
}
/* /Components/Pages/ContactManagement/OrphanedContacts.razor.rz.scp.css */
/* -- Orphaned Contacts page scoped styles -- */

.orphans-root[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
    height: calc(100vh - 70px);
    min-height: 0;
}

/* -- Loading / Error / Denied states -- */
.orphans-loading[b-daa3ddl8ma],
.orphans-error[b-daa3ddl8ma],
.orphans-denied[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    min-height: 300px;
    gap: 12px;
    color: var(--lb-text-muted);
}

.error-icon[b-daa3ddl8ma] {
    font-size: 2rem;
    color: var(--lb-danger);
}

.denied-icon[b-daa3ddl8ma] {
    font-size: 2.5rem;
    color: var(--lb-warning);
}

/* -- Page header -- */
.orphans-header[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.back-link[b-daa3ddl8ma] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--lb-brand);
    text-decoration: none;
    font-size: 0.85rem;
    margin-bottom: 4px;
}

.back-link:hover[b-daa3ddl8ma] {
    text-decoration: underline;
}

.orphans-title[b-daa3ddl8ma] {
    margin: 0;
    color: var(--lb-text);
    font-weight: 600;
}

.orphans-subtitle[b-daa3ddl8ma] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

/* -- Action bar -- */
.action-bar[b-daa3ddl8ma] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    align-items: center;
}

/* -- Search bar -- */
.orphans-search[b-daa3ddl8ma] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    padding: 12px 16px;
}

.search-icon[b-daa3ddl8ma] {
    color: var(--lb-text-muted);
    padding: 0 8px;
}

[b-daa3ddl8ma] .search-input {
    width: 100%;
}

/* -- Custom pager bar -- */
.pager-bar[b-daa3ddl8ma] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 16px;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-bg-white);
    border-radius: 0 0 8px 8px;
    font-size: 0.85rem;
}

.pager-info[b-daa3ddl8ma] {
    color: var(--lb-text-muted);
}

.pager-buttons[b-daa3ddl8ma] {
    display: flex;
    gap: 8px;
}

/* -- Grid container -- */
.orphans-grid-container[b-daa3ddl8ma] {
    position: relative;
    min-height: 200px;
    flex: 1 1 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

[b-daa3ddl8ma] .orphans-grid-container .e-grid {
    overflow-x: hidden;
}

.grid-loading[b-daa3ddl8ma] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

/* -- Empty state -- */
.empty-state[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 48px 16px;
    color: var(--lb-text-muted);
    gap: 12px;
}

.empty-icon[b-daa3ddl8ma] {
    font-size: 2.5rem;
    color: var(--lb-success);
    opacity: 0.6;
}

/* -- Cell templates -- */
.contact-link[b-daa3ddl8ma] {
    color: var(--lb-link);
    text-decoration: none;
}

.contact-link:hover[b-daa3ddl8ma] {
    text-decoration: underline;
}

.vendor-check[b-daa3ddl8ma] {
    color: var(--lb-success);
    font-size: 1rem;
}

.note-text[b-daa3ddl8ma] {
    display: inline-block;
    max-width: 230px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* -- Confirm dialog content -- */
.confirm-content[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 12px;
    padding: 8px 0;
}

.confirm-danger-icon[b-daa3ddl8ma] {
    font-size: 2rem;
    color: var(--lb-danger);
}

/* -- Link dialog styles -- */
.link-dialog-form[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    gap: 16px;
}

.link-dialog-info[b-daa3ddl8ma] {
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

.link-dialog-field[b-daa3ddl8ma] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.field-label[b-daa3ddl8ma] {
    font-weight: 500;
    font-size: 0.85rem;
    color: var(--lb-text);
}

.required-indicator[b-daa3ddl8ma] {
    color: var(--lb-danger);
}

.field-validation-error[b-daa3ddl8ma] {
    font-size: 0.8rem;
    color: var(--lb-validation-text);
}

/* -- Responsive -- */
@media (max-width: 768px) {
    /* Page shell is a fixed-height flex column (height: calc(100vh - 70px)) --
       on a phone the stacked chrome (header, action bar, search box) exceeds
       the viewport, starving the flex:1 grid to zero height. The grid has no
       inline Height and no infinite scrolling (a bounded orphaned-contact
       list), so releasing the shell lets it auto-size and the page scroll --
       that is the intended behavior here. */
    .orphans-root[b-daa3ddl8ma] {
        height: auto;
        padding: 12px;
        gap: 12px;
    }

    .orphans-grid-container[b-daa3ddl8ma] {
        flex: 0 0 auto;
    }
}

@media (max-width: 576px) {
    .orphans-root[b-daa3ddl8ma] {
        padding: 8px;
        gap: 10px;
    }

    .action-bar[b-daa3ddl8ma] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Dashboard.razor.rz.scp.css */
/* Dashboard page shell -- minimal, child components own their own layout. */

.dashboard-loading[b-u3l6qsn59q] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}
/* /Components/Pages/DashboardViews/AssistantDashboard.razor.rz.scp.css */
/* -- Assistant Dashboard scoped styles -- */

.dashboard-loading[b-x99tcaqwsa] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* Stat cards row: 4 across on desktop, 2x2 on tablet, stacked on mobile */
.stat-row[b-x99tcaqwsa] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 10px;
}

@media (max-width: 992px) {
    .stat-row[b-x99tcaqwsa] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .stat-row[b-x99tcaqwsa] {
        grid-template-columns: 1fr;
    }
}

/* Secondary stat row (Opportunities) holds 2 cards, not 4.
 * auto-fit lets them fill the row cleanly instead of sitting ragged in the
 * fixed 4-track grid. Declared after the .stat-row media queries so it wins. */
.stat-row--auto[b-x99tcaqwsa] {
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}

/* Task list styles (shared with attorney) */
[b-x99tcaqwsa] .task-list li {
    padding: 6px 10px;
}

[b-x99tcaqwsa] .task-list li.overdue {
    border-left: 3px solid var(--lb-danger);
}

[b-x99tcaqwsa] .task-list li.completed {
    opacity: 0.55;
}

[b-x99tcaqwsa] .task-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

[b-x99tcaqwsa] .task-check {
    flex-shrink: 0;
    margin-top: 2px;
}

[b-x99tcaqwsa] .task-done-icon {
    color: var(--lb-success);
    flex-shrink: 0;
    margin-top: 4px;
    font-size: 0.9rem;
}

[b-x99tcaqwsa] .task-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
    cursor: pointer;
}

/* Lien row layout */
[b-x99tcaqwsa] .lien-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

[b-x99tcaqwsa] .lien-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

[b-x99tcaqwsa] .lien-amount {
    font-weight: 700;
    font-size: 0.85rem;
    color: var(--lb-danger);
    white-space: nowrap;
}

[b-x99tcaqwsa] .lien-summary {
    padding: 6px 10px;
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    border-bottom: 1px solid var(--lb-border-light);
}

/* Pipeline progress bars.
 * The global `.dashboard-root .dash-card .dash-body { padding: 0 }` rule in
 * app.css (3 classes) out-specifies a plain `.pipeline-body` selector, so an
 * earlier padding fix silently lost and labels/counts sat flush to the card
 * edges (#153). Mirror the global's selector depth so the padding actually
 * lands. */
[b-x99tcaqwsa] .dash-card .dash-body.pipeline-body {
    padding: 12px 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

[b-x99tcaqwsa] .pipeline-item {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

[b-x99tcaqwsa] .pipeline-label {
    display: flex;
    justify-content: space-between;
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

[b-x99tcaqwsa] .pipeline-count {
    font-weight: 700;
    color: var(--lb-text);
}

[b-x99tcaqwsa] .pipeline-bar {
    height: 8px;
    background: var(--lb-bg-surface);
    border-radius: 4px;
    overflow: hidden;
}

[b-x99tcaqwsa] .pipeline-fill {
    height: 100%;
    background: var(--lb-brand);
    border-radius: 4px;
    transition: width 0.3s ease;
    min-width: 2px;
}

/* Badge counts (shared pattern) */
[b-x99tcaqwsa] .badge-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 700;
    background: var(--lb-info-bg);
    color: var(--lb-info);
    margin-left: 6px;
    vertical-align: middle;
}

[b-x99tcaqwsa] .badge-count.badge-danger {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

[b-x99tcaqwsa] .badge-count.badge-warning {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

/* Empty state */
[b-x99tcaqwsa] .empty-msg {
    padding: 14px 10px;
    color: var(--lb-text-dim);
    font-size: 0.82rem;
    margin: 0;
}

/* Override global compact-list row flex to stack title above sub-text */
[b-x99tcaqwsa] .compact-list li {
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
}

/* Truncate long text in list items */
[b-x99tcaqwsa] .compact-list .list-title,
[b-x99tcaqwsa] .compact-list .list-sub {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}
/* /Components/Pages/DashboardViews/AttorneyDashboard.razor.rz.scp.css */
/* -- Attorney Dashboard scoped styles -- */

.dashboard-loading[b-otr6402dmm] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* Column-based dashboard layout: cards stack vertically and auto-size */
[b-otr6402dmm] .dashboard-grid--cols {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 8px;
    align-items: start;
}

[b-otr6402dmm] .dash-col {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

@media (max-width: 992px) {
    [b-otr6402dmm] .dashboard-grid--cols {
        grid-template-columns: 1fr;
    }
}

/* Stat cards row: 4 across on desktop, 2x2 on tablet, stacked on mobile */
.stat-row[b-otr6402dmm] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px;
    margin-bottom: 10px;
}

@media (max-width: 992px) {
    .stat-row[b-otr6402dmm] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .stat-row[b-otr6402dmm] {
        grid-template-columns: 1fr;
    }
}

/* Task list specific styles */
[b-otr6402dmm] .task-list li {
    padding: 6px 10px;
}

[b-otr6402dmm] .task-list li.overdue {
    border-left: 3px solid var(--lb-danger);
}

[b-otr6402dmm] .task-list li.completed {
    opacity: 0.55;
}

[b-otr6402dmm] .task-row {
    display: flex;
    align-items: flex-start;
    gap: 8px;
}

[b-otr6402dmm] .task-check {
    flex-shrink: 0;
    margin-top: 2px;
}

[b-otr6402dmm] .task-done-icon {
    color: var(--lb-success);
    flex-shrink: 0;
    margin-top: 4px;
    font-size: 0.9rem;
}

[b-otr6402dmm] .task-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
    cursor: pointer;
}

/* Small note beside a card-header badge (e.g. "oldest 45 d") */
[b-otr6402dmm] .header-note {
    margin-left: 8px;
    font-size: 0.72rem;
    font-weight: 400;
    color: var(--lb-text-dim);
    text-transform: none;
}

/* Negotiation row */
[b-otr6402dmm] .neg-row {
    display: flex;
    align-items: center;
    gap: 10px;
}

[b-otr6402dmm] .neg-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

[b-otr6402dmm] .neg-amounts {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    font-size: 0.78rem;
    white-space: nowrap;
}

[b-otr6402dmm] .neg-demand {
    color: var(--lb-text);
    font-weight: 600;
}

[b-otr6402dmm] .neg-offer {
    color: var(--lb-success);
}

[b-otr6402dmm] .neg-days {
    font-weight: 700;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    min-width: 32px;
    text-align: right;
}

/* Shared: badge counts in card headers */
[b-otr6402dmm] .badge-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 700;
    background: var(--lb-info-bg);
    color: var(--lb-info);
    margin-left: 6px;
    vertical-align: middle;
}

[b-otr6402dmm] .badge-count.badge-danger {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

[b-otr6402dmm] .badge-count.badge-warning {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

/* Empty state message */
[b-otr6402dmm] .empty-msg {
    padding: 14px 10px;
    color: var(--lb-text-dim);
    font-size: 0.82rem;
    margin: 0;
}

/* Override global compact-list row flex to stack title above sub-text */
[b-otr6402dmm] .compact-list li {
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
}

/* Truncate long text in list items */
[b-otr6402dmm] .compact-list .list-title,
[b-otr6402dmm] .compact-list .list-sub {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}
/* /Components/Pages/DashboardViews/ManagingPartnerDashboard.razor.rz.scp.css */
/* -- Managing Partner Dashboard scoped styles -- */

.dashboard-loading[b-xa4i2g0q48] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* Stat cards row.
 *   >= 1200px (wide desktop):       6 across (single row)
 *   768 - 1199px (compact desktop): 2 across (covers Z Fold landscape ~829
 *                                   CSS where 3 across clips because the
 *                                   sidebar consumes 220px of the viewport)
 *   <  768px (phones):              1 across (stacked)
 *
 * `minmax(0, 1fr)` lets cards shrink below their intrinsic content width so
 * long currency/label values do not push the grid wider than its container
 * (which was the original cause of the right-edge clipping).
 */
.stat-row[b-xa4i2g0q48] {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: 8px;
    margin-bottom: 10px;
}

@media (max-width: 1199.98px) {
    .stat-row[b-xa4i2g0q48] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (max-width: 767.98px) {
    .stat-row[b-xa4i2g0q48] {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* Secondary stat rows (Opportunities, SMS) hold 4-5 cards, not 6.
 * auto-fit lets them fill the row cleanly at any width instead of sitting
 * ragged in the fixed 6-track grid (cards stretch; no empty trailing tracks).
 * Declared after the .stat-row media queries so it wins for these rows. */
.stat-row--auto[b-xa4i2g0q48] {
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}

/* Grid body: no horizontal scroll for adaptive grids */
[b-xa4i2g0q48] .dash-grid-body {
    overflow-x: hidden;
}

/* Pipeline progress bars.
 * The global `.dashboard-root .dash-card .dash-body { padding: 0 }` rule in
 * app.css (3 classes) out-specifies a plain `.pipeline-body` selector, so an
 * earlier padding fix silently lost and labels/counts sat flush to the card
 * edges (#153). Mirror the global's selector depth so the padding actually
 * lands. */
[b-xa4i2g0q48] .dash-card .dash-body.pipeline-body {
    padding: 12px 16px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

[b-xa4i2g0q48] .pipeline-item {
    display: flex;
    flex-direction: column;
    gap: 3px;
}

[b-xa4i2g0q48] .pipeline-label {
    display: flex;
    justify-content: space-between;
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

[b-xa4i2g0q48] .pipeline-count {
    font-weight: 700;
    color: var(--lb-text);
}

[b-xa4i2g0q48] .pipeline-bar {
    height: 8px;
    background: var(--lb-bg-surface);
    border-radius: 4px;
    overflow: hidden;
}

[b-xa4i2g0q48] .pipeline-fill {
    height: 100%;
    background: var(--lb-brand);
    border-radius: 4px;
    transition: width 0.3s ease;
    min-width: 2px;
}

/* Revenue CSS bar chart -- vertical bars with labels below */
[b-xa4i2g0q48] .revenue-body {
    padding: 10px;
}

[b-xa4i2g0q48] .revenue-chart {
    display: flex;
    align-items: flex-end;
    justify-content: space-around;
    gap: 6px;
    height: 200px;
}

[b-xa4i2g0q48] .revenue-col {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
    min-width: 0;
    height: 100%;
}

[b-xa4i2g0q48] .revenue-bar-wrap {
    flex: 1;
    width: 100%;
    max-width: 40px;
    display: flex;
    align-items: flex-end;
}

[b-xa4i2g0q48] .revenue-bar-fill {
    width: 100%;
    background: var(--lb-success);
    border-radius: 4px 4px 0 0;
    min-height: 2px;
    transition: height 0.3s ease;
}

[b-xa4i2g0q48] .revenue-label {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    margin-top: 4px;
    text-align: center;
}

[b-xa4i2g0q48] .revenue-amount {
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--lb-text-dim);
    text-align: center;
    white-space: nowrap;
}

/* SOL row layout */
[b-xa4i2g0q48] .sol-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}

[b-xa4i2g0q48] .sol-days {
    flex-shrink: 0;
    font-weight: 700;
    font-size: 0.85rem;
    color: var(--lb-warning);
    min-width: 36px;
    text-align: right;
}

[b-xa4i2g0q48] .sol-days.urgent {
    color: var(--lb-danger);
}

[b-xa4i2g0q48] .sol-days.sol-redline {
    color: var(--lb-warning);
    font-style: italic;
}

/* Overdue / within-30-day Red Line is malpractice-critical: escalate to danger */
[b-xa4i2g0q48] .sol-days.sol-redline.urgent {
    color: var(--lb-danger);
}

[b-xa4i2g0q48] .sol-info {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* Badge counts */
[b-xa4i2g0q48] .badge-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 700;
    background: var(--lb-info-bg);
    color: var(--lb-info);
    margin-left: 6px;
    vertical-align: middle;
}

[b-xa4i2g0q48] .badge-count.badge-danger {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

[b-xa4i2g0q48] .badge-count.badge-warning {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

/* Empty state */
[b-xa4i2g0q48] .empty-msg {
    padding: 14px 10px;
    color: var(--lb-text-dim);
    font-size: 0.82rem;
    margin: 0;
}

/* Override global compact-list row flex to stack title above sub-text */
[b-xa4i2g0q48] .compact-list li {
    flex-direction: column;
    align-items: flex-start;
    gap: 1px;
}

/* Truncate long text in list items */
[b-xa4i2g0q48] .compact-list .list-title,
[b-xa4i2g0q48] .compact-list .list-sub {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 100%;
}

/* Alternating row colors for attorney performance grid */
[b-xa4i2g0q48] .e-grid .e-altrow {
    background-color: var(--lb-bg-surface);
}

[b-xa4i2g0q48] .e-grid .e-row:not(.e-altrow) {
    background-color: var(--lb-bg-white);
}

/* Revenue chart: collapse amounts on narrow screens */
@media (max-width: 576px) {
    [b-xa4i2g0q48] .revenue-chart {
        height: 140px;
    }

    [b-xa4i2g0q48] .revenue-amount {
        display: none;
    }
}

/* === Case Health dashboard card === */

.health-kpi-row[b-xa4i2g0q48] {
    display: flex;
    gap: 16px;
    margin-bottom: 12px;
}

.health-kpi[b-xa4i2g0q48] {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: 1;
}

.health-kpi-value[b-xa4i2g0q48] {
    font-size: 1.4rem;
    font-weight: 700;
    line-height: 1.2;
}

.health-kpi-value--avg[b-xa4i2g0q48]  { color: var(--lb-text); }
.health-kpi-value--crit[b-xa4i2g0q48] { color: var(--lb-health-crit); }
.health-kpi-value--warn[b-xa4i2g0q48] { color: var(--lb-health-warn); }

.health-kpi-label[b-xa4i2g0q48] {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.health-list-row[b-xa4i2g0q48] {
    display: flex;
    align-items: center;
    gap: 10px;
}

.health-score-dot[b-xa4i2g0q48] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    font-size: 0.8rem;
    font-weight: 700;
    flex-shrink: 0;
}

.health-score-dot--good[b-xa4i2g0q48] { background: var(--lb-health-good-bg); color: var(--lb-health-good); }
.health-score-dot--warn[b-xa4i2g0q48] { background: var(--lb-health-warn-bg); color: var(--lb-health-warn); }
.health-score-dot--crit[b-xa4i2g0q48] { background: var(--lb-health-crit-bg); color: var(--lb-health-crit); }

.health-list-info[b-xa4i2g0q48] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

/* /Components/Pages/DocumentDataForms/DocumentDataForm.razor.rz.scp.css */
/* First-load state: center the spinner in the content area, matching the
   app-wide loading pattern (cf. ContactDetail / EmailInbox). */
.ddf-loading[b-75dvt5ob9i] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* Persistent save confirmation (#2947). The toast dismisses; this does not, so the
   staffer can tell a saved profile from an unsaved one without re-submitting. */
.ddf-saved[b-75dvt5ob9i] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.75rem 0 0;
    padding: 0.5rem 0.75rem;
    background: var(--lb-success-bg);
    border: 1px solid var(--lb-success);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text);
    font-size: 0.875rem;
}

.ddf-saved .e-icons[b-75dvt5ob9i] {
    color: var(--lb-success);
}
/* /Components/Pages/DocumentSearchPage.razor.rz.scp.css */
/* Document Search Page - co-located styles */

.docsearch-loading[b-7xvqdyrqo6] {
    padding: 2rem;
    color: var(--lb-text-muted);
}

.docsearch-page[b-7xvqdyrqo6] {
    display: flex;
    flex-direction: column;
    height: 100%;
}

/* -- Header -- */

.docsearch-header[b-7xvqdyrqo6] {
    padding: 1rem 1.5rem 0;
}

.docsearch-title[b-7xvqdyrqo6] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 0.125rem;
}

.docsearch-subtitle[b-7xvqdyrqo6] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.75rem;
}

/* -- Search bar -- */

.docsearch-searchbar[b-7xvqdyrqo6] {
    display: flex;
    gap: 0.375rem;
    align-items: center;
    padding: 0 1.5rem 0.625rem;
    flex-wrap: wrap;
}

.docsearch-input-wrap[b-7xvqdyrqo6] {
    flex: 1;
    min-width: 250px;
    display: flex;
    align-items: center;
    gap: 0;
}

/* Anchor for the inline SfSpinner shown while a search runs --
   the spinner pane is absolutely positioned, so it needs a sized,
   positioned wrapper to center inside. */
.docsearch-search-spin[b-7xvqdyrqo6] {
    position: relative;
    width: 28px;
    height: 28px;
    align-self: center;
}

[b-7xvqdyrqo6] .docsearch-textbox {
    flex: 1;
}

[b-7xvqdyrqo6] .docsearch-scope-select {
    border-left: 1px solid var(--lb-border);
}

/* -- Query tips -- */

.docsearch-tips[b-7xvqdyrqo6] {
    padding: 0 1.5rem 0.5rem;
}

.docsearch-tips summary[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    color: var(--lb-text-muted);
    cursor: pointer;
}

.docsearch-tips ul[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    color: var(--lb-text-muted);
    padding-left: 1.125rem;
    margin-top: 0.25rem;
}

.docsearch-tips li[b-7xvqdyrqo6] {
    margin-bottom: 0.125rem;
}

.docsearch-tips code[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    background: var(--lb-bg-surface);
    padding: 0.0625rem 0.25rem;
    border-radius: 3px;
}

/* -- Type stat cards -- */

.docsearch-stat-cards[b-7xvqdyrqo6] {
    display: flex;
    gap: 0.5rem;
    padding: 0 1.5rem 0.625rem;
    flex-wrap: wrap;
}

.docsearch-stat-card[b-7xvqdyrqo6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 0.5rem 0.875rem;
    border-radius: 8px;
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
    cursor: pointer;
    transition: all 0.15s;
    min-width: 60px;
}

.docsearch-stat-card:hover[b-7xvqdyrqo6] {
    border-color: var(--lb-primary);
}

.docsearch-stat-card.stat-active[b-7xvqdyrqo6] {
    border-color: var(--lb-primary);
    background: var(--lb-primary-bg);
}

.docsearch-stat-card .stat-count[b-7xvqdyrqo6] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--lb-text);
}

.docsearch-stat-card.stat-active .stat-count[b-7xvqdyrqo6] {
    color: var(--lb-primary);
}

.docsearch-stat-card .stat-label[b-7xvqdyrqo6] {
    font-size: 0.625rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

/* -- Active filter chips -- */

.docsearch-active-filters[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    padding: 0.25rem 1.5rem;
    flex-wrap: wrap;
}

.docsearch-filter-label[b-7xvqdyrqo6] {
    font-size: 0.625rem;
    color: var(--lb-text-muted);
}

.docsearch-af-chip[b-7xvqdyrqo6] {
    display: inline-flex;
    align-items: center;
    gap: 0.1875rem;
    padding: 0.125rem 0.5rem;
    font-size: 0.625rem;
    background: var(--lb-bg-surface);
    border: 1px solid var(--lb-border);
    border-radius: 0.625rem;
    color: var(--lb-text);
}

.docsearch-af-x[b-7xvqdyrqo6] {
    border: none;
    background: transparent;
    padding: 0;
    cursor: pointer;
    color: var(--lb-text-muted);
    margin-left: 0.125rem;
    font-weight: 600;
    line-height: 1;
}

.docsearch-af-x:hover[b-7xvqdyrqo6] {
    color: var(--lb-danger);
}

.docsearch-af-clear[b-7xvqdyrqo6] {
    font-size: 0.625rem;
    color: var(--lb-primary);
    cursor: pointer;
    margin-left: 0.25rem;
}

.docsearch-af-clear:hover[b-7xvqdyrqo6] {
    text-decoration: underline;
}

/* -- Toolbar -- */

.docsearch-toolbar[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.375rem 1.5rem;
    border-top: 1px solid var(--lb-border);
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
    flex-wrap: wrap;
}

.docsearch-toolbar-left[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex: 1;
}

.docsearch-toolbar-right[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

.docsearch-result-count[b-7xvqdyrqo6] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.docsearch-toolbar-sep[b-7xvqdyrqo6] {
    color: var(--lb-border);
}

[b-7xvqdyrqo6] .docsearch-tb-active {
    color: var(--lb-primary);
    background: var(--lb-primary-bg);
}

.docsearch-sort-label[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    color: var(--lb-text-muted);
}

/* -- Truncation notice (#1468) -- */

.docsearch-truncation[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin: 0.5rem 1.5rem 0;
    padding: 0.5rem 0.75rem;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text);
    font-size: 0.75rem;
}

.docsearch-truncation-icon[b-7xvqdyrqo6] {
    color: var(--lb-warning);
    font-size: 1rem;
    flex-shrink: 0;
}

/* -- Main body -- */

.docsearch-main[b-7xvqdyrqo6] {
    display: flex;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

/* -- Filter sidebar -- */

.docsearch-sidebar[b-7xvqdyrqo6] {
    width: 200px;
    min-width: 200px;
    border-right: 1px solid var(--lb-border);
    padding: 0.75rem;
    overflow-y: auto;
    background: var(--lb-bg);
}

.docsearch-filter-section[b-7xvqdyrqo6] {
    margin-bottom: 1rem;
}

.docsearch-filter-heading[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-bottom: 0.375rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.docsearch-filter-clear[b-7xvqdyrqo6] {
    font-size: 0.625rem;
    color: var(--lb-primary);
    cursor: pointer;
    text-transform: none;
    font-weight: 400;
    letter-spacing: 0;
}

.docsearch-filter-clear:hover[b-7xvqdyrqo6] {
    text-decoration: underline;
}

.docsearch-filter-show-more[b-7xvqdyrqo6] {
    display: inline-block;
    margin-top: 0.25rem;
    font-size: 0.6875rem;
    color: var(--lb-primary);
    cursor: pointer;
    font-weight: 400;
}

.docsearch-filter-show-more:hover[b-7xvqdyrqo6] {
    text-decoration: underline;
}

/* Author / paralegal sidebar dropdowns (#1470-C1) */
[b-7xvqdyrqo6] .docsearch-person-select {
    width: 100%;
}

.docsearch-filter-cb[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.25rem;
}

[b-7xvqdyrqo6] .docsearch-filter-cb .docsearch-facet-checkbox.e-checkbox-wrapper {
    flex: 1 1 auto;
    min-width: 0;
}

[b-7xvqdyrqo6] .docsearch-filter-cb .docsearch-facet-checkbox .e-label {
    font-size: 0.75rem;
    color: var(--lb-text);
}

.docsearch-facet-count[b-7xvqdyrqo6] {
    color: var(--lb-text-muted);
    font-size: 0.625rem;
    margin-left: auto;
    flex-shrink: 0;
}

[b-7xvqdyrqo6] .docsearch-filter-cb-tag .docsearch-facet-checkbox .e-label::before {
    content: "";
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    display: inline-flex;
    margin-right: 0.3125rem;
    margin-bottom: 0.0625rem;
    background: var(--docsearch-tag-color, var(--lb-text-muted));
}

/* Date chips */

.docsearch-date-chips[b-7xvqdyrqo6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.1875rem;
}

.docsearch-date-chip[b-7xvqdyrqo6] {
    padding: 0.125rem 0.4375rem;
    font-size: 0.625rem;
    border: 1px solid var(--lb-border);
    border-radius: 0.625rem;
    cursor: pointer;
    color: var(--lb-text-muted);
    background: var(--lb-bg);
}

.docsearch-date-chip:hover[b-7xvqdyrqo6] {
    border-color: var(--lb-primary);
}

.docsearch-date-chip-active[b-7xvqdyrqo6] {
    background: var(--lb-primary-bg);
    border-color: var(--lb-primary);
    color: var(--lb-primary);
}

/* a11y (#1331): the "Clear all", per-facet "Clear", "Show all/fewer", and
   date-preset controls are now <button> elements for keyboard access. Strip the
   user-agent button chrome so they keep their original text-link / chip look.
   Each rule above still supplies its own font-size, color, and weight; the
   keyboard focus outline is intentionally left intact. */
.docsearch-af-clear[b-7xvqdyrqo6],
.docsearch-filter-clear[b-7xvqdyrqo6],
.docsearch-filter-show-more[b-7xvqdyrqo6] {
    border: none;
    background: none;
    padding: 0;
    font-family: inherit;
    text-align: left;
}

.docsearch-date-chip[b-7xvqdyrqo6] {
    font-family: inherit;
}

/* Custom date range (specific dates) */

.docsearch-date-range[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-top: 0.375rem;
}

[b-7xvqdyrqo6] .docsearch-date-picker {
    flex: 1;
    min-width: 0;
    font-size: 0.6875rem;
}

.docsearch-date-sep[b-7xvqdyrqo6] {
    color: var(--lb-text-muted);
    font-size: 0.6875rem;
    flex-shrink: 0;
}

/* -- Results area -- */

.docsearch-results[b-7xvqdyrqo6] {
    flex: 1;
    min-width: 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

[b-7xvqdyrqo6] .docsearch-results .e-grid {
    flex: 1 1 0;
    min-height: 0;
}

.docsearch-empty[b-7xvqdyrqo6] {
    padding: 2rem;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.875rem;
}

/* Failed-search state (#3008) — a search call that THREW, shown INSTEAD of the
   "No documents match your search criteria." empty state so a broken query is never
   presented as a genuine zero-result search. Mirrors the #120 Case Search fix. */
.docsearch-search-error[b-7xvqdyrqo6] {
    max-width: 32rem;
    margin: 2rem auto;
    padding: 1.25rem;
    text-align: center;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text);
}

.docsearch-search-error-icon[b-7xvqdyrqo6] {
    font-size: 1.5rem;
    color: var(--lb-danger);
}

.docsearch-search-error-title[b-7xvqdyrqo6] {
    margin-top: 0.5rem;
    font-weight: 600;
    font-size: 1rem;
}

.docsearch-search-error-text[b-7xvqdyrqo6] {
    margin: 0.5rem 0 1rem;
    font-size: 0.875rem;
    color: var(--lb-text);
}

/* Scoped error state (#987) — shown by the results ErrorBoundary instead of the
   global "Something went wrong" crash card.
   --lb-danger-border / --lb-danger-text are not real tokens (only --lb-danger and
   --lb-danger-bg are defined in app.css), so the border silently dropped out and the
   text colour never applied. Swapped for the tokens that exist. */
.docsearch-results-error[b-7xvqdyrqo6] {
    max-width: 32rem;
    margin: 3rem auto;
    padding: 1.5rem;
    text-align: center;
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text);
}

.docsearch-results-error-icon[b-7xvqdyrqo6] {
    font-size: 1.5rem;
    color: var(--lb-danger);
}

.docsearch-results-error-title[b-7xvqdyrqo6] {
    margin-top: 0.5rem;
    font-weight: 600;
    font-size: 1rem;
}

.docsearch-results-error-text[b-7xvqdyrqo6] {
    margin: 0.5rem 0 1rem;
    font-size: 0.875rem;
    color: var(--lb-text);
}

/* Name cell */

.docsearch-name-cell[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.375rem;
}

.docsearch-file-icon[b-7xvqdyrqo6] {
    width: 1.25rem;
    height: 1.25rem;
    border-radius: 3px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 0.5rem;
    font-weight: 600;
    color: var(--lb-white);
    flex-shrink: 0;
}

.docsearch-fi-pdf[b-7xvqdyrqo6] { background: var(--lb-danger); }
.docsearch-fi-docx[b-7xvqdyrqo6] { background: var(--lb-primary); }
.docsearch-fi-xlsx[b-7xvqdyrqo6] { background: var(--lb-success); }
.docsearch-fi-pptx[b-7xvqdyrqo6] { background: var(--lb-warning); }
.docsearch-fi-img[b-7xvqdyrqo6] { background: var(--lb-warning); }
.docsearch-fi-msg[b-7xvqdyrqo6] { background: var(--lb-info); }
.docsearch-fi-other[b-7xvqdyrqo6] { background: var(--lb-text-muted); }

.docsearch-name-text[b-7xvqdyrqo6] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.docsearch-case-link[b-7xvqdyrqo6] {
    color: var(--lb-primary);
    text-decoration: none;
}

.docsearch-case-link:hover[b-7xvqdyrqo6] {
    text-decoration: underline;
}

/* Tag pills */

.docsearch-tag-pill[b-7xvqdyrqo6] {
    display: inline-block;
    padding: 0.0625rem 0.4375rem;
    border-radius: 0.625rem;
    font-size: 0.625rem;
    margin-right: 0.1875rem;
    white-space: nowrap;
}

.docsearch-file-size[b-7xvqdyrqo6] {
    color: var(--lb-text-muted);
    font-size: 0.6875rem;
}

/* -- Paging -- */

.docsearch-paging[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0.5rem 1rem;
    border-top: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
    font-size: 0.6875rem;
    color: var(--lb-text-muted);
    gap: 0.5rem;
}

.docsearch-paging-info[b-7xvqdyrqo6] {
    white-space: nowrap;
}

.docsearch-paging-btns[b-7xvqdyrqo6] {
    display: flex;
    gap: 0.25rem;
}

/* -- Preview panel -- */

.docsearch-preview[b-7xvqdyrqo6] {
    width: 220px;
    min-width: 220px;
    border-left: 1px solid var(--lb-border);
    padding: 0.75rem;
    overflow-y: auto;
    background: var(--lb-bg);
}

.docsearch-pv-title[b-7xvqdyrqo6] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 0.5rem;
    word-break: break-word;
}

.docsearch-pv-meta[b-7xvqdyrqo6] {
    margin-bottom: 0.75rem;
}

.docsearch-pv-row[b-7xvqdyrqo6] {
    display: flex;
    justify-content: space-between;
    margin-bottom: 0.25rem;
    font-size: 0.6875rem;
}

.docsearch-pv-row span:first-child[b-7xvqdyrqo6] {
    color: var(--lb-text-muted);
}

.docsearch-pv-row span:last-child[b-7xvqdyrqo6] {
    color: var(--lb-text);
    text-align: right;
}

.docsearch-pv-case[b-7xvqdyrqo6] {
    color: var(--lb-primary);
}

.docsearch-pv-section[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.3px;
    margin-bottom: 0.25rem;
    margin-top: 0.625rem;
}

.docsearch-pv-tags[b-7xvqdyrqo6] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.1875rem;
    margin-bottom: 0.5rem;
}

.docsearch-pv-synopsis[b-7xvqdyrqo6] {
    font-size: 0.6875rem;
    color: var(--lb-text-muted);
    line-height: 1.5;
}

.docsearch-pv-actions[b-7xvqdyrqo6] {
    display: flex;
    gap: 0.25rem;
    margin-top: 0.625rem;
}

.docsearch-pv-empty[b-7xvqdyrqo6] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    text-align: center;
    padding-top: 2rem;
}

/* -- Clipboard bar -- */

.docsearch-clipboard-bar[b-7xvqdyrqo6] {
    display: flex;
    align-items: center;
    gap: 0.625rem;
    padding: 0.5rem 1.5rem;
    background: var(--lb-primary-bg);
    border-top: 1px solid var(--lb-primary);
}

.docsearch-clip-icon[b-7xvqdyrqo6] {
    font-size: 1rem;
    color: var(--lb-primary);
}

.docsearch-clip-text[b-7xvqdyrqo6] {
    flex: 1;
    font-size: 0.75rem;
    color: var(--lb-primary);
}

.docsearch-clip-text strong[b-7xvqdyrqo6] {
    font-weight: 600;
}

.docsearch-clip-docs[b-7xvqdyrqo6] {
    display: block;
    font-size: 0.6875rem;
    color: var(--lb-primary);
    opacity: 0.8;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 500px;
}

/* -- Responsive -- */

@media (max-width: 768px) {
    .docsearch-sidebar[b-7xvqdyrqo6] {
        width: 160px;
        min-width: 160px;
    }

    .docsearch-preview[b-7xvqdyrqo6] {
        display: none;
    }

    .docsearch-searchbar[b-7xvqdyrqo6] {
        padding: 0 1rem 0.5rem;
    }

    .docsearch-header[b-7xvqdyrqo6] {
        padding: 0.75rem 1rem 0;
    }
}

@media (max-width: 576px) {
    .docsearch-sidebar[b-7xvqdyrqo6] {
        display: none;
    }
}
/* /Components/Pages/DocumentTemplateLibrary.razor.rz.scp.css */
/* -- DocumentTemplateLibrary scoped styles -- */

.dtl-page[b-uzfv7tcxfa] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 120px);
    overflow: hidden;
}

/* ---- Header / toolbar ---- */

.dtl-header[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    padding: 4px 4px 12px;
    flex: 0 0 auto;
}

.dtl-title[b-uzfv7tcxfa] {
    margin: 0;
    font-weight: 600;
    color: var(--lb-text);
}

.dtl-actions[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* "Clear filters" only renders while a column funnel is active, so it doubles as the
   filters-are-on indicator. Outline it so it reads as live state among the flat buttons
   rather than as one more always-there action. */
[b-uzfv7tcxfa] .dtl-clear-filters {
    border: 1px solid var(--lb-accent);
    color: var(--lb-accent);
}

/* ---- Undo banner ---- */

.dtl-undo[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 10px;
    padding: 8px 12px;
    border: 1px solid var(--lb-border);
    border-left: 3px solid var(--lb-accent);
    border-radius: 4px;
    background: var(--lb-card);
    color: var(--lb-text);
    flex: 0 0 auto;
}

/* ---- Grid ---- */

.dtl-grid[b-uzfv7tcxfa] {
    flex: 1 1 auto;
    min-height: 0;
    overflow: hidden;
}

/* First-load spinner: sized, positioned anchor so the SfSpinner pane
   centers in the grid area while templates load. */
.dtl-loading[b-uzfv7tcxfa] {
    position: relative;
    height: 100%;
    min-height: 200px;
}

/* ---- Edit Details dialog form ---- */

.dtl-form[b-uzfv7tcxfa] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.dtl-label[b-uzfv7tcxfa] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    margin-top: 6px;
}

.dtl-field-gear[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.dtl-field-gear > :first-child[b-uzfv7tcxfa] {
    flex: 1 1 auto;
    min-width: 0;
}

/* ---- E-signature section ---- */

.dtl-esign[b-uzfv7tcxfa] {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--lb-border);
}

.dtl-signers[b-uzfv7tcxfa] {
    margin-top: 10px;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.dtl-signers-head[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.dtl-signer-row[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.dtl-signer-num[b-uzfv7tcxfa] {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text);
    min-width: 66px;
}

.dtl-hint[b-uzfv7tcxfa] {
    margin: 0;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* ---- Dialog footer ---- */

.dtl-dialog-footer[b-uzfv7tcxfa] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    width: 100%;
}

/* Access gate -- shown to non-Admin/non-FirmOwner users who hit the page
   URL directly. The sidebar nav already hides this entry for them. */
.dtl-denied[b-uzfv7tcxfa] {
    padding: 24px;
    max-width: 640px;
}

.dtl-denied h4[b-uzfv7tcxfa]{
    color: var(--lb-danger);
    margin: 0 0 12px;
}

.dtl-denied p[b-uzfv7tcxfa]{
    margin: 0 0 8px;
    color: var(--lb-text-muted);
    line-height: 1.5;
}

[b-uzfv7tcxfa] .dtl-denied-back {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 12px;
    color: var(--lb-primary);
    text-decoration: none;
    font-weight: 500;
}

[b-uzfv7tcxfa] .dtl-denied-back:hover {
    text-decoration: underline;
}

/* Format badge (spec Phase 3): flags legacy .doc templates. */
[b-uzfv7tcxfa] .dtl-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.75rem;
    font-weight: 600;
    line-height: 1.3;
    white-space: nowrap;
}

[b-uzfv7tcxfa] .dtl-badge-docx {
    color: var(--lb-text-muted);
    background: transparent;
}

[b-uzfv7tcxfa] .dtl-badge-legacy {
    color: #7a5200;
    background: rgba(240, 173, 24, 0.18);
    border: 1px solid rgba(240, 173, 24, 0.45);
}

:global([data-theme="dark"]) .dtl-badge-legacy[b-uzfv7tcxfa] {
    color: #ffd980;
}

/* ---- Responsive ---- */

@media (max-width: 768px) {
    /* Page shell is a fixed-height flex column (height: calc(100vh - 120px)) --
       on a phone the stacked chrome (header actions, undo banner) exceeds the
       viewport, starving the flex:1 grid area to zero height. The grid is
       Height="100%" with no infinite scrolling (a bounded template library),
       so releasing the shell lets it auto-size and the page scroll -- that is
       the intended behavior here. */
    .dtl-page[b-uzfv7tcxfa] {
        height: auto;
    }

    .dtl-grid[b-uzfv7tcxfa] {
        flex: 0 0 auto;
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    .dtl-dialog-footer[b-uzfv7tcxfa] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/EmailInbox.razor.rz.scp.css */
/* -- Email inbox page - scoped styles -- */
/* -- All comments ASCII only (Blazor CSS isolation requirement) -- */

/* Initial page loading container (tenant not yet ready) */
.email-inbox-loading[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

.inbox-toolbar[b-hpsvhfl570] {
    border-bottom: 1px solid var(--lb-border);
    margin-bottom: 8px;
}

/* Live selection-count strip. Deliberately a sibling of <SfToolbar>, NOT a
   toolbar item: the toolbar action labels are kept static so Blazor never
   re-renders toolbar item DOM under Syncfusion's active overflow layout -- that
   race removeChild'd a detached node and killed the circuit after a successful
   batch link (#2316). This strip carries the selection-count affordance instead. */
.inbox-selection-count[b-hpsvhfl570] {
    padding: 2px 10px 6px;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.inbox-selection-count strong[b-hpsvhfl570] {
    color: var(--lb-brand);
    font-weight: 600;
}

/* Partial-failure strip for batch mark-unread / delete (#3385). Names the
   messages the batch could not process and keeps them on screen until the user
   dismisses them -- the 4-second toast it replaces reported only a count, and
   the selection that would have allowed a retry was already cleared. Shares the
   folder banner's warning treatment so the two read as the same kind of notice. */
.inbox-batch-failures[b-hpsvhfl570] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 8px 12px;
    margin: 0 12px 8px;
    border-radius: 4px;
    background: var(--lb-warning-bg);
    color: var(--lb-text);
    border-left: 3px solid var(--lb-warning);
    font-size: 0.875rem;
}

.batch-failure-body[b-hpsvhfl570] {
    flex: 1 1 auto;
    min-width: 0;
}

.batch-failure-head strong[b-hpsvhfl570] {
    color: var(--lb-text);
    font-weight: 600;
}

/* Capped so a large batch cannot push the message list off screen. */
.batch-failure-list[b-hpsvhfl570] {
    margin: 4px 0 0;
    padding-left: 18px;
    max-height: 96px;
    overflow-y: auto;
}

.batch-failure-list li[b-hpsvhfl570] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-search[b-hpsvhfl570] {
    margin-bottom: 8px;
    max-width: 500px;
}

/* -- Search input group: input + search button -- */

.search-input-group[b-hpsvhfl570] {
    display: flex;
    align-items: stretch;
    position: relative;
}

[b-hpsvhfl570] .search-input-group .e-input-group {
    flex: 1 1 auto;
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}

/* SfTooltip wraps the search button in a generated element that becomes the
   flex item. The outer align-items:stretch only stretches that wrapper, not the
   button inside it -- which is why the button rendered shorter than the input.
   Make the wrapper a full-height flex container so the button fills the input
   height. Targets the non-input child so it works whatever element SfTooltip emits. */
[b-hpsvhfl570] .search-input-group > *:not(.e-input-group) {
    display: flex;
    align-items: stretch;
}

/* -- Magnifying-glass search button -- */

[b-hpsvhfl570] .search-btn.e-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 38px;
    min-width: 38px;
    border: 1px solid var(--lb-border);
    border-left: none;
    border-radius: 0 4px 4px 0;
    background-color: var(--lb-brand);
    color: var(--lb-bg-white);
    cursor: pointer;
    flex-shrink: 0;
    transition: background-color 0.15s ease;
    padding: 0;
}

[b-hpsvhfl570] .search-btn.e-btn:hover {
    background-color: var(--lb-brand-hover);
    color: var(--lb-bg-white);
}

[b-hpsvhfl570] .search-btn.e-btn:active {
    background-color: var(--lb-brand-hover);
    color: var(--lb-bg-white);
}

/* -- Search results banner -- */

.search-results-banner[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 6px 12px;
    margin-bottom: 8px;
    background-color: var(--lb-brand-light);
    border: 1px solid var(--lb-brand);
    border-radius: 4px;
    font-size: 0.88rem;
}

.search-results-banner .e-icons[b-hpsvhfl570] {
    color: var(--lb-brand-hover);
}

/* -- Page root + splitter layout fill the viewport so the list and preview
   scroll internally, not the whole page (#1532). The container is a fixed-height
   flex column (100vh - 64px top nav, matching the SmsInbox sibling); the chrome
   above takes natural height and .inbox-layout flexes to fill the rest. The old
   hardcoded calc(100vh - 170px) didn't match the real chrome height, so rows
   overflowed and the PAGE scrolled. -- */

.email-inbox-container[b-hpsvhfl570] {
    display: flex;
    flex-direction: column;
    height: calc(100vh - 64px);
    overflow: hidden;
}

.inbox-layout[b-hpsvhfl570] {
    flex: 1 1 auto;
    min-height: 0;
    min-width: 0;
}

/* -- Grid overrides inside splitter -- */

[b-hpsvhfl570] .e-splitter .e-pane:first-child .e-grid {
    border: none;
}

[b-hpsvhfl570] .e-splitter .e-pane:first-child .e-gridheader {
    border-top: none;
}

/* -- Search-active: highlight rows with left accent border -- */

[b-hpsvhfl570] .e-grid.search-active .e-row {
    border-left: 3px solid var(--lb-brand);
}

/* -- Highlight matching search terms in From/Subject -- */

[b-hpsvhfl570] .e-grid mark {
    background-color: var(--lb-brand-light);
    color: inherit;
    padding: 0 1px;
    border-radius: 2px;
}

/* -- Highlight search terms in the preview pane -- */

.preview-subject mark[b-hpsvhfl570],
.preview-meta mark[b-hpsvhfl570] {
    background-color: var(--lb-brand-light);
    color: inherit;
    padding: 0 2px;
    border-radius: 2px;
}

/* The body renders on an always-white sheet (see .preview-body), so its
   search-highlight mark uses the LITERAL light-amber — the token flips dark
   with the theme and would paint a dark chip on the white sheet. */
[b-hpsvhfl570] .preview-body mark {
    background-color: #FDF6EC;
    color: #1C2536;
    padding: 0 2px;
    border-radius: 2px;
}

/* -- Splitter drag-bar styling -- */

[b-hpsvhfl570] .e-splitter .e-split-bar.e-split-bar-horizontal {
    background-color: var(--lb-border);
    cursor: col-resize;
}

[b-hpsvhfl570] .e-splitter .e-split-bar.e-split-bar-horizontal:hover,
[b-hpsvhfl570] .e-splitter .e-split-bar.e-split-bar-horizontal.e-split-bar-hover {
    background-color: var(--lb-brand);
}

/* Keep the grid's vertical scrollbar clear of the divider's drag zone.
   The first pane's scrollbar sits flush against the split-bar, whose
   col-resize hit area is wider than the 4px separator -- so aiming for the
   scrollbar landed on the resize cursor and made the list hard to scroll
   (reported by a beta tester). Insetting the pane content puts a buffer
   between the scrollbar and the divider, and pinning the resize cursor to the
   split-bar itself stops it bleeding over the scrollbar. */
[b-hpsvhfl570] .e-splitter .e-pane:first-child {
    padding-right: 8px;
    box-sizing: border-box;
    /* The grid owns its own scrollbar (Height="100%" + infinite scrolling).
       Without this the pane ALSO scrolls, so the list showed two side-by-side
       vertical scrollbars. Hiding the pane's overflow leaves only the grid's
       scrollbar; the grid fills the pane so nothing is clipped. */
    overflow: hidden;
}

[b-hpsvhfl570] .e-splitter .e-pane {
    cursor: default;
}

/* -- Unread dot -- */

.unread-dot[b-hpsvhfl570] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--lb-brand);
}

/* Initial-render state for already-read rows. Runtime read/unread toggles are
   applied by per-message rules injected via lbSetUnreadDot (display none/inline
   with !important), which override this and the base rule above. Both use the
   same `display` property so the unread override reliably wins. */
.unread-dot.is-read[b-hpsvhfl570] {
    display: none;
}

/* -- Case link in grid -- */

.case-link[b-hpsvhfl570] {
    color: var(--lb-brand);
    font-weight: 600;
    text-decoration: none;
    font-size: 0.85rem;
}

    .case-link:hover[b-hpsvhfl570] {
        text-decoration: underline;
    }

/* Auto-linked rows render with a small leading link icon and a subtle pill
   background so users can tell at a glance which links were system-created
   by the subject-line auto-link pass vs. linked manually by a person.
   Uses --lb-brand-rgb (themed for light/dark) for the soft fill so the
   pill stays legible in both palettes without hardcoded hex. */
.case-link.auto-link-badge[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 2px 8px;
    border-radius: 10px;
    background-color: rgba(var(--lb-brand-rgb), 0.10);
    border: 1px solid rgba(var(--lb-brand-rgb), 0.30);
}

    .case-link.auto-link-badge .e-icons[b-hpsvhfl570] {
        font-size: 12px;
        color: var(--lb-brand);
    }

    .case-link.auto-link-badge .auto-link-text[b-hpsvhfl570] {
        font-size: 0.85rem;
        line-height: 1;
    }

    .case-link.auto-link-badge:hover[b-hpsvhfl570] {
        background-color: rgba(var(--lb-brand-rgb), 0.18);
        text-decoration: none;
    }

/* -- Preview panel -- */

/* Anchor the pane to its splitter height and make it a flex column so the
   header/quick-actions/attachments stay pinned and only .preview-body scrolls.
   Without min-height:0 a flex child refuses to shrink below its content,
   which is what let long emails overflow the pane with no scrollbar. */
.inbox-preview-panel[b-hpsvhfl570] {
    padding: 0 16px;
    height: 100%;
    min-height: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.preview-header[b-hpsvhfl570] {
    padding-top: 8px;
}

.preview-subject[b-hpsvhfl570] {
    font-weight: 700;
    margin-bottom: 4px;
}

.preview-meta[b-hpsvhfl570] {
    font-size: 0.88rem;
    color: var(--lb-text-muted);
    line-height: 1.6;
}

.preview-body[b-hpsvhfl570] {
    flex: 1 1 auto;
    min-height: 0;
    padding: 8px 12px;
    overflow-y: auto;
    overflow-x: auto;
    word-break: break-word;
    /* Email HTML is authored for light backgrounds — most messages hard-code
       dark/black text or rely on a black-on-white default, so on the dark
       theme the body read as missing (black on near-black). Render the
       message on a white "sheet" in BOTH themes — the same call Outlook
       makes in dark mode — rather than trying to recolor arbitrary
       sanitized HTML. LITERAL colors on purpose: this surface must not
       follow the theme tokens. */
    background: #FFFFFF;
    color: #1C2536;
    color-scheme: light;
    border-radius: 6px;
    /* Without containment, a swipe here chains to the browser's edge swipe-back
       (or pull-to-refresh) and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior: contain;
    touch-action: pan-x pan-y;
}

/* -- Constrain embedded images to preview width -- */

[b-hpsvhfl570] .preview-body img {
    max-width: 100%;
    height: auto;
}

/* -- Inline (embedded) images are click-to-view: print or save to the case -- */

[b-hpsvhfl570] .preview-body img[src^="data:image"] {
    cursor: zoom-in;
}

[b-hpsvhfl570] .preview-body img[src^="data:image"]:hover {
    outline: 2px solid var(--lb-brand, #2563eb);
    outline-offset: 2px;
}

/* -- Dismissible banner shown when the dynamic mail-folder list fails to load.
 *    We fall back to the well-known "inbox" alias but the user needs to know
 *    their custom subfolders aren't visible (#772). -- */
.inbox-folder-banner[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    margin: 0 12px 8px;
    border-radius: 4px;
    background: var(--lb-warning-bg);
    color: var(--lb-text);
    border-left: 3px solid var(--lb-warning);
    font-size: 0.875rem;
}

.inbox-folder-banner-close[b-hpsvhfl570] {
    margin-left: auto;
    background: transparent;
    border: none;
    color: var(--lb-text-muted);
    font-size: 1.2rem;
    line-height: 1;
    cursor: pointer;
    padding: 0 4px;
}

.inbox-folder-banner-close:hover[b-hpsvhfl570] {
    color: var(--lb-text);
}

/* -- Move-to-Folder dialog: where a newly-created folder will land (#3416).
 *    Create used to post to the mailbox root regardless of the destination
 *    selected right above it, silently, so the user only found out by looking in
 *    Outlook. These two lines make the target readable before the click. -- */
.new-folder-parent[b-hpsvhfl570] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    margin-top: 6px;
    font-size: 0.85rem;
    color: var(--lb-text);
}

.new-folder-parent label[b-hpsvhfl570] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    cursor: pointer;
    margin: 0;
}

.new-folder-parent strong[b-hpsvhfl570] {
    font-weight: 600;
    overflow-wrap: anywhere;
}

.new-folder-parent-note[b-hpsvhfl570] {
    margin-top: 6px;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* -- Placeholder shown in place of an inline image whose attachment we could
 *    not resolve (Graph returned null ContentBytes and the per-attachment
 *    re-download failed). Beats a raw broken-image icon (#707). -- */
[b-hpsvhfl570] .preview-body .lb-inline-image-missing {
    display: inline-block;
    padding: 2px 8px;
    border: 1px dashed var(--lb-border);
    border-radius: 4px;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    font-style: italic;
    background: var(--lb-surface-alt);
}

.preview-empty[b-hpsvhfl570] {
    text-align: center;
    color: var(--lb-text-muted);
    padding-top: 80px;
}

/* -- Badge row: case link + replied notice side by side -- */

.preview-badges[b-hpsvhfl570] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-top: 8px;
}

/* -- Case badge on preview -- */

.email-case-badge[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background-color: var(--lb-surface-alt);
    color: var(--lb-text-primary);
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.85rem;
}

    .email-case-badge a[b-hpsvhfl570] {
        color: var(--lb-brand);
        font-weight: 600;
        text-decoration: underline;
        cursor: pointer;
    }

.unlink-link[b-hpsvhfl570] {
    color: var(--lb-text-secondary);
    font-size: 0.85rem;
    text-decoration: underline;
    cursor: pointer;
}

    .unlink-link:hover[b-hpsvhfl570] {
        color: var(--lb-danger);
    }

/* -- Replied notice -- */

.email-replied-notice[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background-color: var(--lb-info-bg);
    color: var(--lb-info);
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 0.85rem;
}

/* -- Attachments section -- */

.attachments-section-header[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
}

.attachments-section h6[b-hpsvhfl570] {
    font-weight: 600;
    margin-bottom: 8px;
}

/* Clickable attachment filename -- opens a preview in a new tab */
.attachment-link[b-hpsvhfl570] {
    color: var(--lb-primary);
    text-decoration: underline;
    cursor: pointer;
}

    .attachment-link:hover[b-hpsvhfl570] {
        text-decoration: none;
    }

/* -- Suggestion panel action buttons (Link / Reject) -- */

.suggestion-actions[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
}

/* -- Batch operation progress text (link / delete / save-all dialogs) -- */

.batch-progress[b-hpsvhfl570] {
    margin-top: 8px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-brand);
}

/* -- Responsive: stack on mobile -- */

@media (max-width: 768px) {
    /* Phones stack the panes via the vertical splitter and let the PAGE scroll
       to reach the preview, so undo the desktop fixed-height clip -- otherwise
       the stacked preview is clipped and unreachable (#1532). */
    .email-inbox-container[b-hpsvhfl570] {
        height: auto;
        overflow: visible;
    }

    .inbox-layout[b-hpsvhfl570] {
        height: auto;
        min-height: 0;
    }

    .inbox-preview-panel[b-hpsvhfl570] {
        padding: 12px 0;
        height: auto;
        display: block;
        overflow: visible;
    }

    .preview-body[b-hpsvhfl570] {
        overflow-y: visible;
    }

    .inbox-search[b-hpsvhfl570] {
        max-width: 100%;
    }

    /* The filter strip stacked six FULL-SIZE pills between the search box and
       the first email on a phone (user screenshot, 2026-07-31) — half the
       screen before any mail. Compact hard: smaller type, tighter padding and
       gaps, narrower folder/load controls. Every chip stays (hiding zero-count
       chips would reflow the strip as streaming counts land — the same reason
       they're disabled-not-hidden on desktop); the strip just stops eating
       the screen. */
    .inbox-folder-bar[b-hpsvhfl570] {
        gap: 6px;
        row-gap: 4px;
        margin-bottom: 6px;
        padding: 4px 0;
    }

    .filter-group[b-hpsvhfl570] {
        gap: 4px;
    }

    [b-hpsvhfl570] .inbox-folder-bar .unread-toggle.e-btn {
        font-size: 0.72rem;
        padding: 2px 8px;
        line-height: 1.4;
    }

    [b-hpsvhfl570] .inbox-folder-bar .unread-toggle.e-btn .e-btn-icon {
        font-size: 0.72rem;
    }

    .unread-filter-pill[b-hpsvhfl570] {
        font-size: 0.72rem;
        padding: 2px 8px;
        gap: 4px;
    }

    [b-hpsvhfl570] .inbox-folder-bar .folder-dropdown {
        width: 170px !important;
    }

    .load-range-label[b-hpsvhfl570] {
        font-size: 0.72rem;
    }

    [b-hpsvhfl570] .load-range-dropdown {
        width: 96px !important;
    }
}

/* -- AI suggestion badge in grid Case column -- */

[b-hpsvhfl570] .ai-suggest-badge {
    background: transparent;
    border: 1px dashed var(--lb-border);
    border-radius: 4px;
    padding: 2px 8px;
    cursor: pointer;
    font-size: 0.85rem;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--lb-text-primary);
    transition: border-color 0.15s, background-color 0.15s;
}

[b-hpsvhfl570] .ai-suggest-badge:hover {
    border-color: var(--lb-primary);
    background: var(--lb-surface-alt);
}

[b-hpsvhfl570] .ai-badge-text {
    max-width: 120px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* -- Confidence dot (shared by grid badge and suggestion panel) -- */

[b-hpsvhfl570] .confidence-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

[b-hpsvhfl570] .confidence-dot.confidence-high {
    background-color: var(--lb-success);
}

[b-hpsvhfl570] .confidence-dot.confidence-medium {
    background-color: var(--lb-warning);
}

[b-hpsvhfl570] .confidence-dot.confidence-low {
    background-color: var(--lb-text-secondary);
}

/* -- AI suggestion confirmation panel -- */

.ai-suggestion-panel[b-hpsvhfl570] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-surface-alt);
    padding: 12px;
    margin: 8px 0;
}

.ai-panel-header[b-hpsvhfl570] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 8px;
}

.ai-panel-title[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--lb-text-primary);
    font-size: 0.9rem;
}

.ai-disclaimer[b-hpsvhfl570] {
    font-size: 0.8rem;
    color: var(--lb-text-secondary);
    padding: 6px 12px;
    background: var(--lb-surface-alt);
    border-radius: 4px;
    margin-bottom: 12px;
}

.ai-suggestion-item[b-hpsvhfl570] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-top: 1px solid var(--lb-border);
    gap: 12px;
}

.ai-suggestion-item:first-of-type[b-hpsvhfl570] {
    border-top: none;
}

.suggestion-details[b-hpsvhfl570] {
    flex: 1;
    min-width: 0;
}

.suggestion-case[b-hpsvhfl570] {
    color: var(--lb-text-primary);
    font-size: 0.9rem;
}

.suggestion-reason[b-hpsvhfl570] {
    color: var(--lb-text-secondary);
    font-size: 0.8rem;
    margin-top: 2px;
}

.suggestion-confidence[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.8rem;
    color: var(--lb-text-secondary);
    margin-top: 4px;
}

/* -- Quick actions bar -- */

.preview-quick-actions[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 6px 0;
    border-bottom: 1px solid var(--lb-border);
    margin-bottom: 8px;
    flex-wrap: wrap;
}

/* Center the now icon-less Reply / Reply All / Forward labels (#1300). SfButton
   renders display:inline-block, so the theme's justify-content:center is inert
   and the labels read off-center once the dead glyphs (#709) are dropped. These
   panes are inline (not teleported), so scoped ::deep reaches the child .e-btn --
   no app.css needed, unlike the viewer dialog (#992/#1007). */
.preview-quick-actions[b-hpsvhfl570]  .e-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.quick-actions-divider[b-hpsvhfl570] {
    width: 1px;
    height: 20px;
    background: var(--lb-border);
    margin: 0 4px;
}

.quick-actions-linked[b-hpsvhfl570] {
    font-size: 0.85rem;
    color: var(--lb-text-secondary);
}

.quick-actions-linked a[b-hpsvhfl570] {
    color: var(--lb-brand);
}

[b-hpsvhfl570] .ai-quick-suggest {
    color: var(--lb-brand);
    font-style: italic;
}

/* -- Folder navigation bar -- */

/* flex-wrap + a real bottom margin keep the filter controls (incl. the
   paperclip "Has Attachments" button) from crowding down onto the grid's
   narrow paperclip column header on tighter widths. */
.inbox-folder-bar[b-hpsvhfl570] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    row-gap: 8px;
    padding: 6px 0;
    margin-bottom: 12px;
}

.folder-loading[b-hpsvhfl570] {
    color: var(--lb-text-secondary);
    display: inline-flex;
    align-items: center;
}

/* Deeply-nested folder names (rendered with a "  L " indent prefix) used to
   clip inside the fixed 200px dropdown. Ellipsize the selected value cleanly
   and give the control a little more room. */
[b-hpsvhfl570] .folder-dropdown .e-input-value,
[b-hpsvhfl570] .folder-dropdown input.e-dropdownlist {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* -- Unread filter pill --
   Toggle pill that sits next to the folder dropdown.  Outlined+muted in
   its default state; filled with the brand color when active so it's
   obvious at a glance whether the inbox is filtered.  The leading dot
   echoes the unread indicator already used on grid rows so the
   association reads instantly. */

.unread-filter-pill[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    border-radius: 999px;
    border: 1px solid var(--lb-border);
    background-color: transparent;
    color: var(--lb-text-secondary);
    font-size: 0.85rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 150ms ease, color 150ms ease, border-color 150ms ease;
}

    .unread-filter-pill:hover[b-hpsvhfl570] {
        background-color: rgba(var(--lb-brand-rgb), 0.08);
        border-color: rgba(var(--lb-brand-rgb), 0.40);
        color: var(--lb-text-primary);
    }

    .unread-filter-pill:focus-visible[b-hpsvhfl570] {
        outline: 2px solid var(--lb-brand);
        outline-offset: 2px;
    }

    .unread-filter-pill.active[b-hpsvhfl570] {
        background-color: var(--lb-brand);
        border-color: var(--lb-brand);
        color: #fff;
    }

        .unread-filter-pill.active:hover[b-hpsvhfl570] {
            background-color: var(--lb-brand-hover);
            border-color: var(--lb-brand-hover);
            color: #fff;
        }

.unread-filter-dot[b-hpsvhfl570] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--lb-brand);
    flex-shrink: 0;
}

    .unread-filter-pill.active .unread-filter-dot[b-hpsvhfl570] {
        background-color: #fff;
    }

.unread-filter-label[b-hpsvhfl570] {
    line-height: 1;
}

.unread-filter-count[b-hpsvhfl570] {
    font-weight: 700;
    font-size: 0.80rem;
    padding-left: 4px;
    border-left: 1px solid rgba(var(--lb-brand-rgb), 0.25);
    margin-left: 2px;
}

    .unread-filter-pill.active .unread-filter-count[b-hpsvhfl570] {
        border-left-color: rgba(255, 255, 255, 0.40);
    }

/* -- Filter toggle buttons -- */

/* Wraps: the group now carries five chips (three of them with counts), which
   overflow a laptop width when the folder name is long. The bar itself already
   wraps, but without this the group is one unbreakable inline-flex run. */
.filter-group[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

[b-hpsvhfl570] .unread-toggle.active {
    background-color: rgba(255, 218, 106, 0.18) !important;
    color: var(--lb-yellow) !important;
    border: 1px solid var(--lb-yellow) !important;
}

/* -- Load range (fetch depth) --
   Sits with the folder picker, NOT in the filter row: it chooses how far back
   to fetch from Microsoft 365, which is a different kind of decision from
   narrowing what is already on screen. The visible "Load:" label is what keeps
   the two readings apart, so it is not decorative -- don't drop it to save
   space (that ambiguity is what made the old preset chips read as no-ops). */

.load-range-group[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

/* Appears only when a fetch filled its cap, so it must not shove the filter chips
   onto a new line when it shows up. The bar already wraps; keeping the button
   compact and non-shrinking stops it splitting its own label. */
[b-hpsvhfl570] .load-older-btn {
    flex: 0 0 auto;
    white-space: nowrap;
}

.load-range-label[b-hpsvhfl570] {
    /* Was --lb-text-secondary, which app.css does not define -- the declaration was
       dropped and this label inherited body text while everything around it was
       muted. Corrected alongside the new .sort-label beside it. */
    color: var(--lb-text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
    margin: 0;
}

/* -- Page-owned sort control (#3384).
   Sorting used to live only in the grid's column headers, which the Outlook card
   list never renders -- and with the reading pane on the Right (the default) an
   ordinary 1440px desktop lands in card mode, so the sort was simply gone. Sits
   in the filter bar because it is visible in BOTH renderings, and carries a
   "Sort:" label for the same reason "Load:" does: unlabelled, a dropdown in this
   row reads as another filter. */

.sort-group[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.sort-label[b-hpsvhfl570] {
    /* --lb-text-muted, NOT --lb-text-secondary: the latter is a phantom token app.css
       never defines, so the declaration is silently dropped and the label just
       inherits. .load-range-label right above had that bug; both are fixed here so
       the two labels in this bar actually match. */
    color: var(--lb-text-muted);
    font-size: 0.82rem;
    white-space: nowrap;
    margin: 0;
}

/* -- Disabled filter chips --
   A chip whose count is zero is disabled rather than hidden: hiding them made
   the toolbar reflow while the streaming load filled in counts. Muted enough to
   read as unavailable, still legible as a count of zero. */

[b-hpsvhfl570] .unread-toggle.e-btn:disabled {
    opacity: 0.45;
    cursor: default;
}

/* -- Focusable container (keyboard shortcuts) -- */

.email-inbox-container:focus[b-hpsvhfl570] {
    outline: none;
}

/* ================================================================
   email-inbox-outlook-list — auto-morph list, reading-pane modes,
   grid fixes (see docs/specs/pending/email-inbox-outlook-list.md)
   ================================================================ */

/* -- List host: the element the lbInboxLayout ResizeObserver watches. Fills
   whatever hosts it (a splitter pane in Right/Bottom, .inbox-layout itself in
   Off). The GRID owns its scrollbar (Height 100%); the CARD list scrolls its
   own root — either way the host itself never scrolls. -- */
.inbox-list-host[b-hpsvhfl570] {
    height: 100%;
    min-height: 0;
    min-width: 0;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.inbox-layout.preview-off .inbox-list-host[b-hpsvhfl570] {
    width: 100%;
}

/* -- Ask #3: no blue cell-focus box. Probe-verified live: the box is the
   bootstrap5.3 theme's inset box-shadow on the FOCUSED cell (:focus on the
   td — Syncfusion puts tabindex on cells; no .e-focused class is involved in
   this theme). On a read-only triage list it is pure noise. Selection
   feedback is the wash below; keyboard focus on real controls (flag, links,
   checkboxes) keeps its :focus-visible ring. -- */
/* !important is deliberate: the bootstrap5-dark theme draws the ring from a
   very high-specificity selector (`.e-grid.sf-grid :is(...long list...)`)
   that a scoped rule cannot out-rank cleanly. Suppressing a vendor focus
   ring is the one place it's warranted. */
[b-hpsvhfl570] .e-grid .e-rowcell:focus,
[b-hpsvhfl570] .e-grid .e-rowcell:focus-visible,
[b-hpsvhfl570] .e-grid .e-rowcell.e-focused,
[b-hpsvhfl570] .e-grid .e-rowcell.e-focus {
    box-shadow: none !important;
    outline: none !important;
}

/* -- Previewed-row wash: amber tint + brand bar, matching the approved
   mockup. Probe-verified live: Syncfusion marks selection on the CELLS
   (.e-rowcell.e-selectionbackground.e-active), NOT on the row element — a
   row-level selector never matches. The brand bar sits on the checkbox cell
   (the first VISIBLE cell; :first-child would land on a hidden 0-width
   column's cell). -- */
[b-hpsvhfl570] .e-grid .e-rowcell.e-selectionbackground,
[b-hpsvhfl570] .e-grid .e-rowcell.e-active {
    background-color: var(--lb-active-bg);
}

[b-hpsvhfl570] .e-grid tr:has(.e-rowcell.e-active) .e-rowcell:has(.lb-row-check) {
    box-shadow: inset 3px 0 0 var(--lb-brand);
}

/* -- Ask #4: the list is read-only but its text must stay copyable. -- */
[b-hpsvhfl570] .e-grid .e-rowcell {
    user-select: text;
}

/* -- Ask #5: the narrowed status columns breathe with tighter padding than
   the default 8px-per-side, which at 20-28px widths would swallow the glyph.
   Matched by CONTENT (:has), not position: grouping prepends indent cells and
   the hidden MessageId/DayBucketDate columns make positional selectors lie. -- */
[b-hpsvhfl570] .e-grid .e-rowcell:has(.lb-row-check),
[b-hpsvhfl570] .e-grid .e-rowcell:has(.unread-dot),
[b-hpsvhfl570] .e-grid .e-rowcell:has(.flag-star),
[b-hpsvhfl570] .e-grid .e-rowcell:has(.e-checkbox-wrapper),
[b-hpsvhfl570] .e-grid .e-headercell:has(.lb-row-check),
[b-hpsvhfl570] .e-grid .e-headercell:has(.e-attachment),
[b-hpsvhfl570] .e-grid .e-headercell:has(.e-bookmark) {
    padding-left: 4px;
    padding-right: 4px;
}

.lb-row-check[b-hpsvhfl570] {
    accent-color: var(--lb-brand);
    width: 14px;
    height: 14px;
    margin: 0;
    cursor: pointer;
}

.lb-row-check:focus-visible[b-hpsvhfl570] {
    box-shadow: var(--lb-focus-ring);
    outline: none;
}

/* -- Ask #6: the flag is a real click target now — 24px minimum, centered
   glyph, visible keyboard focus. -- */
.flag-star[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    min-height: 24px;
    cursor: pointer;
    color: var(--lb-text-dim);
}

.flag-star:hover[b-hpsvhfl570] {
    color: var(--lb-danger);
}

.flag-star.flagged[b-hpsvhfl570] {
    color: var(--lb-danger);
}

.flag-star:focus-visible[b-hpsvhfl570] {
    box-shadow: var(--lb-focus-ring);
    outline: none;
    border-radius: 4px;
}

/* -- Day-at-a-glance Received values ("Today 5:24 PM"). Grid GROUPING for
   day captions was probe-tested and rejected: under EnableInfiniteScrolling,
   Syncfusion renders a fresh caption row per fetched block, so a busy day
   repeats its "Today" bar every 40 rows. The day prefix carries the same
   information with zero component risk; the card list renders true sticky
   separators itself. -- */
.recv-cell[b-hpsvhfl570] {
    white-space: nowrap;
    color: var(--lb-text-muted);
}

/* -- Reading-pane segmented control (Right | Bottom | Off), far right of the
   filter bar. Plain buttons on purpose: three tiny toggles don't warrant a
   Syncfusion component and its overflow re-layout risks (#2316). -- */
.reading-pane-seg[b-hpsvhfl570] {
    display: inline-flex;
    align-items: center;
    gap: 0;
    margin-left: auto;
}

.reading-pane-label[b-hpsvhfl570] {
    color: var(--lb-text-muted);
    font-size: 0.78rem;
    margin-right: 6px;
    white-space: nowrap;
}

.reading-pane-seg button[b-hpsvhfl570] {
    font: inherit;
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-right-width: 0;
    padding: 3px 10px;
    cursor: pointer;
}

.reading-pane-seg button:first-of-type[b-hpsvhfl570] {
    border-radius: 6px 0 0 6px;
}

.reading-pane-seg button:last-of-type[b-hpsvhfl570] {
    border-radius: 0 6px 6px 0;
    border-right-width: 1px;
}

.reading-pane-seg button:hover[b-hpsvhfl570] {
    background: var(--lb-surface-alt);
}

.reading-pane-seg button.on[b-hpsvhfl570] {
    background: var(--lb-active-bg);
    color: var(--lb-brand-hover);
    font-weight: 600;
}

.reading-pane-seg button:focus-visible[b-hpsvhfl570] {
    box-shadow: var(--lb-focus-ring);
    outline: none;
    position: relative;
    z-index: 1;
}

/* -- Bottom mode: the split bar runs horizontally across the page and drags
   vertically; mirror the existing horizontal-bar styling. -- */
[b-hpsvhfl570] .e-splitter .e-split-bar.e-split-bar-vertical {
    background-color: var(--lb-border);
    cursor: row-resize;
}

[b-hpsvhfl570] .e-splitter .e-split-bar.e-split-bar-vertical:hover,
[b-hpsvhfl570] .e-splitter .e-split-bar.e-split-bar-vertical.e-split-bar-hover {
    background-color: var(--lb-brand);
}

/* -- TOUCH: give panning back to the panes ----------------------------------
   Syncfusion's theme sets `touch-action: none` on the splitter ROOT
   (.e-splitter.e-splitter-horizontal / .e-splitter-vertical) so it can own
   drag-to-resize. But touch-action is INTERSECTED from the touched element up
   through its ancestors, so that single declaration disables touch panning for
   EVERYTHING inside the splitter — the entire message list — while the page
   chrome above it still pans. That is the "swiping on the emails does nothing,
   swiping on the header works" report (real phone, 2026-07-31), and it is
   invisible to wheel/trackpad testing, which is why an emulated desktop pass
   called the earlier scroll fix green.

   It MUST be overridden on the root: a descendant cannot widen a restriction
   its ancestor imposed. The split BAR keeps touch-action:none, so dragging to
   resize still belongs to Syncfusion. Not media-scoped on purpose — the same
   dead-touch applies to tablets and touchscreen laptops. Scoped CSS, so this
   only affects this page's splitter. */
[b-hpsvhfl570] .e-splitter,
[b-hpsvhfl570] .e-splitter .e-pane {
    touch-action: auto !important;
}

[b-hpsvhfl570] .e-splitter .e-split-bar {
    touch-action: none !important;
}

/* ============================================================
   Phone tier (<=768px): the message list FLOWS INTO the page scroll.
   MUST stay last in this file — a media query adds no specificity, so these
   only beat the desktop .inbox-list-host rule above by source order (the
   first attempt sat in the earlier phone block and silently lost the
   cascade: the host still computed overflow:hidden).
   ============================================================
   Desktop keeps .inbox-list-host at height:100% + overflow:hidden because
   the grid brings its own scrollbar. On phone that combination would CLIP
   the page-scrolling card list at the pane edge — every message past the
   fold unreachable. Syncfusion also writes pixel heights onto its splitter
   panes, so !important is required there to beat the inline style.
   Verified live at a 344px viewport: the list lays out at its full 4869px,
   no ancestor clips, and wheel-scrolling over the CARDS moves the page
   (0 -> 1000 -> 2500 -> 4687) with load-more still firing (60 -> 100 cards).
   Pairs with InboxMessageCardList's own phone block, which stops the list
   being a scroll container at all. */
@media (max-width: 768px) {
    [b-hpsvhfl570] .e-splitter,
    [b-hpsvhfl570] .e-splitter .e-pane,
    [b-hpsvhfl570] .e-splitter .e-pane:first-child {
        height: auto !important;
        overflow: visible !important;
    }

    .inbox-list-host[b-hpsvhfl570] {
        height: auto;
        overflow: visible;
    }
}
/* /Components/Pages/EmailTemplatesPage.razor.rz.scp.css */
.email-templates-page[b-3u11cdib5s] {
    padding: 20px;
}

.page-header[b-3u11cdib5s] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}

.page-header h3[b-3u11cdib5s] {
    margin: 0;
}

.header-actions[b-3u11cdib5s] {
    display: flex;
    gap: 8px;
    align-items: center;
}

.template-section[b-3u11cdib5s] {
    margin-bottom: 30px;
}

.template-section h5[b-3u11cdib5s] {
    margin-bottom: 12px;
    color: var(--text-color, #333);
    font-weight: 600;
}

/* Adaptive grids manage their own card layout on phones; suppress the
   horizontal scroll wrapper so it does not double up with card mode. */
[b-3u11cdib5s] .e-grid-container {
    overflow-x: hidden;
}
/* /Components/Pages/ESignatureDashboard.razor.rz.scp.css */
/* -- E-Signature Dashboard scoped styles -- */
/* ASCII-only comments per project rules */

.stat-row[b-o7wxgrquxk] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 20px;
}

@media (max-width: 992px) {
    .stat-row[b-o7wxgrquxk] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .stat-row[b-o7wxgrquxk] {
        grid-template-columns: 1fr;
    }
}

.dash-grid-body[b-o7wxgrquxk] {
    /* auto (not hidden) so wide columns stay scrollable if the adaptive
       RowDirection switch has not fired yet (prerender / disconnected circuit).
       The grid scrolls internally, so this never produces page-level scroll. */
    overflow-x: auto;
    /* Without containment, a swipe here chains to the browser's edge swipe-back
       (or pull-to-refresh) and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior: contain;
    touch-action: pan-x pan-y;
}

/* -- Spacing between stacked action buttons (Retry/Dismiss, Resend/View) -- */
/* Prevents edge-to-edge 44px touch targets that cause mis-taps on phones. */
[b-o7wxgrquxk] .e-grid td .e-btn + .e-btn {
    margin-left: 8px;
}

/* -- Status pills -- */
.status-pill[b-o7wxgrquxk] {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.78rem;
    font-weight: 600;
    white-space: nowrap;
}

.pill-active[b-o7wxgrquxk] {
    background-color: var(--lb-info-bg);
    color: var(--lb-info);
}

.pill-completed[b-o7wxgrquxk] {
    background-color: var(--lb-success-bg);
    color: var(--lb-success);
}

.pill-failed[b-o7wxgrquxk] {
    background-color: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.pill-stale[b-o7wxgrquxk] {
    background-color: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.pill-expired[b-o7wxgrquxk] {
    background-color: var(--lb-elevated);
    color: var(--lb-text-muted);
}

.pill-dismissed[b-o7wxgrquxk] {
    background-color: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

.pill-default[b-o7wxgrquxk] {
    background-color: var(--lb-elevated);
    color: var(--lb-text);
}

/* -- Empty state -- */
.empty-state[b-o7wxgrquxk] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 20px;
    color: var(--lb-text-muted);
}

.empty-state .e-icons[b-o7wxgrquxk] {
    font-size: 2.5rem;
    color: var(--lb-success);
    margin-bottom: 12px;
}

.empty-state p[b-o7wxgrquxk] {
    font-size: 0.95rem;
    margin: 0;
}
/* /Components/Pages/Financial/FinancialDashboard.razor.rz.scp.css */
.fd-page[b-31he3j0sa4] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.fd-header[b-31he3j0sa4] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
}

.fd-title[b-31he3j0sa4] {
    margin: 0;
    font-size: 1.75rem;
    color: var(--lb-text);
}

.fd-subtitle[b-31he3j0sa4] {
    margin: 0.25rem 0 0;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

/* #3336: persistent, honest scope indicator for an Admin without firm-wide access --
   never let a scoped-down figure render unlabeled next to a firm-wide-sounding heading. */
.fd-scope-banner[b-31he3j0sa4] {
    margin: 0;
}

/* #3337: stale-data banner shown when a filter-triggered reload fails -- the previous
   payload stays on screen (LoadDashboardAsync no longer nulls _overview on that path)
   instead of blanking the whole dashboard. */
.fd-stale-banner[b-31he3j0sa4] {
    margin: 0;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.fd-filter-bar[b-31he3j0sa4] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    padding: 0.75rem;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background: var(--lb-card);
}

.fd-filter-presets[b-31he3j0sa4] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.fd-preset-btn[b-31he3j0sa4] {
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    color: var(--lb-text-muted);
    border-radius: 999px;
    padding: 0.3rem 0.75rem;
    font-size: 0.78rem;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.fd-preset-btn:hover[b-31he3j0sa4] {
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

.fd-preset-btn--active[b-31he3j0sa4] {
    background: var(--lb-accent-tint);
    border-color: var(--lb-brand);
    color: var(--lb-brand);
    font-weight: 600;
}

.fd-filter-fields[b-31he3j0sa4] {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: 0.75rem;
}

.fd-filter-field[b-31he3j0sa4] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.fd-filter-field label[b-31he3j0sa4] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    font-weight: 600;
}

.fd-filter-actions[b-31he3j0sa4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}

.fd-tab-bar[b-31he3j0sa4] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.5rem;
}

.fd-tab[b-31he3j0sa4] {
    border: 1px solid var(--lb-border);
    background: var(--lb-bg-white);
    color: var(--lb-text-muted);
    border-radius: 999px;
    padding: 0.4rem 0.85rem;
    font-size: 0.82rem;
    cursor: pointer;
}

.fd-tab--active[b-31he3j0sa4] {
    color: var(--lb-brand);
    border-color: var(--lb-brand);
    background: var(--lb-accent-tint);
    font-weight: 600;
}

.fd-tab-content[b-31he3j0sa4] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

/* In-place refresh (#2100): on a filter change after the first load the body stays
   rendered and this overlay signals the reload, instead of blanking the whole content
   region to a centered spinner on every auto-applied change. The overlay is a SIBLING
   of the dimmed content so the pill/spinner are not faded by the content's opacity. */
.fd-tab-content-wrap[b-31he3j0sa4] {
    position: relative;
}

.fd-tab-content--dim[b-31he3j0sa4] {
    opacity: 0.5;
    pointer-events: none;
    transition: opacity 0.15s ease;
}

.fd-refresh-overlay[b-31he3j0sa4] {
    position: absolute;
    inset: 0;
    z-index: 5;
    display: flex;
    justify-content: center;
    align-items: flex-start;
    padding-top: 2rem;
    pointer-events: none;
}

.fd-refresh-overlay__pill[b-31he3j0sa4] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border: 1px solid var(--lb-border);
    border-radius: 999px;
    background: var(--lb-card);
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
}

/* Fallback message when a detail tab is active but has no data to render (#1729). */
.fd-empty-tab[b-31he3j0sa4] {
    padding: 1.5rem;
    text-align: center;
    color: var(--lb-text-muted);
}

/* Contextual empty state inside the detail-tab grids (#1731). Those grids live in
   sibling tab components with no scoped CSS of their own, so the style is reached via
   ::deep from the dashboard scope that hosts them. */
.fd-tab-content[b-31he3j0sa4]  .fd-empty-grid {
    padding: 1.25rem;
    text-align: center;
    color: var(--lb-text-muted);
}

/* Clickable case name in each detail-tab grid -- opens the case in a new tab (#1794).
   Matches the Overview tab's .fo-case-link; the buttons live in sibling tab components
   with no scoped CSS of their own, so the style is reached via ::deep from the dashboard
   scope that hosts them (same approach as .fd-empty-grid above). */
.fd-tab-content[b-31he3j0sa4]  .fd-case-link {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.fd-tab-content[b-31he3j0sa4]  .fd-case-link:hover {
    text-decoration: underline;
}

.fd-loading[b-31he3j0sa4] {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 280px;
}

/* Tenant initialization timeout state shown when TenantReady does not resolve within 10 seconds. */
.fd-init-timeout[b-31he3j0sa4] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    text-align: center;
    color: var(--lb-text-muted);
}

.fd-init-timeout__title[b-31he3j0sa4] {
    font-weight: 600;
    color: var(--lb-text);
}

.fd-init-timeout__text[b-31he3j0sa4] {
    font-size: 0.9rem;
}

.fd-overview-grid[b-31he3j0sa4] {
    display: grid;
    grid-template-columns: repeat(4, minmax(180px, 1fr));
    gap: 0.75rem;
}

.fd-stat-card[b-31he3j0sa4],
.fd-chart-card[b-31he3j0sa4],
.fd-grid-card[b-31he3j0sa4] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 0.75rem;
}

.fd-stat-card[b-31he3j0sa4] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.fd-stat-label[b-31he3j0sa4] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

.fd-stat-value[b-31he3j0sa4] {
    font-size: 1.2rem;
    color: var(--lb-text);
    font-weight: 700;
}

.fd-section-title[b-31he3j0sa4] {
    margin: 0 0 0.5rem;
    font-size: 0.95rem;
    color: var(--lb-text);
}

@media (max-width: 1200px) {
    .fd-overview-grid[b-31he3j0sa4] {
        grid-template-columns: repeat(2, minmax(180px, 1fr));
    }
}

@media (max-width: 768px) {
    .fd-overview-grid[b-31he3j0sa4] {
        grid-template-columns: 1fr;
    }

    .fd-filter-actions[b-31he3j0sa4] {
        margin-left: 0;
    }

    /* Filter fields carry an inline Width (220px / 160px) on the Syncfusion
       controls. On phones each field takes a full row and the control caps to
       the available width so two fields can no longer push past the viewport.
       max-width wins over the inline width without needing !important. */
    .fd-filter-field[b-31he3j0sa4] {
        flex: 1 1 100%;
    }

    .fd-filter-field[b-31he3j0sa4]  .e-input-group,
    .fd-filter-field[b-31he3j0sa4]  .e-control-wrapper {
        max-width: 100%;
    }
}
/* /Components/Pages/Financial/FinancialOverviewTab.razor.rz.scp.css */
.fo-stat-grid[b-2mpfq66tn2] {
    display: grid;
    grid-template-columns: repeat(4, minmax(160px, 1fr));
    gap: 0.75rem;
}

.fo-stat-card[b-2mpfq66tn2] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 0.85rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.fo-stat-label[b-2mpfq66tn2] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.fo-stat-value[b-2mpfq66tn2] {
    font-size: 1.35rem;
    color: var(--lb-text);
    font-weight: 700;
    line-height: 1.2;
}

/* KPI cards that drill through to a detail tab render as <button>s (#1795). Reset the
   native button chrome so they look identical to the static .fo-stat-card divs, and add a
   pointer + hover/focus affordance so the target reads as interactive. */
.fo-stat-card--link[b-2mpfq66tn2] {
    width: 100%;
    font: inherit;
    color: inherit;
    cursor: pointer;
    text-align: left;
    transition: border-color 0.15s, box-shadow 0.15s;
}

.fo-stat-card--link:hover[b-2mpfq66tn2] {
    border-color: var(--lb-brand);
    box-shadow: 0 1px 6px rgba(0, 0, 0, 0.08);
}

.fo-stat-card--link:focus-visible[b-2mpfq66tn2] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

.fo-chart-card[b-2mpfq66tn2],
.fo-grid-card[b-2mpfq66tn2] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 0.85rem 1rem;
}

.fo-section-title[b-2mpfq66tn2] {
    margin: 0 0 0.65rem;
    font-size: 0.95rem;
    color: var(--lb-text);
    font-weight: 600;
}

/* Clickable case name in the Recent Settlements grid -- opens the case in a new tab. */
.fo-case-link[b-2mpfq66tn2] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.fo-case-link:hover[b-2mpfq66tn2] {
    text-decoration: underline;
}

/* Contextual empty state when a filtered date range returns no settlements. */
.fo-empty-grid[b-2mpfq66tn2] {
    padding: 1.25rem;
    text-align: center;
    color: var(--lb-text-muted);
}

@media (max-width: 1200px) {
    .fo-stat-grid[b-2mpfq66tn2] {
        grid-template-columns: repeat(4, minmax(140px, 1fr));
    }
}

@media (max-width: 992px) {
    .fo-stat-grid[b-2mpfq66tn2] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .fo-stat-grid[b-2mpfq66tn2] {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* /Components/Pages/FirmTimeline.razor.rz.scp.css */
/* ============================================================
   FirmTimeline.razor.css -- Scoped styles for the Firm Timeline
   Pure HTML/CSS approach (no SVG text elements).
   ============================================================ */

.timeline-page[b-nrqg2yt6dz] {
    display: flex;
    flex-direction: column;
    gap: 16px;
    padding: 16px;
}

/* --- Toolbar --- */
.timeline-toolbar[b-nrqg2yt6dz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
}

.timeline-heading[b-nrqg2yt6dz] {
    font-size: 1.4rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

.timeline-filters[b-nrqg2yt6dz] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.timeline-select[b-nrqg2yt6dz] {
    padding: 4px 8px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    font-size: 0.85rem;
    background: var(--lb-bg-white);
    color: var(--lb-text);
    min-width: 110px;
}

.timeline-toggle[b-nrqg2yt6dz] {
    display: flex;
    align-items: center;
    gap: 4px;
    font-size: 0.85rem;
    color: var(--lb-text);
    cursor: pointer;
    white-space: nowrap;
}

.timeline-toggle input[type="checkbox"][b-nrqg2yt6dz] {
    accent-color: var(--lb-brand);
}

/* --- Loading / Empty --- */
.timeline-loading[b-nrqg2yt6dz],
.timeline-empty[b-nrqg2yt6dz] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px 16px;
    color: var(--lb-text-muted);
    font-size: 0.95rem;
}

/* --- Chart container --- */
.timeline-chart-container[b-nrqg2yt6dz] {
    overflow-x: auto;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-bg-white);
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

/* --- Header row --- */
.timeline-header-row[b-nrqg2yt6dz] {
    display: flex;
    height: 44px;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
}

.timeline-label-col[b-nrqg2yt6dz] {
    flex: 0 0 200px;
    min-width: 200px;
    padding: 0 8px;
    display: flex;
    align-items: center;
    font-size: 0.8rem;
    color: var(--lb-text);
    border-right: 1px solid var(--lb-timeline-grid);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.timeline-chart-col[b-nrqg2yt6dz] {
    flex: 1;
    position: relative;
    min-width: 600px;
    overflow: hidden;
}

/* --- Date markers --- */
.date-marker[b-nrqg2yt6dz] {
    position: absolute;
    top: 8px;
    transform: translateX(-50%);
    font-size: 0.7rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
    pointer-events: none;
}

.today-marker[b-nrqg2yt6dz] {
    position: absolute;
    top: 26px;
    transform: translateX(-50%);
    font-size: 0.65rem;
    font-weight: 600;
    color: var(--lb-timeline-today);
    white-space: nowrap;
    pointer-events: none;
}

/* --- Track rows --- */
.timeline-track[b-nrqg2yt6dz] {
    display: flex;
    height: 36px;
    border-bottom: 1px solid var(--lb-timeline-grid);
}

.timeline-track-alt[b-nrqg2yt6dz] {
    background: var(--lb-surface-alt);
}

.timeline-case-link[b-nrqg2yt6dz] {
    color: var(--lb-brand);
    font-size: 0.8rem;
    font-weight: 500;
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.timeline-case-link:hover[b-nrqg2yt6dz] {
    text-decoration: underline;
    color: var(--lb-brand-hover);
}

/* --- Today vertical line in each row --- */
.today-line[b-nrqg2yt6dz] {
    position: absolute;
    top: 0;
    bottom: 0;
    width: 1px;
    background: var(--lb-timeline-today);
    opacity: 0.35;
    pointer-events: none;
}

/* --- Track bar --- */
.track-bar[b-nrqg2yt6dz] {
    position: absolute;
    top: 5px;
    height: 26px;
    border-radius: 3px;
    opacity: 0.75;
    cursor: default;
    display: flex;
    align-items: center;
    overflow: hidden;
}

.track-bar-label[b-nrqg2yt6dz] {
    padding: 0 6px;
    font-size: 0.65rem;
    color: var(--lb-text-on-brand);
    font-weight: 500;
    white-space: nowrap;
    pointer-events: none;
}

/* --- SOL marker --- */
.sol-marker[b-nrqg2yt6dz] {
    position: absolute;
    top: 4px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    transform: translateX(-50%);
    z-index: 2;
}

.sol-expired[b-nrqg2yt6dz] {
    background: var(--lb-danger);
}

.sol-urgent[b-nrqg2yt6dz] {
    background: var(--lb-warning);
}

.sol-normal[b-nrqg2yt6dz] {
    background: var(--lb-text-muted);
}

.sol-pulse[b-nrqg2yt6dz] {
    animation: sol-pulse-anim-b-nrqg2yt6dz 2s ease-in-out infinite;
}

@keyframes sol-pulse-anim-b-nrqg2yt6dz {
    0%, 100% { box-shadow: 0 0 0 0 color-mix(in srgb, var(--lb-warning) 50%, transparent); }
    50% { box-shadow: 0 0 0 6px color-mix(in srgb, var(--lb-warning) 0%, transparent); }
}

/* --- Waiting diamond --- */
.wait-diamond[b-nrqg2yt6dz] {
    position: absolute;
    bottom: 4px;
    width: 7px;
    height: 7px;
    background: var(--lb-yellow);
    border: 1px solid var(--lb-yellow);
    transform: translateX(-50%) rotate(45deg);
    z-index: 2;
}

/* --- Task count badge --- */
.task-count[b-nrqg2yt6dz] {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    font-size: 0.65rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
    pointer-events: none;
}

/* --- Legend --- */
.timeline-legend[b-nrqg2yt6dz] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    padding: 8px 0;
    font-size: 0.8rem;
    color: var(--lb-text);
}

.legend-item[b-nrqg2yt6dz] {
    display: flex;
    align-items: center;
    gap: 4px;
}

.legend-swatch[b-nrqg2yt6dz] {
    display: inline-block;
    width: 16px;
    height: 10px;
    border-radius: 2px;
    opacity: 0.7;
}

.legend-swatch-info[b-nrqg2yt6dz] {
    background: var(--lb-info);
}

.legend-dot[b-nrqg2yt6dz] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
}

.legend-dot-expired[b-nrqg2yt6dz] {
    background: var(--lb-danger);
}

.legend-dot-urgent[b-nrqg2yt6dz] {
    background: var(--lb-warning);
}

.legend-diamond[b-nrqg2yt6dz] {
    display: inline-block;
    width: 7px;
    height: 7px;
    background: var(--lb-yellow);
    border: 1px solid var(--lb-yellow);
    transform: rotate(45deg);
}

/* --- Responsive --- */
@media (max-width: 768px) {
    .timeline-toolbar[b-nrqg2yt6dz] {
        flex-direction: column;
        align-items: flex-start;
    }

    .timeline-filters[b-nrqg2yt6dz] {
        width: 100%;
    }

    .timeline-select[b-nrqg2yt6dz] {
        flex: 1;
        min-width: 0;
    }

    .timeline-label-col[b-nrqg2yt6dz] {
        flex: 0 0 120px;
        min-width: 120px;
    }
}
/* /Components/Pages/IntakeWizard.razor.rz.scp.css */
.intake-wizard[b-fp6jj2dj4k] {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.5rem;
}

.intake-header[b-fp6jj2dj4k] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.intake-title[b-fp6jj2dj4k] {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

.intake-mode-toggle[b-fp6jj2dj4k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.mode-label[b-fp6jj2dj4k] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
}

.intake-loading[b-fp6jj2dj4k] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    gap: 1rem;
}

/* Step indicator */
.step-indicator[b-fp6jj2dj4k] {
    display: flex;
    gap: 0.25rem;
    margin-bottom: 2rem;
    overflow-x: auto;
    padding-bottom: 0.5rem;
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

.step-item[b-fp6jj2dj4k] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border-radius: 6px;
    cursor: pointer;
    font-size: 0.8125rem;
    font-family: inherit;
    text-align: left;
    white-space: nowrap;
    background: var(--lb-btn-flat-bg);
    color: var(--lb-btn-flat-text);
    border: 1px solid var(--lb-border);
    transition: all 0.2s;
}

.step-item:hover:not(:disabled)[b-fp6jj2dj4k] {
    background: var(--lb-btn-flat-hover-bg);
}

.step-item:disabled[b-fp6jj2dj4k] {
    cursor: default;
}

/* Keep completed/active styling visible even though future steps are disabled buttons */
.step-item.active:disabled[b-fp6jj2dj4k],
.step-item.completed:disabled[b-fp6jj2dj4k] {
    opacity: 1;
}

.step-item.active[b-fp6jj2dj4k] {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

.step-item.completed[b-fp6jj2dj4k] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
    border-color: var(--lb-success);
}

.step-number[b-fp6jj2dj4k] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.5rem;
    height: 1.5rem;
    border-radius: 50%;
    font-size: 0.75rem;
    font-weight: 600;
    background: var(--lb-border);
    color: var(--lb-text);
}

.step-item.active .step-number[b-fp6jj2dj4k] {
    background: rgba(255, 255, 255, 0.3);
    color: #fff;
}

.step-item.completed .step-number[b-fp6jj2dj4k] {
    background: var(--lb-success);
    color: #fff;
}

.step-label[b-fp6jj2dj4k] {
    font-weight: 500;
}

/* Step content area */
.step-content[b-fp6jj2dj4k] {
    min-height: 350px;
    padding: 1rem 0;
}

.step-placeholder[b-fp6jj2dj4k] {
    padding: 2rem;
    text-align: center;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border: 1px dashed var(--lb-border);
    border-radius: 8px;
}

.intake-preparing[b-fp6jj2dj4k] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    padding: 3rem;
    color: var(--lb-text-muted);
}

/* Hint explaining why the Next button is disabled */
.advance-hint[b-fp6jj2dj4k] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    margin-left: auto;
    margin-right: 0.75rem;
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.advance-hint .e-icons[b-fp6jj2dj4k] {
    color: var(--lb-brand);
}

/* Navigation buttons */
.step-nav[b-fp6jj2dj4k] {
    display: flex;
    justify-content: space-between;
    padding-top: 1.5rem;
    border-top: 1px solid var(--lb-border);
    margin-top: 1.5rem;
}

/* Responsive */
@media (max-width: 768px) {
    .intake-wizard[b-fp6jj2dj4k] {
        padding: 1rem;
    }

    .intake-header[b-fp6jj2dj4k] {
        flex-direction: column;
        gap: 0.75rem;
        align-items: flex-start;
    }

    .step-indicator[b-fp6jj2dj4k] {
        flex-wrap: nowrap;
    }

    .step-label[b-fp6jj2dj4k] {
        display: none;
    }
}
/* /Components/Pages/KanbanBoard.razor.rz.scp.css */
.kanban-page[b-7f8ylor03q] {
    padding: 1rem;
    height: calc(100vh - 120px);
    display: flex;
    flex-direction: column;
}

[b-7f8ylor03q] .kanban-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
    flex-shrink: 0;
}

[b-7f8ylor03q] .kanban-heading {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: var(--lb-text);
}

[b-7f8ylor03q] .kanban-toolbar-actions {
    display: flex;
    gap: 0.5rem;
}

[b-7f8ylor03q] .kanban-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    color: var(--lb-text-muted);
}

/* -- Column headers --
 * flex-wrap so the "+n" pending chip drops to a second line instead of being
 * clipped: nine Timeline columns across a desktop viewport leave ~124px each, and
 * measured on the live board an unwrapped header cut the chip in half on the
 * narrow columns -- a warning nobody can read is no warning (#3489). */
[b-7f8ylor03q] .kanban-col-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.15rem 0.5rem;
    min-width: 0;
}

[b-7f8ylor03q] .kanban-col-dot {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    flex-shrink: 0;
}

[b-7f8ylor03q] .kanban-col-label {
    font-weight: 600;
    font-size: 0.85rem;
}

[b-7f8ylor03q] .kanban-col-count {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border-radius: 10px;
    padding: 0 6px;
    min-width: 20px;
    text-align: center;
}

/* "n not loaded" chip -- appears only when a column's true count (from the whole
 * loaded board) exceeds what the current page slice put on screen, so an
 * apparently-empty column with a non-zero count explains itself instead of
 * reading as a false zero (#3489). Warning-toned, not danger: nothing is wrong,
 * there is just more behind "Show More". */
[b-7f8ylor03q] .kanban-col-pending {
    font-size: 0.7rem;
    font-weight: 500;
    color: var(--lb-warning);
    background: var(--lb-surface-alt);
    border: 1px dashed var(--lb-warning);
    border-radius: 10px;
    padding: 0 6px;
    white-space: nowrap;
}

/* -- Card styling -- */
[b-7f8ylor03q] .kanban-card {
    padding: 0.5rem;
    font-size: 0.85rem;
}

[b-7f8ylor03q] .kanban-card-overdue {
    border-left: 3px solid var(--lb-danger);
}

[b-7f8ylor03q] .kanban-card-header {
    margin-bottom: 0.35rem;
}

[b-7f8ylor03q] .kanban-card-title {
    font-weight: 500;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-height: 1.3;
}

[b-7f8ylor03q] .kanban-card-case {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.35rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-7f8ylor03q] .kanban-card-case .e-icons {
    font-size: 0.7rem;
    margin-right: 3px;
}

[b-7f8ylor03q] .kanban-card-footer {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

[b-7f8ylor03q] .kanban-card-due .e-icons,
[b-7f8ylor03q] .kanban-card-checklist .e-icons,
[b-7f8ylor03q] .kanban-card-auto .e-icons {
    font-size: 0.7rem;
    margin-right: 2px;
}

[b-7f8ylor03q] .kanban-due-overdue {
    color: var(--lb-danger);
    font-weight: 600;
}

[b-7f8ylor03q] .kanban-card-auto {
    color: var(--lb-brand);
}

/* -- Show More -- */
[b-7f8ylor03q] .kanban-show-more {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.75rem;
    padding: 0.75rem;
    flex-shrink: 0;
}

[b-7f8ylor03q] .kanban-show-more-status {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* -- Responsive -- */
@media (max-width: 768px) {
    .kanban-page[b-7f8ylor03q] {
        padding: 0.5rem;
        height: auto;
    }
}

/* -- Empty state -- */
[b-7f8ylor03q] .kanban-empty {
    text-align: center;
    padding: 60px 20px;
}

[b-7f8ylor03q] .kanban-empty-icon {
    font-size: 48px;
    color: var(--lb-text-muted);
    display: block;
    margin-bottom: 12px;
}

[b-7f8ylor03q] .kanban-empty-text {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px;
}

[b-7f8ylor03q] .kanban-empty-sub {
    font-size: 0.88rem;
    color: var(--lb-text-muted);
    margin: 0 0 20px;
}

/* -- Phone status-grouped list (replaces the SfKanban at phone tier) -- */
[b-7f8ylor03q] .kanban-phone-list {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    overflow-y: auto;
}

[b-7f8ylor03q] .kanban-phone-group {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

[b-7f8ylor03q] .kanban-phone-group-header {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.25rem 0;
    border-bottom: 1px solid var(--lb-border);
}

[b-7f8ylor03q] .kanban-phone-empty {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0;
    padding: 0.25rem 0.5rem;
}

[b-7f8ylor03q] .kanban-phone-card {
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    background: var(--lb-card);
}

/* Keep the overdue accent visible over the phone card's full border
   (2 classes beats the single-class .kanban-card-overdue regardless of order). */
[b-7f8ylor03q] .kanban-phone-card.kanban-card-overdue {
    border-left: 3px solid var(--lb-danger);
}

[b-7f8ylor03q] .kanban-phone-move {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.5rem;
}

[b-7f8ylor03q] .kanban-phone-move-label {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    flex-shrink: 0;
}

[b-7f8ylor03q] .kanban-phone-move-select {
    flex: 1;
    min-height: 44px; /* WCAG 2.5.5 touch target */
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    color: var(--lb-text);
    padding: 0 0.5rem;
    font-size: 0.9rem;
}

/* -- Timeline view (kanban-time-view) -- */
[b-7f8ylor03q] .kanban-view-toggle {
    display: inline-flex;
    gap: 0.25rem;
    margin-right: 0.5rem;
}

/* Empty-range buckets still render (fixed layout preserves muscle memory) but
   are muted -- they refuse drops. */
[b-7f8ylor03q] .kanban-col-muted {
    opacity: 0.55;
}

[b-7f8ylor03q] .kanban-col-overdue .kanban-col-label {
    color: var(--lb-danger);
}

/* Card header variant with the complete checkbox (Timeline has no Done column). */
[b-7f8ylor03q] .kanban-card-header-timeline {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
}

[b-7f8ylor03q] .kanban-card-complete {
    margin-top: 2px;
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    accent-color: var(--lb-brand);
    cursor: pointer;
}

/* Larger touch target on the phone card. */
[b-7f8ylor03q] .kanban-phone-card .kanban-card-complete {
    width: 22px;
    height: 22px;
}

@media (max-width: 768px) {
    [b-7f8ylor03q] .kanban-toolbar {
        flex-wrap: wrap;
        gap: 0.5rem;
    }

    [b-7f8ylor03q] .kanban-toolbar-actions {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/MySettings.razor.rz.scp.css */
.my-settings[b-a25hl91wkl] {
    max-width: 640px;
    margin: 0 auto;
    padding: 1rem;
}

.my-settings-header[b-a25hl91wkl] {
    margin-bottom: 1rem;
}

.my-settings-header h3[b-a25hl91wkl] {
    margin: 0 0 0.25rem 0;
    color: var(--lb-text);
}

.my-settings-orientation[b-a25hl91wkl] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    margin: 0;
}

.my-settings-card[b-a25hl91wkl] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.25rem;
    border: 1px solid var(--lb-border, rgba(128, 128, 128, 0.25));
    border-radius: 0.5rem;
    background: var(--lb-card);
}

.my-settings-card + .my-settings-card[b-a25hl91wkl] {
    margin-top: 1rem;
}

.my-settings-card-title[b-a25hl91wkl] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
}

.my-settings-card-orientation[b-a25hl91wkl] {
    margin: -0.5rem 0 0;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.field-row[b-a25hl91wkl] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.field-label[b-a25hl91wkl] {
    font-weight: 600;
    color: var(--lb-text);
}

.field-hint[b-a25hl91wkl] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin: 0.1rem 0 0 0;
}

.my-settings-actions[b-a25hl91wkl] {
    display: flex;
    justify-content: flex-end;
    padding-top: 0.5rem;
}

.my-settings-loading[b-a25hl91wkl] {
    padding: 2rem;
    text-align: center;
    color: var(--lb-text-muted);
}

.my-settings-links[b-a25hl91wkl] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    align-items: flex-start;
}

/* Text links/buttons styled uniformly; underline signals "link" without a new
   color token (keeps the phantom-token CSS gate green). */
.my-settings-link[b-a25hl91wkl] {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    color: var(--lb-text);
    text-decoration: underline;
    text-underline-offset: 2px;
    cursor: pointer;
    text-align: left;
}

.my-settings-link:hover[b-a25hl91wkl] {
    opacity: 0.75;
}
/* /Components/Pages/MyTasks.razor.rz.scp.css */
/* MyTasks.razor -- scoped styles */

.tasks-page[b-kvowxu9m0y] {
    max-width: 800px;
    margin: 0 auto;
    padding: 20px 16px;
}

.tasks-toolbar[b-kvowxu9m0y] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}

.tasks-heading[b-kvowxu9m0y] {
    font-size: 1.4rem;
    font-weight: 600;
    margin: 0;
    color: var(--lb-text);
}

.tasks-loading[b-kvowxu9m0y] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 60px 0;
    color: var(--lb-text-dim);
}

/* -- Section headers -- */

.task-section[b-kvowxu9m0y] {
    margin-bottom: 20px;
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    overflow: hidden;
    background: var(--lb-card);
}

.section-header[b-kvowxu9m0y] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 14px;
    font-size: 0.82rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.4px;
}

.section-overdue[b-kvowxu9m0y] {
    background-color: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.section-today[b-kvowxu9m0y] {
    background-color: var(--lb-accent-tint);
    color: var(--lb-brand);
}

.section-upcoming[b-kvowxu9m0y] {
    background-color: var(--lb-info-bg);
    color: var(--lb-info);
}

.section-completed[b-kvowxu9m0y] {
    background-color: var(--lb-elevated);
    color: var(--lb-text-dim);
}

.section-count[b-kvowxu9m0y] {
    font-size: 0.75rem;
    background: rgba(128, 128, 128, 0.15);
    padding: 1px 8px;
    border-radius: 10px;
}

/* -- Empty state -- */

.tasks-empty[b-kvowxu9m0y] {
    text-align: center;
    padding: 60px 20px;
}

.tasks-empty-icon[b-kvowxu9m0y] {
    font-size: 48px;
    color: var(--lb-text-dim);
    display: block;
    margin-bottom: 12px;
}

.tasks-empty-text[b-kvowxu9m0y] {
    font-size: 1.1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 4px;
}

.tasks-empty-sub[b-kvowxu9m0y] {
    font-size: 0.88rem;
    color: var(--lb-text-dim);
    margin: 0;
}

/* -- Completed toggle -- */

.completed-toggle[b-kvowxu9m0y] {
    margin: 16px 0;
    text-align: center;
}

/* -- Responsive -- */

@media (max-width: 576px) {
    .tasks-page[b-kvowxu9m0y] {
        padding: 12px 8px;
    }

    .tasks-heading[b-kvowxu9m0y] {
        font-size: 1.15rem;
    }
}
/* /Components/Pages/NotesListPage.razor.rz.scp.css */
/* === NotesListPage -- scoped styles === */

.notes-root[b-r97ysfh003] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 16px;
}

.notes-header[b-r97ysfh003] {
    margin-bottom: 0;
}

.notes-title[b-r97ysfh003] {
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

.notes-toolbar[b-r97ysfh003] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* -- Phone tier: secondary filters collapse behind a "Filters" toggle button --
 * Only renders on Phone tier (gated by @if in markup). The button matches the
 * styling pattern from MyCases.razor.css so the two pages feel consistent.
 * Could be extracted into a shared component if more pages adopt the pattern.
 */
.filters-toggle[b-r97ysfh003] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 10px 14px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    color: var(--lb-text);
    font-size: 0.9rem;
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    transition: background 0.15s, border-color 0.15s;
}

.filters-toggle:hover[b-r97ysfh003],
.filters-toggle:focus-visible[b-r97ysfh003] {
    background: var(--lb-bg-surface);
    border-color: var(--lb-text-muted);
    outline: none;
}

.filters-toggle .filters-toggle-label[b-r97ysfh003] {
    flex: 1;
}

.filters-toggle .filters-toggle-caret[b-r97ysfh003] {
    transition: transform 200ms ease;
    color: var(--lb-text-muted);
}

.filters-toggle.expanded .filters-toggle-caret[b-r97ysfh003] {
    transform: rotate(180deg);
}

[b-r97ysfh003] .notes-search-input {
    flex: 2;
    min-width: 300px;
}

.notes-search-icon[b-r97ysfh003] {
    color: var(--lb-text-secondary);
    padding: 0 4px;
}

[b-r97ysfh003] .notes-filter-dd {
    min-width: 140px;
    max-width: 180px;
}

[b-r97ysfh003] .notes-date-picker {
    width: 130px;
}

/* -- FTS search tips -- */

.fts-query-help[b-r97ysfh003] {
    font-size: 0.875rem;
}

.fts-query-help summary[b-r97ysfh003] {
    cursor: pointer;
    color: var(--lb-brand);
    font-weight: 600;
}

.fts-query-help ul[b-r97ysfh003] {
    margin-top: 8px;
    padding-left: 20px;
}

.fts-query-help li[b-r97ysfh003] {
    margin-bottom: 4px;
}

.pager-date-range[b-r97ysfh003] {
    margin-left: 4px;
    font-style: italic;
    color: var(--lb-text-muted);
}

/* -- Stat cards row (uses shared StatCard component) -- */

.stat-row[b-r97ysfh003] {
    display: grid;
    grid-template-columns: repeat(6, 1fr);
    gap: 12px;
}

/* -- Remaining type chips + date chips -- */

.chip-count[b-r97ysfh003] {
    font-weight: 400;
    opacity: 0.7;
    font-size: 11px;
}

.chip-divider[b-r97ysfh003] {
    width: 1px;
    height: 18px;
    background: var(--lb-border);
    margin: 0 4px;
    align-self: center;
}

.notes-chips[b-r97ysfh003] {
    display: flex;
    gap: 5px;
    flex-wrap: wrap;
    align-items: center;
}

.note-chip[b-r97ysfh003] {
    font-size: 12px;
    padding: 4px 10px;
    border-radius: 14px;
    border: 1px solid var(--lb-border);
    color: var(--lb-text-secondary);
    background: var(--lb-card);
    cursor: pointer;
    transition: all 0.15s;
}

.note-chip:hover[b-r97ysfh003] {
    border-color: var(--lb-brand);
}

.note-chip.chip-active[b-r97ysfh003] {
    background: color-mix(in srgb, var(--lb-brand) 15%, transparent);
    border-color: var(--lb-brand);
    color: var(--lb-brand);
}

/* -- Search result summary -- */

.search-result-summary[b-r97ysfh003] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 14px;
    background: color-mix(in srgb, var(--lb-brand) 8%, transparent);
    border: 1px solid color-mix(in srgb, var(--lb-brand) 25%, transparent);
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--lb-text);
}

.search-result-summary .e-search[b-r97ysfh003] {
    color: var(--lb-brand);
    font-size: 0.9rem;
}

.search-clear-btn[b-r97ysfh003] {
    margin-left: auto;
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.8rem;
    cursor: pointer;
    padding: 2px 8px;
    border-radius: 4px;
}

.search-clear-btn:hover[b-r97ysfh003] {
    background: color-mix(in srgb, var(--lb-brand) 12%, transparent);
    text-decoration: underline;
}

.notes-loading[b-r97ysfh003] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 40px;
    color: var(--lb-text-secondary);
    gap: 8px;
}

.notes-empty[b-r97ysfh003] {
    text-align: center;
    padding: 40px;
    color: var(--lb-text-secondary);
}

.notes-empty-icon[b-r97ysfh003] {
    font-size: 36px;
    display: block;
    margin-bottom: 12px;
}

.note-card[b-r97ysfh003] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 8px;
    transition: border-color 0.15s;
}

.note-card:hover[b-r97ysfh003] {
    border-color: color-mix(in srgb, var(--lb-brand) 30%, transparent);
}

.note-card.note-important[b-r97ysfh003] {
    border-left: 3px solid var(--lb-danger);
}

.note-top[b-r97ysfh003] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 5px;
    flex-wrap: wrap;
    gap: 6px;
}

.note-case-link[b-r97ysfh003] {
    font-size: 12px;
    color: var(--lb-brand);
    font-weight: 500;
    text-decoration: none;
}

.note-case-link:hover[b-r97ysfh003] {
    text-decoration: underline;
}

.note-meta[b-r97ysfh003] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.note-date[b-r97ysfh003] {
    font-size: 11px;
    color: var(--lb-text-secondary);
}

.note-type-badge[b-r97ysfh003] {
    font-size: 10px;
    padding: 2px 6px;
    border-radius: 4px;
    font-weight: 600;
}

.badge-phone[b-r97ysfh003] {
    background: color-mix(in srgb, #3b82f6 15%, transparent);
    color: #3b82f6;
}

.badge-demand[b-r97ysfh003] {
    background: color-mix(in srgb, #ef4444 15%, transparent);
    color: #ef4444;
}

.badge-medical[b-r97ysfh003] {
    background: color-mix(in srgb, #22c55e 15%, transparent);
    color: #22c55e;
}

.badge-email[b-r97ysfh003] {
    background: color-mix(in srgb, #f59e0b 15%, transparent);
    color: #f59e0b;
}

.badge-internal[b-r97ysfh003] {
    background: color-mix(in srgb, #6b7280 20%, transparent);
    color: var(--lb-text-secondary);
}

.badge-general[b-r97ysfh003] {
    background: color-mix(in srgb, #8b5cf6 15%, transparent);
    color: #8b5cf6;
}

.note-body[b-r97ysfh003] {
    font-size: 13px;
    color: var(--lb-text-secondary);
    line-height: 1.45;
    margin-bottom: 6px;
    /* Plain-text notes now keep their line breaks; clamp the preview so a long
       multi-line note stays a compact card in the firm-wide list. */
    display: -webkit-box;
    -webkit-line-clamp: 6;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

/* Expanded: drop the clamp so the full note shows. */
.note-body.note-expanded[b-r97ysfh003] {
    display: block;
    -webkit-line-clamp: unset;
    overflow: visible;
}

/* "Expand" / "Collapse" toggle, shown only on clipped previews (see code-behind). */
.note-expand-toggle[b-r97ysfh003] {
    margin: 0 0 6px;
    padding: 0;
    border: none;
    background: none;
    color: var(--lb-brand);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
}

.note-expand-toggle:hover[b-r97ysfh003] {
    text-decoration: underline;
}

[b-r97ysfh003] .note-body mark {
    background: color-mix(in srgb, var(--lb-brand) 25%, transparent);
    color: inherit;
    padding: 1px 2px;
    border-radius: 2px;
}

.note-talked-to[b-r97ysfh003] {
    font-weight: 500;
    color: var(--lb-text-primary);
}

.note-footer[b-r97ysfh003] {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 11px;
    color: var(--lb-text-secondary);
}

.note-footer-sep[b-r97ysfh003] {
    color: var(--lb-border);
}

.notes-pager[b-r97ysfh003] {
    display: flex;
    justify-content: flex-start;
    align-items: center;
    padding: 10px 0;
    margin-top: 8px;
}

.pager-info[b-r97ysfh003] {
    font-size: 13px;
    color: var(--lb-text-secondary);
}

/* -- Infinite scroll (replaces Previous/Next buttons) -- */

.notes-loading-more[b-r97ysfh003] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 12px;
    font-size: 13px;
    color: var(--lb-text-secondary);
}

/* Sentinel watched by infinite-scroll.js; zero-height, no visual footprint. */
.infinite-sentinel[b-r97ysfh003] {
    width: 100%;
    height: 1px;
}

/* -- Responsive -- */

@media (max-width: 768px) {
    .stat-row[b-r97ysfh003] {
        grid-template-columns: repeat(3, 1fr);
    }

    .notes-toolbar[b-r97ysfh003] {
        flex-direction: column;
        align-items: stretch;
    }

    [b-r97ysfh003] .notes-search-input {
        min-width: 0;
    }
}

@media (max-width: 576px) {
    .notes-root[b-r97ysfh003] {
        padding: 8px;
        gap: 8px;
    }

    .stat-row[b-r97ysfh003] {
        grid-template-columns: repeat(2, 1fr);
    }
}
/* /Components/Pages/Opportunities/OpportunityFormPage.razor.rz.scp.css */
/* OpportunityFormPage.razor.css -- co-located styles */

.opp-form-loading[b-zs1xl9h4vm] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    color: var(--lb-text-secondary);
}

.opp-form-container[b-zs1xl9h4vm] {
    max-width: 960px;
    margin: 0 auto;
    padding: 1rem;
}

.opp-form-header[b-zs1xl9h4vm] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 1.25rem;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.opp-form-title[b-zs1xl9h4vm] {
    margin: 0;
    color: var(--lb-text-primary);
    font-weight: 600;
}

.opp-form-actions[b-zs1xl9h4vm] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.opp-form-section[b-zs1xl9h4vm] {
    border: 1px solid var(--lb-border-color);
    border-radius: 6px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
    background: var(--lb-card);
}

.opp-section-title[b-zs1xl9h4vm] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text-primary);
    padding: 0 0.5rem;
    width: auto;
}

.opp-form-grid[b-zs1xl9h4vm] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem 1.25rem;
}

.opp-field[b-zs1xl9h4vm] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.opp-field label[b-zs1xl9h4vm] {
    font-size: 0.82rem;
    font-weight: 500;
    color: var(--lb-text-secondary);
}

.opp-field-wide[b-zs1xl9h4vm] {
    grid-column: 1 / -1;
}

.opp-field-checkbox[b-zs1xl9h4vm] {
    display: flex;
    align-items: center;
    padding-top: 0.5rem;
}

.opp-required[b-zs1xl9h4vm] {
    color: var(--lb-danger);
}

/* Notes section */
.opp-notes-add[b-zs1xl9h4vm] {
    display: flex;
    gap: 0.5rem;
    align-items: flex-start;
    margin-bottom: 1rem;
}

.opp-notes-add[b-zs1xl9h4vm]  .e-textbox {
    flex: 1;
}

.opp-notes-list[b-zs1xl9h4vm] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.opp-note-item[b-zs1xl9h4vm] {
    border: 1px solid var(--lb-border-color);
    border-radius: 4px;
    padding: 0.6rem 0.75rem;
    background: var(--lb-surface-alt);
}

.opp-note-header[b-zs1xl9h4vm] {
    display: flex;
    justify-content: space-between;
    margin-bottom: 0.25rem;
    font-size: 0.78rem;
}

.opp-note-author[b-zs1xl9h4vm] {
    font-weight: 600;
    color: var(--lb-text-primary);
}

.opp-note-date[b-zs1xl9h4vm] {
    color: var(--lb-text-secondary);
}

.opp-note-text[b-zs1xl9h4vm] {
    font-size: 0.85rem;
    color: var(--lb-text-primary);
    white-space: pre-wrap;
}

.opp-notes-empty[b-zs1xl9h4vm] {
    color: var(--lb-text-secondary);
    font-style: italic;
    font-size: 0.85rem;
}

/* Responsive */
/* Conflict check */
.opp-conflict-run-row[b-zs1xl9h4vm] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.opp-conflict-clear[b-zs1xl9h4vm] {
    color: var(--lb-success);
    font-size: 0.85rem;
    font-weight: 500;
}

.opp-conflict-found[b-zs1xl9h4vm] {
    color: var(--lb-danger);
    font-size: 0.85rem;
    font-weight: 500;
}

.opp-conflict-table[b-zs1xl9h4vm] {
    border: 1px solid var(--lb-border-color);
    border-radius: 4px;
    overflow: hidden;
    font-size: 0.82rem;
}

.opp-conflict-header[b-zs1xl9h4vm],
.opp-conflict-row[b-zs1xl9h4vm] {
    display: grid;
    grid-template-columns: 1.5fr 1fr 0.8fr 1.5fr 1fr 0.6fr;
    gap: 0;
}

.opp-conflict-header[b-zs1xl9h4vm] {
    background: var(--lb-surface-alt);
    font-weight: 600;
    color: var(--lb-text-secondary);
}

.opp-conflict-header > span[b-zs1xl9h4vm],
.opp-conflict-row > span[b-zs1xl9h4vm] {
    padding: 0.4rem 0.6rem;
    border-right: 1px solid var(--lb-border-color);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.opp-conflict-header > span:last-child[b-zs1xl9h4vm],
.opp-conflict-row > span:last-child[b-zs1xl9h4vm] {
    border-right: none;
}

.opp-conflict-row[b-zs1xl9h4vm] {
    border-top: 1px solid var(--lb-border-color);
}

.opp-conflict-open[b-zs1xl9h4vm] {
    background: color-mix(in srgb, var(--lb-danger) 8%, transparent);
}

.opp-conflict-closed[b-zs1xl9h4vm] {
    color: var(--lb-text-muted);
}

@media (max-width: 768px) {
    .opp-form-grid[b-zs1xl9h4vm] {
        grid-template-columns: 1fr;
    }

    .opp-form-header[b-zs1xl9h4vm] {
        flex-direction: column;
        align-items: flex-start;
    }

    .opp-notes-add[b-zs1xl9h4vm] {
        flex-direction: column;
    }
}
/* /Components/Pages/PlaybookEditor.razor.rz.scp.css */
.editor-page[b-ehc4fsfwfg] {
    padding: 1rem;
    max-width: 900px;
}

[b-ehc4fsfwfg] .editor-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

[b-ehc4fsfwfg] .editor-heading {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: var(--lb-text);
}

[b-ehc4fsfwfg] .editor-toolbar-actions {
    display: flex;
    gap: 0.5rem;
}

[b-ehc4fsfwfg] .editor-form {
    margin-bottom: 1.5rem;
}

[b-ehc4fsfwfg] .form-row {
    margin-bottom: 0.75rem;
}

[b-ehc4fsfwfg] .form-row-inline {
    display: flex;
    gap: 1rem;
    margin-bottom: 0.75rem;
}

[b-ehc4fsfwfg] .form-field {
    flex: 1;
}

[b-ehc4fsfwfg] .field-label {
    display: block;
    font-size: 0.85rem;
    font-weight: 500;
    margin-bottom: 0.25rem;
    color: var(--lb-text);
}

[b-ehc4fsfwfg] .switch-with-hint {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

[b-ehc4fsfwfg] .field-hint {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

[b-ehc4fsfwfg] .required-indicator {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

[b-ehc4fsfwfg] .validation-errors {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
    padding: 0.5rem 1rem;
    margin-bottom: 1rem;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

[b-ehc4fsfwfg] .validation-errors p {
    margin: 0.25rem 0;
}

/* -- Steps section -- */
[b-ehc4fsfwfg] .steps-section {
    border-top: 1px solid var(--lb-border);
    padding-top: 1rem;
}

[b-ehc4fsfwfg] .steps-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

[b-ehc4fsfwfg] .steps-heading {
    font-size: 1rem;
    font-weight: 600;
    margin: 0;
    color: var(--lb-text);
}

[b-ehc4fsfwfg] .steps-empty {
    color: var(--lb-text-muted);
    font-style: italic;
    text-align: center;
    padding: 2rem;
}

[b-ehc4fsfwfg] .steps-list {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

[b-ehc4fsfwfg] .step-card {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 0.75rem;
    background: var(--lb-card);
}

[b-ehc4fsfwfg] .step-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 0.5rem;
}

[b-ehc4fsfwfg] .step-number {
    font-weight: 700;
    font-size: 0.9rem;
    color: var(--lb-brand);
    background: var(--lb-surface-alt);
    width: 28px;
    height: 28px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
}

[b-ehc4fsfwfg] .step-card-actions {
    display: flex;
    gap: 0.25rem;
}

[b-ehc4fsfwfg] .step-card-body .form-row {
    margin-bottom: 0.5rem;
}

@media (max-width: 576px) {
    [b-ehc4fsfwfg] .form-row-inline {
        flex-direction: column;
        gap: 0.5rem;
    }
}
/* /Components/Pages/PlaybookLibrary.razor.rz.scp.css */
.playbook-page[b-46bvut3klf] {
    padding: 1rem;
}

[b-46bvut3klf] .playbook-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

[b-46bvut3klf] .playbook-heading {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: var(--lb-text);
}

[b-46bvut3klf] .playbook-preview {
    display: flex;
    flex-wrap: wrap;
    gap: 0.25rem;
    margin-top: 0.35rem;
}

[b-46bvut3klf] .playbook-preview-step {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border-radius: 3px;
    padding: 1px 6px;
}

[b-46bvut3klf] .playbook-preview-more {
    font-size: 0.75rem;
    color: var(--lb-brand);
    font-style: italic;
}

[b-46bvut3klf] .playbook-actions {
    display: flex;
    gap: 0.25rem;
    flex-wrap: wrap;
}

[b-46bvut3klf] .status-active {
    color: var(--lb-success);
    font-weight: 500;
    font-size: 0.85rem;
}

[b-46bvut3klf] .status-inactive {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

[b-46bvut3klf] .dash-grid-body {
    overflow-x: hidden;
}
/* /Components/Pages/PortalInboxPage.razor.rz.scp.css */
/* Portal Inbox: threads list + detail pane. Two columns on desktop, stacked
   with selection-switching on narrow screens. */

.inbox-loading[b-yx630s7io1],
.inbox-module-off[b-yx630s7io1] {
    padding: 24px;
    color: var(--lb-text-muted, #6b7280);
}

.portal-inbox[b-yx630s7io1] {
    display: grid;
    grid-template-columns: 340px minmax(0, 1fr);
    gap: 16px;
    padding: 12px;
    height: calc(100vh - 120px);
}

/* ── List panel ──────────────────────────────────────────────────── */

.inbox-list[b-yx630s7io1] {
    border: 1px solid var(--lb-border, #e5e7eb);
    border-radius: 8px;
    background: var(--lb-card);
    overflow-y: auto;
    min-width: 0;
}

.inbox-list-head[b-yx630s7io1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px 8px;
    position: sticky;
    top: 0;
    background: inherit;
    border-bottom: 1px solid var(--lb-border, #e5e7eb);
}

.inbox-list-head h3[b-yx630s7io1] {
    margin: 0;
    font-size: 16px;
}

.inbox-filter[b-yx630s7io1] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
    cursor: pointer;
    user-select: none;
}

.inbox-rows[b-yx630s7io1] {
    list-style: none;
    margin: 0;
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.inbox-row[b-yx630s7io1] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    width: 100%;
    text-align: left;
    border: 1px solid transparent;
    border-radius: 8px;
    background: transparent;
    padding: 8px 10px;
    cursor: pointer;
    font: inherit;
}

.inbox-row:hover[b-yx630s7io1] {
    background: var(--lb-surface-alt, #f3f4f6);
}

.inbox-row.selected[b-yx630s7io1] {
    border-color: var(--lb-brand, #D4890C);
    background: var(--lb-brand-light, #FDF6EC);
}

.inbox-row-top[b-yx630s7io1],
.inbox-row-mid[b-yx630s7io1],
.inbox-row-bottom[b-yx630s7io1] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    min-width: 0;
}

.inbox-case[b-yx630s7io1] {
    font-weight: 600;
    font-size: 14px;
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-time[b-yx630s7io1] {
    font-size: 11px;
    color: var(--lb-text-muted, #6b7280);
    flex-shrink: 0;
}

.inbox-client[b-yx630s7io1],
.inbox-file[b-yx630s7io1] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
}

.inbox-closed[b-yx630s7io1] {
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 0 6px;
    border-radius: 8px;
    background: var(--lb-surface-alt, #f3f4f6);
    color: var(--lb-text-muted, #6b7280);
}

.inbox-snippet[b-yx630s7io1] {
    flex: 1;
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-unread[b-yx630s7io1] {
    flex-shrink: 0;
    min-width: 20px;
    text-align: center;
    font-size: 11px;
    font-weight: 700;
    border-radius: 10px;
    padding: 1px 6px;
    background: var(--lb-brand, #D4890C);
    color: #ffffff;
}

/* ── Detail panel ────────────────────────────────────────────────── */

.inbox-detail[b-yx630s7io1] {
    min-width: 0;
    overflow-y: auto;
}

.inbox-detail-head[b-yx630s7io1] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 2px 4px 8px;
}

.inbox-detail-head h4[b-yx630s7io1] {
    margin: 0;
    font-size: 16px;
}

.inbox-detail-file[b-yx630s7io1] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
}

.inbox-open-case[b-yx630s7io1] {
    font-size: 13px;
    white-space: nowrap;
}

.inbox-pick-hint[b-yx630s7io1] {
    padding: 40px 20px;
}

.lb-empty-state[b-yx630s7io1] {
    padding: 14px;
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
}

.lb-empty-state p[b-yx630s7io1] { margin: 0 0 4px; }

/* ── Narrow screens: stack; the list collapses once a thread is open ── */

@media (max-width: 991px) {
    .portal-inbox[b-yx630s7io1] {
        grid-template-columns: 1fr;
        height: auto;
    }

    .inbox-list[b-yx630s7io1] {
        max-height: 45vh;
    }
}
/* /Components/Pages/PortalUploadsPage.razor.rz.scp.css */
/* Portal upload review queue. */

.queue-loading[b-jnzqwt6625],
.queue-module-off[b-jnzqwt6625] {
    padding: 24px;
    color: var(--lb-text-muted, #6b7280);
}

.upload-queue[b-jnzqwt6625] {
    max-width: 900px;
    padding: 12px;
}

.queue-head[b-jnzqwt6625] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}

.queue-head h3[b-jnzqwt6625] {
    margin: 0;
    font-size: 18px;
}

.queue-actions[b-jnzqwt6625] {
    display: flex;
    gap: 8px;
}

.queue-rows[b-jnzqwt6625] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.queue-row[b-jnzqwt6625] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    border: 1px solid var(--lb-border, #e5e7eb);
    border-radius: 8px;
    background: var(--lb-card);
    padding: 10px 12px;
}

.queue-check[b-jnzqwt6625] {
    padding-top: 3px;
    cursor: pointer;
}

.queue-main[b-jnzqwt6625] {
    flex: 1;
    min-width: 0;
}

.queue-line-top[b-jnzqwt6625] {
    display: flex;
    align-items: baseline;
    gap: 8px;
    min-width: 0;
}

.queue-file[b-jnzqwt6625] {
    font-weight: 600;
    overflow-wrap: anywhere;
}

.queue-size[b-jnzqwt6625] {
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
    flex-shrink: 0;
}

.queue-line-mid[b-jnzqwt6625] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px;
    font-size: 12px;
    color: var(--lb-text-muted, #6b7280);
}

.queue-sep[b-jnzqwt6625] { opacity: 0.6; }

.queue-note[b-jnzqwt6625] {
    font-size: 13px;
    font-style: italic;
    color: var(--lb-text-muted, #6b7280);
    margin-top: 4px;
    overflow-wrap: anywhere;
}

.queue-reject-btn[b-jnzqwt6625] {
    flex-shrink: 0;
}

/* Dialog bits */

.dlg-intro[b-jnzqwt6625] {
    margin: 0 0 10px;
    font-size: 13px;
}

.dlg-file-list[b-jnzqwt6625] {
    list-style: none;
    margin: 0 0 12px;
    padding: 0 0 10px;
    border-bottom: 1px solid var(--lb-border, #e5e7eb);
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 13px;
    max-height: 160px;
    overflow-y: auto;
}

.dlg-file-list li[b-jnzqwt6625] {
    overflow-wrap: anywhere;
}

.dlg-file-case[b-jnzqwt6625] {
    color: var(--lb-text-muted, #6b7280);
    font-size: 12px;
    margin-left: 6px;
}

.form-field[b-jnzqwt6625] {
    margin: 12px 0 4px;
}

.field-label[b-jnzqwt6625] {
    display: block;
    font-size: 12px;
    font-weight: 600;
    margin-bottom: 4px;
}

.lb-empty-state[b-jnzqwt6625] {
    padding: 20px 4px;
    font-size: 13px;
    color: var(--lb-text-muted, #6b7280);
}

.lb-empty-state p[b-jnzqwt6625] { margin: 0 0 4px; }

/* Approvals the app refused to resolve on its own -- a warning, not a queue
   row: acting on one of these can duplicate a document in a legal file, so it
   must not read like the ordinary work below it. */
/* No hex fallbacks anywhere below: every token here is defined in app.css, so a
   fallback can only ever fire on a typo -- and when it fires it pins the element
   to one literal color in BOTH light and dark mode. See the css-component skill. */
.queue-unresolved[b-jnzqwt6625] {
    border: 1px solid var(--lb-warning);
    background: var(--lb-warning-bg);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 16px;
}

.unresolved-head[b-jnzqwt6625] {
    margin: 0 0 4px;
    font-size: 14px;
    font-weight: 600;
}

/* --lb-text, not --lb-warning: warning-on-warning-bg computes to 3.83:1 in light
   and 4.49:1 in dark, and AA wants 4.5:1 at this size. This paragraph is the
   whole decision procedure for an action that can duplicate a legal document, so
   it is the last text in the app that should be hard to read. The warning colour
   still carries the panel -- on the border, where 3:1 is the bar. */
.unresolved-why[b-jnzqwt6625] {
    margin: 0 0 10px;
    font-size: 13px;
    line-height: 1.45;
    color: var(--lb-text);
}

.unresolved-rows[b-jnzqwt6625] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.unresolved-row[b-jnzqwt6625] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    padding: 8px 10px;
}

/* Two verdicts side by side on desktop, stacked once the row runs out of width --
   they must never be mistaken for one button with a default. */
.unresolved-actions[b-jnzqwt6625] {
    display: flex;
    flex-shrink: 0;
    gap: 6px;
    flex-wrap: wrap;
    justify-content: flex-end;
}

@media (max-width: 768px) {
    .unresolved-row[b-jnzqwt6625] {
        flex-direction: column;
        align-items: stretch;
    }

    .unresolved-actions[b-jnzqwt6625] {
        justify-content: flex-start;
    }
}
/* /Components/Pages/RecentDocumentsPage.razor.rz.scp.css */
/* ===== RecentDocumentsPage scoped styles ===== */

/* -- Loading state -- */
.recent-loading[b-fhyeqhub5b] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
    color: var(--lb-text-secondary);
}

/* -- Page header -- */
.recent-header[b-fhyeqhub5b] {
    margin-bottom: 12px;
}

.recent-title[b-fhyeqhub5b] {
    margin: 0 0 4px;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text-primary);
}

.recent-subtitle[b-fhyeqhub5b] {
    margin: 0;
    font-size: 0.875rem;
    color: var(--lb-text-secondary);
}

/* -- Date range quick-select bar -- */
.recent-range-bar[b-fhyeqhub5b] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}

/* -- Grid: Document name cell -- */
.recent-name-cell[b-fhyeqhub5b] {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.recent-name-text[b-fhyeqhub5b] {
    font-weight: 500;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    color: var(--lb-text-primary);
}

.recent-name-meta[b-fhyeqhub5b] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    flex-shrink: 0;
}

/* -- Grid: Case name link -- */
.recent-case-link[b-fhyeqhub5b] {
    color: var(--lb-link);
    text-decoration: none;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.recent-case-link:hover[b-fhyeqhub5b] {
    color: var(--lb-link-hover);
    text-decoration: underline;
}

/* -- Responsive -- */
@media (max-width: 576px) {
    .recent-range-bar[b-fhyeqhub5b] {
        gap: 6px;
    }
}
/* /Components/Pages/Reports/AgingCasesReport.razor.rz.scp.css */
/* -- Aging Cases Report page scoped styles -- */

/* Loading container */
.ac-loading[b-n8syujiovc] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.ac-header[b-n8syujiovc] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.ac-header-left[b-n8syujiovc] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ac-back-link[b-n8syujiovc] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.ac-back-link:hover[b-n8syujiovc] {
    text-decoration: underline;
}

.ac-title[b-n8syujiovc] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.ac-subtitle[b-n8syujiovc] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.ac-header-right[b-n8syujiovc] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.ac-pin-btn[b-n8syujiovc] {
    min-width: 36px;
}

/* -- Filter bar -- */
.ac-filter-bar[b-n8syujiovc] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.ac-reset-btn[b-n8syujiovc] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.ac-reset-btn:hover[b-n8syujiovc] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.ac-stat-row[b-n8syujiovc] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .ac-stat-row[b-n8syujiovc] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .ac-stat-row[b-n8syujiovc] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.ac-grid-container[b-n8syujiovc] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.ac-grid-loading[b-n8syujiovc] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Months open column -- */
.ac-months[b-n8syujiovc] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.ac-months--warning[b-n8syujiovc] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.ac-months--danger[b-n8syujiovc] {
    color: var(--lb-danger);
}

/* -- Last activity danger -- */
.ac-activity--danger[b-n8syujiovc] {
    color: var(--lb-danger);
    font-weight: 600;
}

/* -- Case name link -- */
.ac-case-link[b-n8syujiovc] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.ac-case-link:hover[b-n8syujiovc] {
    text-decoration: underline;
}

/* -- Report footer -- */
.ac-footer[b-n8syujiovc] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.ac-footer-text[b-n8syujiovc] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.ac-save-dialog-body[b-n8syujiovc] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.ac-save-label[b-n8syujiovc] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .ac-header[b-n8syujiovc] {
        flex-direction: column;
    }

    .ac-header-right[b-n8syujiovc] {
        width: 100%;
        justify-content: flex-start;
    }

    .ac-filter-bar[b-n8syujiovc] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/CaseCompletenessReport.razor.rz.scp.css */
/* -- Case File Completeness Report page scoped styles -- */

/* Loading container */
.cc-loading[b-txm01na00k] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.cc-header[b-txm01na00k] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.cc-header-left[b-txm01na00k] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.cc-back-link[b-txm01na00k] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.cc-back-link:hover[b-txm01na00k] {
    text-decoration: underline;
}

.cc-title[b-txm01na00k] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.cc-subtitle[b-txm01na00k] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.cc-header-right[b-txm01na00k] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.cc-pin-btn[b-txm01na00k] {
    min-width: 36px;
}

/* -- Filter bar -- */
.cc-filter-bar[b-txm01na00k] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.cc-reset-btn[b-txm01na00k] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.cc-reset-btn:hover[b-txm01na00k] {
    text-decoration: underline;
}

/* -- Grid container -- */
.cc-grid-container[b-txm01na00k] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.cc-grid-loading[b-txm01na00k] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Completion column -- */
.cc-completion[b-txm01na00k] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.cc-completion--complete[b-txm01na00k] {
    color: var(--lb-success);
}

.cc-completion--good[b-txm01na00k] {
    color: var(--lb-info);
}

.cc-completion--partial[b-txm01na00k] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.cc-completion--low[b-txm01na00k] {
    color: var(--lb-danger);
}

/* -- Case name link -- */
.cc-case-link[b-txm01na00k] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.cc-case-link:hover[b-txm01na00k] {
    text-decoration: underline;
}

/* -- Report footer -- */
.cc-footer[b-txm01na00k] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.cc-footer-text[b-txm01na00k] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.cc-save-dialog-body[b-txm01na00k] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.cc-save-label[b-txm01na00k] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .cc-header[b-txm01na00k] {
        flex-direction: column;
    }

    .cc-header-right[b-txm01na00k] {
        width: 100%;
        justify-content: flex-start;
    }

    .cc-filter-bar[b-txm01na00k] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/CaseloadDistributionReport.razor.rz.scp.css */
/* -- Caseload Distribution Report page scoped styles -- */

.rpt-loading[b-lpidv3qp4s] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.rpt-header[b-lpidv3qp4s] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-lpidv3qp4s] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-lpidv3qp4s] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-lpidv3qp4s] {
    text-decoration: underline;
}

.rpt-title[b-lpidv3qp4s] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-lpidv3qp4s] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-lpidv3qp4s] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-pin-btn[b-lpidv3qp4s] {
    min-width: 36px;
}

/* -- Filter bar -- */
.rpt-filter-bar[b-lpidv3qp4s] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-lpidv3qp4s] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-lpidv3qp4s] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.rpt-stat-row[b-lpidv3qp4s] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .rpt-stat-row[b-lpidv3qp4s] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .rpt-stat-row[b-lpidv3qp4s] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.rpt-grid-container[b-lpidv3qp4s] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-lpidv3qp4s] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Bold total column -- */
.rpt-bold[b-lpidv3qp4s] {
    font-weight: 700;
}

/* -- Report footer -- */
.rpt-footer[b-lpidv3qp4s] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-lpidv3qp4s] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.rpt-save-dialog-body[b-lpidv3qp4s] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-lpidv3qp4s] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .rpt-header[b-lpidv3qp4s] {
        flex-direction: column;
    }

    .rpt-header-right[b-lpidv3qp4s] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-lpidv3qp4s] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-lpidv3qp4s],
    .rpt-filter-bar[b-lpidv3qp4s] {
        display: none;
    }

    .rpt-grid-container[b-lpidv3qp4s] {
        border: none;
        overflow: visible;
    }

    .rpt-title[b-lpidv3qp4s] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-lpidv3qp4s] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/CaseOpeningReport.razor.rz.scp.css */
/* -- Case Opening Report page scoped styles -- */

/* Loading container */
.rpt-loading[b-zn3dqt8cn4] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.rpt-header[b-zn3dqt8cn4] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-zn3dqt8cn4] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-zn3dqt8cn4] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-zn3dqt8cn4] {
    text-decoration: underline;
}

.rpt-title[b-zn3dqt8cn4] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-zn3dqt8cn4] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-zn3dqt8cn4] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-pin-btn[b-zn3dqt8cn4] {
    min-width: 36px;
}

/* -- Filter bar -- */
.rpt-filter-bar[b-zn3dqt8cn4] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-zn3dqt8cn4] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-zn3dqt8cn4] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.rpt-stat-row[b-zn3dqt8cn4] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .rpt-stat-row[b-zn3dqt8cn4] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.rpt-grid-container[b-zn3dqt8cn4] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-zn3dqt8cn4] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Case name link -- */
.rpt-case-link[b-zn3dqt8cn4] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.rpt-case-link:hover[b-zn3dqt8cn4] {
    text-decoration: underline;
}

/* -- Report footer -- */
.rpt-footer[b-zn3dqt8cn4] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-zn3dqt8cn4] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.rpt-save-dialog-body[b-zn3dqt8cn4] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-zn3dqt8cn4] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .rpt-header[b-zn3dqt8cn4] {
        flex-direction: column;
    }

    .rpt-header-right[b-zn3dqt8cn4] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-zn3dqt8cn4] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-zn3dqt8cn4],
    .rpt-filter-bar[b-zn3dqt8cn4],
    .rpt-reset-btn[b-zn3dqt8cn4] {
        display: none;
    }

    .rpt-grid-container[b-zn3dqt8cn4] {
        border: none;
        overflow: visible;
    }

    .rpt-header[b-zn3dqt8cn4] {
        margin-bottom: 8px;
    }

    .rpt-title[b-zn3dqt8cn4] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-zn3dqt8cn4] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/CourtCalendarReport.razor.rz.scp.css */
/* -- Court Calendar report scoped styles -- */

.rpt-loading[b-9nrqpi0pic] { display: flex; align-items: center; justify-content: center; min-height: 300px; }
.rpt-header[b-9nrqpi0pic] { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.rpt-header-left[b-9nrqpi0pic] { display: flex; flex-direction: column; gap: 2px; }
.rpt-back-link[b-9nrqpi0pic] { font-size: 0.82rem; color: var(--lb-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rpt-back-link:hover[b-9nrqpi0pic] { text-decoration: underline; }
.rpt-title[b-9nrqpi0pic] { font-size: 1.5rem; font-weight: 700; color: var(--lb-text); margin: 0; line-height: 1.3; }
.rpt-subtitle[b-9nrqpi0pic] { font-size: 0.82rem; color: var(--lb-text-muted); }
.rpt-header-right[b-9nrqpi0pic] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rpt-pin-btn[b-9nrqpi0pic] { min-width: 36px; }
.rpt-filter-bar[b-9nrqpi0pic] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; margin-bottom: 16px; }
.rpt-reset-btn[b-9nrqpi0pic] { background: none; border: none; color: var(--lb-primary); font-size: 0.82rem; cursor: pointer; padding: 4px 8px; white-space: nowrap; }
.rpt-reset-btn:hover[b-9nrqpi0pic] { text-decoration: underline; }
.rpt-grid-container[b-9nrqpi0pic] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; overflow: hidden; min-height: 200px; position: relative; }
.rpt-grid-loading[b-9nrqpi0pic] { display: flex; align-items: center; justify-content: center; min-height: 200px; }

.rpt-badge[b-9nrqpi0pic] { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.02em; white-space: nowrap; }
.rpt-badge--type[b-9nrqpi0pic] { background: var(--lb-bg-muted); color: var(--lb-text); }

.rpt-case-link[b-9nrqpi0pic] { background: none; border: none; padding: 0; color: var(--lb-primary); font-weight: 500; cursor: pointer; text-align: left; text-decoration: none; }
.rpt-case-link:hover[b-9nrqpi0pic] { text-decoration: underline; }

.rpt-conflict-icon[b-9nrqpi0pic] { color: var(--lb-warning-text, var(--lb-warning)); font-size: 1rem; }
[b-9nrqpi0pic] .rpt-row--conflict { background: var(--lb-warning-bg); }

.rpt-text--warning[b-9nrqpi0pic] { color: var(--lb-warning-text, var(--lb-warning)); font-weight: 600; }

.rpt-footer[b-9nrqpi0pic] { display: flex; align-items: center; gap: 16px; padding: 10px 0; flex-wrap: wrap; }
.rpt-footer-text[b-9nrqpi0pic] { font-size: 0.75rem; color: var(--lb-text-muted); }
.rpt-save-dialog-body[b-9nrqpi0pic] { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.rpt-save-label[b-9nrqpi0pic] { font-size: 0.82rem; font-weight: 600; color: var(--lb-text); }

@media (max-width: 768px) {
    .rpt-header[b-9nrqpi0pic] { flex-direction: column; }
    .rpt-header-right[b-9nrqpi0pic] { width: 100%; justify-content: flex-start; }
    .rpt-filter-bar[b-9nrqpi0pic] { flex-direction: column; align-items: stretch; }
}
/* /Components/Pages/Reports/DemandPipelineReport.razor.rz.scp.css */
/* -- Demand Pipeline Report page scoped styles -- */

.rpt-loading[b-m4p5rmeve5] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

.rpt-header[b-m4p5rmeve5] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-m4p5rmeve5] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-m4p5rmeve5] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-m4p5rmeve5] {
    text-decoration: underline;
}

.rpt-title[b-m4p5rmeve5] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-m4p5rmeve5] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-m4p5rmeve5] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-pin-btn[b-m4p5rmeve5] {
    min-width: 36px;
}

.rpt-filter-bar[b-m4p5rmeve5] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-m4p5rmeve5] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-m4p5rmeve5] {
    text-decoration: underline;
}

/* -- 3-card stat row -- */
.rpt-stat-row--3[b-m4p5rmeve5] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .rpt-stat-row--3[b-m4p5rmeve5] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .rpt-stat-row--3[b-m4p5rmeve5] {
        grid-template-columns: 1fr;
    }
}

.rpt-grid-container[b-m4p5rmeve5] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-m4p5rmeve5] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Case name link -- */
.rpt-case-link[b-m4p5rmeve5] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.rpt-case-link:hover[b-m4p5rmeve5] {
    text-decoration: underline;
}

/* -- Stage badge -- */
.rpt-stage-badge[b-m4p5rmeve5] {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 10px;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.rpt-stage--ready[b-m4p5rmeve5] {
    background: var(--lb-bg-muted);
    color: var(--lb-text);
}

.rpt-stage--sent[b-m4p5rmeve5] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.rpt-stage--negotiation[b-m4p5rmeve5] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.rpt-stage--default[b-m4p5rmeve5] {
    background: var(--lb-bg-muted);
    color: var(--lb-text-muted);
}

/* -- Days column -- */
.rpt-days[b-m4p5rmeve5] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.rpt-days--danger[b-m4p5rmeve5] {
    color: var(--lb-danger);
}

.rpt-days--warning[b-m4p5rmeve5] {
    color: var(--lb-warning-text, var(--lb-warning));
}

/* -- Muted text -- */
.rpt-muted[b-m4p5rmeve5] {
    color: var(--lb-text-muted);
}

/* -- Report footer -- */
.rpt-footer[b-m4p5rmeve5] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-m4p5rmeve5] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.rpt-save-dialog-body[b-m4p5rmeve5] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-m4p5rmeve5] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

@media (max-width: 768px) {
    .rpt-header[b-m4p5rmeve5] {
        flex-direction: column;
    }

    .rpt-header-right[b-m4p5rmeve5] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-m4p5rmeve5] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-m4p5rmeve5],
    .rpt-filter-bar[b-m4p5rmeve5] {
        display: none;
    }

    .rpt-grid-container[b-m4p5rmeve5] {
        border: none;
        overflow: visible;
    }

    .rpt-title[b-m4p5rmeve5] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-m4p5rmeve5] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/HipaaTrackerReport.razor.rz.scp.css */
/* -- HIPAA Authorization Tracker Report page scoped styles -- */

/* Loading container */
.ht-loading[b-bk6zdf645d] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.ht-header[b-bk6zdf645d] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.ht-header-left[b-bk6zdf645d] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ht-back-link[b-bk6zdf645d] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.ht-back-link:hover[b-bk6zdf645d] {
    text-decoration: underline;
}

.ht-title[b-bk6zdf645d] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.ht-subtitle[b-bk6zdf645d] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.ht-header-right[b-bk6zdf645d] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.ht-pin-btn[b-bk6zdf645d] {
    min-width: 36px;
}

/* -- Filter bar -- */
.ht-filter-bar[b-bk6zdf645d] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.ht-reset-btn[b-bk6zdf645d] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.ht-reset-btn:hover[b-bk6zdf645d] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.ht-stat-row[b-bk6zdf645d] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .ht-stat-row[b-bk6zdf645d] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .ht-stat-row[b-bk6zdf645d] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.ht-grid-container[b-bk6zdf645d] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.ht-grid-loading[b-bk6zdf645d] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Status badge -- */
.ht-status-badge[b-bk6zdf645d] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.ht-status--sent[b-bk6zdf645d] {
    background: var(--lb-info-bg, #e8f4fd);
    color: var(--lb-info);
}

.ht-status--returned[b-bk6zdf645d] {
    background: var(--lb-success-bg, #e8f5e9);
    color: var(--lb-success);
}

.ht-status--expiring[b-bk6zdf645d] {
    background: var(--lb-warning-bg, #fff8e1);
    color: var(--lb-warning-text, var(--lb-warning));
}

.ht-status--expired[b-bk6zdf645d] {
    background: var(--lb-danger-bg, #fdecea);
    color: var(--lb-danger);
}

/* -- Days remaining column -- */
.ht-days[b-bk6zdf645d] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.ht-days--warning[b-bk6zdf645d] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.ht-days--danger[b-bk6zdf645d] {
    color: var(--lb-danger);
}

/* -- Records received icons -- */
.ht-received-yes[b-bk6zdf645d] {
    color: var(--lb-success);
    font-size: 1rem;
}

.ht-received-no[b-bk6zdf645d] {
    color: var(--lb-danger);
    font-size: 1rem;
}

/* -- Case name link -- */
.ht-case-link[b-bk6zdf645d] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.ht-case-link:hover[b-bk6zdf645d] {
    text-decoration: underline;
}

/* -- Report footer -- */
.ht-footer[b-bk6zdf645d] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.ht-footer-text[b-bk6zdf645d] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.ht-save-dialog-body[b-bk6zdf645d] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.ht-save-label[b-bk6zdf645d] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .ht-header[b-bk6zdf645d] {
        flex-direction: column;
    }

    .ht-header-right[b-bk6zdf645d] {
        width: 100%;
        justify-content: flex-start;
    }

    .ht-filter-bar[b-bk6zdf645d] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/ImeSchedulingReport.razor.rz.scp.css */
/* -- IME Scheduling Report page scoped styles -- */

/* Loading container */
.ime-loading[b-7k440dq958] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.ime-header[b-7k440dq958] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.ime-header-left[b-7k440dq958] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ime-back-link[b-7k440dq958] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.ime-back-link:hover[b-7k440dq958] {
    text-decoration: underline;
}

.ime-title[b-7k440dq958] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.ime-subtitle[b-7k440dq958] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.ime-header-right[b-7k440dq958] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.ime-pin-btn[b-7k440dq958] {
    min-width: 36px;
}

/* -- Filter bar -- */
.ime-filter-bar[b-7k440dq958] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.ime-reset-btn[b-7k440dq958] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.ime-reset-btn:hover[b-7k440dq958] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.ime-stat-row[b-7k440dq958] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

.ime-stat-row--2[b-7k440dq958] {
    grid-template-columns: repeat(2, 1fr);
}

@media (max-width: 768px) {
    .ime-stat-row[b-7k440dq958] {
        grid-template-columns: repeat(2, 1fr);
    }

    .ime-stat-row--2[b-7k440dq958] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .ime-stat-row[b-7k440dq958] {
        grid-template-columns: 1fr;
    }

    .ime-stat-row--2[b-7k440dq958] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.ime-grid-container[b-7k440dq958] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.ime-grid-loading[b-7k440dq958] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Date urgency -- */
.ime-date--urgent[b-7k440dq958] {
    color: var(--lb-danger);
    font-weight: 700;
}

/* -- Days until column -- */
.ime-days[b-7k440dq958] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.ime-days--warning[b-7k440dq958] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.ime-days--danger[b-7k440dq958] {
    color: var(--lb-danger);
}

/* -- Case name link -- */
.ime-case-link[b-7k440dq958] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.ime-case-link:hover[b-7k440dq958] {
    text-decoration: underline;
}

/* -- Report footer -- */
.ime-footer[b-7k440dq958] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.ime-footer-text[b-7k440dq958] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.ime-save-dialog-body[b-7k440dq958] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.ime-save-label[b-7k440dq958] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .ime-header[b-7k440dq958] {
        flex-direction: column;
    }

    .ime-header-right[b-7k440dq958] {
        width: 100%;
        justify-content: flex-start;
    }

    .ime-filter-bar[b-7k440dq958] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/IntakePipelineReport.razor.rz.scp.css */
/* -- Intake Pipeline report scoped styles -- */

.rpt-loading[b-bhzbcm9a3d] { display: flex; align-items: center; justify-content: center; min-height: 300px; }
.rpt-header[b-bhzbcm9a3d] { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.rpt-header-left[b-bhzbcm9a3d] { display: flex; flex-direction: column; gap: 2px; }
.rpt-back-link[b-bhzbcm9a3d] { font-size: 0.82rem; color: var(--lb-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rpt-back-link:hover[b-bhzbcm9a3d] { text-decoration: underline; }
.rpt-title[b-bhzbcm9a3d] { font-size: 1.5rem; font-weight: 700; color: var(--lb-text); margin: 0; line-height: 1.3; }
.rpt-subtitle[b-bhzbcm9a3d] { font-size: 0.82rem; color: var(--lb-text-muted); }
.rpt-header-right[b-bhzbcm9a3d] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rpt-pin-btn[b-bhzbcm9a3d] { min-width: 36px; }
.rpt-filter-bar[b-bhzbcm9a3d] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; margin-bottom: 16px; }
.rpt-reset-btn[b-bhzbcm9a3d] { background: none; border: none; color: var(--lb-primary); font-size: 0.82rem; cursor: pointer; padding: 4px 8px; white-space: nowrap; }
.rpt-reset-btn:hover[b-bhzbcm9a3d] { text-decoration: underline; }
.rpt-stat-row[b-bhzbcm9a3d] { display: grid; gap: 12px; margin-bottom: 16px; }
.rpt-stat-row--4[b-bhzbcm9a3d] { grid-template-columns: repeat(4, 1fr); }
.rpt-grid-container[b-bhzbcm9a3d] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; overflow: hidden; min-height: 200px; position: relative; }
.rpt-grid-loading[b-bhzbcm9a3d] { display: flex; align-items: center; justify-content: center; min-height: 200px; }

.rpt-badge[b-bhzbcm9a3d] { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.02em; white-space: nowrap; }
.rpt-badge--signed[b-bhzbcm9a3d] { background: var(--lb-success-bg); color: var(--lb-success); }
.rpt-badge--declined[b-bhzbcm9a3d] { background: var(--lb-danger-bg); color: var(--lb-danger); }
.rpt-badge--pending[b-bhzbcm9a3d] { background: var(--lb-warning-bg); color: var(--lb-warning-text, var(--lb-warning)); }
.rpt-badge--default[b-bhzbcm9a3d] { background: var(--lb-bg-muted); color: var(--lb-text); }

.rpt-case-link[b-bhzbcm9a3d] { background: none; border: none; padding: 0; color: var(--lb-primary); font-weight: 500; cursor: pointer; text-align: left; text-decoration: none; }
.rpt-case-link:hover[b-bhzbcm9a3d] { text-decoration: underline; }

.rpt-footer[b-bhzbcm9a3d] { display: flex; align-items: center; gap: 16px; padding: 10px 0; flex-wrap: wrap; }
.rpt-footer-text[b-bhzbcm9a3d] { font-size: 0.75rem; color: var(--lb-text-muted); }
.rpt-save-dialog-body[b-bhzbcm9a3d] { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.rpt-save-label[b-bhzbcm9a3d] { font-size: 0.82rem; font-weight: 600; color: var(--lb-text); }

@media (max-width: 768px) {
    .rpt-header[b-bhzbcm9a3d] { flex-direction: column; }
    .rpt-header-right[b-bhzbcm9a3d] { width: 100%; justify-content: flex-start; }
    .rpt-filter-bar[b-bhzbcm9a3d] { flex-direction: column; align-items: stretch; }
    .rpt-stat-row--4[b-bhzbcm9a3d] { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
    .rpt-stat-row--4[b-bhzbcm9a3d] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Reports/LienInventoryReport.razor.rz.scp.css */
/* -- Lien Inventory Report page scoped styles -- */

/* Loading container */
.li-loading[b-o7eds9x12k] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.li-header[b-o7eds9x12k] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.li-header-left[b-o7eds9x12k] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.li-back-link[b-o7eds9x12k] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.li-back-link:hover[b-o7eds9x12k] {
    text-decoration: underline;
}

.li-title[b-o7eds9x12k] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.li-subtitle[b-o7eds9x12k] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.li-header-right[b-o7eds9x12k] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.li-pin-btn[b-o7eds9x12k] {
    min-width: 36px;
}

/* -- Filter bar -- */
.li-filter-bar[b-o7eds9x12k] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.li-reset-btn[b-o7eds9x12k] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.li-reset-btn:hover[b-o7eds9x12k] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.li-stat-row[b-o7eds9x12k] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .li-stat-row[b-o7eds9x12k] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .li-stat-row[b-o7eds9x12k] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.li-grid-container[b-o7eds9x12k] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.li-grid-loading[b-o7eds9x12k] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Open badge -- */
.li-open-badge[b-o7eds9x12k] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    background: var(--lb-warning-bg, #fff8e1);
    color: var(--lb-warning-text, var(--lb-warning));
}

/* -- Status badges -- */
.li-resolved-badge[b-o7eds9x12k] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    background: var(--lb-success-bg, #e8f5e9);
    color: var(--lb-success);
}

.li-open-status[b-o7eds9x12k] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    background: var(--lb-danger-bg, #fdecea);
    color: var(--lb-danger);
}

/* -- Savings column -- */
.li-savings[b-o7eds9x12k] {
    font-weight: 600;
    color: var(--lb-success);
    font-variant-numeric: tabular-nums;
}

/* -- Case name link -- */
.li-case-link[b-o7eds9x12k] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.li-case-link:hover[b-o7eds9x12k] {
    text-decoration: underline;
}

/* -- Report footer -- */
.li-footer[b-o7eds9x12k] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.li-footer-text[b-o7eds9x12k] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.li-save-dialog-body[b-o7eds9x12k] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.li-save-label[b-o7eds9x12k] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .li-header[b-o7eds9x12k] {
        flex-direction: column;
    }

    .li-header-right[b-o7eds9x12k] {
        width: 100%;
        justify-content: flex-start;
    }

    .li-filter-bar[b-o7eds9x12k] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/LienResolutionReport.razor.rz.scp.css */
/* -- Lien Resolution Report page scoped styles -- */

/* Loading container */
.lr-loading[b-pe3oej1o67] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.lr-header[b-pe3oej1o67] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.lr-header-left[b-pe3oej1o67] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.lr-back-link[b-pe3oej1o67] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.lr-back-link:hover[b-pe3oej1o67] {
    text-decoration: underline;
}

.lr-title[b-pe3oej1o67] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.lr-subtitle[b-pe3oej1o67] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.lr-header-right[b-pe3oej1o67] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.lr-pin-btn[b-pe3oej1o67] {
    min-width: 36px;
}

/* -- Filter bar -- */
.lr-filter-bar[b-pe3oej1o67] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.lr-reset-btn[b-pe3oej1o67] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.lr-reset-btn:hover[b-pe3oej1o67] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.lr-stat-row[b-pe3oej1o67] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .lr-stat-row[b-pe3oej1o67] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .lr-stat-row[b-pe3oej1o67] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.lr-grid-container[b-pe3oej1o67] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.lr-grid-loading[b-pe3oej1o67] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Case name link -- */
.lr-case-link[b-pe3oej1o67] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.lr-case-link:hover[b-pe3oej1o67] {
    text-decoration: underline;
}

/* -- Blocking-disbursement marker / dash -- */
.lr-blocking-yes[b-pe3oej1o67] {
    color: var(--lb-warning);
    font-size: 1rem;
}

.lr-blocking-no[b-pe3oej1o67] {
    color: var(--lb-text-muted);
}

/* -- No value placeholder -- */
.lr-no-value[b-pe3oej1o67] {
    color: var(--lb-text-muted);
}

/* -- Report footer -- */
.lr-footer[b-pe3oej1o67] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.lr-footer-text[b-pe3oej1o67] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.lr-save-dialog-body[b-pe3oej1o67] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.lr-save-label[b-pe3oej1o67] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .lr-header[b-pe3oej1o67] {
        flex-direction: column;
    }

    .lr-header-right[b-pe3oej1o67] {
        width: 100%;
        justify-content: flex-start;
    }

    .lr-filter-bar[b-pe3oej1o67] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/MedicalRecordsLogReport.razor.rz.scp.css */
/* -- Medical Records Request Log Report page scoped styles -- */

/* Loading container */
.mr-loading[b-ppr30j0pn8] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.mr-header[b-ppr30j0pn8] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.mr-header-left[b-ppr30j0pn8] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.mr-back-link[b-ppr30j0pn8] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.mr-back-link:hover[b-ppr30j0pn8] {
    text-decoration: underline;
}

.mr-title[b-ppr30j0pn8] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.mr-subtitle[b-ppr30j0pn8] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.mr-header-right[b-ppr30j0pn8] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.mr-pin-btn[b-ppr30j0pn8] {
    min-width: 36px;
}

/* -- Filter bar -- */
.mr-filter-bar[b-ppr30j0pn8] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.mr-reset-btn[b-ppr30j0pn8] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.mr-reset-btn:hover[b-ppr30j0pn8] {
    text-decoration: underline;
}

/* -- Summary stat cards -- */
.mr-stat-row[b-ppr30j0pn8] {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 480px) {
    .mr-stat-row[b-ppr30j0pn8] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.mr-grid-container[b-ppr30j0pn8] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.mr-grid-loading[b-ppr30j0pn8] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Status badge -- */
.mr-status-badge[b-ppr30j0pn8] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.mr-status--received[b-ppr30j0pn8] {
    background: var(--lb-success-bg, #e8f5e9);
    color: var(--lb-success);
}

.mr-status--pending[b-ppr30j0pn8] {
    background: var(--lb-warning-bg, #fff8e1);
    color: var(--lb-warning-text, var(--lb-warning));
}

.mr-status--overdue[b-ppr30j0pn8] {
    background: var(--lb-danger-bg, #fdecea);
    color: var(--lb-danger);
}

/* -- Days column -- */
.mr-days[b-ppr30j0pn8] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.mr-days--danger[b-ppr30j0pn8] {
    color: var(--lb-danger);
}

/* -- Pending text -- */
.mr-pending-text[b-ppr30j0pn8] {
    color: var(--lb-warning-text, var(--lb-warning));
    font-style: italic;
    font-size: 0.82rem;
}

/* -- Case name link -- */
.mr-case-link[b-ppr30j0pn8] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.mr-case-link:hover[b-ppr30j0pn8] {
    text-decoration: underline;
}

/* -- Report footer -- */
.mr-footer[b-ppr30j0pn8] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.mr-footer-text[b-ppr30j0pn8] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.mr-save-dialog-body[b-ppr30j0pn8] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.mr-save-label[b-ppr30j0pn8] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .mr-header[b-ppr30j0pn8] {
        flex-direction: column;
    }

    .mr-header-right[b-ppr30j0pn8] {
        width: 100%;
        justify-content: flex-start;
    }

    .mr-filter-bar[b-ppr30j0pn8] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/MyActiveCasesReport.razor.rz.scp.css */
/* -- My Active Cases Report page scoped styles -- */

.rpt-loading[b-w24jnmkn63] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

.rpt-header[b-w24jnmkn63] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-w24jnmkn63] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-w24jnmkn63] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-w24jnmkn63] {
    text-decoration: underline;
}

.rpt-title[b-w24jnmkn63] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-w24jnmkn63] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-w24jnmkn63] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-pin-btn[b-w24jnmkn63] {
    min-width: 36px;
}

.rpt-filter-bar[b-w24jnmkn63] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-w24jnmkn63] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-w24jnmkn63] {
    text-decoration: underline;
}

.rpt-stat-row[b-w24jnmkn63] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

.rpt-stat-row--2[b-w24jnmkn63] {
    grid-template-columns: repeat(2, 1fr);
}

@media (max-width: 768px) {
    .rpt-stat-row[b-w24jnmkn63] {
        grid-template-columns: repeat(2, 1fr);
    }

    .rpt-stat-row--2[b-w24jnmkn63] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .rpt-stat-row[b-w24jnmkn63] {
        grid-template-columns: 1fr;
    }

    .rpt-stat-row--2[b-w24jnmkn63] {
        grid-template-columns: 1fr;
    }
}

.rpt-grid-container[b-w24jnmkn63] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-w24jnmkn63] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Case name link -- */
.rpt-case-link[b-w24jnmkn63] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.rpt-case-link:hover[b-w24jnmkn63] {
    text-decoration: underline;
}

/* -- Days column -- */
.rpt-days[b-w24jnmkn63] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.rpt-days--danger[b-w24jnmkn63] {
    color: var(--lb-danger);
}

/* -- Report footer -- */
.rpt-footer[b-w24jnmkn63] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-w24jnmkn63] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.rpt-save-dialog-body[b-w24jnmkn63] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-w24jnmkn63] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

@media (max-width: 768px) {
    .rpt-header[b-w24jnmkn63] {
        flex-direction: column;
    }

    .rpt-header-right[b-w24jnmkn63] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-w24jnmkn63] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-w24jnmkn63],
    .rpt-filter-bar[b-w24jnmkn63] {
        display: none;
    }

    .rpt-grid-container[b-w24jnmkn63] {
        border: none;
        overflow: visible;
    }

    .rpt-title[b-w24jnmkn63] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-w24jnmkn63] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/NonSuitReport.razor.rz.scp.css */
/* -- Non-Suit Report page scoped styles -- */

.rpt-loading[b-t7vd3uyplz] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

.rpt-header[b-t7vd3uyplz] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-t7vd3uyplz] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-t7vd3uyplz] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-t7vd3uyplz] {
    text-decoration: underline;
}

.rpt-title[b-t7vd3uyplz] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-t7vd3uyplz] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-t7vd3uyplz] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-filter-bar[b-t7vd3uyplz] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-t7vd3uyplz] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-t7vd3uyplz] {
    text-decoration: underline;
}

/* -- 3-card stat row -- */
.rpt-stat-row--3[b-t7vd3uyplz] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .rpt-stat-row--3[b-t7vd3uyplz] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .rpt-stat-row--3[b-t7vd3uyplz] {
        grid-template-columns: 1fr;
    }
}

.rpt-grid-container[b-t7vd3uyplz] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-t7vd3uyplz] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Case name link -- */
.rpt-case-link[b-t7vd3uyplz] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.rpt-case-link:hover[b-t7vd3uyplz] {
    text-decoration: underline;
}

/* -- Matter type badge -- */
.rpt-badge[b-t7vd3uyplz] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.rpt-badge--civil[b-t7vd3uyplz] {
    background: var(--lb-bg-muted);
    color: var(--lb-text);
}

.rpt-badge--wc[b-t7vd3uyplz] {
    background: var(--lb-bg-muted);
    color: var(--lb-text);
}

/* -- Non-suit date highlight -- */
.rpt-highlight[b-t7vd3uyplz] {
    color: var(--lb-warning-text, var(--lb-warning));
    font-weight: 600;
}

/* -- Report footer -- */
.rpt-footer[b-t7vd3uyplz] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-t7vd3uyplz] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.rpt-save-dialog-body[b-t7vd3uyplz] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-t7vd3uyplz] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

@media (max-width: 768px) {
    .rpt-header[b-t7vd3uyplz] {
        flex-direction: column;
    }

    .rpt-header-right[b-t7vd3uyplz] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-t7vd3uyplz] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-t7vd3uyplz],
    .rpt-filter-bar[b-t7vd3uyplz] {
        display: none;
    }

    .rpt-grid-container[b-t7vd3uyplz] {
        border: none;
        overflow: visible;
    }

    .rpt-title[b-t7vd3uyplz] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-t7vd3uyplz] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/OrphanReport.razor.rz.scp.css */
/* -- Orphan Report page scoped styles -- */

/* Loading container */
.rpt-loading[b-fan15xn3td] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.rpt-header[b-fan15xn3td] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-fan15xn3td] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-fan15xn3td] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-fan15xn3td] {
    text-decoration: underline;
}

.rpt-title[b-fan15xn3td] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-fan15xn3td] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-fan15xn3td] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-pin-btn[b-fan15xn3td] {
    min-width: 36px;
}

/* -- Filter bar -- */
.rpt-filter-bar[b-fan15xn3td] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-fan15xn3td] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-fan15xn3td] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.rpt-stat-row[b-fan15xn3td] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .rpt-stat-row[b-fan15xn3td] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.rpt-grid-container[b-fan15xn3td] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-fan15xn3td] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Days column -- */
.rpt-days[b-fan15xn3td] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.rpt-days--danger[b-fan15xn3td] {
    color: var(--lb-danger);
}

.rpt-days--warning[b-fan15xn3td] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.rpt-days--ok[b-fan15xn3td] {
    color: var(--lb-text);
}

/* -- Case name link -- */
.rpt-case-link[b-fan15xn3td] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.rpt-case-link:hover[b-fan15xn3td] {
    text-decoration: underline;
}

/* -- Report footer -- */
.rpt-footer[b-fan15xn3td] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-fan15xn3td] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.rpt-save-dialog-body[b-fan15xn3td] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-fan15xn3td] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .rpt-header[b-fan15xn3td] {
        flex-direction: column;
    }

    .rpt-header-right[b-fan15xn3td] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-fan15xn3td] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-fan15xn3td],
    .rpt-filter-bar[b-fan15xn3td] {
        display: none;
    }

    .rpt-grid-container[b-fan15xn3td] {
        border: none;
        overflow: visible;
    }

    .rpt-title[b-fan15xn3td] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-fan15xn3td] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/PerformanceReport.razor.rz.scp.css */
/* -- Performance report scoped styles -- */

.rpt-loading[b-9iyhojc5q0] { display: flex; align-items: center; justify-content: center; min-height: 300px; }
.rpt-header[b-9iyhojc5q0] { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.rpt-header-left[b-9iyhojc5q0] { display: flex; flex-direction: column; gap: 2px; }
.rpt-back-link[b-9iyhojc5q0] { font-size: 0.82rem; color: var(--lb-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rpt-back-link:hover[b-9iyhojc5q0] { text-decoration: underline; }
.rpt-title[b-9iyhojc5q0] { font-size: 1.5rem; font-weight: 700; color: var(--lb-text); margin: 0; line-height: 1.3; }
.rpt-subtitle[b-9iyhojc5q0] { font-size: 0.82rem; color: var(--lb-text-muted); }
.rpt-header-right[b-9iyhojc5q0] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rpt-pin-btn[b-9iyhojc5q0] { min-width: 36px; }
.rpt-filter-bar[b-9iyhojc5q0] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; margin-bottom: 16px; }
.rpt-reset-btn[b-9iyhojc5q0] { background: none; border: none; color: var(--lb-primary); font-size: 0.82rem; cursor: pointer; padding: 4px 8px; white-space: nowrap; }
.rpt-reset-btn:hover[b-9iyhojc5q0] { text-decoration: underline; }
.rpt-grid-container[b-9iyhojc5q0] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; overflow: hidden; min-height: 200px; position: relative; }
.rpt-grid-loading[b-9iyhojc5q0] { display: flex; align-items: center; justify-content: center; min-height: 200px; }

.perf-score[b-9iyhojc5q0] { font-weight: 700; font-size: 1rem; font-variant-numeric: tabular-nums; }
.perf-score--high[b-9iyhojc5q0] { color: var(--lb-success); }
.perf-score--mid[b-9iyhojc5q0] { color: var(--lb-warning-text, var(--lb-warning)); }
.perf-score--low[b-9iyhojc5q0] { color: var(--lb-danger); }

.rpt-footer[b-9iyhojc5q0] { display: flex; align-items: center; gap: 16px; padding: 10px 0; flex-wrap: wrap; }
.rpt-footer-text[b-9iyhojc5q0] { font-size: 0.75rem; color: var(--lb-text-muted); }
.rpt-footer-note[b-9iyhojc5q0] { font-style: italic; }
.rpt-save-dialog-body[b-9iyhojc5q0] { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.rpt-save-label[b-9iyhojc5q0] { font-size: 0.82rem; font-weight: 600; color: var(--lb-text); }

@media (max-width: 768px) {
    .rpt-header[b-9iyhojc5q0] { flex-direction: column; }
    .rpt-header-right[b-9iyhojc5q0] { width: 100%; justify-content: flex-start; }
    .rpt-filter-bar[b-9iyhojc5q0] { flex-direction: column; align-items: stretch; }
}
/* /Components/Pages/Reports/ReferralSourceReport.razor.rz.scp.css */
/* -- Referral Source Analysis report scoped styles -- */

.rpt-loading[b-xt0qwgzngl] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

.rpt-header[b-xt0qwgzngl] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rpt-header-left[b-xt0qwgzngl] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rpt-back-link[b-xt0qwgzngl] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rpt-back-link:hover[b-xt0qwgzngl] {
    text-decoration: underline;
}

.rpt-title[b-xt0qwgzngl] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rpt-subtitle[b-xt0qwgzngl] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-xt0qwgzngl] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rpt-pin-btn[b-xt0qwgzngl] {
    min-width: 36px;
}

.rpt-filter-bar[b-xt0qwgzngl] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rpt-reset-btn[b-xt0qwgzngl] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rpt-reset-btn:hover[b-xt0qwgzngl] {
    text-decoration: underline;
}

.rpt-stat-row[b-xt0qwgzngl] {
    display: grid;
    gap: 12px;
    margin-bottom: 16px;
}

.rpt-stat-row--3[b-xt0qwgzngl] {
    grid-template-columns: repeat(3, 1fr);
}

.rpt-grid-container[b-xt0qwgzngl] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rpt-grid-loading[b-xt0qwgzngl] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

.rpt-text--success[b-xt0qwgzngl] {
    color: var(--lb-success);
    font-weight: 600;
}

.rpt-footer[b-xt0qwgzngl] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rpt-footer-text[b-xt0qwgzngl] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.rpt-save-dialog-body[b-xt0qwgzngl] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rpt-save-label[b-xt0qwgzngl] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

@media (max-width: 768px) {
    .rpt-header[b-xt0qwgzngl] {
        flex-direction: column;
    }

    .rpt-header-right[b-xt0qwgzngl] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-filter-bar[b-xt0qwgzngl] {
        flex-direction: column;
        align-items: stretch;
    }

    .rpt-stat-row--3[b-xt0qwgzngl] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .rpt-stat-row--3[b-xt0qwgzngl] {
        grid-template-columns: 1fr;
    }
}

/* -- Print -- */
@media print {
    .rpt-header-right[b-xt0qwgzngl],
    .rpt-filter-bar[b-xt0qwgzngl] {
        display: none;
    }

    .rpt-grid-container[b-xt0qwgzngl] {
        border: none;
        overflow: visible;
    }

    .rpt-title[b-xt0qwgzngl] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rpt-footer-text[b-xt0qwgzngl] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/ReportsDashboard.razor.rz.scp.css */
/* -- Reports Dashboard -- scoped styles -- */
/* All colors via --lb-* tokens for dark/light mode support */

/* ── Loading / Disabled States ───────────────────────────────────── */

.rpt-loading-container[b-juggys24ag] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
}

.rpt-disabled-notice[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 50vh;
    text-align: center;
    padding: 2rem;
}

.rpt-disabled-notice .e-icons[b-juggys24ag] {
    font-size: 48px;
    color: var(--lb-text-dim);
    margin-bottom: 1rem;
}

.rpt-disabled-notice h3[b-juggys24ag] {
    color: var(--lb-text);
    margin: 0 0 0.5rem;
    font-size: 1.5rem;
}

.rpt-disabled-notice p[b-juggys24ag] {
    color: var(--lb-text-muted);
    margin: 0;
    max-width: 420px;
}

/* ── Page Header ─────────────────────────────────────────────────── */

.rpt-header[b-juggys24ag] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.rpt-header-left[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.rpt-title[b-juggys24ag] {
    font-size: 1.75rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    letter-spacing: -0.02em;
}

.rpt-subtitle[b-juggys24ag] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
}

.rpt-header-right[b-juggys24ag] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.rpt-btn-ai[b-juggys24ag] {
    color: var(--lb-brand);
    border-color: var(--lb-brand);
}

/* ── "Coming Soon" affordance for unbuilt header actions ─────────────
   Disabled button + always-visible badge so tablet/phone users (who can't
   hover for the tooltip) still see the feature is not yet available. */
.rpt-soon-group[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
}

.rpt-soon-badge[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    padding: 0.125rem 0.5rem;
    border-radius: 999px;
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    white-space: nowrap;
}

/* ── Role Badge ──────────────────────────────────────────────────── */

.rpt-role-badge[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.25rem 0.75rem;
    border-radius: 999px;
    background: var(--lb-elevated);
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--lb-text);
    white-space: nowrap;
}

.rpt-role-dot[b-juggys24ag] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.rpt-role-dot--ma[b-juggys24ag] {
    background: var(--lb-brand);
}

.rpt-role-dot--wa[b-juggys24ag] {
    background: var(--lb-blue);
}

.rpt-role-dot--pa[b-juggys24ag] {
    background: var(--lb-success);
}

/* ── Search Bar ──────────────────────────────────────────────────── */

.rpt-search-bar[b-juggys24ag] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 0.625rem 1rem;
    margin-bottom: 1.5rem;
    transition: border-color 0.2s;
}

.rpt-search-bar:focus-within[b-juggys24ag] {
    border-color: var(--lb-brand);
}

.rpt-search-icon[b-juggys24ag] {
    font-size: 16px;
    color: var(--lb-text-dim);
    flex-shrink: 0;
}

.rpt-search-input[b-juggys24ag] {
    flex: 1;
    border: none;
    outline: none;
    background: transparent;
    font-size: 0.9375rem;
    color: var(--lb-text);
    min-width: 0;
}

.rpt-search-input[b-juggys24ag]::placeholder {
    color: var(--lb-text-dim);
}

.rpt-ai-chip[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.125rem 0.5rem;
    border-radius: 4px;
    background: var(--lb-accent-tint);
    color: var(--lb-brand);
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    flex-shrink: 0;
}

/* ── Section Layout ──────────────────────────────────────────────── */

.rpt-section[b-juggys24ag] {
    margin-bottom: 2rem;
}

.rpt-section-header[b-juggys24ag] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.rpt-section-header--tabs[b-juggys24ag] {
    flex-wrap: wrap;
    gap: 0.75rem;
}

.rpt-section-title[b-juggys24ag] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.75rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--lb-text-muted);
    margin: 0;
    text-transform: uppercase;
}

.rpt-dash[b-juggys24ag] {
    display: inline-block;
    width: 20px;
    height: 3px;
    border-radius: 2px;
    background: var(--lb-brand);
}

.rpt-link-btn[b-juggys24ag] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    padding: 0;
    text-decoration: none;
}

.rpt-link-btn:hover[b-juggys24ag] {
    text-decoration: underline;
}

/* ── Pinned Cards Grid ───────────────────────────────────────────── */

.rpt-pinned-grid[b-juggys24ag] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 1rem;
}

.rpt-pinned-card[b-juggys24ag] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 12px;
    padding: 1.25rem;
    cursor: pointer;
    transition: box-shadow 0.2s, border-color 0.2s;
    display: flex;
    flex-direction: column;
    position: relative;
}

.rpt-pinned-card:hover[b-juggys24ag] {
    box-shadow: var(--lb-shadow-lg);
    border-color: var(--lb-border);
}

.rpt-pinned-card:focus-visible[b-juggys24ag] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

.rpt-pinned-top[b-juggys24ag] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

.rpt-pinned-icon-wrap[b-juggys24ag] {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
}

.rpt-star-btn[b-juggys24ag] {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--lb-brand);
    font-size: 16px;
    padding: 2px;
    line-height: 1;
    border-radius: 4px;
    transition: opacity 0.15s;
}

.rpt-star-btn:hover[b-juggys24ag] {
    opacity: 0.7;
}

.rpt-pinned-stat[b-juggys24ag] {
    font-size: 2rem;
    font-weight: 700;
    line-height: 1.1;
    margin-bottom: 0.25rem;
}

.rpt-pinned-name[b-juggys24ag] {
    font-size: 0.9375rem;
    font-weight: 500;
    color: var(--lb-text);
    margin-bottom: 0.25rem;
}

.rpt-pinned-desc[b-juggys24ag] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.5rem;
}

/* -- Accent color variants (pinned cards) -- */

.rpt-accent-1 .rpt-pinned-icon-wrap[b-juggys24ag],
.rpt-pinned-icon-wrap.rpt-accent-1[b-juggys24ag] {
    background: var(--lb-accent-tint);
    color: var(--lb-brand);
}
.rpt-pinned-stat.rpt-accent-1[b-juggys24ag],
.rpt-accent-1 .rpt-pinned-stat[b-juggys24ag] {
    color: var(--lb-brand);
}

.rpt-accent-2 .rpt-pinned-icon-wrap[b-juggys24ag],
.rpt-pinned-icon-wrap.rpt-accent-2[b-juggys24ag] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}
.rpt-pinned-stat.rpt-accent-2[b-juggys24ag],
.rpt-accent-2 .rpt-pinned-stat[b-juggys24ag] {
    color: var(--lb-success);
}

.rpt-accent-3 .rpt-pinned-icon-wrap[b-juggys24ag],
.rpt-pinned-icon-wrap.rpt-accent-3[b-juggys24ag] {
    background: var(--lb-blue-bg);
    color: var(--lb-blue);
}
.rpt-pinned-stat.rpt-accent-3[b-juggys24ag],
.rpt-accent-3 .rpt-pinned-stat[b-juggys24ag] {
    color: var(--lb-blue);
}

.rpt-accent-4 .rpt-pinned-icon-wrap[b-juggys24ag],
.rpt-pinned-icon-wrap.rpt-accent-4[b-juggys24ag] {
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}
.rpt-pinned-stat.rpt-accent-4[b-juggys24ag],
.rpt-accent-4 .rpt-pinned-stat[b-juggys24ag] {
    color: var(--lb-purple);
}

/* ── Urgency Badge ───────────────────────────────────────────────── */

.rpt-urgency-badge[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    gap: 0.375rem;
    padding: 0.1875rem 0.625rem;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 600;
    width: fit-content;
    margin-top: auto;
}

.rpt-urgency-dot[b-juggys24ag] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.rpt-urgency--critical[b-juggys24ag] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.rpt-urgency--critical .rpt-urgency-dot[b-juggys24ag] {
    background: var(--lb-danger);
}

.rpt-urgency--warning[b-juggys24ag] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.rpt-urgency--warning .rpt-urgency-dot[b-juggys24ag] {
    background: var(--lb-warning);
}

/* ── Recently Viewed Chips ───────────────────────────────────────── */

.rpt-recent-row[b-juggys24ag] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.75rem;
}

.rpt-recent-chip[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem 1rem;
    border-radius: 999px;
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    cursor: pointer;
    transition: border-color 0.2s, box-shadow 0.2s;
    font-size: 0.8125rem;
    white-space: nowrap;
}

.rpt-recent-chip:hover[b-juggys24ag] {
    border-color: var(--lb-border);
    box-shadow: var(--lb-shadow);
}

.rpt-recent-dot[b-juggys24ag] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.rpt-recent-dot.rpt-accent-1[b-juggys24ag] { background: var(--lb-brand); }
.rpt-recent-dot.rpt-accent-2[b-juggys24ag] { background: var(--lb-success); }
.rpt-recent-dot.rpt-accent-3[b-juggys24ag] { background: var(--lb-blue); }
.rpt-recent-dot.rpt-accent-4[b-juggys24ag] { background: var(--lb-purple); }

.rpt-recent-name[b-juggys24ag] {
    font-weight: 600;
    color: var(--lb-text);
}

.rpt-recent-time[b-juggys24ag] {
    color: var(--lb-text-dim);
    font-size: 0.75rem;
}

/* ── AI Report Builder Strip ─────────────────────────────────────── */

.rpt-ai-strip[b-juggys24ag] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1.5rem;
    background: var(--lb-elevated);
    border: 1px solid var(--lb-border-light);
    border-radius: 12px;
    padding: 1.25rem 1.5rem;
    margin-bottom: 2rem;
}

.rpt-ai-strip-left[b-juggys24ag] {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-width: 0;
}

.rpt-ai-strip-icon[b-juggys24ag] {
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: var(--lb-accent-tint);
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.rpt-ai-strip-icon .e-icons[b-juggys24ag] {
    font-size: 20px;
    color: var(--lb-brand);
}

.rpt-ai-strip-text[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    min-width: 0;
}

.rpt-ai-strip-title[b-juggys24ag] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--lb-text);
}

.rpt-ai-strip-sub[b-juggys24ag] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rpt-ai-strip-sample[b-juggys24ag] {
    color: var(--lb-brand);
    font-style: italic;
}

.rpt-ai-strip-btn[b-juggys24ag] {
    flex-shrink: 0;
    color: var(--lb-brand);
    border-color: var(--lb-brand);
}

/* ── Category Tab Pills ──────────────────────────────────────────── */

.rpt-tab-pills[b-juggys24ag] {
    display: flex;
    gap: 0.375rem;
    flex-wrap: wrap;
}

.rpt-tab-pill[b-juggys24ag] {
    padding: 0.3125rem 0.875rem;
    border-radius: 999px;
    border: 1px solid var(--lb-border);
    background: transparent;
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
    white-space: nowrap;
}

.rpt-tab-pill:hover[b-juggys24ag] {
    background: var(--lb-elevated);
    color: var(--lb-text);
}

.rpt-tab-pill--active[b-juggys24ag] {
    background: var(--lb-brand);
    color: var(--lb-bg-white);
    border-color: var(--lb-brand);
}

.rpt-tab-pill--active:hover[b-juggys24ag] {
    background: var(--lb-brand-hover);
    color: var(--lb-bg-white);
}

/* ── All Reports Grid ────────────────────────────────────────────── */

.rpt-all-grid[b-juggys24ag] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1rem;
}

.rpt-report-card[b-juggys24ag] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border-light);
    border-radius: 12px;
    padding: 1.25rem;
    cursor: pointer;
    transition: box-shadow 0.2s, border-color 0.2s;
    display: flex;
    flex-direction: column;
}

.rpt-report-card:hover[b-juggys24ag] {
    box-shadow: var(--lb-shadow-lg);
    border-color: var(--lb-border);
}

.rpt-report-card:focus-visible[b-juggys24ag] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

.rpt-report-top[b-juggys24ag] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

.rpt-report-icon-wrap[b-juggys24ag] {
    width: 36px;
    height: 36px;
    border-radius: 8px;
    background: var(--lb-accent-tint);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 16px;
    color: var(--lb-brand);
}

.rpt-role-badges[b-juggys24ag] {
    display: flex;
    gap: 0.25rem;
}

.rpt-role-mini[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0.0625rem 0.375rem;
    border-radius: 4px;
    font-size: 0.625rem;
    font-weight: 700;
    letter-spacing: 0.04em;
}

.rpt-role-mini--ma[b-juggys24ag] {
    background: var(--lb-accent-tint);
    color: var(--lb-brand);
}

.rpt-role-mini--wa[b-juggys24ag] {
    background: var(--lb-blue-bg);
    color: var(--lb-blue);
}

.rpt-role-mini--pa[b-juggys24ag] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.rpt-report-name[b-juggys24ag] {
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 0.375rem;
}

.rpt-report-desc[b-juggys24ag] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    line-height: 1.5;
    display: -webkit-box;
    -webkit-line-clamp: 3;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-bottom: 0.75rem;
    flex: 1;
}

.rpt-report-footer[b-juggys24ag] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 0.75rem;
    margin-top: 0.25rem;
}

.rpt-report-last-run[b-juggys24ag] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
}

.rpt-run-link[b-juggys24ag] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
}

.rpt-run-link:hover[b-juggys24ag] {
    text-decoration: underline;
}

/* ── Empty State ─────────────────────────────────────────────────── */

.rpt-empty-state[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 3rem 1rem;
    color: var(--lb-text-dim);
}

.rpt-empty-state .e-icons[b-juggys24ag] {
    font-size: 32px;
    margin-bottom: 0.75rem;
}

.rpt-empty-state p[b-juggys24ag] {
    margin: 0;
    font-size: 0.9375rem;
}

/* -- Load-failure state (#2642) -- */

.rpt-load-failed .e-icons[b-juggys24ag] {
    color: var(--lb-danger);
}

.rpt-load-failed[b-juggys24ag]  .rpt-retry-btn {
    margin-top: 1rem;
}

/* ── Skeleton Loading ────────────────────────────────────────────── */

.rpt-skeleton[b-juggys24ag] {
    pointer-events: none;
}

.rpt-skeleton-icon[b-juggys24ag] {
    width: 40px;
    height: 40px;
    border-radius: 8px;
    background: var(--lb-elevated);
    margin-bottom: 0.75rem;
}

.rpt-skeleton-stat[b-juggys24ag] {
    width: 60px;
    height: 28px;
    border-radius: 6px;
    background: var(--lb-elevated);
    margin-bottom: 0.5rem;
}

.rpt-skeleton-line[b-juggys24ag] {
    width: 100%;
    height: 14px;
    border-radius: 4px;
    background: var(--lb-elevated);
    margin-bottom: 0.375rem;
}

.rpt-skeleton-line--short[b-juggys24ag] {
    width: 60%;
}

/* ── Case Health Section ─────────────────────────────────────────── */

.rpt-health-header-actions[b-juggys24ag] {
    display: flex;
    align-items: center;
    gap: 1rem;
}

/* Stat cards row */
.rpt-health-stats[b-juggys24ag] {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}

.rpt-health-stat[b-juggys24ag] {
    flex: 1 1 120px;
    display: flex;
    flex-direction: column;
    align-items: center;
    background: var(--lb-elevated);
    border-radius: 8px;
    padding: 0.875rem 1rem;
    min-width: 100px;
}

.rpt-health-stat-value[b-juggys24ag] {
    font-size: 1.75rem;
    font-weight: 700;
    line-height: 1.1;
    color: var(--lb-text);
}

.rpt-health-stat-value--avg[b-juggys24ag] {
    color: var(--lb-brand);
}

.rpt-health-stat-value--crit[b-juggys24ag] {
    color: var(--lb-danger);
}

.rpt-health-stat-value--warn[b-juggys24ag] {
    color: var(--lb-warning);
}

.rpt-health-stat-label[b-juggys24ag] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
    margin-top: 0.25rem;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

/* Case grid */
.rpt-health-grid[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
}

.rpt-health-row[b-juggys24ag] {
    display: grid;
    grid-template-columns: 2.5rem 1fr auto;
    align-items: center;
    gap: 0.75rem;
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
    cursor: pointer;
    background: var(--lb-elevated);
    transition: background 0.15s;
}

.rpt-health-row:hover[b-juggys24ag],
.rpt-health-row:focus-visible[b-juggys24ag] {
    background: var(--lb-hover);
    outline: none;
}

.rpt-health-dot[b-juggys24ag] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    font-size: 0.6875rem;
    font-weight: 700;
    color: #fff;
    flex-shrink: 0;
}

.rpt-health-dot--good[b-juggys24ag] { background: var(--lb-success); }
.rpt-health-dot--warn[b-juggys24ag] { background: var(--lb-warning); }
.rpt-health-dot--crit[b-juggys24ag] { background: var(--lb-danger); }

.rpt-health-case-info[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.rpt-health-case-name[b-juggys24ag] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rpt-health-case-atty[b-juggys24ag] {
    font-size: 0.75rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.rpt-health-band[b-juggys24ag] {
    font-size: 0.6875rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.2rem 0.5rem;
    border-radius: 4px;
    flex-shrink: 0;
}

.rpt-health-band--good[b-juggys24ag] {
    background: color-mix(in srgb, var(--lb-success) 15%, transparent);
    color: var(--lb-success);
}

.rpt-health-band--warn[b-juggys24ag] {
    background: color-mix(in srgb, var(--lb-warning) 15%, transparent);
    color: var(--lb-warning);
}

.rpt-health-band--crit[b-juggys24ag] {
    background: color-mix(in srgb, var(--lb-danger) 15%, transparent);
    color: var(--lb-danger);
}

/* Clickable stat cards */
.rpt-health-stat--clickable[b-juggys24ag] {
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}

.rpt-health-stat--clickable:hover[b-juggys24ag],
.rpt-health-stat--clickable:focus-visible[b-juggys24ag] {
    background: var(--lb-hover);
    outline: none;
}

.rpt-health-stat--clickable:active[b-juggys24ag] {
    transform: scale(0.97);
}

/* Case Health dialog */
[b-juggys24ag] .rpt-health-dialog .e-dlg-content {
    padding: 0;
}

.rpt-health-dialog-list[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    gap: 0.375rem;
    max-height: 60vh;
    overflow-y: auto;
    padding: 0.75rem;
}

.rpt-health-dialog-empty[b-juggys24ag] {
    text-align: center;
    padding: 2rem 1rem;
    color: var(--lb-text-dim);
    font-size: 0.9rem;
}

/* Empty state */
.rpt-health-empty[b-juggys24ag] {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 2.5rem 1rem;
    color: var(--lb-text-dim);
    text-align: center;
}

.rpt-health-empty-icon[b-juggys24ag] {
    font-size: 2rem;
    margin-bottom: 0.75rem;
    opacity: 0.45;
}

.rpt-health-empty-msg[b-juggys24ag] {
    margin: 0 0 0.25rem;
    font-size: 0.9375rem;
    font-weight: 600;
    color: var(--lb-text);
}

.rpt-health-empty-sub[b-juggys24ag] {
    margin: 0;
    font-size: 0.875rem;
}

/* Confirmation inline banner */
.rpt-health-confirm[b-juggys24ag] {
    background: var(--lb-elevated);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 1rem 1.25rem;
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: 1.25rem;
    flex-wrap: wrap;
}

.rpt-health-confirm-msg[b-juggys24ag] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--lb-text);
    flex: 1 1 auto;
}

.rpt-health-confirm-actions[b-juggys24ag] {
    display: flex;
    gap: 0.625rem;
    flex-shrink: 0;
}

/* Batch progress */
.rpt-health-progress[b-juggys24ag] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.75rem 0;
    font-size: 0.9rem;
    color: var(--lb-text-dim);
    margin-bottom: 0.5rem;
}

.rpt-health-spinner[b-juggys24ag] {
    font-size: 1.125rem;
    animation: spin-b-juggys24ag 0.9s linear infinite;
    flex-shrink: 0;
}

@keyframes spin-b-juggys24ag {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

.rpt-link-btn--danger[b-juggys24ag] {
    color: var(--lb-danger);
}

.rpt-link-btn--danger:hover[b-juggys24ag] {
    color: var(--lb-danger);
    text-decoration: underline;
}

/* ── Responsive Breakpoints ──────────────────────────────────────── */

@media (max-width: 991px) {
    .rpt-pinned-grid[b-juggys24ag] {
        grid-template-columns: repeat(2, 1fr);
    }

    .rpt-all-grid[b-juggys24ag] {
        grid-template-columns: repeat(2, 1fr);
    }

    .rpt-ai-strip[b-juggys24ag] {
        flex-direction: column;
        align-items: flex-start;
    }

    .rpt-ai-strip-sub[b-juggys24ag] {
        white-space: normal;
    }
}

@media (max-width: 767px) {
    .rpt-header[b-juggys24ag] {
        flex-direction: column;
    }

    .rpt-header-right[b-juggys24ag] {
        width: 100%;
        justify-content: flex-start;
    }

    .rpt-pinned-grid[b-juggys24ag] {
        grid-template-columns: 1fr;
    }

    .rpt-all-grid[b-juggys24ag] {
        grid-template-columns: 1fr;
    }

    .rpt-recent-row[b-juggys24ag] {
        flex-direction: column;
    }

    .rpt-section-header--tabs[b-juggys24ag] {
        flex-direction: column;
        align-items: flex-start;
    }

    /* Footer buttons wrap on a phone instead of a non-wrapping flex row --
       without this they overflowed and shrank to clipped circles, the June
       cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
    .rpt-report-footer[b-juggys24ag] {
        flex-wrap: wrap;
    }
}
/* /Components/Pages/Reports/RevenueAnalyticsReport.razor.rz.scp.css */
/* -- Revenue Analytics report scoped styles -- */

.rpt-loading[b-v942dby7yk] { display: flex; align-items: center; justify-content: center; min-height: 300px; }
.rpt-header[b-v942dby7yk] { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.rpt-header-left[b-v942dby7yk] { display: flex; flex-direction: column; gap: 2px; }
.rpt-back-link[b-v942dby7yk] { font-size: 0.82rem; color: var(--lb-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rpt-back-link:hover[b-v942dby7yk] { text-decoration: underline; }
.rpt-title[b-v942dby7yk] { font-size: 1.5rem; font-weight: 700; color: var(--lb-text); margin: 0; line-height: 1.3; }
.rpt-subtitle[b-v942dby7yk] { font-size: 0.82rem; color: var(--lb-text-muted); }
.rpt-header-right[b-v942dby7yk] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rpt-pin-btn[b-v942dby7yk] { min-width: 36px; }
.rpt-filter-bar[b-v942dby7yk] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; margin-bottom: 16px; }
.rpt-reset-btn[b-v942dby7yk] { background: none; border: none; color: var(--lb-primary); font-size: 0.82rem; cursor: pointer; padding: 4px 8px; white-space: nowrap; }
.rpt-reset-btn:hover[b-v942dby7yk] { text-decoration: underline; }
.rpt-grid-container[b-v942dby7yk] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; overflow: hidden; min-height: 200px; position: relative; }
.rpt-chart-container[b-v942dby7yk] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; padding: 12px; margin-bottom: 16px; }
.rpt-grid-loading[b-v942dby7yk] { display: flex; align-items: center; justify-content: center; min-height: 200px; }

.rpt-change--positive[b-v942dby7yk] { color: var(--lb-success); font-weight: 600; }
.rpt-change--negative[b-v942dby7yk] { color: var(--lb-danger); font-weight: 600; }

.rpt-footer[b-v942dby7yk] { display: flex; align-items: center; gap: 16px; padding: 10px 0; flex-wrap: wrap; }
.rpt-footer-text[b-v942dby7yk] { font-size: 0.75rem; color: var(--lb-text-muted); }
.rpt-save-dialog-body[b-v942dby7yk] { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.rpt-save-label[b-v942dby7yk] { font-size: 0.82rem; font-weight: 600; color: var(--lb-text); }

@media (max-width: 768px) {
    .rpt-header[b-v942dby7yk] { flex-direction: column; }
    .rpt-header-right[b-v942dby7yk] { width: 100%; justify-content: flex-start; }
    .rpt-filter-bar[b-v942dby7yk] { flex-direction: column; align-items: stretch; }
}
/* /Components/Pages/Reports/RevenuePipelineReport.razor.rz.scp.css */
/* -- Revenue Pipeline Report page scoped styles -- */

/* Loading container */
.rp-loading[b-0subnghb90] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.rp-header[b-0subnghb90] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.rp-header-left[b-0subnghb90] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.rp-back-link[b-0subnghb90] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.rp-back-link:hover[b-0subnghb90] {
    text-decoration: underline;
}

.rp-title[b-0subnghb90] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.rp-subtitle[b-0subnghb90] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.rp-header-right[b-0subnghb90] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.rp-pin-btn[b-0subnghb90] {
    min-width: 36px;
}

/* -- Filter bar -- */
.rp-filter-bar[b-0subnghb90] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.rp-reset-btn[b-0subnghb90] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.rp-reset-btn:hover[b-0subnghb90] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.rp-stat-row[b-0subnghb90] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .rp-stat-row[b-0subnghb90] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .rp-stat-row[b-0subnghb90] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.rp-grid-container[b-0subnghb90] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.rp-grid-loading[b-0subnghb90] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Stage badge -- */
.rp-stage-badge[b-0subnghb90] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.rp-stage--predemand[b-0subnghb90] {
    background: var(--lb-bg-muted);
    color: var(--lb-text-muted);
}

.rp-stage--demand[b-0subnghb90] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.rp-stage--negotiation[b-0subnghb90] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning-text, var(--lb-warning));
}

.rp-stage--settled[b-0subnghb90] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

/* -- Projected fee column -- */
.rp-projected-fee[b-0subnghb90] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

/* -- No estimate indicator -- */
.rp-no-estimate[b-0subnghb90] {
    display: block;
    font-size: 0.65rem;
    color: var(--lb-text-muted);
    font-style: italic;
    line-height: 1.2;
}

/* -- Days in stage column -- */
.rp-days[b-0subnghb90] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.rp-days--warning[b-0subnghb90] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.rp-days--danger[b-0subnghb90] {
    color: var(--lb-danger);
}

/* -- Case name link -- */
.rp-case-link[b-0subnghb90] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.rp-case-link:hover[b-0subnghb90] {
    text-decoration: underline;
}

/* -- Report footer -- */
.rp-footer[b-0subnghb90] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.rp-footer-text[b-0subnghb90] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.rp-save-dialog-body[b-0subnghb90] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.rp-save-label[b-0subnghb90] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .rp-header[b-0subnghb90] {
        flex-direction: column;
    }

    .rp-header-right[b-0subnghb90] {
        width: 100%;
        justify-content: flex-start;
    }

    .rp-filter-bar[b-0subnghb90] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .rp-header-right[b-0subnghb90],
    .rp-filter-bar[b-0subnghb90] {
        display: none;
    }

    .rp-grid-container[b-0subnghb90] {
        border: none;
        overflow: visible;
    }

    .rp-title[b-0subnghb90] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .rp-footer-text[b-0subnghb90] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/SettlementSummaryReport.razor.rz.scp.css */
/* -- Settlement Summary Report page scoped styles -- */

/* Loading container */
.ss-loading[b-47olxwgbnf] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.ss-header[b-47olxwgbnf] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.ss-header-left[b-47olxwgbnf] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.ss-back-link[b-47olxwgbnf] {
    font-size: 0.82rem;
    color: var(--lb-primary);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.ss-back-link:hover[b-47olxwgbnf] {
    text-decoration: underline;
}

.ss-title[b-47olxwgbnf] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.ss-subtitle[b-47olxwgbnf] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.ss-header-right[b-47olxwgbnf] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.ss-pin-btn[b-47olxwgbnf] {
    min-width: 36px;
}

/* -- Filter bar -- */
.ss-filter-bar[b-47olxwgbnf] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.ss-reset-btn[b-47olxwgbnf] {
    background: none;
    border: none;
    color: var(--lb-primary);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.ss-reset-btn:hover[b-47olxwgbnf] {
    text-decoration: underline;
}

/* -- Stat cards row -- */
.ss-stat-row[b-47olxwgbnf] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .ss-stat-row[b-47olxwgbnf] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .ss-stat-row[b-47olxwgbnf] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.ss-grid-container[b-47olxwgbnf] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.ss-grid-loading[b-47olxwgbnf] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Case name link -- */
.ss-case-link[b-47olxwgbnf] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-primary);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.ss-case-link:hover[b-47olxwgbnf] {
    text-decoration: underline;
}

/* -- Report footer -- */
.ss-footer[b-47olxwgbnf] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.ss-footer-text[b-47olxwgbnf] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.ss-save-dialog-body[b-47olxwgbnf] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.ss-save-label[b-47olxwgbnf] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .ss-header[b-47olxwgbnf] {
        flex-direction: column;
    }

    .ss-header-right[b-47olxwgbnf] {
        width: 100%;
        justify-content: flex-start;
    }

    .ss-filter-bar[b-47olxwgbnf] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Pages/Reports/SolRiskReport.razor.rz.scp.css */
/* -- SOL Risk Report page scoped styles -- */

/* Loading container */
.sol-loading[b-o8uubo1fws] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 300px;
}

/* -- Header -- */
.sol-header[b-o8uubo1fws] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 16px;
    flex-wrap: wrap;
}

.sol-header-left[b-o8uubo1fws] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.sol-back-link[b-o8uubo1fws] {
    font-size: 0.82rem;
    color: var(--lb-brand);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-bottom: 4px;
}

.sol-back-link:hover[b-o8uubo1fws] {
    text-decoration: underline;
}

.sol-title[b-o8uubo1fws] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.sol-subtitle[b-o8uubo1fws] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.sol-header-right[b-o8uubo1fws] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.sol-pin-btn[b-o8uubo1fws] {
    min-width: 36px;
}

/* -- Filter bar -- */
.sol-filter-bar[b-o8uubo1fws] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    padding: 10px 14px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 16px;
}

.sol-reset-btn[b-o8uubo1fws] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.82rem;
    cursor: pointer;
    padding: 4px 8px;
    white-space: nowrap;
}

.sol-reset-btn:hover[b-o8uubo1fws] {
    text-decoration: underline;
}

/* -- View switch: at-risk ranking vs. no-statute-on-file worklist -- */
.sol-view-switch[b-o8uubo1fws] {
    display: inline-flex;
    gap: 0;
    margin-bottom: 12px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    overflow: hidden;
}

.sol-view-btn[b-o8uubo1fws] {
    background: var(--lb-card);
    border: none;
    color: var(--lb-text-muted);
    font-size: 0.82rem;
    padding: 6px 14px;
    cursor: pointer;
    white-space: nowrap;
}

.sol-view-btn + .sol-view-btn[b-o8uubo1fws] {
    border-left: 1px solid var(--lb-border);
}

.sol-view-btn:hover[b-o8uubo1fws] {
    color: var(--lb-text);
}

.sol-view-btn.is-active[b-o8uubo1fws] {
    background: var(--lb-brand);
    color: #fff;
}

.sol-stat-row--single[b-o8uubo1fws] {
    grid-template-columns: minmax(220px, 320px);
}

.sol-missing-note[b-o8uubo1fws] {
    margin: 0 0 16px;
    font-size: 0.82rem;
    line-height: 1.45;
    color: var(--lb-text-muted);
    max-width: 70ch;
}

/* -- Stat cards row -- */
.sol-stat-row[b-o8uubo1fws] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 16px;
}

@media (max-width: 768px) {
    .sol-stat-row[b-o8uubo1fws] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 480px) {
    .sol-stat-row[b-o8uubo1fws] {
        grid-template-columns: 1fr;
    }
}

/* -- Grid container -- */
.sol-grid-container[b-o8uubo1fws] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    overflow: hidden;
    min-height: 200px;
    position: relative;
}

.sol-grid-loading[b-o8uubo1fws] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 200px;
}

/* -- Days left column -- */
.sol-days[b-o8uubo1fws] {
    font-weight: 700;
    font-variant-numeric: tabular-nums;
}

.sol-days--critical[b-o8uubo1fws] {
    color: var(--lb-danger);
}

.sol-days--danger[b-o8uubo1fws] {
    color: var(--lb-danger);
}

.sol-days--warning[b-o8uubo1fws] {
    color: var(--lb-warning-text, var(--lb-warning));
}

.sol-days--overdue[b-o8uubo1fws] {
    color: var(--lb-danger);
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.sol-days--ok[b-o8uubo1fws] {
    color: var(--lb-success, var(--lb-text));
}

/* -- Case name link -- */
.sol-case-link[b-o8uubo1fws] {
    background: none;
    border: none;
    padding: 0;
    color: var(--lb-brand);
    font-weight: 500;
    cursor: pointer;
    text-align: left;
    text-decoration: none;
}

.sol-case-link:hover[b-o8uubo1fws] {
    text-decoration: underline;
}

/* -- Source badge -- */
.sol-source-badge[b-o8uubo1fws] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
}

.sol-source--lawsuit[b-o8uubo1fws] {
    background: var(--lb-bg-muted);
    color: var(--lb-text);
}

.sol-source--wc[b-o8uubo1fws] {
    background: var(--lb-bg-muted);
    color: var(--lb-text);
}

.sol-source--calendar[b-o8uubo1fws] {
    background: var(--lb-bg-muted);
    color: var(--lb-text);
}

.sol-source--default[b-o8uubo1fws] {
    background: var(--lb-bg-muted);
    color: var(--lb-text-muted);
}

.sol-source--redline[b-o8uubo1fws] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

/* -- Filed badge -- */
.sol-filed-badge[b-o8uubo1fws] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    white-space: nowrap;
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

/* -- Report footer -- */
.sol-footer[b-o8uubo1fws] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 10px 0;
    flex-wrap: wrap;
}

.sol-footer-text[b-o8uubo1fws] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Save filters dialog body -- */
.sol-save-dialog-body[b-o8uubo1fws] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 8px 0;
}

.sol-save-label[b-o8uubo1fws] {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

/* -- Responsive header -- */
@media (max-width: 768px) {
    .sol-header[b-o8uubo1fws] {
        flex-direction: column;
    }

    .sol-header-right[b-o8uubo1fws] {
        width: 100%;
        justify-content: flex-start;
    }

    .sol-filter-bar[b-o8uubo1fws] {
        flex-direction: column;
        align-items: stretch;
    }
}

/* -- Print -- */
@media print {
    .sol-header-right[b-o8uubo1fws],
    .sol-filter-bar[b-o8uubo1fws] {
        display: none;
    }

    .sol-grid-container[b-o8uubo1fws] {
        border: none;
        overflow: visible;
    }

    .sol-title[b-o8uubo1fws] {
        font-size: 1.2rem;
        color: #1f2937;
    }

    .sol-footer-text[b-o8uubo1fws] {
        color: #374151;
    }
}
/* /Components/Pages/Reports/StaffUtilizationReport.razor.rz.scp.css */
/* -- Staff Utilization report scoped styles -- */

.rpt-loading[b-p3407btjvo] { display: flex; align-items: center; justify-content: center; min-height: 300px; }
.rpt-header[b-p3407btjvo] { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.rpt-header-left[b-p3407btjvo] { display: flex; flex-direction: column; gap: 2px; }
.rpt-back-link[b-p3407btjvo] { font-size: 0.82rem; color: var(--lb-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rpt-back-link:hover[b-p3407btjvo] { text-decoration: underline; }
.rpt-title[b-p3407btjvo] { font-size: 1.5rem; font-weight: 700; color: var(--lb-text); margin: 0; line-height: 1.3; }
.rpt-subtitle[b-p3407btjvo] { font-size: 0.82rem; color: var(--lb-text-muted); }
.rpt-header-right[b-p3407btjvo] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rpt-pin-btn[b-p3407btjvo] { min-width: 36px; }
.rpt-grid-container[b-p3407btjvo] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; overflow: hidden; min-height: 200px; position: relative; }
.rpt-grid-loading[b-p3407btjvo] { display: flex; align-items: center; justify-content: center; min-height: 200px; }

.rpt-text--danger[b-p3407btjvo] { color: var(--lb-danger); font-weight: 600; }
.rpt-text--success[b-p3407btjvo] { color: var(--lb-success); font-weight: 600; }

.rpt-footer[b-p3407btjvo] { display: flex; align-items: center; gap: 16px; padding: 10px 0; flex-wrap: wrap; }
.rpt-footer-text[b-p3407btjvo] { font-size: 0.75rem; color: var(--lb-text-muted); }

@media (max-width: 768px) {
    .rpt-header[b-p3407btjvo] { flex-direction: column; }
    .rpt-header-right[b-p3407btjvo] { width: 100%; justify-content: flex-start; }
}
/* /Components/Pages/Reports/SubpoenaReceivedReport.razor.rz.scp.css */
.sr-page[b-oajezl8p9u] {
    padding: 1rem 1.25rem 2rem;
}

.sr-head[b-oajezl8p9u] {
    margin-bottom: 1rem;
}

.sr-head-top[b-oajezl8p9u] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.sr-head-left[b-oajezl8p9u] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.sr-head-right[b-oajezl8p9u] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.sr-back[b-oajezl8p9u] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    text-decoration: none;
}

.sr-back:hover[b-oajezl8p9u] {
    color: var(--lb-brand);
}

.sr-title[b-oajezl8p9u] {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--lb-text-bright);
    margin: 0.35rem 0 0.15rem;
}

.sr-sub[b-oajezl8p9u] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.sr-stats[b-oajezl8p9u] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.6rem;
    margin-bottom: 1rem;
}

.sr-stats--one[b-oajezl8p9u] {
    grid-template-columns: minmax(0, 260px);
}

.sr-loading[b-oajezl8p9u] {
    display: flex;
    justify-content: center;
    padding: 3rem 0;
}

.sr-empty[b-oajezl8p9u] {
    text-align: center;
    padding: 2.5rem 1rem;
    color: var(--lb-text-muted);
}

.sr-case-link[b-oajezl8p9u] {
    border: none;
    background: none;
    padding: 0;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
    text-decoration: underline;
}

.sr-case-link:hover[b-oajezl8p9u] {
    color: var(--lb-brand-hover);
}
/* /Components/Pages/Reports/SubpoenaStatusReport.razor.rz.scp.css */
.sr-page[b-n3u669hdsf] {
    padding: 1rem 1.25rem 2rem;
}

.sr-head[b-n3u669hdsf] {
    margin-bottom: 1rem;
}

.sr-head-top[b-n3u669hdsf] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
}

.sr-head-left[b-n3u669hdsf] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.sr-head-right[b-n3u669hdsf] {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

.sr-back[b-n3u669hdsf] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-size: 0.82rem;
    color: var(--lb-text-muted);
    text-decoration: none;
}

.sr-back:hover[b-n3u669hdsf] {
    color: var(--lb-brand);
}

.sr-title[b-n3u669hdsf] {
    font-size: 1.4rem;
    font-weight: 700;
    color: var(--lb-text-bright);
    margin: 0.35rem 0 0.15rem;
}

.sr-sub[b-n3u669hdsf] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.sr-stats[b-n3u669hdsf] {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.6rem;
    margin-bottom: 1rem;
}

@media (max-width: 768px) {
    .sr-stats[b-n3u669hdsf] {
        grid-template-columns: 1fr;
    }
}

.sr-loading[b-n3u669hdsf] {
    display: flex;
    justify-content: center;
    padding: 3rem 0;
}

.sr-empty[b-n3u669hdsf] {
    text-align: center;
    padding: 2.5rem 1rem;
    color: var(--lb-text-muted);
}

.sr-case-link[b-n3u669hdsf] {
    border: none;
    background: none;
    padding: 0;
    font-weight: 600;
    color: var(--lb-brand);
    cursor: pointer;
    text-decoration: underline;
}

.sr-case-link:hover[b-n3u669hdsf] {
    color: var(--lb-brand-hover);
}
/* /Components/Pages/Reports/UpcomingDeadlinesReport.razor.rz.scp.css */
/* -- Upcoming Deadlines report scoped styles -- */

.rpt-loading[b-ghuyj3drtm] { display: flex; align-items: center; justify-content: center; min-height: 300px; }
.rpt-header[b-ghuyj3drtm] { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; flex-wrap: wrap; }
.rpt-header-left[b-ghuyj3drtm] { display: flex; flex-direction: column; gap: 2px; }
.rpt-back-link[b-ghuyj3drtm] { font-size: 0.82rem; color: var(--lb-primary); text-decoration: none; display: inline-flex; align-items: center; gap: 4px; margin-bottom: 4px; }
.rpt-back-link:hover[b-ghuyj3drtm] { text-decoration: underline; }
.rpt-title[b-ghuyj3drtm] { font-size: 1.5rem; font-weight: 700; color: var(--lb-text); margin: 0; line-height: 1.3; }
.rpt-subtitle[b-ghuyj3drtm] { font-size: 0.82rem; color: var(--lb-text-muted); }
.rpt-header-right[b-ghuyj3drtm] { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.rpt-pin-btn[b-ghuyj3drtm] { min-width: 36px; }
.rpt-filter-bar[b-ghuyj3drtm] { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 10px 14px; background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; margin-bottom: 16px; }
.rpt-reset-btn[b-ghuyj3drtm] { background: none; border: none; color: var(--lb-primary); font-size: 0.82rem; cursor: pointer; padding: 4px 8px; white-space: nowrap; }
.rpt-reset-btn:hover[b-ghuyj3drtm] { text-decoration: underline; }
.rpt-stat-row[b-ghuyj3drtm] { display: grid; gap: 12px; margin-bottom: 16px; }
.rpt-stat-row--3[b-ghuyj3drtm] { grid-template-columns: repeat(3, 1fr); }
.rpt-grid-container[b-ghuyj3drtm] { background: var(--lb-bg-white); border: 1px solid var(--lb-border); border-radius: 8px; overflow: hidden; min-height: 200px; position: relative; }
.rpt-grid-loading[b-ghuyj3drtm] { display: flex; align-items: center; justify-content: center; min-height: 200px; }

.rpt-days[b-ghuyj3drtm] { font-weight: 700; font-variant-numeric: tabular-nums; }
.rpt-days--critical[b-ghuyj3drtm] { color: var(--lb-danger); }
.rpt-days--warning[b-ghuyj3drtm] { color: var(--lb-warning-text, var(--lb-warning)); }
.rpt-days--overdue[b-ghuyj3drtm] { color: var(--lb-danger); text-transform: uppercase; letter-spacing: 0.02em; }

.rpt-badge[b-ghuyj3drtm] { display: inline-block; padding: 2px 8px; border-radius: 10px; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.02em; white-space: nowrap; }
.rpt-badge--type[b-ghuyj3drtm] { background: var(--lb-bg-muted); color: var(--lb-text); }

.rpt-case-link[b-ghuyj3drtm] { background: none; border: none; padding: 0; color: var(--lb-primary); font-weight: 500; cursor: pointer; text-align: left; text-decoration: none; }
.rpt-case-link:hover[b-ghuyj3drtm] { text-decoration: underline; }

.rpt-footer[b-ghuyj3drtm] { display: flex; align-items: center; gap: 16px; padding: 10px 0; flex-wrap: wrap; }
.rpt-footer-text[b-ghuyj3drtm] { font-size: 0.75rem; color: var(--lb-text-muted); }
.rpt-save-dialog-body[b-ghuyj3drtm] { display: flex; flex-direction: column; gap: 8px; padding: 8px 0; }
.rpt-save-label[b-ghuyj3drtm] { font-size: 0.82rem; font-weight: 600; color: var(--lb-text); }

@media (max-width: 768px) {
    .rpt-header[b-ghuyj3drtm] { flex-direction: column; }
    .rpt-header-right[b-ghuyj3drtm] { width: 100%; justify-content: flex-start; }
    .rpt-filter-bar[b-ghuyj3drtm] { flex-direction: column; align-items: stretch; }
    .rpt-stat-row--3[b-ghuyj3drtm] { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 480px) {
    .rpt-stat-row--3[b-ghuyj3drtm] { grid-template-columns: 1fr; }
}
/* /Components/Pages/Settings/IntegrationSettings.razor.rz.scp.css */
/* Page header */
.int-page-header[b-51rflerxlj] {
    margin-bottom: 1.5rem;
}

.int-page-title[b-51rflerxlj] {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.25rem;
}

.int-page-subtitle[b-51rflerxlj] {
    font-size: 0.9rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* Module disabled banner */
.int-module-disabled-banner[b-51rflerxlj] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--lb-info-bg);
    border-left: 4px solid var(--lb-info);
    border-radius: 4px;
    padding: 1rem 1.25rem;
    color: var(--lb-text);
    font-size: 0.9rem;
}

.int-banner-icon[b-51rflerxlj] {
    flex-shrink: 0;
    font-size: 1rem;
    color: var(--lb-info);
}

/* Tab content area */
.int-tab-content[b-51rflerxlj] {
    padding: 1.25rem 0;
}

/* Toolbar above grids */
.int-toolbar[b-51rflerxlj] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-bottom: 1rem;
}

.int-toolbar--log[b-51rflerxlj] {
    flex-wrap: wrap;
}

/* Scope badge chips */
.scope-badge[b-51rflerxlj] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: var(--lb-radius-pill, 1.25rem);
    background: var(--lb-accent-tint);
    color: var(--lb-active);
    font-size: 0.75rem;
    font-weight: 500;
    margin: 2px 4px 2px 0;
}

/* Status badges */
.status-badge[b-51rflerxlj] {
    display: inline-block;
    padding: 2px 10px;
    border-radius: var(--lb-radius-pill, 1.25rem);
    font-size: 0.75rem;
    font-weight: 600;
}

.status-badge--active[b-51rflerxlj] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.status-badge--revoked[b-51rflerxlj] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.status-badge--failed[b-51rflerxlj] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

/* HTTP status code coloring */
.http-status--2xx[b-51rflerxlj] { color: var(--lb-success); font-weight: 600; }
.http-status--4xx[b-51rflerxlj] { color: var(--lb-warning); font-weight: 600; }
.http-status--5xx[b-51rflerxlj] { color: var(--lb-danger); font-weight: 600; }

/* Monospace key prefix */
.int-key-prefix[b-51rflerxlj] {
    font-family: 'Cascadia Code', 'Fira Code', 'Consolas', monospace;
    font-size: 0.8125rem;
    background: var(--lb-elevated);
    padding: 2px 6px;
    border-radius: 4px;
    color: var(--lb-text);
}

/* Confirmation dialog text */
.int-confirm-text[b-51rflerxlj] {
    color: var(--lb-text);
    margin: 0;
    line-height: 1.5;
}
/* /Components/Pages/Settings/MergeCodeAdmin.razor.rz.scp.css */
/* ============================================================
   MergeCodeAdmin -- Merge Code Administration page
   ============================================================ */

.mca-loading[b-6cegbvvjie],
.mca-denied[b-6cegbvvjie]{
    padding: 24px;
}

.mca-denied h4[b-6cegbvvjie]{
    color: var(--lb-danger);
}

.mca-container[b-6cegbvvjie] {
    padding: 16px 20px;
}

.mca-header[b-6cegbvvjie] {
    margin-bottom: 12px;
}

.mca-title[b-6cegbvvjie] {
    margin: 0;
}

.mca-subtitle[b-6cegbvvjie] {
    margin: 4px 0 0;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

[b-6cegbvvjie] .mca-tab-body {
    padding: 14px 4px;
}

[b-6cegbvvjie] .mca-toolbar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 12px;
    flex-wrap: wrap;
}

[b-6cegbvvjie] .mca-merge-exp {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-left: auto;
}

[b-6cegbvvjie] .mca-inline-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

[b-6cegbvvjie] .mca-badge {
    display: inline-block;
    padding: 2px 8px;
    font-size: 0.72rem;
    font-weight: 700;
    border-radius: 10px;
    background: var(--lb-text-muted);
    color: #fff;
}

[b-6cegbvvjie] .mca-col {
    font-size: 0.78rem;
}

[b-6cegbvvjie] .mca-frag-preview {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

/* Form fields (shared with the fragment dialog) */
.mca-field[b-6cegbvvjie]{
    margin-bottom: 12px;
}

.mca-field > label[b-6cegbvvjie] {
    display: block;
    margin-bottom: 4px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

[b-6cegbvvjie] .mca-field-row {
    display: flex;
    gap: 12px;
}

[b-6cegbvvjie] .mca-field-row > .mca-field {
    flex: 1 1 0;
}

[b-6cegbvvjie] .mca-required {
    color: var(--lb-danger);
}

/* Test / Preview panel */
[b-6cegbvvjie] .mca-test {
    margin-top: 16px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
}

[b-6cegbvvjie] .mca-test-header {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 8px 12px;
    background: var(--lb-surface-alt);
    border: none;
    font-size: 0.88rem;
    font-weight: 600;
    cursor: pointer;
    text-align: left;
}

[b-6cegbvvjie] .mca-chevron {
    display: inline-block;
    font-size: 0.7rem;
    transition: transform 0.15s ease;
}

[b-6cegbvvjie] .mca-chevron-open {
    transform: rotate(90deg);
}

[b-6cegbvvjie] .mca-test-body {
    padding: 12px;
}

[b-6cegbvvjie] .mca-test-row {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}

[b-6cegbvvjie] .mca-test-result {
    margin-top: 12px;
    padding: 8px 12px;
    border-radius: 4px;
    font-size: 0.85rem;
}

[b-6cegbvvjie] .mca-test-ok {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
}

[b-6cegbvvjie] .mca-test-err {
    background: var(--lb-danger-bg);
    border: 1px solid var(--lb-danger-border);
    color: var(--lb-danger-text);
}

[b-6cegbvvjie] .mca-test-label {
    font-weight: 600;
    margin-right: 6px;
}

[b-6cegbvvjie] .mca-test-value {
    white-space: pre-wrap;
}

/* ============================================================
   Phase 6 -- bulk ops, import/export, duplicates, usage report
   ============================================================ */

/* Import button -- a label wrapping a hidden InputFile */
[b-6cegbvvjie] .mca-import-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px;
    font-size: 0.85rem;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    cursor: pointer;
    background: var(--lb-card);
    color: var(--lb-text);
}

[b-6cegbvvjie] .mca-import-btn:hover {
    background: var(--lb-surface-alt);
}

[b-6cegbvvjie] .mca-import-btn input[type="file"] {
    display: none;
}

[b-6cegbvvjie] .mca-overwrite-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    cursor: pointer;
    white-space: nowrap;
}

/* Bulk-actions bar -- shown when grid rows are selected */
[b-6cegbvvjie] .mca-bulk-bar {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    margin-bottom: 10px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-surface-alt);
}

[b-6cegbvvjie] .mca-bulk-count {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-right: 4px;
}

/* Collapsible panels (duplicates, usage) -- reuse the test-panel chrome */
[b-6cegbvvjie] .mca-panel {
    margin-top: 16px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
}

[b-6cegbvvjie] .mca-panel-body {
    padding: 12px;
}

.mca-empty-note[b-6cegbvvjie]{
    margin: 0 0 10px;
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

/* Duplicate groups */
[b-6cegbvvjie] .mca-dup-group {
    padding: 8px 10px;
    margin-bottom: 8px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-surface-alt);
}

[b-6cegbvvjie] .mca-dup-reason {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.84rem;
    font-weight: 600;
    color: var(--lb-text);
}

[b-6cegbvvjie] .mca-dup-list {
    margin: 6px 0 0;
    padding-left: 22px;
    font-size: 0.82rem;
}

[b-6cegbvvjie] .mca-dup-list li {
    margin: 2px 0;
}

[b-6cegbvvjie] .mca-dup-meta {
    color: var(--lb-text-muted);
    font-size: 0.78rem;
}

/* Usage report */
[b-6cegbvvjie] .mca-usage-toolbar {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 10px;
}

[b-6cegbvvjie] .mca-usage-templates {
    font-size: 0.8rem;
    color: var(--lb-text);
}

/* CSV import result dialog */
.mca-import-summary[b-6cegbvvjie]{
    font-size: 0.9rem;
    margin: 0 0 12px;
}

/* CSV import overwrite-confirmation dialog (#2185) */
.mca-import-warn[b-6cegbvvjie] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-size: 0.9rem;
    margin: 0 0 8px;
}

.mca-import-warn[b-6cegbvvjie]  .e-warning {
    color: var(--lb-danger);
    font-size: 1.1rem;
    flex-shrink: 0;
}

.mca-import-warn-note[b-6cegbvvjie]{
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0 0 12px;
}

.mca-import-rows[b-6cegbvvjie] {
    max-height: 280px;
    overflow-y: auto;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
}

.mca-import-rows table[b-6cegbvvjie] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.8rem;
}

.mca-import-rows th[b-6cegbvvjie],
.mca-import-rows td[b-6cegbvvjie]{
    padding: 4px 8px;
    text-align: left;
    border-bottom: 1px solid var(--lb-border-light);
}

.mca-import-rows th[b-6cegbvvjie]{
    background: var(--lb-surface-alt);
    font-weight: 600;
}

/* ============================================================
   Document Fragments redirect panel -- Phase 5 of the Quick
   Parts Library spec. The tab kept its name as a signpost; the
   panel below explains where to find fragment management now.
   ============================================================ */

[b-6cegbvvjie] .mca-frag-redirect {
    padding: 24px 0;
}

[b-6cegbvvjie] .mca-frag-redirect-inner {
    max-width: 640px;
    margin: 0 auto;
    padding: 24px;
    background: var(--lb-surface-alt);
    border-radius: 8px;
    border: 1px solid var(--lb-border);
}

[b-6cegbvvjie] .mca-frag-redirect-inner h5 {
    margin: 0 0 10px;
    font-size: 1.05rem;
    color: var(--lb-text);
}

[b-6cegbvvjie] .mca-frag-redirect-inner p {
    margin: 0 0 16px;
    color: var(--lb-text-muted);
    line-height: 1.5;
}
/* /Components/Pages/Settings/NotificationPreferencesPage.razor.rz.scp.css */
/* NotificationPreferencesPage.razor.css */
/* All comments ASCII only */

.npf-loading[b-i2fl8iauiq] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem 0;
    color: var(--lb-text-muted);
}

.npf-container[b-i2fl8iauiq] {
    max-width: 980px;
    padding: 0 1.25rem 2rem;
}

.npf-header[b-i2fl8iauiq] {
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.75rem;
    margin-bottom: 1rem;
}

.npf-title[b-i2fl8iauiq] {
    margin: 0 0 0.25rem;
    color: var(--lb-text);
}

.npf-subtitle[b-i2fl8iauiq] {
    margin: 0;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    max-width: 60rem;
}

/* -- Module-off notice ------------------------------------------------------ */
.npf-module-off[b-i2fl8iauiq] {
    display: flex;
    align-items: flex-start;
    gap: 0.5rem;
    background: var(--lb-info-bg);
    color: var(--lb-info);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 0.6rem 0.9rem;
    font-size: 0.85rem;
    margin-bottom: 1rem;
}

/* -- Preference table ------------------------------------------------------- */
.npf-table[b-i2fl8iauiq] {
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    background: var(--lb-card);
    overflow: hidden;
}

.npf-row[b-i2fl8iauiq] {
    display: grid;
    grid-template-columns: 1fr 170px 110px 230px;
    gap: 0.75rem;
    align-items: center;
    padding: 0.6rem 0.9rem;
    border-bottom: 1px solid var(--lb-border-light);
}

.npf-row:last-child[b-i2fl8iauiq] {
    border-bottom: none;
}

.npf-row-head[b-i2fl8iauiq] {
    background: var(--lb-surface-alt);
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
}

.npf-cat-label[b-i2fl8iauiq] {
    display: block;
    font-weight: 600;
    font-size: 0.85rem;
    color: var(--lb-text);
}

.npf-cat-desc[b-i2fl8iauiq] {
    display: block;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.npf-col-digest[b-i2fl8iauiq] {
    text-align: center;
}

/* -- Quiet hours ------------------------------------------------------------ */
.npf-col-quiet[b-i2fl8iauiq] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
}

.npf-time[b-i2fl8iauiq] {
    border: 1px solid var(--lb-border);
    border-radius: 0.25rem;
    background: var(--lb-bg-white);
    color: var(--lb-text);
    padding: 0.2rem 0.35rem;
    font-size: 0.8rem;
    width: 6.2rem;
}

.npf-time:focus-visible[b-i2fl8iauiq] {
    outline: 2px solid var(--lb-focus-ring);
    outline-offset: 1px;
}

.npf-time-sep[b-i2fl8iauiq] {
    color: var(--lb-text-dim);
}

/* -- Footer ------------------------------------------------------------------ */
.npf-hint[b-i2fl8iauiq] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    margin: 0.75rem 0 1rem;
    max-width: 60rem;
}

.npf-actions[b-i2fl8iauiq] {
    display: flex;
    justify-content: flex-end;
}

/* -- Responsive --------------------------------------------------------------- */
@media (max-width: 992px) {
    .npf-row[b-i2fl8iauiq] {
        grid-template-columns: 1fr 150px;
        grid-auto-rows: auto;
        row-gap: 0.4rem;
    }

    .npf-row-head[b-i2fl8iauiq] {
        display: none;
    }

    .npf-col-digest[b-i2fl8iauiq] {
        text-align: left;
    }
}

@media (max-width: 576px) {
    .npf-container[b-i2fl8iauiq] {
        padding: 0 0.75rem 1.5rem;
    }

    .npf-row[b-i2fl8iauiq] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Pages/Settings/QuickPartsAdmin.razor.rz.scp.css */
/* ============================================================
   QuickPartsAdmin -- scoped styles. The page is wide and toolbar-
   heavy; visual styling mirrors MergeCodeAdmin so admins moving
   between the two have a consistent shape.
   ============================================================ */

.qpa-container[b-spnihs77zj] {
    padding: 16px 24px;
    max-width: 1200px;
}

[b-spnihs77zj] .qpa-header {
    margin-bottom: 16px;
}

[b-spnihs77zj] .qpa-title {
    margin: 0 0 4px;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--lb-text);
}

[b-spnihs77zj] .qpa-subtitle {
    margin: 0;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    max-width: 880px;
    line-height: 1.4;
}

[b-spnihs77zj] .qpa-toolbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 16px;
}

[b-spnihs77zj] .qpa-filter-spacer {
    flex: 1 1 auto;
}

[b-spnihs77zj] .qpa-filter {
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-spnihs77zj] .qpa-filter-label {
    font-size: 0.78rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

[b-spnihs77zj] .qpa-loading {
    padding: 32px;
    text-align: center;
    color: var(--lb-text-muted);
}

/* -- Grid cell styling -- */

[b-spnihs77zj] .qpa-scope-badge {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.72rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

[b-spnihs77zj] .qpa-scope-my {
    background: var(--lb-accent-tint, rgba(204, 108, 44, 0.14));
    color: var(--lb-accent, #a64d18);
}

[b-spnihs77zj] .qpa-scope-firm {
    background: rgba(60, 120, 200, 0.12);
    color: #2a548f;
}

[b-spnihs77zj] .qpa-shortcut-badge {
    font-size: 0.75rem;
    font-family: monospace;
    background: var(--lb-surface-alt);
    padding: 2px 6px;
    border-radius: 3px;
    white-space: nowrap;
}

/* #3174 -- a stored combo the editor or browser claims before Longbow sees it.
   Struck through + warning glyph so a dead shortcut reads as dead in the grid. */
[b-spnihs77zj] .qpa-shortcut-badge-dead {
    text-decoration: line-through;
    color: var(--lb-text-muted);
}

[b-spnihs77zj] .qpa-shortcut-warn {
    color: var(--lb-warning);
    font-size: 0.85rem;
    margin-left: 4px;
    vertical-align: middle;
}

[b-spnihs77zj] .qpa-preview {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
    max-width: 240px;
}

[b-spnihs77zj] .qpa-readonly-hint {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    font-style: italic;
    cursor: help;
}

/* -- Edit dialog -- */

.qpa-edit-form[b-spnihs77zj] {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 4px 0;
}

[b-spnihs77zj] .qpa-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1;
    min-width: 0;
}

[b-spnihs77zj] .qpa-field-row {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    align-items: flex-start;
}

[b-spnihs77zj] .qpa-field-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

[b-spnihs77zj] .qpa-field-static {
    font-size: 0.9rem;
    padding: 6px 0;
}

[b-spnihs77zj] .qpa-field-hint {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

/* -- Side-effect note at the top of the Firm-scope section (QP-3) -- */
[b-spnihs77zj] .qpa-scope-note {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
    margin: 0 0 10px;
}

[b-spnihs77zj] .qpa-required {
    color: var(--lb-danger);
}

[b-spnihs77zj] .qpa-shortcut-capture {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}

/* Key-capture box. Looks like the other dialog inputs but is readonly --
   the user focuses it and presses a combo; OnShortcutKeyDown fills the value. */
[b-spnihs77zj] .qpa-shortcut-input {
    flex: 1 1 220px;
    min-width: 220px;
    padding: 6px 10px;
    font-family: monospace;
    font-size: 0.85rem;
    color: var(--lb-text);
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border, #c8c8c8);
    border-radius: 4px;
    cursor: pointer;
}

[b-spnihs77zj] .qpa-shortcut-input::placeholder {
    font-family: inherit;
    font-style: italic;
    color: var(--lb-text-muted);
}

[b-spnihs77zj] .qpa-shortcut-input:focus {
    outline: none;
    border-color: var(--lb-accent, #a64d18);
    box-shadow: 0 0 0 2px var(--lb-accent-tint, rgba(204, 108, 44, 0.18));
}

[b-spnihs77zj] .qpa-shortcut-input-invalid,
[b-spnihs77zj] .qpa-shortcut-input-invalid:focus {
    border-color: var(--lb-danger);
    box-shadow: 0 0 0 2px rgba(200, 50, 50, 0.18);
}

[b-spnihs77zj] .qpa-toggle-row {
    align-items: center;
    gap: 24px;
}

[b-spnihs77zj] .qpa-toggle {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 0.85rem;
}

[b-spnihs77zj] .qpa-error {
    font-size: 0.82rem;
    color: var(--lb-danger);
    padding: 4px 0;
}

/* ============================================================
   Dark mode
   ============================================================ */

:global([data-theme="dark"]) .qpa-scope-firm[b-spnihs77zj] {
    background: rgba(120, 170, 240, 0.16);
    color: #b9d4ff;
}
/* /Components/Pages/Settings/TagSettingsPage.razor.rz.scp.css */
.tgs-container[b-4ovlt32vso] {
    padding: 16px 24px;
    max-width: 900px;
}

.tgs-header[b-4ovlt32vso] {
    margin-bottom: 16px;
}

.tgs-title[b-4ovlt32vso] {
    font-size: 20px;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

.tgs-subtitle[b-4ovlt32vso] {
    font-size: 13px;
    color: var(--lb-text-muted);
    margin: 4px 0 0;
}

.tgs-toolbar[b-4ovlt32vso] {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
}

.tgs-loading[b-4ovlt32vso] {
    padding: 32px;
    text-align: center;
    color: var(--lb-text-muted);
}

.tgs-denied[b-4ovlt32vso] {
    padding: 48px 24px;
    text-align: center;
    color: var(--lb-text-muted);
}

.tgs-denied h4[b-4ovlt32vso] {
    color: var(--lb-danger);
    margin-bottom: 8px;
}

.tgs-color-swatch[b-4ovlt32vso] {
    display: inline-block;
    width: 14px;
    height: 14px;
    border-radius: 3px;
    flex-shrink: 0;
}

/* Edit dialog form */
.tgs-form[b-4ovlt32vso] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

.tgs-field[b-4ovlt32vso] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.tgs-label[b-4ovlt32vso] {
    font-size: 12px;
    font-weight: 500;
    color: var(--lb-text-muted);
}

.tgs-required[b-4ovlt32vso],
.tgs-delete-warning[b-4ovlt32vso] {
    color: var(--lb-danger);
}

.tgs-field-hint[b-4ovlt32vso] {
    font-size: 11px;
    color: var(--lb-text-muted);
}

/* #2236: field-level error inside the edit dialog (duplicate name, bad color) */
.tgs-form-error[b-4ovlt32vso] {
    margin-top: 4px;
    padding: 8px 10px;
    font-size: 12px;
    color: var(--lb-danger);
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
}

/* #2238: neutral usage line in the delete confirm ("checking…" / "not applied") */
.tgs-delete-usage[b-4ovlt32vso] {
    color: var(--lb-text-muted);
    font-size: 13px;
}
/* /Components/Pages/Settings/TextSnippetSettings.razor.rz.scp.css */
/* ============================================================
   TextSnippetSettings -- scoped styles
   ============================================================ */

[b-x8j3r5wiri] .ts-container {
    padding: 16px 24px;
    max-width: 1100px;
}

[b-x8j3r5wiri] .ts-header {
    margin-bottom: 16px;
}

[b-x8j3r5wiri] .ts-title {
    margin: 0 0 4px;
    font-size: 1.2rem;
    font-weight: 700;
    color: var(--lb-text);
}

[b-x8j3r5wiri] .ts-subtitle {
    margin: 0;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

[b-x8j3r5wiri] .ts-toolbar {
    display: flex;
    gap: 8px;
    margin-bottom: 16px;
}

[b-x8j3r5wiri] .ts-loading {
    padding: 32px;
    text-align: center;
    color: var(--lb-text-muted);
}

/* -- Grid cell styling -- */

[b-x8j3r5wiri] .ts-shortcut-badge {
    font-size: 0.75rem;
    font-family: monospace;
    background: var(--lb-surface-alt);
    padding: 2px 6px;
    border-radius: 3px;
    white-space: nowrap;
}

[b-x8j3r5wiri] .ts-content-preview {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    display: block;
    max-width: 240px;
}

/* -- Edit dialog -- */

[b-x8j3r5wiri] .ts-edit-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
    padding: 4px 0;
}

[b-x8j3r5wiri] .ts-field {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

[b-x8j3r5wiri] .ts-field-label {
    font-size: 0.82rem;
    font-weight: 600;
    color: var(--lb-text);
}

[b-x8j3r5wiri] .ts-required {
    color: var(--lb-danger);
}

[b-x8j3r5wiri] .ts-shortcut-capture {
    display: flex;
    gap: 6px;
    align-items: center;
}

[b-x8j3r5wiri] .ts-validation-error {
    font-size: 0.78rem;
    color: var(--lb-danger);
}

/* ============================================================
   Dark mode
   ============================================================ */

/* /Components/Pages/Subpoenas/SubpoenasFirmwidePage.razor.rz.scp.css */
.fw-root[b-cvyhfjk4h8] { padding-bottom: 2rem; }

.fw-loading[b-cvyhfjk4h8] { display: flex; justify-content: center; padding: 3rem; }

/* Scope toggle */
.fw-toggle[b-cvyhfjk4h8] { display: inline-flex; border: 1px solid var(--lb-border); border-radius: 6px; overflow: hidden; }
.fw-toggle button[b-cvyhfjk4h8] {
    font: inherit; border: 0; background: var(--lb-card); padding: 0.35rem 0.85rem; cursor: pointer;
    color: var(--lb-text-muted); border-right: 1px solid var(--lb-border);
}
.fw-toggle button:last-child[b-cvyhfjk4h8] { border-right: 0; }
.fw-toggle button.active[b-cvyhfjk4h8] { background: var(--lb-brand-light); color: var(--lb-brand-hover); font-weight: 600; }

/* Stat strip — cards come from the shared <StatCard> component (accent via --stat-accent) */
.stat-row[b-cvyhfjk4h8] { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 0.75rem; margin: 1rem 0 1.25rem; }

/* Panels (aging + slowest) */
.fw-panels[b-cvyhfjk4h8] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.9rem; margin-bottom: 1.25rem; }
@media (max-width: 768px) { .fw-panels[b-cvyhfjk4h8] { grid-template-columns: 1fr; } }
.fw-panel[b-cvyhfjk4h8] { background: var(--lb-card); border: 1px solid var(--lb-border); border-radius: var(--lb-radius-card); padding: 0.85rem 1rem; }
.fw-panel-head[b-cvyhfjk4h8] { font-size: 0.72rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--lb-text-muted); margin-bottom: 0.6rem; }
.fw-panel-empty[b-cvyhfjk4h8] { font-size: 0.85rem; color: var(--lb-text-muted); margin: 0; }

.fw-aging-row[b-cvyhfjk4h8] { display: grid; grid-template-columns: 92px 1fr 28px; align-items: center; gap: 0.5rem; margin-bottom: 0.35rem; }
.fw-aging-label[b-cvyhfjk4h8] { font-size: 0.78rem; color: var(--lb-text-muted); }
.fw-aging-bar-wrap[b-cvyhfjk4h8] { background: var(--lb-surface-alt); border-radius: 4px; height: 10px; overflow: hidden; }
.fw-aging-bar[b-cvyhfjk4h8] { display: block; height: 100%; background: var(--lb-brand); border-radius: 4px; min-width: 2px; }
.fw-aging-count[b-cvyhfjk4h8] { font-size: 0.8rem; font-weight: 600; text-align: right; }

.fw-slow-row[b-cvyhfjk4h8] { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; padding: 0.3rem 0; border-top: 1px solid var(--lb-border-light); }
.fw-slow-row:first-of-type[b-cvyhfjk4h8] { border-top: 0; }
.fw-slow-name[b-cvyhfjk4h8] { font-size: 0.83rem; font-weight: 600; color: var(--lb-text-bright); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.fw-slow-meta[b-cvyhfjk4h8] { font-size: 0.78rem; color: var(--lb-text-muted); white-space: nowrap; }
.fw-slow-meta strong[b-cvyhfjk4h8] { color: var(--lb-danger); }

/* Section headers */
.fw-section-head[b-cvyhfjk4h8] {
    font-size: 0.74rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em;
    color: var(--lb-text-muted); margin: 1.1rem 0 0.6rem; display: flex; align-items: center; gap: 0.4rem;
}

/* Cards */
.fw-cards[b-cvyhfjk4h8] { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 0.75rem; }
.fw-card[b-cvyhfjk4h8] {
    background: var(--lb-card); border: 1px solid var(--lb-border); border-left: 4px solid var(--lb-border);
    border-radius: var(--lb-radius-card); padding: 0.7rem 0.85rem; cursor: pointer; transition: background 0.1s;
}
.fw-card:hover[b-cvyhfjk4h8] { background: var(--lb-surface-alt); }
.fw-card.s-requested[b-cvyhfjk4h8] { border-left-color: var(--lb-text-dim); }
.fw-card.s-prep[b-cvyhfjk4h8] { border-left-color: var(--lb-info); }
.fw-card.s-issued[b-cvyhfjk4h8] { border-left-color: var(--lb-brand); }
.fw-card.s-partial[b-cvyhfjk4h8] { border-left-color: var(--lb-info); }
.fw-card.s-received[b-cvyhfjk4h8] { border-left-color: var(--lb-success); }

.fw-card-top[b-cvyhfjk4h8] { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.5rem; }
.fw-card-id[b-cvyhfjk4h8] { min-width: 0; }
.fw-file[b-cvyhfjk4h8] { font-family: var(--bs-font-monospace, monospace); font-size: 0.74rem; color: var(--lb-info); display: block; }
.fw-client[b-cvyhfjk4h8] { font-weight: 600; color: var(--lb-text-bright); font-size: 0.88rem; }

.fw-badge[b-cvyhfjk4h8] { font-size: 0.68rem; font-weight: 600; padding: 0.1rem 0.45rem; border-radius: var(--lb-radius-pill); white-space: nowrap; border: 1px solid transparent; }
.fw-badge.s-requested[b-cvyhfjk4h8] { background: var(--lb-elevated); color: var(--lb-text); }
.fw-badge.s-prep[b-cvyhfjk4h8] { background: var(--lb-info-bg); color: var(--lb-info); }
.fw-badge.s-issued[b-cvyhfjk4h8] { background: var(--lb-brand-light); color: var(--lb-brand-hover); border-color: rgba(var(--lb-brand-rgb), 0.35); }
.fw-badge.s-partial[b-cvyhfjk4h8] { background: var(--lb-info-bg); color: var(--lb-info); }
.fw-badge.s-received[b-cvyhfjk4h8] { background: var(--lb-success-bg); color: var(--lb-success); }

.fw-card-prov[b-cvyhfjk4h8] { font-size: 0.82rem; color: var(--lb-text); margin: 0.45rem 0 0.4rem; }
.fw-purpose[b-cvyhfjk4h8] { color: var(--lb-text-muted); }

.fw-card-chips[b-cvyhfjk4h8] { display: flex; gap: 0.4rem; margin-bottom: 0.5rem; }
.fw-chip[b-cvyhfjk4h8] { font-size: 0.72rem; font-weight: 600; padding: 0.08rem 0.4rem; border-radius: 5px; }
.fw-chip.in[b-cvyhfjk4h8] { background: var(--lb-success-bg); color: var(--lb-success); }
.fw-chip.out[b-cvyhfjk4h8] { background: var(--lb-danger-bg); color: var(--lb-danger); }
.fw-chip.na[b-cvyhfjk4h8] { color: var(--lb-text-dim); }

.fw-card-foot[b-cvyhfjk4h8] { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; font-size: 0.76rem; border-top: 1px solid var(--lb-border-light); padding-top: 0.45rem; }
.fw-foot[b-cvyhfjk4h8] { color: var(--lb-text-muted); }
.fw-foot-overdue[b-cvyhfjk4h8] { color: var(--lb-danger); font-weight: 600; }
.fw-foot-ok[b-cvyhfjk4h8] { color: var(--lb-success); }
.fw-owner[b-cvyhfjk4h8] { color: var(--lb-text-muted); font-size: 0.72rem; white-space: nowrap; }
/* /Components/Pages/SyncDashboard.razor.rz.scp.css */
/* -- Sync Dashboard scoped styles -- */
/* No Unicode or non-ASCII characters in comments */

.dash-grid-body[b-me9as78h3b] {
    overflow-x: hidden;
}

.badge-deleted[b-me9as78h3b] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.8rem;
    font-weight: 600;
    background-color: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.sync-toggle-card[b-me9as78h3b] {
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 16px 20px;
    background-color: var(--lb-card);
}

.sync-toggle-row[b-me9as78h3b] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

.sync-toggle-info[b-me9as78h3b] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.sync-toggle-label[b-me9as78h3b] {
    font-weight: 600;
    font-size: 1rem;
    color: var(--lb-text);
}

.sync-toggle-desc[b-me9as78h3b] {
    font-size: 0.85rem;
    color: var(--lb-text-muted);
}

.badge-active[b-me9as78h3b] {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 0.8rem;
    font-weight: 600;
    background-color: var(--lb-success-bg);
    color: var(--lb-success);
}
/* /Components/Pages/Training/TrainingGuidePage.razor.rz.scp.css */
.tg-page[b-u2s9q7z4qx] {
    max-width: 1050px;
    padding: 1rem 1.25rem 2rem;
}

.tg-reader[b-u2s9q7z4qx] {
    display: flex;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    overflow: hidden;
}

.tg-body[b-u2s9q7z4qx] {
    flex: 1;
    min-width: 0;
    padding: 1.4rem 2rem 2rem;
}

.tg-body h2[b-u2s9q7z4qx] { margin: 0.5rem 0 0.8rem; font-size: 1.25rem; }

.tg-chip[b-u2s9q7z4qx] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--lb-radius-pill);
    padding: 0.12rem 0.6rem;
    font-size: 0.72rem;
    font-weight: 600;
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

.tg-html[b-u2s9q7z4qx] { font-size: 0.9rem; line-height: 1.55; }
.tg-html[b-u2s9q7z4qx]  img { max-width: 100%; border: 1px solid var(--lb-border-light); border-radius: 6px; }
.tg-html[b-u2s9q7z4qx]  h2, .tg-html[b-u2s9q7z4qx]  h3 { margin: 1.1rem 0 0.5rem; }
.tg-html[b-u2s9q7z4qx]  ol, .tg-html[b-u2s9q7z4qx]  ul { margin: 0.4rem 0 0.9rem 1.2rem; padding: 0; }
.tg-html[b-u2s9q7z4qx]  li { margin-bottom: 0.45rem; }

.tg-side[b-u2s9q7z4qx] {
    width: 260px;
    flex-shrink: 0;
    border-left: 1px solid var(--lb-border-light);
    background: var(--lb-surface-alt);
    padding: 1rem;
}

.tg-side-head[b-u2s9q7z4qx] {
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    margin-bottom: 0.6rem;
}

.tg-side-list[b-u2s9q7z4qx] { list-style: none; margin: 0 0 0.9rem; padding: 0; font-size: 0.82rem; }
.tg-side-list li[b-u2s9q7z4qx] { display: flex; gap: 0.4rem; padding: 0.25rem 0; }
.tg-side-list li.current[b-u2s9q7z4qx] { font-weight: 700; }
.tg-side-list a[b-u2s9q7z4qx] { color: var(--lb-info); text-decoration: none; }
.tg-side-list a:hover[b-u2s9q7z4qx] { text-decoration: underline; }
.tg-side-mark[b-u2s9q7z4qx] { color: var(--lb-text-muted); width: 0.9rem; flex-shrink: 0; }

.tg-btn[b-u2s9q7z4qx] {
    width: 100%;
    font: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 6px;
    padding: 0.42rem 0.9rem;
    cursor: pointer;
    background: var(--lb-btn-flat-bg);
    border: 1px solid var(--lb-btn-flat-border);
    color: var(--lb-btn-flat-text);
}

.tg-btn-primary[b-u2s9q7z4qx] { background: var(--lb-brand); border-color: transparent; color: var(--lb-text-on-brand); }
.tg-btn-primary:hover[b-u2s9q7z4qx] { background: var(--lb-brand-hover); }

.tg-done[b-u2s9q7z4qx] { color: var(--lb-success); font-weight: 700; margin-bottom: 0.5rem; }
.tg-note[b-u2s9q7z4qx] { color: var(--lb-text-muted); font-size: 0.75rem; margin-top: 0.5rem; }

.tg-empty[b-u2s9q7z4qx] { text-align: center; padding: 3rem 1rem; color: var(--lb-text-muted); }
.tg-empty-icon[b-u2s9q7z4qx] { font-size: 2.5rem; opacity: 0.35; display: block; margin-bottom: 0.75rem; }
.tg-empty-title[b-u2s9q7z4qx] { font-weight: 600; color: var(--lb-text); margin-bottom: 0.25rem; }
.tg-empty-sub[b-u2s9q7z4qx] { font-size: 0.875rem; }
/* Retry action on the load-FAILED empty state (#3016) — a failed load is
   recoverable, unlike retired content, so give the button room to read as one. */
.tg-empty .tg-btn[b-u2s9q7z4qx] { margin: 0.875rem 0; }

@media (max-width: 576px) {
    .tg-page[b-u2s9q7z4qx] { padding: 0.75rem; }
    .tg-reader[b-u2s9q7z4qx] { flex-direction: column; }
    .tg-side[b-u2s9q7z4qx] { width: 100%; border-left: none; border-top: 1px solid var(--lb-border-light); }
    .tg-body[b-u2s9q7z4qx] { padding: 1rem 1.1rem 1.4rem; }
}
/* /Components/Pages/Training/TrainingLibraryPage.razor.rz.scp.css */
.tl-page[b-q33pksljnk] {
    max-width: 900px;
    padding: 1rem 1.25rem 2rem;
}

.tl-header[b-q33pksljnk] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    border-bottom: 1px solid var(--lb-border);
    padding-bottom: 0.75rem;
    margin-bottom: 1rem;
}

.tl-header h4[b-q33pksljnk] { margin: 0; }
.tl-sub[b-q33pksljnk] { color: var(--lb-text-muted); font-size: 0.82rem; margin: 0.1rem 0 0; }

.tl-btn[b-q33pksljnk] {
    font: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 6px;
    padding: 0.42rem 0.9rem;
    border: 1px solid transparent;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    white-space: nowrap;
}

.tl-btn-primary[b-q33pksljnk] { background: var(--lb-brand); color: var(--lb-text-on-brand); }
.tl-btn-primary:hover[b-q33pksljnk] { background: var(--lb-brand-hover); }

.tl-btn-flat[b-q33pksljnk] {
    background: var(--lb-btn-flat-bg);
    border-color: var(--lb-btn-flat-border);
    color: var(--lb-btn-flat-text);
}

.tl-btn-flat:hover[b-q33pksljnk] { background: var(--lb-btn-flat-hover-bg); }

/* ---- team panel (Firm Owner / Managing Attorney only) ---- */
.tl-team[b-q33pksljnk] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    margin-bottom: 1rem;
    overflow: hidden;
}

.tl-team-head[b-q33pksljnk] {
    padding: 0.6rem 0.9rem;
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    border-bottom: 1px solid var(--lb-border-light);
}

.tl-team-note[b-q33pksljnk] { font-weight: 400; text-transform: none; letter-spacing: 0; margin-left: 0.4rem; }
/* Without containment, a sideways swipe here chains to the browser's edge
   swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
.tl-team-scroll[b-q33pksljnk] { overflow-x: auto; overscroll-behavior-x: contain; touch-action: pan-x; }

.tl-team-table[b-q33pksljnk] { width: 100%; border-collapse: collapse; font-size: 0.85rem; }
.tl-team-table th[b-q33pksljnk] {
    text-align: left;
    font-size: 0.72rem;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
    padding: 0.45rem 0.9rem;
    border-bottom: 1px solid var(--lb-border-light);
    white-space: nowrap;
}
.tl-team-table td[b-q33pksljnk] { padding: 0.45rem 0.9rem; border-top: 1px solid var(--lb-border-light); white-space: nowrap; }
.tl-team-name[b-q33pksljnk] { font-weight: 600; }

.tl-pct[b-q33pksljnk] {
    display: inline-block;
    min-width: 44px;
    text-align: center;
    border-radius: var(--lb-radius-pill);
    padding: 0.1rem 0.45rem;
    font-size: 0.72rem;
    font-weight: 700;
}
.tl-pct.hi[b-q33pksljnk] { background: var(--lb-success-bg); color: var(--lb-success); }
.tl-pct.mid[b-q33pksljnk] { background: var(--lb-warning-bg); color: var(--lb-warning); }
.tl-pct.lo[b-q33pksljnk] { background: var(--lb-danger-bg); color: var(--lb-danger); }

/* ---- progress summary ---- */
.tl-summary[b-q33pksljnk] {
    display: flex;
    align-items: center;
    gap: 1.1rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 0.9rem 1.1rem;
    margin-bottom: 1.2rem;
    flex-wrap: wrap;
}

.tl-ring[b-q33pksljnk] {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    flex-shrink: 0;
    background: conic-gradient(var(--lb-brand) calc(var(--p) * 1%), var(--lb-border-light) 0);
    display: flex;
    align-items: center;
    justify-content: center;
}

.tl-ring > b[b-q33pksljnk] {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: var(--lb-card);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.82rem;
}

.tl-summary-text[b-q33pksljnk] { flex: 1; min-width: 160px; }
.tl-summary-title[b-q33pksljnk] { font-weight: 700; }

.tl-filters[b-q33pksljnk] { display: flex; gap: 0.5rem; flex-wrap: wrap; }

.tl-input[b-q33pksljnk], .tl-select[b-q33pksljnk] {
    font: inherit;
    font-size: 0.85rem;
    padding: 0.38rem 0.6rem;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-bg-white);
    color: var(--lb-text);
}

.tl-input[b-q33pksljnk] { width: 200px; }

/* ---- checklist sections ---- */
.tl-section[b-q33pksljnk] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    margin-bottom: 0.9rem;
    overflow: hidden;
}

.tl-section-head[b-q33pksljnk] {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.7rem 0.9rem;
    background: var(--lb-surface-alt);
    border-bottom: 1px solid var(--lb-border-light);
}

.tl-section-head h5[b-q33pksljnk] { margin: 0; font-size: 0.95rem; flex-shrink: 0; }

.tl-section-num[b-q33pksljnk] {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: var(--lb-sidebar);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 700;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}

.tl-section-num.done[b-q33pksljnk] { background: var(--lb-success); }

.tl-section-prog[b-q33pksljnk] { flex: 1; max-width: 130px; margin-left: auto; }

.tl-prog[b-q33pksljnk] { height: 5px; border-radius: 3px; background: var(--lb-border-light); overflow: hidden; }
.tl-prog > i[b-q33pksljnk] { display: block; height: 100%; background: var(--lb-brand); }
.tl-prog.done > i[b-q33pksljnk] { background: var(--lb-success); }

.tl-row[b-q33pksljnk] {
    display: flex;
    align-items: center;
    gap: 0.7rem;
    padding: 0.55rem 0.9rem;
    border-top: 1px solid var(--lb-border-light);
    font-size: 0.87rem;
}

.tl-row:first-of-type[b-q33pksljnk] { border-top: none; }

.tl-check[b-q33pksljnk] {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 2px solid var(--lb-border);
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 0.7rem;
}

.tl-check.done[b-q33pksljnk] { background: var(--lb-success); border-color: var(--lb-success); color: #fff; }
.tl-check.half[b-q33pksljnk] { border-color: var(--lb-brand); color: var(--lb-brand); }

.tl-row-main[b-q33pksljnk] { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.tl-row-title[b-q33pksljnk] { font-weight: 600; }
.tl-row-sub[b-q33pksljnk] { font-size: 0.74rem; color: var(--lb-text-muted); }

.tl-chip[b-q33pksljnk] {
    display: inline-flex;
    align-items: center;
    border-radius: var(--lb-radius-pill);
    padding: 0.12rem 0.6rem;
    font-size: 0.72rem;
    font-weight: 600;
    flex-shrink: 0;
}

.tl-chip-video[b-q33pksljnk] { background: var(--lb-blue-bg); color: var(--lb-blue); }
.tl-chip-guide[b-q33pksljnk] { background: var(--lb-purple-bg); color: var(--lb-purple); }
.tl-chip-new[b-q33pksljnk] {
    background: var(--lb-brand-light);
    color: var(--lb-brand-hover);
    border: 1px solid var(--lb-brand);
    margin-left: 0.4rem;
}

.tl-row-action[b-q33pksljnk] {
    background: none;
    border: none;
    font: inherit;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-brand-hover);
    cursor: pointer;
    white-space: nowrap;
    padding: 0.2rem 0.3rem;
}

.tl-row-action:hover[b-q33pksljnk] { text-decoration: underline; }

.tl-muted[b-q33pksljnk] { color: var(--lb-text-muted); font-size: 0.78rem; }
.tl-footnote[b-q33pksljnk] { color: var(--lb-text-muted); font-size: 0.78rem; margin-top: 0.4rem; }

/* ---- empty state ---- */
.tl-empty[b-q33pksljnk] { text-align: center; padding: 3rem 1rem; color: var(--lb-text-muted); }
.tl-empty-icon[b-q33pksljnk] { font-size: 2.5rem; opacity: 0.35; display: block; margin-bottom: 0.75rem; }
.tl-empty-title[b-q33pksljnk] { font-weight: 600; color: var(--lb-text); margin-bottom: 0.25rem; }
.tl-empty-sub[b-q33pksljnk] { font-size: 0.875rem; }
/* Retry action on the load-FAILED empty state (#3314) — a failed load is
   recoverable, unlike a firm without the module, so give the button room. */
.tl-empty .tl-btn[b-q33pksljnk] { margin: 0.875rem 0; }

@media (max-width: 576px) {
    .tl-page[b-q33pksljnk] { padding: 0.75rem; }
    .tl-section-prog[b-q33pksljnk] { display: none; }
    .tl-input[b-q33pksljnk] { width: 100%; }
    .tl-filters[b-q33pksljnk] { width: 100%; }
    .tl-header[b-q33pksljnk] { flex-wrap: wrap; }
}
/* /Components/Pages/Training/TrainingVideoPage.razor.rz.scp.css */
.tv-page[b-lubuzx5g8m] {
    max-width: 980px;
    padding: 1rem 1.25rem 2rem;
}

.tv-stage[b-lubuzx5g8m] {
    position: relative;
    background: #10151F;
    border-radius: var(--lb-radius-card) var(--lb-radius-card) 0 0;
    overflow: hidden;
}

.tv-stage video[b-lubuzx5g8m] {
    display: block;
    width: 100%;
    max-height: 70vh;
    background: #10151F;
}

.tv-resume[b-lubuzx5g8m] {
    position: absolute;
    top: 1rem;
    left: 50%;
    transform: translateX(-50%);
    background: rgba(28, 37, 54, 0.92);
    color: #E8EAF0;
    border-radius: var(--lb-radius-pill);
    padding: 0.4rem 0.9rem;
    font-size: 0.85rem;
    display: flex;
    gap: 0.8rem;
    align-items: center;
}

.tv-resume-link[b-lubuzx5g8m],
.tv-resume-dim[b-lubuzx5g8m] {
    background: none;
    border: none;
    font: inherit;
    cursor: pointer;
    padding: 0.1rem 0.2rem;
}

.tv-resume-link[b-lubuzx5g8m] { color: var(--lb-brand); font-weight: 700; }
.tv-resume-dim[b-lubuzx5g8m] { color: var(--lb-text-on-dark-muted); }

.tv-info[b-lubuzx5g8m] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.9rem 1.1rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-top: none;
    border-radius: 0 0 var(--lb-radius-card) var(--lb-radius-card);
    flex-wrap: wrap;
}

.tv-info-text[b-lubuzx5g8m] { flex: 1; min-width: 220px; }
.tv-title[b-lubuzx5g8m] { font-weight: 700; }
.tv-sub[b-lubuzx5g8m] { color: var(--lb-text-muted); font-size: 0.8rem; }

.tv-done[b-lubuzx5g8m] { color: var(--lb-success); font-weight: 700; font-size: 0.85rem; }

.tv-btn[b-lubuzx5g8m] {
    font: inherit;
    font-size: 0.85rem;
    font-weight: 600;
    border-radius: 6px;
    padding: 0.42rem 0.9rem;
    cursor: pointer;
    background: var(--lb-btn-flat-bg);
    border: 1px solid var(--lb-btn-flat-border);
    color: var(--lb-btn-flat-text);
    white-space: nowrap;
}

.tv-btn:hover[b-lubuzx5g8m] { background: var(--lb-btn-flat-hover-bg); }

.tv-empty[b-lubuzx5g8m] { text-align: center; padding: 3rem 1rem; color: var(--lb-text-muted); }
.tv-empty-icon[b-lubuzx5g8m] { font-size: 2.5rem; opacity: 0.35; display: block; margin-bottom: 0.75rem; }
.tv-empty-title[b-lubuzx5g8m] { font-weight: 600; color: var(--lb-text); margin-bottom: 0.25rem; }
.tv-empty-sub[b-lubuzx5g8m] { font-size: 0.875rem; }
/* Retry action on the load-FAILED empty state (#3016) — a failed load is
   recoverable, unlike retired content, so give the button room to read as one. */
.tv-empty .tv-btn[b-lubuzx5g8m] { margin: 0.875rem 0; }

@media (max-width: 576px) {
    .tv-page[b-lubuzx5g8m] { padding: 0.75rem; }
}
/* /Components/Pages/WorkflowRules.razor.rz.scp.css */
.rules-page[b-fw7dr2vai5] {
    padding: 1rem;
}

[b-fw7dr2vai5] .rules-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

[b-fw7dr2vai5] .rules-heading {
    font-size: 1.25rem;
    font-weight: 600;
    margin: 0;
    color: var(--lb-text);
}

[b-fw7dr2vai5] .rules-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 3rem;
    color: var(--lb-text-muted);
}

[b-fw7dr2vai5] .rules-empty {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
}

[b-fw7dr2vai5] .rules-empty p:first-child {
    font-size: 1rem;
    font-weight: 500;
    color: var(--lb-text);
}

/* -- Rule cards grid -- */
[b-fw7dr2vai5] .rules-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(360px, 1fr));
    gap: 1rem;
}

[b-fw7dr2vai5] .rule-card {
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 1rem;
    background: var(--lb-card);
    transition: border-color 0.15s;
}

[b-fw7dr2vai5] .rule-card:hover {
    border-color: var(--lb-brand);
}

[b-fw7dr2vai5] .rule-card-inactive {
    opacity: 0.65;
}

[b-fw7dr2vai5] .rule-card-header {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    margin-bottom: 0.75rem;
}

[b-fw7dr2vai5] .rule-name-row {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

[b-fw7dr2vai5] .rule-status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

[b-fw7dr2vai5] .rule-dot-active {
    background: var(--lb-success);
}

[b-fw7dr2vai5] .rule-dot-inactive {
    background: var(--lb-text-muted);
}

[b-fw7dr2vai5] .rule-name {
    font-size: 0.95rem;
    line-height: 1.3;
}

[b-fw7dr2vai5] .rule-card-actions {
    display: flex;
    gap: 0.25rem;
    flex-shrink: 0;
}

/* -- Card body -- */
[b-fw7dr2vai5] .rule-card-body {
    margin-bottom: 0.75rem;
}

[b-fw7dr2vai5] .rule-detail {
    display: flex;
    gap: 0.5rem;
    margin-bottom: 0.35rem;
    font-size: 0.85rem;
    line-height: 1.4;
}

[b-fw7dr2vai5] .rule-label {
    font-weight: 600;
    color: var(--lb-text-muted);
    flex-shrink: 0;
    min-width: 40px;
}

[b-fw7dr2vai5] .rule-value {
    color: var(--lb-text);
}

[b-fw7dr2vai5] .rule-tag {
    display: inline-block;
    font-size: 0.72rem;
    color: var(--lb-brand);
    background: var(--lb-surface-alt);
    border-radius: 3px;
    padding: 1px 6px;
    margin-top: 0.35rem;
}

/* -- Card footer -- */
[b-fw7dr2vai5] .rule-card-footer {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    border-top: 1px solid var(--lb-border);
    padding-top: 0.75rem;
}

[b-fw7dr2vai5] .rule-toggle-label {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

@media (max-width: 576px) {
    [b-fw7dr2vai5] .rules-grid {
        grid-template-columns: 1fr;
    }
}
/* /Components/SettingsComponents/AddTeamMember.razor.rz.scp.css */
/* === AddTeamMember - scoped styles === */
/* Shares the same visual pattern as ReassignCases, plus dual-mode toggle */

.tab-child-container[b-id5icjrc2c] {
    padding: 16px 0 16px;
    max-width: 1200px;
}

/* --- Header --- */

.tab-child-header[b-id5icjrc2c] {
    margin-bottom: 24px;
}

.tab-child-description[b-id5icjrc2c] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.92rem;
    line-height: 1.5;
    max-width: 720px;
}

/* --- Mode toggle --- */

.mode-toggle[b-id5icjrc2c] {
    display: flex;
    gap: 12px;
    margin-bottom: 24px;
    flex-wrap: wrap;
}

.mode-option[b-id5icjrc2c] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 18px;
    border: 2px solid var(--lb-border);
    border-radius: 8px;
    cursor: pointer;
    transition: border-color 0.2s, background-color 0.2s;
    flex: 1;
    min-width: 240px;
    max-width: 400px;
}

    .mode-option:hover[b-id5icjrc2c] {
        border-color: var(--lb-brand);
    }

    .mode-option.mode-active[b-id5icjrc2c] {
        border-color: var(--lb-brand);
        background-color: rgba(204, 108, 44, 0.06);
    }

    .mode-option input[type="radio"][b-id5icjrc2c] {
        accent-color: var(--lb-brand);
        width: 16px;
        height: 16px;
        margin: 0;
    }

.mode-label[b-id5icjrc2c] {
    font-weight: 500;
    font-size: 0.92rem;
    color: var(--lb-text);
}

/* --- Handling checkbox option --- */

.handling-option[b-id5icjrc2c] {
    margin-top: 18px;
    padding: 12px 16px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background-color: rgba(204, 108, 44, 0.04);
}

.handling-hint[b-id5icjrc2c] {
    margin: 6px 0 0 28px;
    color: var(--lb-text-muted);
    font-size: 0.82rem;
    line-height: 1.4;
}

/* --- Step sections --- */

.step-section[b-id5icjrc2c] {
    margin-bottom: 28px;
    padding: 20px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background-color: var(--lb-surface-alt);
}

.step-label[b-id5icjrc2c] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}

    .step-label h4[b-id5icjrc2c] {
        margin: 0 0 2px;
        color: var(--lb-text);
        font-weight: 600;
        font-size: 1rem;
    }

.step-hint[b-id5icjrc2c] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    line-height: 1.4;
}

.step-number[b-id5icjrc2c] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    min-width: 28px;
    border-radius: 50%;
    background-color: var(--lb-brand);
    color: #fff;
    font-weight: 700;
    font-size: 0.85rem;
    margin-top: 2px;
}

/* --- Dropdowns --- */

.dropdown-row[b-id5icjrc2c] {
    display: flex;
    gap: 20px;
    align-items: flex-end;
    flex-wrap: wrap;
}

.dropdown-group[b-id5icjrc2c] {
    display: flex;
    flex-direction: column;
    min-width: 260px;
    flex: 1;
    max-width: 400px;
}

.field-label[b-id5icjrc2c] {
    margin-bottom: 5px;
    font-weight: 500;
    color: var(--lb-text);
    font-size: 0.875rem;
}

.required-indicator[b-id5icjrc2c] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.optional-label[b-id5icjrc2c] {
    color: var(--lb-text-muted);
    font-weight: 400;
    font-size: 0.8rem;
}

[b-id5icjrc2c] .dropdown-control {
    width: 100%;
}

/* --- Contact dropdown items --- */

.contact-item[b-id5icjrc2c] {
    display: flex;
    flex-direction: column;
    padding: 4px 0;
}

.contact-name[b-id5icjrc2c] {
    font-weight: 500;
    color: var(--lb-text);
}

.contact-company[b-id5icjrc2c] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* --- Grid toolbar --- */

.grid-toolbar[b-id5icjrc2c] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.selection-badge[b-id5icjrc2c] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    background-color: var(--lb-brand);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
}

/* --- Grid --- */

.grid-section[b-id5icjrc2c] {
    overflow-x: hidden;
}

/* --- Validation errors --- */

.validation-errors[b-id5icjrc2c] {
    margin: 12px 0 16px;
    padding: 12px 16px;
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    background-color: #fdf0f0;
}

.validation-error-item[b-id5icjrc2c] {
    color: var(--lb-danger);
    font-size: 0.875rem;
    line-height: 1.6;
}

    .validation-error-item[b-id5icjrc2c]::before {
        content: "- ";
    }

/* --- Action bar --- */

.action-bar[b-id5icjrc2c] {
    display: flex;
    gap: 12px;
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid var(--lb-border);
}

/* --- Confirmation dialog --- */

.confirm-body p[b-id5icjrc2c] {
    margin: 0 0 12px;
    line-height: 1.6;
}

.confirm-note[b-id5icjrc2c] {
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

/* --- Responsive --- */

@media (max-width: 768px) {
    .tab-child-container[b-id5icjrc2c] {
        padding: 12px 0 16px;
    }

    .mode-toggle[b-id5icjrc2c] {
        flex-direction: column;
        gap: 8px;
    }

    .mode-option[b-id5icjrc2c] {
        max-width: 100%;
        min-width: 100%;
    }

    .dropdown-row[b-id5icjrc2c] {
        flex-direction: column;
        gap: 12px;
    }

    .dropdown-group[b-id5icjrc2c] {
        max-width: 100%;
        min-width: 100%;
    }

    .step-section[b-id5icjrc2c] {
        padding: 14px;
    }

    .action-bar[b-id5icjrc2c] {
        flex-direction: column;
    }
}

@media (max-width: 576px) {
    .step-label[b-id5icjrc2c] {
        gap: 10px;
    }

    .step-number[b-id5icjrc2c] {
        width: 24px;
        height: 24px;
        min-width: 24px;
        font-size: 0.75rem;
    }
}
/* /Components/SettingsComponents/AdminSetting.razor.rz.scp.css */
/* === Settings Hub -- scoped styles === */

/* -- Access denied -- */

.hub-access-denied[b-9go8k44jxr] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 2rem;
    text-align: center;
}

.hub-access-denied-icon[b-9go8k44jxr] {
    font-size: 48px;
    color: var(--lb-text-dim);
    margin-bottom: 1rem;
}

.hub-access-denied-title[b-9go8k44jxr] {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.5rem;
}

.hub-access-denied-msg[b-9go8k44jxr] {
    font-size: 0.95rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* -- Page header -- */

.hub-header[b-9go8k44jxr] {
    background: var(--lb-bg-white);
    border-bottom: 1px solid var(--lb-border);
    padding: 24px 32px 20px;
}

.hub-title-row[b-9go8k44jxr] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
}

.hub-title-icon[b-9go8k44jxr] {
    font-size: 28px;
    color: var(--lb-brand);
    margin-top: 2px;
    flex-shrink: 0;
}

.hub-title[b-9go8k44jxr] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.3;
}

.hub-subtitle[b-9go8k44jxr] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    margin: 4px 0 0;
    line-height: 1.4;
}

/* -- Search bar -- */

.hub-search-area[b-9go8k44jxr] {
    padding: 16px 32px 0;
}

.hub-search-box[b-9go8k44jxr] {
    position: relative;
    max-width: 400px;
}

.hub-search-icon[b-9go8k44jxr] {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 16px;
    color: var(--lb-text-dim);
    pointer-events: none;
}

.hub-search-input[b-9go8k44jxr] {
    width: 100%;
    padding: 8px 12px 8px 38px;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    font-size: 0.875rem;
    color: var(--lb-text);
    background: var(--lb-bg-white);
    outline: none;
    transition: border-color 200ms ease;
}

.hub-search-input[b-9go8k44jxr]::placeholder {
    color: var(--lb-text-dim);
}

.hub-search-input:focus[b-9go8k44jxr] {
    border-color: var(--lb-brand);
    box-shadow: var(--lb-focus-ring);
}

/* -- Hub content area -- */

.hub-content[b-9go8k44jxr] {
    padding: 24px 32px;
}

/* -- Category groups -- */

.hub-category[b-9go8k44jxr] {
    margin-bottom: 28px;
}

.hub-category-header[b-9go8k44jxr] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--lb-border-light);
    margin-bottom: 12px;
}

.hub-category-title[b-9go8k44jxr] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0;
}

/* Category icon badges -- 28x28 rounded squares with tinted bg */

.hub-category-badge[b-9go8k44jxr] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 6px;
    flex-shrink: 0;
}

.hub-category-badge .e-icons[b-9go8k44jxr] {
    font-size: 15px;
}

.hub-category-blue[b-9go8k44jxr] {
    background: var(--lb-blue-bg);
    color: var(--lb-blue);
}

.hub-category-green[b-9go8k44jxr] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.hub-category-orange[b-9go8k44jxr] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.hub-category-purple[b-9go8k44jxr] {
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

/* -- Card grid -- */

.hub-card-grid[b-9go8k44jxr] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 12px;
}

/* -- Individual card -- */

.hub-card[b-9go8k44jxr] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 16px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background: var(--lb-card);
    cursor: pointer;
    text-align: left;
    width: 100%;
    transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease;
    font-family: inherit;
    font-size: inherit;
    color: inherit;
    line-height: inherit;
}

.hub-card:hover[b-9go8k44jxr] {
    border-color: var(--lb-brand);
    box-shadow: var(--lb-shadow);
    transform: translateY(-1px);
}

.hub-card:focus-visible[b-9go8k44jxr] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

/* Disabled card: the action's backing config is unavailable (#3588). Stays visible
   so the admin learns WHY it is unavailable instead of the card silently vanishing. */
.hub-card-disabled[b-9go8k44jxr],
.hub-card-disabled:hover[b-9go8k44jxr] {
    cursor: not-allowed;
    opacity: 0.7;
    border-color: var(--lb-border);
    box-shadow: none;
    transform: none;
}

.hub-card-disabled:hover .hub-card-chevron[b-9go8k44jxr] {
    opacity: 0;
}

.hub-card-disabled-msg[b-9go8k44jxr] {
    font-size: 0.72rem;
    color: var(--lb-warning);
    line-height: 1.4;
    margin-top: 2px;
}

/* Card icon -- 36x36 rounded with category tint */

.hub-card-icon[b-9go8k44jxr] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    min-width: 36px;
    border-radius: 8px;
    flex-shrink: 0;
}

.hub-card-icon .e-icons[b-9go8k44jxr] {
    font-size: 18px;
}

.hub-card-icon-blue[b-9go8k44jxr] {
    background: var(--lb-blue-bg);
    color: var(--lb-blue);
}

.hub-card-icon-green[b-9go8k44jxr] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.hub-card-icon-orange[b-9go8k44jxr] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.hub-card-icon-purple[b-9go8k44jxr] {
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

/* Card text body */

.hub-card-body[b-9go8k44jxr] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}

.hub-card-title[b-9go8k44jxr] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text);
    display: flex;
    align-items: center;
    gap: 6px;
}

.hub-card-desc[b-9go8k44jxr] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
}

/* Chevron -- hidden by default, slides in on hover */

.hub-card-chevron[b-9go8k44jxr] {
    font-size: 14px;
    color: var(--lb-text-dim);
    opacity: 0;
    transform: translateX(-4px);
    transition: opacity 200ms ease, transform 200ms ease;
    flex-shrink: 0;
}

.hub-card:hover .hub-card-chevron[b-9go8k44jxr] {
    opacity: 1;
    transform: translateX(0);
}

/* Touch fallback: the chevron is the cue that the hub card is clickable.
 * Without :hover support it stays invisible; show it always on (hover: none). */
@media (hover: none) {
    .hub-card-chevron[b-9go8k44jxr] {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Add-on badge */

.hub-addon-badge[b-9go8k44jxr] {
    display: inline-block;
    font-size: 0.625rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-purple);
    background: var(--lb-purple-bg);
    padding: 1px 6px;
    border-radius: 10px;
    line-height: 1.5;
    white-space: nowrap;
}

/* -- Empty state (no search results) -- */

.hub-empty-state[b-9go8k44jxr] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 60px 20px;
    text-align: center;
}

.hub-empty-icon[b-9go8k44jxr] {
    font-size: 40px;
    color: var(--lb-text-dim);
    margin-bottom: 12px;
}

.hub-empty-text[b-9go8k44jxr] {
    font-size: 0.95rem;
    color: var(--lb-text-muted);
    margin: 0;
}

/* -- Back bar (breadcrumb for inline components) -- */

.hub-back-bar[b-9go8k44jxr] {
    padding: 12px 32px;
    background: var(--lb-bg-white);
    border-bottom: 1px solid var(--lb-border);
}

.hub-back-btn[b-9go8k44jxr] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 4px;
    font-family: inherit;
    transition: background-color 200ms ease;
}

.hub-back-btn:hover[b-9go8k44jxr] {
    background: var(--lb-brand-light);
}

.hub-back-btn:focus-visible[b-9go8k44jxr] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

.hub-back-btn .e-icons[b-9go8k44jxr] {
    font-size: 14px;
}

/* Inline component render area */

.hub-component-area[b-9go8k44jxr] {
    padding: 20px;
    overflow-y: auto;
}

/* -- Responsive -- */

@media (max-width: 768px) {
    .hub-header[b-9go8k44jxr] {
        padding: 20px 16px 16px;
    }

    .hub-search-area[b-9go8k44jxr] {
        padding: 12px 16px 0;
    }

    .hub-search-box[b-9go8k44jxr] {
        max-width: 100%;
    }

    .hub-content[b-9go8k44jxr] {
        padding: 16px;
    }

    .hub-card-grid[b-9go8k44jxr] {
        grid-template-columns: 1fr;
    }

    .hub-back-bar[b-9go8k44jxr] {
        padding: 10px 16px;
    }

    .hub-component-area[b-9go8k44jxr] {
        padding: 16px;
    }
}
/* /Components/SettingsComponents/ChangeCaseRole.razor.rz.scp.css */
/* === ChangeCaseRole - scoped styles === */
/* Shares the same visual pattern as ReassignCases */

.tab-child-container[b-qjcdug0qwe] {
    padding: 16px 0 16px;
    max-width: 1200px;
}

/* --- Header --- */

.tab-child-header[b-qjcdug0qwe] {
    margin-bottom: 24px;
}

.tab-child-description[b-qjcdug0qwe] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.92rem;
    line-height: 1.5;
    max-width: 720px;
}

/* --- Step sections --- */

.step-section[b-qjcdug0qwe] {
    margin-bottom: 28px;
    padding: 20px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background-color: var(--lb-surface-alt);
}

.step-label[b-qjcdug0qwe] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}

    .step-label h4[b-qjcdug0qwe] {
        margin: 0 0 2px;
        color: var(--lb-text);
        font-weight: 600;
        font-size: 1rem;
    }

.step-hint[b-qjcdug0qwe] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    line-height: 1.4;
}

.step-number[b-qjcdug0qwe] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    min-width: 28px;
    border-radius: 50%;
    background-color: var(--lb-brand);
    color: #fff;
    font-weight: 700;
    font-size: 0.85rem;
    margin-top: 2px;
}

/* --- Dropdowns --- */

.dropdown-row[b-qjcdug0qwe] {
    display: flex;
    gap: 20px;
    align-items: flex-end;
    flex-wrap: wrap;
}

.dropdown-group[b-qjcdug0qwe] {
    display: flex;
    flex-direction: column;
    min-width: 260px;
    flex: 1;
    max-width: 400px;
}

.field-label[b-qjcdug0qwe] {
    margin-bottom: 5px;
    font-weight: 500;
    color: var(--lb-text);
    font-size: 0.875rem;
}

.required-indicator[b-qjcdug0qwe] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.optional-label[b-qjcdug0qwe] {
    color: var(--lb-text-muted);
    font-weight: 400;
    font-size: 0.8rem;
}

[b-qjcdug0qwe] .dropdown-control {
    width: 100%;
}

/* --- Contact dropdown items --- */

.contact-item[b-qjcdug0qwe] {
    display: flex;
    flex-direction: column;
    padding: 4px 0;
}

.contact-name[b-qjcdug0qwe] {
    font-weight: 500;
    color: var(--lb-text);
}

.contact-company[b-qjcdug0qwe] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* --- Grid toolbar --- */

.grid-toolbar[b-qjcdug0qwe] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.selection-badge[b-qjcdug0qwe] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    background-color: var(--lb-brand);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
}

/* --- Grid --- */

.grid-section[b-qjcdug0qwe] {
    overflow-x: hidden;
}

/* --- Validation errors --- */

.validation-errors[b-qjcdug0qwe] {
    margin: 12px 0 16px;
    padding: 12px 16px;
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    background-color: #fdf0f0;
}

.validation-error-item[b-qjcdug0qwe] {
    color: var(--lb-danger);
    font-size: 0.875rem;
    line-height: 1.6;
}

    .validation-error-item[b-qjcdug0qwe]::before {
        content: "- ";
    }

/* --- Action bar --- */

.action-bar[b-qjcdug0qwe] {
    display: flex;
    gap: 12px;
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid var(--lb-border);
}

/* --- Confirmation dialog --- */

.confirm-body p[b-qjcdug0qwe] {
    margin: 0 0 12px;
    line-height: 1.6;
}

/* --- Responsive --- */

@media (max-width: 768px) {
    .tab-child-container[b-qjcdug0qwe] {
        padding: 12px 0 16px;
    }

    .dropdown-row[b-qjcdug0qwe] {
        flex-direction: column;
        gap: 12px;
    }

    .dropdown-group[b-qjcdug0qwe] {
        max-width: 100%;
        min-width: 100%;
    }

    .step-section[b-qjcdug0qwe] {
        padding: 14px;
    }

    .action-bar[b-qjcdug0qwe] {
        flex-direction: column;
    }
}

@media (max-width: 576px) {
    .step-label[b-qjcdug0qwe] {
        gap: 10px;
    }

    .step-number[b-qjcdug0qwe] {
        width: 24px;
        height: 24px;
        min-width: 24px;
        font-size: 0.75rem;
    }
}
/* /Components/SettingsComponents/CodeDataManagement.razor.rz.scp.css */
/* CodeDataManagement - Admin settings component for code data management */

.cdm-container[b-fyfvsmgvwk] {
    display: flex;
    gap: 24px;
    min-height: 550px;
}

.cdm-sidebar[b-fyfvsmgvwk] {
    width: 240px;
    min-width: 240px;
    border-right: 1px solid var(--lb-border);
    padding-right: 16px;
}

.cdm-sidebar-title[b-fyfvsmgvwk] {
    font-size: 14px;
    font-weight: 600;
    color: var(--lb-text);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 12px;
    padding-bottom: 8px;
    border-bottom: 1px solid var(--lb-border);
}

.cdm-category-list[b-fyfvsmgvwk] {
    list-style: none;
    padding: 0;
    margin: 0;
}

.cdm-category-item[b-fyfvsmgvwk] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border-radius: 6px;
    cursor: pointer;
    font-size: 14px;
    color: var(--lb-text);
    transition: background-color 0.15s;
}

.cdm-category-item:hover[b-fyfvsmgvwk] {
    background-color: var(--lb-hover-bg);
}

.cdm-category-item.active[b-fyfvsmgvwk] {
    background-color: var(--lb-brand-light);
    color: var(--lb-brand);
    font-weight: 600;
}

.cdm-content[b-fyfvsmgvwk] {
    flex: 1;
    min-width: 0;
}

.cdm-content-title[b-fyfvsmgvwk] {
    font-size: 18px;
    font-weight: 600;
    margin-bottom: 16px;
    color: var(--lb-text);
}

.cdm-dropdown-selector[b-fyfvsmgvwk] {
    display: flex;
    gap: 16px;
    margin-bottom: 16px;
    align-items: flex-end;
}

.cdm-field-group[b-fyfvsmgvwk] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.cdm-field-label[b-fyfvsmgvwk] {
    font-size: 12px;
    font-weight: 600;
    color: var(--lb-text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.3px;
}

/* Issue #468: the Table/Column picklist dropdowns crowd their value text and
   chevron against the input edges. Add modest horizontal breathing room. */
.cdm-field-group[b-fyfvsmgvwk]  .e-ddl input.e-input {
    padding-left: 10px;
}

.cdm-field-group[b-fyfvsmgvwk]  .e-ddl .e-ddl-icon {
    padding-right: 10px;
}

.cdm-loading[b-fyfvsmgvwk] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 48px;
    color: var(--lb-text-secondary);
}

@media (max-width: 768px) {
    .cdm-container[b-fyfvsmgvwk] {
        flex-direction: column;
    }

    .cdm-sidebar[b-fyfvsmgvwk] {
        width: 100%;
        min-width: unset;
        border-right: none;
        border-bottom: 1px solid var(--lb-border);
        padding-right: 0;
        padding-bottom: 16px;
    }

    .cdm-dropdown-selector[b-fyfvsmgvwk] {
        flex-direction: column;
    }
}

/* -- Color swatch in grid cells -- */
[b-fyfvsmgvwk] .cdm-color-swatch {
    display: inline-block;
    width: 18px;
    height: 18px;
    border-radius: 3px;
    border: 1px solid var(--lb-border);
    vertical-align: middle;
    margin-right: 6px;
}

/* -- Custom override badge in Case Types grid -- */
[b-fyfvsmgvwk] .cdm-custom-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.3px;
    padding: 2px 6px;
    border-radius: 3px;
    background-color: var(--lb-brand-light);
    color: var(--lb-brand);
    cursor: default;
}

/* #3319 §2: shown instead of a blank cell when the override query failed, so an
   unreadable state does not render as a confident "no custom stages". */
[b-fyfvsmgvwk] .cdm-unknown-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 700;
    padding: 2px 7px;
    border-radius: 3px;
    background-color: var(--lb-warning-bg);
    color: var(--lb-warning);
    cursor: help;
}
/* /Components/SettingsComponents/ESignatureSettingsComponent.razor.rz.scp.css */
/* -- E-Signature Settings scoped styles -- */
/* ASCII-only comments per project rules */

.settings-section[b-qbl8d2fis6] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    padding: 16px 20px;
    margin-bottom: 16px;
}

.settings-section h5[b-qbl8d2fis6] {
    font-size: 1rem;
    font-weight: 600;
    margin-bottom: 12px;
    color: var(--lb-text);
}

.field-label[b-qbl8d2fis6] {
    display: block;
    font-size: 0.85rem;
    font-weight: 600;
    margin-bottom: 4px;
    color: var(--lb-text);
}

/* -- Connection status indicator (Section 1) -- */
.status-line[b-qbl8d2fis6] {
    display: flex;
    align-items: center;
    padding: 8px 12px;
    border-radius: 6px;
    font-size: 0.88rem;
    font-weight: 500;
}

.status-checking[b-qbl8d2fis6] {
    background-color: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

.status-connected[b-qbl8d2fis6] {
    background-color: var(--lb-success-bg);
    color: var(--lb-success);
}

.status-not-connected[b-qbl8d2fis6] {
    background-color: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.status-timed-out[b-qbl8d2fis6] {
    background-color: var(--lb-warning-bg);
    color: var(--lb-warning);
}

/* -- Verify & Test progressive step results -- */
.verify-results[b-qbl8d2fis6] {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.verify-step[b-qbl8d2fis6] {
    display: flex;
    align-items: flex-start;
    padding: 6px 10px;
    border-radius: 4px;
    font-size: 0.85rem;
    line-height: 1.4;
}

.step-running[b-qbl8d2fis6] {
    color: var(--lb-text-muted);
}

.step-passed[b-qbl8d2fis6] {
    color: var(--lb-success);
}

.step-warning[b-qbl8d2fis6] {
    background-color: var(--lb-warning-bg);
    color: var(--lb-warning);
}

.step-failed[b-qbl8d2fis6] {
    background-color: var(--lb-danger-bg);
    color: var(--lb-danger);
}
/* /Components/SettingsComponents/FirmManagement.razor.rz.scp.css */
/* -- FirmManagement scoped styles -- */

.loading-container[b-pdq3n9cx3u] {
    text-align: center;
    padding: 40px 20px;
    color: var(--lb-text-muted);
}

.unauthorized-container[b-pdq3n9cx3u] {
    text-align: center;
    padding: 40px 20px;
    color: var(--lb-text-muted);
}

    .unauthorized-container h4[b-pdq3n9cx3u] {
        margin-bottom: 12px;
        color: var(--lb-text);
    }

.firm-header[b-pdq3n9cx3u] {
    margin-bottom: 20px;
}

    .firm-header h3[b-pdq3n9cx3u] {
        margin-bottom: 6px;
        color: var(--lb-text);
    }

.firm-description[b-pdq3n9cx3u] {
    color: var(--lb-text-muted);
    font-size: 0.9rem;
    margin-bottom: 0;
}

.form-button-group[b-pdq3n9cx3u] {
    display: flex;
    gap: 8px;
    align-items: center;
}
/* /Components/SettingsComponents/GlobalLogs.razor.rz.scp.css */
/* === GlobalLogs -- scoped styles === */

.global-logs-container[b-218ubjqoh6] {
    padding: 20px;
}

.logs-header h4[b-218ubjqoh6] {
    margin: 0 0 4px 0;
    color: var(--lb-text);
    font-weight: 600;
}

.orientation-text[b-218ubjqoh6] {
    margin: 0 0 16px 0;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

.tab-content[b-218ubjqoh6] {
    padding: 20px 0;
}

.dropdown-section[b-218ubjqoh6] {
    margin-bottom: 30px;
    padding: 20px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background-color: var(--lb-surface-alt);
}

.dropdown-row[b-218ubjqoh6] {
    display: flex;
    flex-wrap: wrap;
    gap: 20px;
    align-items: end;
}

.dropdown-group[b-218ubjqoh6] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1 1 250px;
}

.dropdown-label[b-218ubjqoh6] {
    margin-bottom: 5px;
    font-weight: 500;
    color: var(--lb-text-muted);
}

.dropdown-control[b-218ubjqoh6] {
    width: 100%;
}

.grid-section[b-218ubjqoh6] {
    margin-bottom: 20px;
    overflow-x: hidden;
}

.loading-indicator[b-218ubjqoh6] {
    padding: 24px;
    text-align: center;
    color: var(--lb-text-muted);
}

.empty-state[b-218ubjqoh6] {
    padding: 16px;
    text-align: center;
    color: var(--lb-text-muted);
    font-style: italic;
}

.unauthorized-message[b-218ubjqoh6] {
    padding: 40px 20px;
    text-align: center;
    color: var(--lb-text-muted);
}

/* Syncfusion dropdown list item sizing */
[b-218ubjqoh6] .e-dropdownbase .e-list-item {
    padding: 0;
    height: auto;
    min-height: 36px;
}

/* Tab content spacing */
[b-218ubjqoh6] .e-tab .e-content .e-item {
    padding: 0;
}

[b-218ubjqoh6] .e-tab .e-tab-header {
    background-color: var(--lb-bg-surface);
    border-bottom: 1px solid var(--lb-border);
}

/* Mobile adjustments */
@media (max-width: 767px) {
    .global-logs-container[b-218ubjqoh6] {
        padding: 10px;
    }

    .dropdown-section[b-218ubjqoh6] {
        padding: 12px;
        margin-bottom: 16px;
    }

    .tab-content[b-218ubjqoh6] {
        padding: 10px 0;
    }
}
/* /Components/SettingsComponents/ImportContacts.razor.rz.scp.css */
/* ---------------------------------------------------------------
   ImportContacts - scoped styles
   --------------------------------------------------------------- */

.import-contacts-container[b-k1z7kcu7ek] {
    padding: 1rem 1.5rem;
    max-width: 720px;
}

.import-header h4[b-k1z7kcu7ek] {
    margin-bottom: 0.25rem;
    color: var(--lb-text);
}

.orientation-text[b-k1z7kcu7ek] {
    color: var(--lb-text-muted);
    font-size: 0.9rem;
    margin-bottom: 1.25rem;
    line-height: 1.5;
}

.import-form-section[b-k1z7kcu7ek] {
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 1.25rem 1.5rem;
}

.form-group[b-k1z7kcu7ek] {
    display: flex;
    flex-direction: column;
    margin-bottom: 1.25rem;
}

.field-label[b-k1z7kcu7ek] {
    font-weight: 500;
    margin-bottom: 0.35rem;
    font-size: 0.9rem;
    color: var(--lb-text);
}

.required-indicator[b-k1z7kcu7ek] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.field-hint[b-k1z7kcu7ek] {
    color: var(--lb-text-muted);
    font-size: 0.8rem;
    margin-top: 0.25rem;
}

.action-row[b-k1z7kcu7ek] {
    display: flex;
    gap: 0.75rem;
    align-items: center;
    margin-top: 0.5rem;
}

/* -- Validation errors -- */

.validation-errors[b-k1z7kcu7ek] {
    margin-top: 1.25rem;
    padding: 1rem 1.25rem;
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    background: var(--lb-danger-bg);
}

.validation-errors h5[b-k1z7kcu7ek] {
    color: var(--lb-danger);
    margin-bottom: 0.5rem;
    font-size: 0.95rem;
}

.validation-errors ul[b-k1z7kcu7ek] {
    margin: 0;
    padding-left: 1.25rem;
    font-size: 0.85rem;
    max-height: 320px;
    overflow-y: auto;
}

.validation-errors li[b-k1z7kcu7ek] {
    margin-bottom: 0.25rem;
    line-height: 1.4;
}

/* -- Unauthorized state -- */

.unauthorized-message[b-k1z7kcu7ek] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
    font-size: 1rem;
}

/* -- Responsive -- */

@media (max-width: 767px) {
    .import-contacts-container[b-k1z7kcu7ek] {
        padding: 0.75rem;
    }

    .import-form-section[b-k1z7kcu7ek] {
        padding: 1rem;
    }

    .action-row[b-k1z7kcu7ek] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/SettingsComponents/LoginsManagement.razor.rz.scp.css */
/* -- Logins Management -- ASCII only in comments -- */

.logins-management[b-rmpj1v0km0] {
    padding: 0.5rem 1rem;
}

.logins-header h3[b-rmpj1v0km0] {
    color: var(--lb-text);
    margin-bottom: 0.25rem;
}

.logins-orientation[b-rmpj1v0km0] {
    color: var(--lb-text-muted);
    font-size: 0.9rem;
    margin-bottom: 1rem;
    max-width: 680px;
}

.logins-denied[b-rmpj1v0km0] {
    padding: 2rem;
    text-align: center;
    color: var(--lb-text-muted);
}

.logins-denied h4[b-rmpj1v0km0] {
    color: var(--lb-danger);
}

.loading-container[b-rmpj1v0km0] {
    display: flex;
    align-items: center;
    padding: 1.5rem;
    color: var(--lb-text-muted);
}

/* -- Grid -- */

.logins-grid-container[b-rmpj1v0km0] {
    overflow-x: hidden;
}

[b-rmpj1v0km0] .login-inactive-row {
    opacity: 0.55;
    text-decoration: line-through;
}

[b-rmpj1v0km0] .login-inactive-row td {
    color: var(--lb-text-muted) !important;
}

/* Placeholder for a cell whose real value could not be loaded (#3164) — visibly
   different from a genuine value so "Unavailable" never reads as an answer. */
.value-unavailable[b-rmpj1v0km0] {
    color: var(--lb-text-muted);
    font-style: italic;
}

/* -- Dialog -- */

.login-dialog-body[b-rmpj1v0km0] {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 0.5rem 0;
}

.field-row[b-rmpj1v0km0] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.field-label[b-rmpj1v0km0] {
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--lb-text);
}

.toggle-group[b-rmpj1v0km0] {
    display: flex;
    flex-direction: row;
    gap: 1.5rem;
    flex-wrap: wrap;
    padding: 0.5rem 0;
    border-top: 1px solid var(--lb-border);
    border-bottom: 1px solid var(--lb-border);
}

.toggle-item[b-rmpj1v0km0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.toggle-item .field-label[b-rmpj1v0km0] {
    margin-bottom: 0;
}

.deactivation-warning[b-rmpj1v0km0] {
    background-color: rgba(255, 193, 7, 0.12);
    border: 1px solid var(--lb-warning);
    border-radius: 4px;
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    color: var(--lb-text);
}

.new-contact-fields[b-rmpj1v0km0] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.field-label-sm[b-rmpj1v0km0] {
    font-weight: 500;
    font-size: 0.8rem;
    color: var(--lb-text);
    margin-bottom: 2px;
    display: block;
}

/* -- Contact dropdown item template -- */

.contact-dropdown-item[b-rmpj1v0km0] {
    display: flex;
    flex-direction: column;
    padding: 2px 0;
}

.contact-name[b-rmpj1v0km0] {
    font-weight: 500;
    color: var(--lb-text);
}

.contact-email[b-rmpj1v0km0] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

.contact-has-login[b-rmpj1v0km0] {
    font-size: 0.75rem;
    color: var(--lb-brand);
    font-style: italic;
}

/* -- Required indicator (matches app.css convention) -- */

.required-indicator[b-rmpj1v0km0] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

/* -- Access Capabilities Section -- */

.capabilities-section[b-rmpj1v0km0] {
    margin-top: 0.5rem;
    border-top: 1px solid var(--lb-border);
    padding-top: 0.75rem;
}

.capabilities-header[b-rmpj1v0km0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    cursor: pointer;
    padding: 0.25rem 0;
    user-select: none;
}

.capabilities-title[b-rmpj1v0km0] {
    font-weight: 600;
    font-size: 0.9rem;
    color: var(--lb-text);
}

.capabilities-body[b-rmpj1v0km0] {
    padding: 0.75rem 0 0 0;
}

.capabilities-hint[b-rmpj1v0km0] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0.25rem 0 0.5rem 0;
}

.field-hint[b-rmpj1v0km0] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin: 0.1rem 0 0 0;
}

.provisioning-status[b-rmpj1v0km0] {
    padding: 0.5rem 0.75rem;
    margin-bottom: 0.75rem;
    border-radius: 0.375rem;
    border-left: 3px solid var(--lb-border, rgba(128, 128, 128, 0.4));
    background: var(--lb-surface-alt, rgba(128, 128, 128, 0.08));
}

.provisioning-status .status-line[b-rmpj1v0km0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.provisioning-status .status-label[b-rmpj1v0km0] {
    color: var(--lb-text-muted);
}

.provisioning-status.status-ok[b-rmpj1v0km0] {
    border-left-color: #2e7d32;
}

.provisioning-status.status-pending[b-rmpj1v0km0] {
    border-left-color: #f9a825;
}

.provisioning-status.status-warn[b-rmpj1v0km0] {
    border-left-color: #ef6c00;
}

.provisioning-status.status-danger[b-rmpj1v0km0] {
    border-left-color: #c62828;
}

.firmowner-toggle[b-rmpj1v0km0] {
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--lb-border);
    margin-bottom: 0.75rem;
}

/* Failed capability read (#3638): visibly an error with a Retry, never a blank
   gap that reads as "this user has no capabilities to configure". */
.capability-load-error[b-rmpj1v0km0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    background-color: rgba(198, 40, 40, 0.08);
    border: 1px solid var(--lb-danger);
    border-radius: 4px;
    padding: 0.75rem 1rem;
    font-size: 0.875rem;
    color: var(--lb-text);
    margin-bottom: 0.5rem;
}

@media (max-width: 576px) {
    .capability-load-error[b-rmpj1v0km0] {
        flex-direction: column;
        align-items: flex-start;
    }
}

/* -- Capability Override Grid -- */

.capability-overrides[b-rmpj1v0km0] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.capability-group-label[b-rmpj1v0km0] {
    font-weight: 600;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 0.25rem;
}

.capability-row[b-rmpj1v0km0] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    padding: 0.5rem 0.5rem;
    border-radius: 4px;
}

.capability-row-overridden[b-rmpj1v0km0] {
    background-color: var(--lb-surface-alt, rgba(204, 108, 44, 0.06));
}

.capability-info[b-rmpj1v0km0] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
    flex: 1;
    min-width: 0;
}

.capability-name[b-rmpj1v0km0] {
    font-weight: 500;
    font-size: 0.875rem;
    color: var(--lb-text);
}

.capability-desc[b-rmpj1v0km0] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    line-height: 1.3;
}

.capability-controls[b-rmpj1v0km0] {
    display: flex;
    gap: 0.75rem;
    flex-shrink: 0;
    align-items: center;
}

.capability-radio-group[b-rmpj1v0km0] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

[b-rmpj1v0km0] .capability-radio-group .e-radio-wrapper {
    font-size: 0.8rem;
    color: var(--lb-text);
    white-space: nowrap;
}

/* -- Responsive: stack controls on narrow screens -- */

@media (max-width: 576px) {
    .capability-row[b-rmpj1v0km0] {
        flex-direction: column;
        gap: 0.5rem;
    }

    .capability-controls[b-rmpj1v0km0] {
        flex-wrap: wrap;
    }
}
/* /Components/SettingsComponents/ManageCaseUsers.razor.rz.scp.css */
/* === ManageCaseUsers - scoped styles === */

.manage-case-users-container[b-btn6uycvzq] {
    padding: 16px 20px 32px;
    max-width: 1200px;
}

.manage-header[b-btn6uycvzq] {
    margin-bottom: 20px;
}

    .manage-header h3[b-btn6uycvzq] {
        margin: 0 0 8px;
        color: var(--lb-text);
    }

.manage-description[b-btn6uycvzq] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.92rem;
    line-height: 1.5;
    max-width: 720px;
}

/* --- Tab styling --- */

[b-btn6uycvzq] .case-user-tabs .e-tab-header {
    margin-bottom: 4px;
}

/* --- Responsive --- */

@media (max-width: 768px) {
    .manage-case-users-container[b-btn6uycvzq] {
        padding: 12px 12px 24px;
    }
}
/* /Components/SettingsComponents/ModuleManagement.razor.rz.scp.css */
/* ============================================================================
   ModuleManagement -- Features and Modules admin toggle page
   All colors via --lb-* design tokens. No hardcoded hex values.
   ============================================================================ */

/* -- Page container -- */
.mm-container[b-j35194ge17] {
    max-width: 900px;
    margin: 0 auto;
    padding: 1.5rem;
}

/* -- Header banner -- */
.mm-header[b-j35194ge17] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1.75rem;
    padding: 1.25rem;
    background: var(--lb-bg-surface);
    border-radius: var(--lb-radius-card);
    border-left: 4px solid var(--lb-brand);
    box-shadow: var(--lb-shadow);
}

.mm-header-icon[b-j35194ge17] {
    font-size: 1.75rem;
    color: var(--lb-brand);
    margin-top: 0.15rem;
    flex-shrink: 0;
}

.mm-title[b-j35194ge17] {
    margin: 0 0 0.25rem 0;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text-bright);
}

.mm-subtitle[b-j35194ge17] {
    margin: 0;
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--lb-text-muted);
}

.mm-loading[b-j35194ge17] {
    text-align: center;
    padding: 2rem;
    color: var(--lb-text-muted);
}

/* -- #2239: failed-load banner (replaces the toggle content so an empty
      status map is never rendered as real Disabled/Off firm state) -- */
.mm-load-failed[b-j35194ge17] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    padding: 1rem 1.25rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-danger, #dc3545);
    border-left-width: 4px;
    border-radius: var(--lb-radius-card);
    box-shadow: var(--lb-shadow);
}

.mm-load-failed-icon[b-j35194ge17] {
    color: var(--lb-danger, #dc3545);
    font-size: 1.25rem;
    margin-top: 0.125rem;
}

.mm-load-failed-body[b-j35194ge17] {
    flex: 1;
}

.mm-load-failed-body p[b-j35194ge17] {
    margin: 0.25rem 0 0;
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--lb-text-muted);
}

/* -- #2239: Document Storage status failed to load (card otherwise vanished) -- */
.mm-policy-card--load-failed[b-j35194ge17] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.75rem 1.25rem;
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    border: 1px dashed var(--lb-border);
    border-radius: var(--lb-radius-card);
}

.mm-policy-card--load-failed .e-icons[b-j35194ge17] {
    color: var(--lb-warning, #e0a800);
}

/* -- Module card grid -- */
.mm-card-grid[b-j35194ge17] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

/* -- Individual module card -- */
.mm-card[b-j35194ge17] {
    display: flex;
    flex-direction: column;
    padding: 1rem 1.25rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    box-shadow: var(--lb-shadow);
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.mm-card--on[b-j35194ge17] {
    border-left: 3px solid var(--lb-success);
}

.mm-card--off[b-j35194ge17] {
    border-left: 3px solid var(--lb-border);
    opacity: 0.75;
}

.mm-card:hover[b-j35194ge17] {
    box-shadow: var(--lb-shadow-lg);
}

/* -- Main row: icon / body / toggle -- */
.mm-card-main-row[b-j35194ge17] {
    display: flex;
    align-items: center;
    gap: 1rem;
    width: 100%;
}

/* -- Module icon -- */
.mm-card-icon-wrap[b-j35194ge17] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    flex-shrink: 0;
    font-size: 1.25rem;
}

.mm-card-icon-wrap--on[b-j35194ge17] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.mm-card-icon-wrap--off[b-j35194ge17] {
    background: var(--lb-elevated);
    color: var(--lb-text-muted);
}

/* -- Card text -- */
.mm-card-body[b-j35194ge17] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
    min-width: 0;
}

.mm-card-name[b-j35194ge17] {
    font-weight: 600;
    font-size: 0.9375rem;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mm-card-desc[b-j35194ge17] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
}

/* -- Toggle area -- */
.mm-card-toggle-area[b-j35194ge17] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    flex-shrink: 0;
}

.mm-toggle-label[b-j35194ge17] {
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--lb-text-muted);
}

/* -- Core feature badge (replaces toggle for undisableable features) -- */
.mm-core-badge[b-j35194ge17] {
    display: inline-block;
    padding: 0.2rem 0.55rem;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--lb-brand);
    background: var(--lb-brand-bg, color-mix(in srgb, var(--lb-brand) 12%, transparent));
    border: 1px solid color-mix(in srgb, var(--lb-brand) 30%, transparent);
    border-radius: var(--lb-radius-pill);
    white-space: nowrap;
}

/* -- Toggle switch (full size) -- */
.mm-toggle[b-j35194ge17] {
    position: relative;
    display: inline-block;
    width: 2.75rem;
    height: 1.5rem;
    border: none;
    border-radius: var(--lb-radius-pill);
    cursor: pointer;
    transition: background-color 0.2s ease;
    padding: 0;
}

/* -- Toggle switch (small -- used for sub-features) -- */
.mm-toggle--sm[b-j35194ge17] {
    width: 2.25rem;
    height: 1.25rem;
}

.mm-toggle--on[b-j35194ge17] {
    background: var(--lb-success);
}

.mm-toggle--off[b-j35194ge17] {
    background: var(--lb-border);
}

.mm-toggle:disabled[b-j35194ge17] {
    opacity: 0.5;
    cursor: not-allowed;
    /* Disabled buttons swallow pointer events in Chromium/Firefox, so the SfTooltip
       wrapping the toggle would never fire for exactly the user its copy targets
       ("Only the Firm Owner can change..."). Letting events pass through to the
       tooltip wrapper restores the hover explanation; the button is disabled, so
       nothing clickable leaks through. */
    pointer-events: none;
}

.mm-toggle-knob[b-j35194ge17] {
    position: absolute;
    top: 0.1875rem;
    width: 1.125rem;
    height: 1.125rem;
    background: var(--lb-bg-white);
    border-radius: 50%;
    transition: left 0.2s ease;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2);
}

.mm-toggle--sm .mm-toggle-knob[b-j35194ge17] {
    width: 0.875rem;
    height: 0.875rem;
}

.mm-toggle--on .mm-toggle-knob[b-j35194ge17] {
    left: calc(100% - 1.3125rem);
}

.mm-toggle--sm.mm-toggle--on .mm-toggle-knob[b-j35194ge17] {
    left: calc(100% - 1.0625rem);
}

.mm-toggle--off .mm-toggle-knob[b-j35194ge17] {
    left: 0.1875rem;
}

/* ============================================================================
   Sub-feature section (overnight tasks and opt-in settings within a module)
   ============================================================================ */

.mm-card-subfeatures[b-j35194ge17] {
    margin-top: 0.875rem;
    padding-top: 0.75rem;
    border-top: 1px solid var(--lb-border);
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* Single sub-feature row */
.mm-subfeature[b-j35194ge17] {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 0.5rem 0.75rem;
    background: var(--lb-elevated);
    border-radius: var(--lb-radius-sm, 6px);
}

.mm-subfeature-text[b-j35194ge17] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.mm-subfeature-label[b-j35194ge17] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--lb-text);
}

.mm-subfeature-desc[b-j35194ge17] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
}

.mm-subfeature-toggle-wrap[b-j35194ge17] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.2rem;
    flex-shrink: 0;
}

/* ============================================================================
   Document Storage policy card (document-blob-storage spec).
   Rendered outside the module grid -- a SystemSettings routing switch, not a
   billable module -- so it gets its own visual treatment: an --lb-info left
   border and a "Storage" badge instead of the module cards' green/gray states
   and Core badge.
   ============================================================================ */

.mm-policy-card[b-j35194ge17] {
    display: flex;
    flex-direction: column;
    margin-top: 1.25rem;
    padding: 1rem 1.25rem;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    box-shadow: var(--lb-shadow);
}

.mm-policy-card--storage[b-j35194ge17] {
    border-left: 3px solid var(--lb-info);
}

.mm-storage-badge[b-j35194ge17] {
    display: inline-block;
    margin-left: 0.5rem;
    padding: 0.2rem 0.55rem;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--lb-info);
    background: var(--lb-info-bg);
    border: 1px solid color-mix(in srgb, var(--lb-info) 30%, transparent);
    border-radius: var(--lb-radius-pill);
    white-space: nowrap;
    vertical-align: middle;
}

.mm-policy-subtext[b-j35194ge17] {
    margin-top: 0.25rem;
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    line-height: 1.4;
}

.mm-policy-warning[b-j35194ge17] {
    display: block;
    margin-top: 0.5rem;
    padding: 0.4rem 0.6rem;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--lb-warning);
    background: var(--lb-warning-bg);
    border-radius: var(--lb-radius-sm, 6px);
    line-height: 1.4;
}

/* System Notifications firm gate (system-notifications spec, firm tier) --
   same policy-card treatment as Document Storage, brand accent + "Alerts"
   badge so it reads as a firm-wide switch, not a billable module. */
.mm-policy-card--notifications[b-j35194ge17] {
    border-left: 3px solid var(--lb-brand);
}

.mm-notif-badge[b-j35194ge17] {
    display: inline-block;
    margin-left: 0.5rem;
    padding: 0.2rem 0.55rem;
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--lb-brand);
    /* --lb-brand-bg is not defined app-wide; fall back like .mm-core-badge does
       or the badge silently loses its tint (the phantom-token gate baseline
       already carries this pair, so CI would not flag it). */
    background: var(--lb-brand-bg, color-mix(in srgb, var(--lb-brand) 12%, transparent));
    border: 1px solid color-mix(in srgb, var(--lb-brand) 30%, transparent);
    border-radius: var(--lb-radius-pill);
    white-space: nowrap;
    vertical-align: middle;
}

/* -- Confirmation dialog -- */
.mm-confirm-header[b-j35194ge17] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    color: var(--lb-warning);
}

.mm-confirm-icon[b-j35194ge17] {
    font-size: 1.25rem;
    color: var(--lb-warning);
}

.mm-confirm-text[b-j35194ge17] {
    margin: 0.5rem 0;
    line-height: 1.5;
    color: var(--lb-text);
}

/* ============================================================================
   Security section (case access security - a policy switch, not a module)
   ============================================================================ */

.mm-security-section[b-j35194ge17] {
    margin-top: 1.75rem;
}

.mm-section-title[b-j35194ge17] {
    margin: 0 0 0.75rem 0;
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--lb-text-muted);
}

/* Off is a legitimate posture for this card, not a disabled module -
   keep it full-opacity so it never reads as unavailable. */
.mm-security-card.mm-card--off[b-j35194ge17] {
    opacity: 1;
}

.mm-security-badge[b-j35194ge17] {
    display: inline-block;
    margin-left: 0.4rem;
    padding: 0.15rem 0.5rem;
    font-size: 0.65rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--lb-warning);
    background: var(--lb-warning-bg);
    border: 1px solid color-mix(in srgb, var(--lb-warning) 30%, transparent);
    border-radius: var(--lb-radius-pill);
    vertical-align: middle;
}

/* Lockout warning inside the strict-mode confirm dialog */
.mm-confirm-impact[b-j35194ge17] {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    padding: 0.6rem 0.75rem;
    background: var(--lb-warning-bg);
    border: 1px solid color-mix(in srgb, var(--lb-warning) 30%, transparent);
    border-radius: var(--lb-radius-card);
}

.mm-confirm-impact .e-icons[b-j35194ge17] {
    color: var(--lb-warning);
    margin-top: 0.1rem;
    flex-shrink: 0;
}

/* #3386: the impact query failed -- must read as distinctly worse than both the
   warning band above and silence, since silence used to mean "0 locked out". */
.mm-confirm-impact--error[b-j35194ge17] {
    background: var(--lb-danger-bg);
    border-color: color-mix(in srgb, var(--lb-danger) 30%, transparent);
}

.mm-confirm-impact--error .e-icons[b-j35194ge17] {
    color: var(--lb-danger);
}

.mm-confirm-retry[b-j35194ge17] {
    margin-top: 0.5rem;
}

/* #3386: the query succeeded AND found zero impact -- say so explicitly rather
   than leaving the "no warning band" silence to be misread as reassurance. */
.mm-confirm-impact--safe[b-j35194ge17] {
    background: var(--lb-success-bg);
    border-color: color-mix(in srgb, var(--lb-success) 30%, transparent);
}

.mm-confirm-impact--safe .e-icons[b-j35194ge17] {
    color: var(--lb-success);
}

.mm-confirm-note[b-j35194ge17] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

/* -- Responsive: stack on small screens -- */
@media (max-width: 576px) {
    .mm-card-main-row[b-j35194ge17] {
        flex-wrap: wrap;
    }

    .mm-card-toggle-area[b-j35194ge17] {
        width: 100%;
        flex-direction: row;
        justify-content: flex-end;
    }

    .mm-subfeature[b-j35194ge17] {
        flex-wrap: wrap;
    }

    .mm-subfeature-toggle-wrap[b-j35194ge17] {
        width: 100%;
        flex-direction: row;
        justify-content: flex-end;
    }
}
/* /Components/SettingsComponents/ReassignCases.razor.rz.scp.css */
/* === ReassignCases - scoped styles === */

.reassign-container[b-oo79i4j0ae] {
    padding: 16px 0 16px;
    max-width: 1200px;
}

/* --- Header --- */

.reassign-header[b-oo79i4j0ae] {
    margin-bottom: 24px;
}

    .reassign-header h3[b-oo79i4j0ae] {
        margin: 0 0 8px;
        color: var(--lb-text);
    }

.reassign-description[b-oo79i4j0ae] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.92rem;
    line-height: 1.5;
    max-width: 720px;
}

/* --- Step sections --- */

.step-section[b-oo79i4j0ae] {
    margin-bottom: 28px;
    padding: 20px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background-color: var(--lb-surface-alt);
}

.step-label[b-oo79i4j0ae] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}

    .step-label h4[b-oo79i4j0ae] {
        margin: 0 0 2px;
        color: var(--lb-text);
        font-weight: 600;
        font-size: 1rem;
    }

.step-hint[b-oo79i4j0ae] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    line-height: 1.4;
}

.step-number[b-oo79i4j0ae] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    min-width: 28px;
    border-radius: 50%;
    background-color: var(--lb-brand);
    color: #fff;
    font-weight: 700;
    font-size: 0.85rem;
    margin-top: 2px;
}

/* --- Dropdowns --- */

.dropdown-row[b-oo79i4j0ae] {
    display: flex;
    gap: 20px;
    align-items: flex-end;
    flex-wrap: wrap;
}

.dropdown-group[b-oo79i4j0ae] {
    display: flex;
    flex-direction: column;
    min-width: 260px;
    flex: 1;
    max-width: 400px;
}

.field-label[b-oo79i4j0ae] {
    margin-bottom: 5px;
    font-weight: 500;
    color: var(--lb-text);
    font-size: 0.875rem;
}

.required-indicator[b-oo79i4j0ae] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.optional-label[b-oo79i4j0ae] {
    color: var(--lb-text-muted);
    font-weight: 400;
    font-size: 0.8rem;
}

[b-oo79i4j0ae] .dropdown-control {
    width: 100%;
}

/* --- Contact dropdown items --- */

.contact-item[b-oo79i4j0ae] {
    display: flex;
    flex-direction: column;
    padding: 4px 0;
}

.contact-name[b-oo79i4j0ae] {
    font-weight: 500;
    color: var(--lb-text);
}

.contact-company[b-oo79i4j0ae] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* --- Grid toolbar --- */

.grid-toolbar[b-oo79i4j0ae] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.selection-badge[b-oo79i4j0ae] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    background-color: var(--lb-brand);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
}

/* --- Grid --- */

.grid-section[b-oo79i4j0ae] {
    overflow-x: hidden;
}

/* --- Validation errors --- */

.validation-errors[b-oo79i4j0ae] {
    margin: 12px 0 16px;
    padding: 12px 16px;
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    background-color: #fdf0f0;
}

.validation-error-item[b-oo79i4j0ae] {
    color: var(--lb-danger);
    font-size: 0.875rem;
    line-height: 1.6;
}

    .validation-error-item[b-oo79i4j0ae]::before {
        content: "- ";
    }

/* --- Action bar --- */

.action-bar[b-oo79i4j0ae] {
    display: flex;
    gap: 12px;
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid var(--lb-border);
}

/* --- Confirmation dialog --- */

.confirm-body p[b-oo79i4j0ae] {
    margin: 0 0 12px;
    line-height: 1.6;
}

.confirm-warning[b-oo79i4j0ae] {
    color: var(--lb-danger);
    font-weight: 500;
    font-size: 0.9rem;
}

/* --- Responsive --- */

@media (max-width: 768px) {
    .reassign-container[b-oo79i4j0ae] {
        padding: 12px 0 16px;
    }

    .dropdown-row[b-oo79i4j0ae] {
        flex-direction: column;
        gap: 12px;
    }

    .dropdown-group[b-oo79i4j0ae] {
        max-width: 100%;
        min-width: 100%;
    }

    .step-section[b-oo79i4j0ae] {
        padding: 14px;
    }

    .action-bar[b-oo79i4j0ae] {
        flex-direction: column;
    }
}

@media (max-width: 576px) {
    .step-label[b-oo79i4j0ae] {
        gap: 10px;
    }

    .step-number[b-oo79i4j0ae] {
        width: 24px;
        height: 24px;
        min-width: 24px;
        font-size: 0.75rem;
    }
}
/* /Components/SettingsComponents/RemoveFromCases.razor.rz.scp.css */
/* === RemoveFromCases - scoped styles === */
/* Shares the same visual pattern as ReassignCases */

.tab-child-container[b-fq26wzelde] {
    padding: 16px 0 16px;
    max-width: 1200px;
}

/* --- Header --- */

.tab-child-header[b-fq26wzelde] {
    margin-bottom: 24px;
}

.tab-child-description[b-fq26wzelde] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.92rem;
    line-height: 1.5;
    max-width: 720px;
}

/* --- Step sections --- */

.step-section[b-fq26wzelde] {
    margin-bottom: 28px;
    padding: 20px;
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    background-color: var(--lb-surface-alt);
}

.step-label[b-fq26wzelde] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    margin-bottom: 16px;
}

    .step-label h4[b-fq26wzelde] {
        margin: 0 0 2px;
        color: var(--lb-text);
        font-weight: 600;
        font-size: 1rem;
    }

.step-hint[b-fq26wzelde] {
    margin: 0;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
    line-height: 1.4;
}

.step-number[b-fq26wzelde] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    min-width: 28px;
    border-radius: 50%;
    background-color: var(--lb-brand);
    color: #fff;
    font-weight: 700;
    font-size: 0.85rem;
    margin-top: 2px;
}

/* --- Dropdowns --- */

.dropdown-row[b-fq26wzelde] {
    display: flex;
    gap: 20px;
    align-items: flex-end;
    flex-wrap: wrap;
}

.dropdown-group[b-fq26wzelde] {
    display: flex;
    flex-direction: column;
    min-width: 260px;
    flex: 1;
    max-width: 400px;
}

.field-label[b-fq26wzelde] {
    margin-bottom: 5px;
    font-weight: 500;
    color: var(--lb-text);
    font-size: 0.875rem;
}

.required-indicator[b-fq26wzelde] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.optional-label[b-fq26wzelde] {
    color: var(--lb-text-muted);
    font-weight: 400;
    font-size: 0.8rem;
}

[b-fq26wzelde] .dropdown-control {
    width: 100%;
}

/* --- Contact dropdown items --- */

.contact-item[b-fq26wzelde] {
    display: flex;
    flex-direction: column;
    padding: 4px 0;
}

.contact-name[b-fq26wzelde] {
    font-weight: 500;
    color: var(--lb-text);
}

.contact-company[b-fq26wzelde] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

/* --- Grid toolbar --- */

.grid-toolbar[b-fq26wzelde] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.selection-badge[b-fq26wzelde] {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    border-radius: 12px;
    background-color: var(--lb-brand);
    color: #fff;
    font-size: 0.8rem;
    font-weight: 600;
}

/* --- Grid --- */

.grid-section[b-fq26wzelde] {
    overflow-x: hidden;
}

/* --- Validation errors --- */

.validation-errors[b-fq26wzelde] {
    margin: 12px 0 16px;
    padding: 12px 16px;
    border: 1px solid var(--lb-danger);
    border-radius: 6px;
    background-color: #fdf0f0;
}

.validation-error-item[b-fq26wzelde] {
    color: var(--lb-danger);
    font-size: 0.875rem;
    line-height: 1.6;
}

    .validation-error-item[b-fq26wzelde]::before {
        content: "- ";
    }

/* --- Action bar --- */

.action-bar[b-fq26wzelde] {
    display: flex;
    gap: 12px;
    margin-top: 8px;
    padding-top: 16px;
    border-top: 1px solid var(--lb-border);
}

/* --- Confirmation dialog --- */

.confirm-body p[b-fq26wzelde] {
    margin: 0 0 12px;
    line-height: 1.6;
}

.confirm-warning[b-fq26wzelde] {
    color: var(--lb-danger);
    font-weight: 500;
    font-size: 0.9rem;
}

/* --- Handling warning dialog --- */

.handling-warning-banner[b-fq26wzelde] {
    padding: 12px 16px;
    border-radius: 6px;
    background-color: #fff3cd;
    border: 1px solid #ffc107;
    margin-bottom: 16px;
    font-size: 0.9rem;
    line-height: 1.5;
}

.handling-case-list[b-fq26wzelde] {
    margin: 12px 0 16px;
    padding-left: 20px;
}

    .handling-case-list li[b-fq26wzelde] {
        margin-bottom: 6px;
        font-size: 0.9rem;
        line-height: 1.4;
    }

/* --- Responsive --- */

@media (max-width: 768px) {
    .tab-child-container[b-fq26wzelde] {
        padding: 12px 0 16px;
    }

    .dropdown-row[b-fq26wzelde] {
        flex-direction: column;
        gap: 12px;
    }

    .dropdown-group[b-fq26wzelde] {
        max-width: 100%;
        min-width: 100%;
    }

    .step-section[b-fq26wzelde] {
        padding: 14px;
    }

    .action-bar[b-fq26wzelde] {
        flex-direction: column;
    }
}

@media (max-width: 576px) {
    .step-label[b-fq26wzelde] {
        gap: 10px;
    }

    .step-number[b-fq26wzelde] {
        width: 24px;
        height: 24px;
        min-width: 24px;
        font-size: 0.75rem;
    }
}
/* /Components/SettingsComponents/SystemSettingsAdmin.razor.rz.scp.css */
/* ============================================================================
   SystemSettingsAdmin -- Admin-visible system settings management
   ============================================================================ */

.sys-settings-container[b-qfjn692fh2] {
    max-width: 860px;
    margin: 0 auto;
    padding: 1.5rem;
}

.sys-settings-header[b-qfjn692fh2] {
    display: flex;
    align-items: flex-start;
    gap: 0.75rem;
    margin-bottom: 1.5rem;
    padding: 1.25rem;
    background: var(--lb-bg-surface);
    border-radius: var(--lb-radius-card);
    border-left: 4px solid var(--lb-brand);
    box-shadow: var(--lb-shadow);
}

.sys-settings-icon[b-qfjn692fh2] {
    font-size: 1.75rem;
    color: var(--lb-brand);
    margin-top: 0.15rem;
    flex-shrink: 0;
}

.sys-settings-title[b-qfjn692fh2] {
    margin: 0 0 0.25rem 0;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--lb-text-bright);
}

.sys-settings-subtitle[b-qfjn692fh2] {
    margin: 0;
    font-size: 0.875rem;
    line-height: 1.5;
    color: var(--lb-text-muted);
}

.sys-settings-subtitle strong[b-qfjn692fh2] {
    color: var(--lb-text);
}

.sys-settings-subtitle .e-icons[b-qfjn692fh2] {
    font-size: 0.8rem;
    color: var(--lb-brand);
}

.sys-settings-loading[b-qfjn692fh2] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 2rem;
    min-height: 120px;
}

.sys-settings-empty[b-qfjn692fh2] {
    text-align: center;
    padding: 3rem 1rem;
    color: var(--lb-text-muted);
}

.sys-settings-empty-icon[b-qfjn692fh2] {
    font-size: 2.5rem;
    color: var(--lb-text-muted);
    display: block;
    margin-bottom: 0.75rem;
}

.sys-settings-info-icon[b-qfjn692fh2] {
    font-size: 1rem;
    color: var(--lb-brand);
    cursor: help;
}

.sys-settings-info-button[b-qfjn692fh2] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    background: transparent;
    border-radius: 999px;
}

.sys-settings-info-button:focus-visible[b-qfjn692fh2] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
}

.sys-settings-value-editor[b-qfjn692fh2] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
}

.sys-settings-editor-hint[b-qfjn692fh2] {
    font-size: 0.875rem;
    line-height: 1.35;
    color: var(--lb-text-muted);
}
/* /Components/Shared/ActionQueue.razor.rz.scp.css */
/* -- Dashboard "Needs You" action queue -- */

.needs-you-card[b-vx1kbo4a8l] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 12px;
    overflow: hidden;
}

.needs-you-header[b-vx1kbo4a8l] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border-light);
    background: var(--lb-bg-surface);
}

.needs-you-title[b-vx1kbo4a8l] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lb-text);
}

.needs-you-count[b-vx1kbo4a8l] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 7px;
    border-radius: 11px;
    font-size: 0.72rem;
    font-weight: 700;
    background: var(--lb-brand);
    color: #fff;
}

.needs-you-meta[b-vx1kbo4a8l] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.needs-you-updated[b-vx1kbo4a8l] {
    font-size: 0.72rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
}

.needs-you-body[b-vx1kbo4a8l] {
    padding: 4px 0;
}

.needs-you-loading[b-vx1kbo4a8l] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 120px;
}

/* -- Empty (caught up) state -- */
.needs-you-empty[b-vx1kbo4a8l] {
    padding: 20px 14px;
    text-align: center;
}

.needs-you-empty-title[b-vx1kbo4a8l] {
    margin: 0;
    font-weight: 700;
    color: var(--lb-text);
}

.needs-you-empty-sub[b-vx1kbo4a8l] {
    margin: 2px 0 0;
    font-size: 0.82rem;
    color: var(--lb-text-dim);
}

/* -- Item list -- */
.needs-you-list[b-vx1kbo4a8l] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.needs-you-item[b-vx1kbo4a8l] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border-light);
}

.needs-you-item:last-child[b-vx1kbo4a8l] {
    border-bottom: none;
}

.needs-you-item.is-actionable[b-vx1kbo4a8l] {
    cursor: pointer;
    transition: background-color 0.12s ease;
}

.needs-you-item.is-actionable:hover[b-vx1kbo4a8l] {
    background: var(--lb-bg-surface);
}

.needs-you-item.is-actionable:focus-visible[b-vx1kbo4a8l] {
    outline: 2px solid var(--lb-brand);
    outline-offset: -2px;
}

/* -- Severity chip: colored dot + text label (not color-only) -- */
.sev-chip[b-vx1kbo4a8l] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
    min-width: 74px;
    padding: 2px 8px;
    border-radius: 12px;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.sev-dot[b-vx1kbo4a8l] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    flex-shrink: 0;
}

.sev-crit[b-vx1kbo4a8l]  { background: var(--lb-danger-bg);  color: var(--lb-danger); }
.sev-crit .sev-dot[b-vx1kbo4a8l]  { background: var(--lb-danger); }

.sev-today[b-vx1kbo4a8l] { background: var(--lb-warning-bg); color: var(--lb-warning); }
.sev-today .sev-dot[b-vx1kbo4a8l] { background: var(--lb-warning); }

.sev-soon[b-vx1kbo4a8l]  { background: var(--lb-info-bg);    color: var(--lb-info); }
.sev-soon .sev-dot[b-vx1kbo4a8l]  { background: var(--lb-info); }

/* -- Item text -- */
.needs-you-info[b-vx1kbo4a8l] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.needs-you-item-title[b-vx1kbo4a8l] {
    font-size: 0.86rem;
    font-weight: 600;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.needs-you-item-reason[b-vx1kbo4a8l] {
    font-size: 0.76rem;
    color: var(--lb-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.needs-you-complete-wrap[b-vx1kbo4a8l] {
    flex-shrink: 0;
    display: inline-flex;
}

/* Navigational rows (SOL, case health, leads, SMS) carry no completion action. Say so in the
   same trailing slot the "Mark complete" button occupies, so its absence reads as intentional
   rather than as a button that failed to render (#3358). */
.needs-you-open[b-vx1kbo4a8l] {
    flex-shrink: 0;
    font-size: 0.72rem;
    font-weight: 600;
    color: var(--lb-text-dim);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.needs-you-item.is-actionable:hover .needs-you-open[b-vx1kbo4a8l] {
    color: var(--lb-brand);
}

/* -- View all / Show less footer (now a <button> that expands the list in place) -- */
.needs-you-viewall[b-vx1kbo4a8l] {
    display: block;
    width: 100%;
    padding: 8px 12px;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-brand);
    text-align: left;
    text-decoration: none;
    border: none;
    border-top: 1px solid var(--lb-border-light);
    background: none;
    cursor: pointer;
}

.needs-you-viewall:hover[b-vx1kbo4a8l] {
    text-decoration: underline;
}

@media (max-width: 576px) {
    .sev-chip[b-vx1kbo4a8l] {
        min-width: 0;
    }
}
/* /Components/Shared/ActivityLogView.razor.rz.scp.css */
/* -- ActivityLogView scoped styles -- */
/* -- Record-grouped audit view: one expandable card per user action -- */
/* -- All comments ASCII only -- */

.alv-root[b-17z4m6ef9c] {
    display: flex;
    flex-direction: column;
    min-height: 0;
}

/* -- Toolbar: record count + expand/collapse all -- */
.alv-toolbar[b-17z4m6ef9c] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 0 2px 8px;
}

.alv-count[b-17z4m6ef9c] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

.alv-expand-all[b-17z4m6ef9c] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: transparent;
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 4px 10px;
    color: var(--lb-text);
    font-size: 0.78rem;
    cursor: pointer;
}

.alv-expand-all:hover[b-17z4m6ef9c] {
    background: var(--lb-surface-alt);
}

/* -- Card list -- */
.alv-list[b-17z4m6ef9c] {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.alv-card[b-17z4m6ef9c] {
    border: 1px solid var(--lb-border);
    border-left: 3px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    overflow: hidden;
}

.alv-card-added[b-17z4m6ef9c] {
    border-left-color: var(--lb-success);
}

.alv-card-updated[b-17z4m6ef9c] {
    border-left-color: var(--lb-info);
}

.alv-card-removed[b-17z4m6ef9c] {
    border-left-color: var(--lb-danger);
}

/* -- Card header (summary row) -- */
.alv-card-head[b-17z4m6ef9c] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 12px;
}

.alv-clickable[b-17z4m6ef9c] {
    cursor: pointer;
}

.alv-clickable:hover[b-17z4m6ef9c] {
    background: var(--lb-surface-alt);
}

.alv-clickable:focus-visible[b-17z4m6ef9c] {
    outline: 2px solid var(--lb-focus-ring);
    outline-offset: -2px;
}

.alv-caret[b-17z4m6ef9c] {
    flex: 0 0 16px;
    width: 16px;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

.alv-caret-dot[b-17z4m6ef9c] {
    color: var(--lb-text-dim);
    font-size: 0.7rem;
}

/* -- Action pill -- */
.alv-action-badge[b-17z4m6ef9c] {
    flex: 0 0 auto;
    display: inline-block;
    padding: 1px 8px;
    border-radius: 10px;
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.alv-badge-added[b-17z4m6ef9c] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
}

.alv-badge-updated[b-17z4m6ef9c] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.alv-badge-removed[b-17z4m6ef9c] {
    background: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.alv-badge-neutral[b-17z4m6ef9c] {
    background: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

/* -- Record headline -- */
.alv-record-label[b-17z4m6ef9c] {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: 600;
    color: var(--lb-text);
    font-size: 0.85rem;
}

/* -- Right-side meta (who / when / count) -- */
.alv-meta[b-17z4m6ef9c] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 12px;
    color: var(--lb-text-muted);
    font-size: 0.78rem;
    white-space: nowrap;
}

.alv-user[b-17z4m6ef9c] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.alv-user-icon[b-17z4m6ef9c] {
    font-size: 0.72rem;
}

.alv-when[b-17z4m6ef9c] {
    color: var(--lb-text-muted);
}

.alv-change-count[b-17z4m6ef9c] {
    color: var(--lb-text-dim);
}

/* -- Expanded field-change detail -- */
.alv-detail[b-17z4m6ef9c] {
    padding: 4px 12px 12px 34px;
    border-top: 1px solid var(--lb-border-light);
    background: var(--lb-surface-alt);
}

.alv-change[b-17z4m6ef9c] {
    display: flex;
    gap: 10px;
    align-items: baseline;
    padding: 4px 0;
    font-size: 0.82rem;
    line-height: 1.4;
}

.alv-field[b-17z4m6ef9c] {
    flex: 0 0 140px;
    color: var(--lb-text-muted);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.alv-values[b-17z4m6ef9c] {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    gap: 6px;
    align-items: baseline;
    flex-wrap: wrap;
}

.alv-before[b-17z4m6ef9c] {
    color: var(--lb-text-muted);
    text-decoration: line-through;
    word-break: break-word;
}

.alv-after[b-17z4m6ef9c] {
    color: var(--lb-text);
    word-break: break-word;
}

.alv-arrow[b-17z4m6ef9c] {
    color: var(--lb-text-dim);
    font-size: 0.7rem;
}

/* -- Empty state -- */
.alv-empty[b-17z4m6ef9c] {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 40px 20px;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

.alv-empty-icon[b-17z4m6ef9c] {
    font-size: 2rem;
    color: var(--lb-text-dim);
}

/* -- Responsive: stack the meta under the headline on small viewports -- */
@media (max-width: 768px) {
    .alv-card-head[b-17z4m6ef9c] {
        flex-wrap: wrap;
    }

    .alv-record-label[b-17z4m6ef9c] {
        flex: 1 1 100%;
        order: 2;
        white-space: normal;
    }

    .alv-meta[b-17z4m6ef9c] {
        flex: 1 1 100%;
        order: 3;
        justify-content: flex-start;
        flex-wrap: wrap;
        gap: 8px;
    }

    .alv-detail[b-17z4m6ef9c] {
        padding-left: 16px;
    }

    .alv-field[b-17z4m6ef9c] {
        flex-basis: 110px;
    }
}

/* -- Explicit mobile hint from the host (mirrors the media query) -- */
.alv-mobile .alv-card-head[b-17z4m6ef9c] {
    flex-wrap: wrap;
}

.alv-mobile .alv-record-label[b-17z4m6ef9c] {
    flex: 1 1 100%;
    order: 2;
    white-space: normal;
}

.alv-mobile .alv-meta[b-17z4m6ef9c] {
    flex: 1 1 100%;
    order: 3;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 8px;
}

.alv-mobile .alv-detail[b-17z4m6ef9c] {
    padding-left: 16px;
}
/* /Components/Shared/AddNewDropDown.razor.rz.scp.css */
.add-new-dropdown[b-7gcezcsoee] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.add-new-dropdown > label[b-7gcezcsoee] {
    font-weight: 500;
}

.add-new-dropdown-row[b-7gcezcsoee] {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-7gcezcsoee] .add-new-dropdown-row > .e-ddl {
    flex: 1 1 auto;
    min-width: 0;
}

[b-7gcezcsoee] .add-new-toggle {
    flex: 0 0 auto;
}

.add-new-dropdown-panel[b-7gcezcsoee] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 4px;
}

[b-7gcezcsoee] .add-new-input {
    flex: 1 1 auto;
    min-width: 0;
}

.add-new-error[b-7gcezcsoee] {
    color: var(--lb-danger, #c0392b);
    font-size: 12px;
}
/* /Components/Shared/AiCaseSummary.razor.rz.scp.css */
/* === AiCaseSummary -- scoped styles === */

.ai-summary-card[b-oe0yj99s83] {
    border: 1px solid rgba(107, 92, 160, 0.25);
    border-radius: 6px;
    background: rgba(107, 92, 160, 0.04);
    padding: 12px 16px;
    /* Top gap so the summary bubble isn't jammed under the case tab strip on the Overview tab. */
    margin-top: 12px;
    margin-bottom: 12px;
}

.ai-summary-header[b-oe0yj99s83] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}

.ai-summary-icon[b-oe0yj99s83] {
    color: var(--lb-purple);
    font-size: 16px;
    flex-shrink: 0;
}

.ai-summary-title[b-oe0yj99s83] {
    font-weight: 700;
    font-size: 0.8rem;
    color: var(--lb-purple);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.ai-summary-refresh[b-oe0yj99s83] {
    margin-left: auto;
    font-size: 0.75rem;
    color: var(--lb-brand);
    text-decoration: none;
    display: flex;
    align-items: center;
    gap: 4px;
    white-space: nowrap;
}

    .ai-summary-refresh:hover[b-oe0yj99s83] {
        text-decoration: underline;
    }

.ai-summary-body[b-oe0yj99s83] {
    font-size: 0.9rem;
    line-height: 1.6;
    color: var(--lb-text);
}

.ai-summary-text[b-oe0yj99s83] {
    margin: 0;
    font-weight: 600;
    color: var(--lb-text);
}

.ai-summary-placeholder[b-oe0yj99s83] {
    margin: 0;
    color: var(--lb-text-muted);
    font-style: italic;
}

.ai-summary-error[b-oe0yj99s83] {
    margin: 0;
    color: var(--lb-danger);
    font-style: italic;
}
/* /Components/Shared/AiDisclaimerBanner.razor.rz.scp.css */
/* --------------------------------------------------------
   AI Disclaimer Banner — Tier 2 (info) and Tier 3 (caution)
   Not a Syncfusion popup, so scoped CSS reaches it fine.
   -------------------------------------------------------- */

.ai-disclaimer-banner[b-gl0usnuk18] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.4rem 0.75rem;
    border-radius: var(--lb-radius-card);
    font-size: 0.82rem;
    line-height: 1.4;
    margin-bottom: 0.75rem;
}

.ai-disclaimer-banner--info[b-gl0usnuk18] {
    background: var(--lb-info-bg, #E3F2FD);
    color: var(--lb-info-text, #1565C0);
    border: 1px solid var(--lb-info-border, #90CAF9);
}

.ai-disclaimer-banner--caution[b-gl0usnuk18] {
    background: var(--lb-warning-bg, #FFF3E0);
    color: var(--lb-warning-text, #E65100);
    border: 1px solid var(--lb-warning-border, #FFCC80);
}

.ai-disclaimer-banner__icon[b-gl0usnuk18] {
    font-size: 1rem;
    flex-shrink: 0;
}

.ai-disclaimer-banner__text[b-gl0usnuk18] {
    flex: 1;
    /* Firm banner text is plain text from a textarea — honor its line breaks. */
    white-space: pre-line;
}
/* /Components/Shared/AiSuggestionsPanel.razor.rz.scp.css */
/* ============================================================
   AiSuggestionsPanel.razor.css -- Scoped styles for AI panel
   ============================================================ */

.ai-panel[b-1lfwf42hbi] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    background: var(--lb-card);
    margin-top: 12px;
    overflow: hidden;
}

/* Rendered as a <button> for keyboard accessibility (focusable, Enter/Space
   activate). The resets below strip native button chrome so it keeps the
   original full-width header appearance. */
.ai-panel-header[b-1lfwf42hbi] {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    padding: 10px 14px;
    cursor: pointer;
    background: var(--lb-surface-alt);
    border: none;
    border-bottom: 1px solid var(--lb-border);
    text-align: left;
    font: inherit;
    color: inherit;
    user-select: none;
}

.ai-panel-header:hover[b-1lfwf42hbi] {
    background: var(--lb-elevated);
}

.ai-panel-header:focus-visible[b-1lfwf42hbi] {
    outline: 2px solid var(--lb-brand);
    outline-offset: -2px;
}

.ai-panel-icon[b-1lfwf42hbi] {
    font-size: 1rem;
    color: var(--lb-brand);
}

.ai-panel-title[b-1lfwf42hbi] {
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--lb-text);
}

.ai-panel-chevron[b-1lfwf42hbi] {
    margin-left: auto;
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    transition: transform 0.2s ease;
}

.ai-panel-chevron.expanded[b-1lfwf42hbi] {
    transform: rotate(180deg);
}

.ai-panel-body[b-1lfwf42hbi] {
    padding: 14px;
}

/* --- Intro / empty state --- */
.ai-panel-intro[b-1lfwf42hbi],
.ai-panel-empty[b-1lfwf42hbi] {
    text-align: center;
    padding: 20px 8px;
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

.ai-panel-empty-icon[b-1lfwf42hbi] {
    font-size: 1.75rem;
    color: var(--lb-success);
    display: block;
    margin-bottom: 8px;
}

.ai-panel-empty-title[b-1lfwf42hbi] {
    margin: 0 0 4px !important;
    font-weight: 600;
    color: var(--lb-text);
}

.ai-panel-empty-subtitle[b-1lfwf42hbi] {
    margin: 0 !important;
    color: var(--lb-text-muted);
}

.ai-panel-intro p[b-1lfwf42hbi],
.ai-panel-empty p[b-1lfwf42hbi] {
    margin: 0 0 12px;
}

/* --- Generate button ---
   Rendered via SfButton (emits .e-btn). The .e-btn compound selector and
   ::deep let these scoped rules override the Syncfusion theme defaults so the
   original brand-filled appearance is preserved. */
[b-1lfwf42hbi] .e-btn.ai-generate-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1px solid var(--lb-brand);
    border-radius: 4px;
    background: var(--lb-brand);
    color: #fff;
    font-size: 0.85rem;
    font-weight: 500;
    text-transform: none;
    box-shadow: none;
    cursor: pointer;
    transition: background 0.15s ease;
}

[b-1lfwf42hbi] .e-btn.ai-generate-btn:hover:not(:disabled) {
    background: var(--lb-brand-hover);
    border-color: var(--lb-brand-hover);
    color: #fff;
}

[b-1lfwf42hbi] .e-btn.ai-generate-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

[b-1lfwf42hbi] .e-btn.ai-generate-btn.ai-btn-small {
    padding: 4px 10px;
    font-size: 0.75rem;
}

/* --- Loading --- */
.ai-panel-loading[b-1lfwf42hbi] {
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px 8px;
    color: var(--lb-text-muted);
    font-size: 0.9rem;
}

/* --- Error --- */
.ai-panel-error[b-1lfwf42hbi] {
    text-align: center;
    padding: 16px 8px;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

.ai-panel-error p[b-1lfwf42hbi] {
    margin: 0 0 12px;
}

/* --- Suggestion list ---
   Cap the list height so a long set of suggestions (6+) doesn't push
   the kanban/grid below it off-screen or get hidden behind sibling
   flex children. The list scrolls internally; the surrounding page
   layout stays stable. */
.ai-suggestions-list[b-1lfwf42hbi] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-height: 420px;
    overflow-y: auto;
    padding-right: 4px;
}

/* --- Suggestion card --- */
.ai-suggestion-card[b-1lfwf42hbi] {
    border: 1px solid var(--lb-border);
    border-radius: 5px;
    padding: 10px 12px;
    background: var(--lb-card);
    transition: border-color 0.15s ease;
}

.ai-suggestion-card:hover[b-1lfwf42hbi] {
    border-color: var(--lb-brand);
}

.ai-suggestion-header[b-1lfwf42hbi] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

.ai-suggestion-urgency[b-1lfwf42hbi] {
    font-size: 0.6rem;
    font-weight: 700;
    text-transform: uppercase;
    padding: 2px 6px;
    border-radius: 3px;
    white-space: nowrap;
    letter-spacing: 0.03em;
}

.urgency-high[b-1lfwf42hbi] {
    background: var(--lb-danger);
    color: #fff;
}

.urgency-normal[b-1lfwf42hbi] {
    background: var(--lb-brand);
    color: #fff;
}

.urgency-low[b-1lfwf42hbi] {
    background: var(--lb-text-muted);
    color: #fff;
}

.ai-suggestion-title[b-1lfwf42hbi] {
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--lb-text);
}

.ai-suggestion-reason[b-1lfwf42hbi] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
    margin: 4px 0 8px;
    line-height: 1.4;
}

.ai-suggestion-meta[b-1lfwf42hbi] {
    display: flex;
    align-items: center;
    gap: 16px;
    font-size: 0.72rem;
    color: var(--lb-text-muted);
    margin-bottom: 8px;
}

/* --- Action buttons --- */
.ai-suggestion-actions[b-1lfwf42hbi] {
    display: flex;
    gap: 8px;
}

/* Rendered via SfButton; .e-btn + ::deep override the Syncfusion theme so
   the original flat accept/dismiss appearance is preserved. */
[b-1lfwf42hbi] .e-btn.ai-btn {
    padding: 4px 12px;
    border-radius: 3px;
    font-size: 0.78rem;
    font-weight: 500;
    text-transform: none;
    box-shadow: none;
    cursor: pointer;
    border: 1px solid transparent;
    transition: background 0.15s ease;
}

[b-1lfwf42hbi] .e-btn.ai-btn-accept {
    background: var(--lb-brand);
    color: #fff;
    border-color: var(--lb-brand);
}

[b-1lfwf42hbi] .e-btn.ai-btn-accept:hover {
    background: var(--lb-brand-hover);
    border-color: var(--lb-brand-hover);
    color: #fff;
}

[b-1lfwf42hbi] .e-btn.ai-btn-dismiss {
    background: transparent;
    color: var(--lb-text-muted);
    border-color: var(--lb-border);
}

[b-1lfwf42hbi] .e-btn.ai-btn-dismiss:hover {
    background: var(--lb-elevated);
    color: var(--lb-text);
}

/* --- Footer --- */
.ai-panel-footer[b-1lfwf42hbi] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 12px;
    padding-top: 10px;
    border-top: 1px solid var(--lb-border);
}

.ai-panel-timing[b-1lfwf42hbi] {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
}

/* --- Responsive --- */
@media (max-width: 576px) {
    .ai-suggestion-meta[b-1lfwf42hbi] {
        flex-direction: column;
        gap: 2px;
    }

    .ai-suggestion-actions[b-1lfwf42hbi] {
        flex-direction: column;
    }

    [b-1lfwf42hbi] .e-btn.ai-btn {
        width: 100%;
        text-align: center;
    }
}

/* Footer buttons wrap on a phone instead of a non-wrapping flex row --
   without this they overflowed and shrank to clipped circles, the June
   cut-off-buttons class (#1584) the global .e-footer-content fix missed. */
@media (max-width: 767.98px) {
    .ai-panel-footer[b-1lfwf42hbi] {
        flex-wrap: wrap;
    }
}
/* /Components/Shared/AiTermsGate.razor.rz.scp.css */
/* Gate placeholder shown until the user acknowledges the AI terms.
   Regular DOM (not a Syncfusion popup), so scoped CSS applies. */

.ai-terms-gate-placeholder[b-62m0o061jt] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.5rem;
    padding: 1.25rem 1rem;
    border: 1px dashed var(--lb-info-border, #90CAF9);
    border-radius: var(--lb-radius-card);
    background: var(--lb-info-bg, #E3F2FD);
    text-align: center;
}

.ai-terms-gate-placeholder .e-icons[b-62m0o061jt] {
    font-size: 1.4rem;
    color: var(--lb-info-text, #1565C0);
}

.ai-terms-gate-placeholder p[b-62m0o061jt] {
    margin: 0;
    font-size: 0.88rem;
    color: var(--lb-info-text, #1565C0);
}

/* Inline acknowledgment (no modal — for unmountable-subtree hosts). */

.ai-terms-gate-inline[b-62m0o061jt] {
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    padding: 1rem;
    border: 1px solid var(--lb-info-border, #90CAF9);
    border-radius: var(--lb-radius-card);
    background: var(--lb-info-bg, #E3F2FD);
    overflow-y: auto;
}

.ai-terms-gate-inline__heading[b-62m0o061jt] {
    margin: 0;
    font-weight: 700;
    font-size: 0.95rem;
}

.ai-terms-gate-inline__text[b-62m0o061jt] {
    white-space: pre-line;
    font-size: 0.85rem;
    line-height: 1.5;
    max-height: 40vh;
    overflow-y: auto;
    /* Token-based fg on the token bg — a white overlay here was unreadable in
       dark mode (dark text inherited over a translucent light wash). */
    color: var(--lb-info-text, #2E5A85);
    background: transparent;
    border-radius: 4px;
    padding: 0.6rem 0;
}

.ai-terms-gate-inline__error[b-62m0o061jt] {
    padding: 0.5rem 0.75rem;
    border-radius: 6px;
    background: var(--lb-warning-bg, #FFF3E0);
    color: #B71C1C;
    border: 1px solid var(--lb-warning-border, #FFCC80);
    font-size: 0.85rem;
}
/* /Components/Shared/CalendarAgendaGrid.razor.rz.scp.css */
/* -- CalendarAgendaGrid scoped styles -- */

.agenda-grid-container[b-zsvyy5unth] {
    --agenda-color-0: #dc2626;
    --agenda-color-1: #2563eb;
    --agenda-color-2: #16a34a;
    --agenda-color-3: #7c3aed;
    --agenda-color-4: #0891b2;
    --agenda-color-5: #d97706;
    --agenda-color-6: #be185d;
    --agenda-color-7: #6b7280;
    --agenda-color--1: var(--lb-brand);
    width: 100%;
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

/* Ensure the Syncfusion grid stretches to fill the container */
[b-zsvyy5unth] .e-grid {
    flex: 1 1 0;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

[b-zsvyy5unth] .e-grid .e-gridcontent {
    flex: 1 1 0;
    min-height: 0;
    overflow: auto;
}

[b-zsvyy5unth] .agenda-group-header {
    font-size: 0.85rem;
    font-weight: 700;
    color: var(--lb-text);
}

.agenda-color-bar[b-zsvyy5unth] {
    width: 4px;
    min-height: 100%;
    border-radius: 2px;
}

.agenda-activity-badge[b-zsvyy5unth] {
    display: inline-block;
    font-size: 0.7rem;
    font-weight: 700;
    color: #fff;
    padding: 1px 6px;
    border-radius: 4px;
    margin-right: 6px;
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.agenda-location-text[b-zsvyy5unth] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

.agenda-time-stack[b-zsvyy5unth] {
    display: flex;
    flex-direction: column;
    font-size: 0.82rem;
    font-weight: 600;
    line-height: 1.3;
}

.agenda-time-end[b-zsvyy5unth] {
    font-weight: 400;
    color: var(--lb-text-muted);
}

.agenda-allday[b-zsvyy5unth] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    color: var(--lb-danger);
}

.agenda-description-main[b-zsvyy5unth] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text);
    margin-bottom: 2px;
}

.agenda-description-sub[b-zsvyy5unth] {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.agenda-file-number[b-zsvyy5unth] {
    font-size: 0.82rem;
    color: var(--lb-text-muted);
}

.agenda-file-none[b-zsvyy5unth] {
    color: var(--lb-border);
}

.agenda-priority-high[b-zsvyy5unth] {
    font-size: 0.7rem;
    font-weight: 700;
    color: var(--lb-danger);
    text-transform: uppercase;
}

.agenda-priority-low[b-zsvyy5unth] {
    font-size: 0.7rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}

.agenda-sync-dot[b-zsvyy5unth] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    margin-left: 4px;
}

.agenda-sync-synced[b-zsvyy5unth] {
    background: var(--lb-success);
}

.agenda-sync-pending[b-zsvyy5unth] {
    background: var(--lb-warning);
}

.agenda-sync-failed[b-zsvyy5unth] {
    background: var(--lb-danger);
}

.agenda-indicators[b-zsvyy5unth] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 4px;
}
/* /Components/Shared/CalendarEventPreview.razor.rz.scp.css */
/* === CalendarEventPreview -- scoped styles === */

.preview-panel[b-l5h7j3lmnn] {
    width: 340px;
    min-width: 340px;
    height: 100%;
    background: var(--lb-card);
    display: flex;
    flex-direction: column;
    transform: translateX(100%);
    transition: transform 200ms ease-out;
    overflow: hidden;
    border-top: 1px solid var(--lb-border);
    border-bottom: 1px solid var(--lb-border);
    border-right: 1px solid var(--lb-border);
}

.preview-panel.preview-visible[b-l5h7j3lmnn] {
    transform: translateX(0);
}

/* Header */
.preview-header[b-l5h7j3lmnn] {
    padding: 12px 14px;
    border-bottom: 1px solid var(--lb-border);
}

.preview-header-top[b-l5h7j3lmnn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.preview-activity-label[b-l5h7j3lmnn] {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.preview-close-btn[b-l5h7j3lmnn] {
    background: none;
    border: none;
    cursor: pointer;
    color: var(--lb-text-muted);
    padding: 4px;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.preview-close-btn:hover[b-l5h7j3lmnn] {
    background: var(--lb-active-bg);
    color: var(--lb-text);
}

.preview-event-title[b-l5h7j3lmnn] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--lb-text);
    margin-top: 6px;
    line-height: 1.3;
}

/* Scrollable body */
.preview-body[b-l5h7j3lmnn] {
    flex: 1;
    overflow-y: auto;
    padding: 12px 14px;
}

/* Section */
.preview-section[b-l5h7j3lmnn] {
    margin-bottom: 14px;
}

.preview-label[b-l5h7j3lmnn] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    margin-bottom: 3px;
}

.preview-muted[b-l5h7j3lmnn] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

/* Case link */
.preview-case-link[b-l5h7j3lmnn] {
    color: var(--lb-brand);
    cursor: pointer;
    font-weight: 600;
    font-size: 0.9rem;
}

.preview-case-link:hover[b-l5h7j3lmnn] {
    text-decoration: underline;
}

/* Attendee pills */
.preview-pills[b-l5h7j3lmnn] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
}

.preview-pill[b-l5h7j3lmnn] {
    background: var(--lb-active-bg);
    border-radius: 12px;
    padding: 2px 10px;
    font-size: 0.78rem;
    color: var(--lb-text);
    white-space: nowrap;
}

/* Notes box */
.preview-note-box[b-l5h7j3lmnn] {
    background: var(--lb-active-bg);
    border-radius: 6px;
    padding: 8px 10px;
    font-size: 0.85rem;
    color: var(--lb-text);
    white-space: pre-wrap;
    word-break: break-word;
}

/* Priority */
.preview-priority-high[b-l5h7j3lmnn] {
    color: var(--lb-danger);
    font-weight: 600;
    font-size: 0.85rem;
}

.preview-priority-low[b-l5h7j3lmnn] {
    color: var(--lb-text-muted);
    font-size: 0.85rem;
}

/* Sync status */
.preview-sync[b-l5h7j3lmnn] {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.85rem;
}

.preview-sync-dot[b-l5h7j3lmnn] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
    flex-shrink: 0;
}

.sync-dot-synced[b-l5h7j3lmnn] {
    background: var(--lb-success);
}

.sync-dot-pending[b-l5h7j3lmnn] {
    background: var(--lb-warning);
}

.sync-dot-failed[b-l5h7j3lmnn] {
    background: var(--lb-danger);
}

/* Action buttons */
.preview-actions[b-l5h7j3lmnn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-top: 1px solid var(--lb-border);
    gap: 6px;
}

.preview-actions-left[b-l5h7j3lmnn] {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}

.preview-actions-right[b-l5h7j3lmnn] {
    margin-left: auto;
}
/* /Components/Shared/CaseBannerContext.razor.rz.scp.css */
/* -- CaseBannerContext -- scoped styles -- */

/* Left-aligned: forms row 2 of the compact case header (spec:
   case-header-compact), directly under the identity row. The header
   card supplies the horizontal padding. */
.banner-context[b-pgm9y1zs6e] {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: wrap;
    gap: 4px 4px;
    padding: 2px 0 4px;
    font-size: 0.82rem;
    line-height: 1.4;
}

/* -- Dot separator between elements -- */
.dot-sep[b-pgm9y1zs6e] {
    display: inline-block;
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--lb-text-dim);
    flex-shrink: 0;
    margin: 0 4px;
}

/* -- Case type: chip + case-type code held together as one unit, so the
   flex-wrap never splits "PI" from "PREMLIAB" onto separate lines. -- */
.type-group[b-pgm9y1zs6e] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

/* The case-type code itself. Carries normal text color and a heavier weight than
   the muted meta labels around it: knowing the case type at a glance is the
   point of the row, so it should not read as secondary detail. */
.case-type-name[b-pgm9y1zs6e] {
    color: var(--lb-text);
    font-weight: 600;
}

/* -- Case type chip -- */
.type-chip[b-pgm9y1zs6e] {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 700;
    padding: 1px 10px;
    border-radius: 10px;
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.chip-wc[b-pgm9y1zs6e] {
    background: var(--lb-info-bg);
    color: var(--lb-info);
    border: 1px solid var(--lb-info);
}

.chip-pi[b-pgm9y1zs6e] {
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    border: 1px solid var(--lb-warning);
}

/* -- Muted text labels -- */
.muted-label[b-pgm9y1zs6e] {
    color: var(--lb-text-muted);
}

/* -- Workflow stage badge -- */
.stage-badge[b-pgm9y1zs6e] {
    display: inline-block;
    font-size: 0.72rem;
    font-weight: 600;
    padding: 1px 8px;
    border-radius: 10px;
    background: var(--lb-purple-bg);
    color: var(--lb-purple);
}

/* -- Team member group -- */
.team-group[b-pgm9y1zs6e] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}

.team-member[b-pgm9y1zs6e] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    cursor: default;
}

.avatar-circle[b-pgm9y1zs6e] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 50%;
    font-size: 0.65rem;
    font-weight: 700;
    color: var(--lb-bg-white);
    flex-shrink: 0;
    letter-spacing: 0.02em;
}

.avatar-primary[b-pgm9y1zs6e] {
    background: var(--lb-brand);
}

.avatar-purple[b-pgm9y1zs6e] {
    background: var(--lb-purple);
}

.avatar-muted[b-pgm9y1zs6e] {
    background: var(--lb-text-muted);
}

.member-name[b-pgm9y1zs6e] {
    color: var(--lb-text);
    font-weight: 500;
}

/* -- SOL countdown -- */
.sol-label[b-pgm9y1zs6e] {
    color: var(--lb-text-muted);
}

.sol-warning[b-pgm9y1zs6e] {
    color: var(--lb-warning);
    font-weight: 700;
}

.sol-expired[b-pgm9y1zs6e] {
    color: var(--lb-danger);
    font-weight: 700;
}

/* #3415: suit filed on time — the statute is satisfied, so this is a settled fact,
   not an exposure. Success-colored and only semi-bold: it has to read as clearly
   NOT-red without shouting, since it is on screen for the life of the file. Matches
   the KeyDatesStrip "Filed" chip's color token; no chip background here because the
   surrounding banner row is plain text. */
.sol-filed[b-pgm9y1zs6e] {
    color: var(--lb-success);
    font-weight: 600;
}

/* SOL lookup failed (issue #676) — danger-colored so a missing legally-significant
   deadline is never mistaken for "no SOL on file". */
.sol-unavailable[b-pgm9y1zs6e] {
    color: var(--lb-danger);
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}

.sol-unavailable .e-icons[b-pgm9y1zs6e] {
    font-size: 12px;
}

/* -- Responsive: hide avatar circles below 576px, show names only -- */
@media (max-width: 576px) {
    .hide-mobile[b-pgm9y1zs6e] {
        display: none;
    }
}
/* /Components/Shared/CaseCommsPanel.razor.rz.scp.css */
/* -- Case Communications panel (awareness; lighter weight than the action queue) -- */

.comms-card[b-pv60y0ulzw] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-radius: 8px;
    margin-bottom: 12px;
    overflow: hidden;
}

.comms-header[b-pv60y0ulzw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    border-bottom: 1px solid var(--lb-border-light);
    background: var(--lb-bg-surface);
}

.comms-title[b-pv60y0ulzw] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lb-text);
}

.comms-count[b-pv60y0ulzw] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 22px;
    height: 22px;
    padding: 0 7px;
    border-radius: 11px;
    font-size: 0.72rem;
    font-weight: 700;
    background: var(--lb-info);
    color: #fff;
}

.comms-meta[b-pv60y0ulzw] {
    display: flex;
    align-items: center;
    gap: 8px;
}

.comms-updated[b-pv60y0ulzw] {
    font-size: 0.72rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
}

.comms-body[b-pv60y0ulzw] {
    padding: 4px 0;
}

.comms-loading[b-pv60y0ulzw] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100px;
}

.comms-empty[b-pv60y0ulzw] {
    padding: 18px 14px;
    text-align: center;
}

.comms-empty-title[b-pv60y0ulzw] {
    margin: 0;
    font-weight: 700;
    color: var(--lb-text);
}

.comms-empty-sub[b-pv60y0ulzw] {
    margin: 2px 0 0;
    font-size: 0.82rem;
    color: var(--lb-text-dim);
}

/* -- Per-channel section -- */
.comms-section[b-pv60y0ulzw] {
    border-bottom: 1px solid var(--lb-border-light);
}

.comms-section:last-child[b-pv60y0ulzw] {
    border-bottom: none;
}

.comms-section-head[b-pv60y0ulzw] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    background: var(--lb-bg-surface);
}

.comms-channel[b-pv60y0ulzw] {
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    padding: 2px 8px;
    border-radius: 10px;
    background: var(--lb-info-bg);
    color: var(--lb-info);
}

.comms-channel--email[b-pv60y0ulzw] { background: var(--lb-info-bg); color: var(--lb-info); }
.comms-channel--sms[b-pv60y0ulzw] { background: var(--lb-brand-bg, var(--lb-info-bg)); color: var(--lb-brand); }
.comms-channel--chat[b-pv60y0ulzw] { background: var(--lb-success-bg, var(--lb-info-bg)); color: var(--lb-success); }
.comms-channel--esignature[b-pv60y0ulzw] { background: var(--lb-warning-bg); color: var(--lb-warning); }

.comms-section-count[b-pv60y0ulzw] {
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--lb-text-muted);
}

.comms-viewall[b-pv60y0ulzw] {
    margin-left: auto;
    font-size: 0.76rem;
    font-weight: 600;
    color: var(--lb-brand);
    text-decoration: none;
}

.comms-viewall:hover[b-pv60y0ulzw] {
    text-decoration: underline;
}

/* -- Preview rows -- */
.comms-list[b-pv60y0ulzw] {
    list-style: none;
    margin: 0;
    padding: 0;
}

.comms-item[b-pv60y0ulzw] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 12px;
}

.comms-item.is-actionable[b-pv60y0ulzw] {
    cursor: pointer;
    transition: background-color 0.12s ease;
}

.comms-item.is-actionable:hover[b-pv60y0ulzw] {
    background: var(--lb-bg-surface);
}

.comms-item.is-actionable:focus-visible[b-pv60y0ulzw] {
    outline: 2px solid var(--lb-brand);
    outline-offset: -2px;
}

.comms-info[b-pv60y0ulzw] {
    display: flex;
    flex-direction: column;
    min-width: 0;
    flex: 1;
}

.comms-item-party[b-pv60y0ulzw] {
    font-size: 0.84rem;
    font-weight: 600;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.comms-item-case[b-pv60y0ulzw] {
    font-weight: 400;
    color: var(--lb-text-muted);
}

.comms-item-preview[b-pv60y0ulzw] {
    font-size: 0.76rem;
    color: var(--lb-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.comms-item-age[b-pv60y0ulzw] {
    flex-shrink: 0;
    font-size: 0.72rem;
    color: var(--lb-text-dim);
    white-space: nowrap;
}

/* -- Unanswered ("No reply Nh") chip: an inbound message still waiting for a reply -- */
.comms-noreply[b-pv60y0ulzw] {
    align-self: flex-start;
    margin-top: 2px;
    padding: 1px 7px;
    border-radius: 9px;
    font-size: 0.7rem;
    font-weight: 700;
    background: var(--lb-warning-bg);
    color: var(--lb-warning);
    white-space: nowrap;
}

/* -- Aged rows (waiting > 3 days): amber emphasis; the "!" text marker carries the
      meaning so the signal is not color-only -- */
.comms-item--aged[b-pv60y0ulzw] {
    box-shadow: inset 3px 0 0 var(--lb-warning);
}

.comms-item-age--aged[b-pv60y0ulzw] {
    color: var(--lb-warning);
    font-weight: 700;
}
/* /Components/Shared/CasePulseCards.razor.rz.scp.css */
/* === CasePulseCards -- scoped styles === */

.pulse-grid[b-7vaoubr7dh] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
    margin-top: 12px;
}

.pulse-card[b-7vaoubr7dh] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 14px;
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    background: var(--lb-card);
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
}

.pulse-clickable[b-7vaoubr7dh] {
    cursor: pointer;
}

    .pulse-clickable:hover[b-7vaoubr7dh],
    .pulse-clickable:focus-visible[b-7vaoubr7dh] {
        border-color: var(--lb-brand);
        box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
        outline: none;
    }

.pulse-header[b-7vaoubr7dh] {
    display: flex;
    align-items: center;
    gap: 6px;
}

.pulse-icon[b-7vaoubr7dh] {
    font-size: 14px;
    color: var(--lb-text-muted);
}

.pulse-title[b-7vaoubr7dh] {
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
}

.pulse-count[b-7vaoubr7dh] {
    font-size: 1.5rem;
    font-weight: 700;
    color: var(--lb-text);
    line-height: 1.2;
}

.pulse-overdue[b-7vaoubr7dh] {
    font-size: 0.75rem;
    font-weight: 700;
    color: var(--lb-danger);
}

.pulse-preview[b-7vaoubr7dh] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    margin: 0;
    line-height: 1.4;
    overflow: hidden;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
}

.pulse-meta[b-7vaoubr7dh] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 2px;
}

.pulse-timestamp[b-7vaoubr7dh],
.pulse-author[b-7vaoubr7dh] {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
}

.pulse-dot[b-7vaoubr7dh] {
    width: 3px;
    height: 3px;
    border-radius: 50%;
    background-color: var(--lb-text-dim);
    flex-shrink: 0;
}

.pulse-date[b-7vaoubr7dh] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lb-text);
}

.pulse-desc[b-7vaoubr7dh] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pulse-empty[b-7vaoubr7dh] {
    font-size: 0.8rem;
    color: var(--lb-text-dim);
    font-style: italic;
    margin: 0;
}

/* -- Responsive breakpoints -- */
@media (max-width: 992px) {
    .pulse-grid[b-7vaoubr7dh] {
        grid-template-columns: repeat(2, 1fr);
    }
}

@media (max-width: 576px) {
    .pulse-grid[b-7vaoubr7dh] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/CaseSelectorDropdown.razor.rz.scp.css */
.case-dd-item[b-sz3isuwpx8] {
    display: flex;
    align-items: baseline;
    gap: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

[b-sz3isuwpx8] .case-dd-file {
    font-weight: 600;
    color: var(--lb-brand);
    flex-shrink: 0;
}

[b-sz3isuwpx8] .case-dd-sep {
    flex-shrink: 0;
    margin: 0 2px;
}

[b-sz3isuwpx8] .case-dd-name {
    overflow: hidden;
    text-overflow: ellipsis;
}
/* /Components/Shared/ChecklistSection.razor.rz.scp.css */
/* ChecklistSection.razor -- scoped styles */

.checklist-section[b-sjc4vqdl5m] {
    border: 1px solid var(--lb-border);
    border-radius: 6px;
    padding: 12px;
    margin-top: 12px;
    background: var(--lb-card);
}

.checklist-header[b-sjc4vqdl5m] {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 8px;
    font-weight: 600;
    font-size: 0.88rem;
    color: var(--lb-text);
}

.checklist-title[b-sjc4vqdl5m] {
    flex: 1;
}

.checklist-count[b-sjc4vqdl5m] {
    font-size: 0.78rem;
    color: var(--lb-text-dim);
    font-weight: 400;
}

.checklist-progress-bar[b-sjc4vqdl5m] {
    height: 4px;
    background: var(--lb-elevated);
    border-radius: 2px;
    margin-bottom: 10px;
    overflow: hidden;
}

.checklist-progress-fill[b-sjc4vqdl5m] {
    height: 100%;
    background: var(--lb-success);
    border-radius: 2px;
    transition: width 0.3s ease;
}

.checklist-items[b-sjc4vqdl5m] {
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.checklist-item[b-sjc4vqdl5m] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 4px;
    border-radius: 4px;
    transition: background-color 0.15s ease;
}

.checklist-item:hover[b-sjc4vqdl5m] {
    background-color: var(--lb-elevated);
}

.checklist-item.item-completed .item-text[b-sjc4vqdl5m] {
    text-decoration: line-through;
    color: var(--lb-text-muted);
}

.item-body[b-sjc4vqdl5m] {
    flex: 1;
    min-width: 0;
}

.item-text[b-sjc4vqdl5m] {
    font-size: 0.85rem;
    color: var(--lb-text);
    cursor: pointer;
    display: block;
    padding: 2px 0;
}

[b-sjc4vqdl5m] .checklist-remove-btn.e-btn {
    min-width: 24px;
    height: 24px;
    padding: 0;
    opacity: 0;
    transition: opacity 0.15s ease;
}

.checklist-item:hover[b-sjc4vqdl5m]  .checklist-remove-btn.e-btn {
    opacity: 1;
}

/* Touch fallback: phones and tablets cannot trigger :hover, so the remove
 * button would stay at opacity: 0 and be unreachable. Show it always on
 * (hover: none) devices. */
@media (hover: none) {
    [b-sjc4vqdl5m] .checklist-remove-btn.e-btn {
        opacity: 1;
    }
}

.checklist-add[b-sjc4vqdl5m] {
    margin-top: 6px;
}

.add-text[b-sjc4vqdl5m] {
    margin-left: 4px;
    font-size: 0.83rem;
}
/* /Components/Shared/ColumnFilterFunnel.razor.rz.scp.css */
/* -- Column header funnel button (shared across every filtered grid) --
   Scoped to this component, so the funnel looks identical everywhere with no per-grid
   CSS. These elements are rendered by this component even though it sits inside a grid
   HeaderTemplate, so the scoped attributes reach them (no ::deep needed). */

.colf-header[b-5vtv8xpd8y] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 4px;
    width: 100%;
    min-width: 0;
}

.colf-btn[b-5vtv8xpd8y] {
    background: none;
    border: none;
    padding: 2px 4px;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-muted);
    opacity: 0.55;
    line-height: 1;
    font-size: 0.8rem;
    transition: opacity 0.15s ease, color 0.15s ease;
}

.colf-btn:hover[b-5vtv8xpd8y],
.colf-btn:focus-visible[b-5vtv8xpd8y] {
    opacity: 1;
    color: var(--lb-text);
    outline: none;
}

/* Active filter on this column: funnel stays lit in brand color (Excel-like cue) */
.colf-btn.colf-active[b-5vtv8xpd8y] {
    opacity: 1;
    color: var(--lb-brand);
}

/* Touch devices never hover: keep the funnel visible */
@media (hover: none) {
    .colf-btn[b-5vtv8xpd8y] {
        opacity: 1;
    }
}
/* /Components/Shared/DesktopRecommended.razor.rz.scp.css */
/* DesktopRecommended interstitial -- shown on the Phone tier in place of a
   desktop-class editor. Colors use --lb-* design tokens. */

.desktop-recommended[b-t62eysfao7] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 24px;
}

.dr-card[b-t62eysfao7] {
    max-width: 360px;
    width: 100%;
    text-align: center;
    background: var(--lb-card);
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 28px 24px;
}

.dr-icon[b-t62eysfao7] {
    font-size: 2.5rem;
    line-height: 1;
    display: block;
    margin-bottom: 12px;
}

.dr-title[b-t62eysfao7] {
    font-size: 1.15rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 8px;
}

.dr-reason[b-t62eysfao7] {
    font-size: 0.9rem;
    color: var(--lb-text-muted);
    margin: 0 0 20px;
    line-height: 1.5;
}

.dr-open[b-t62eysfao7] {
    background: var(--lb-brand);
    color: #fff;
    border: none;
    border-radius: var(--lb-radius-pill);
    padding: 10px 24px;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
}

.dr-open:hover[b-t62eysfao7] {
    background: var(--lb-brand-hover);
}

.dr-open:focus-visible[b-t62eysfao7] {
    box-shadow: var(--lb-focus-ring);
}
/* /Components/Shared/DictationFloatingPanel.razor.rz.scp.css */
/* -- Floating dictation panel for document editor -- */

.dictation-panel-body[b-6onnix0e7a] {
    display: flex;
    flex-direction: column;
    gap: 12px;
    padding: 4px;
}

.panel-transcript-preview[b-6onnix0e7a] {
    min-height: 80px;
    max-height: 200px;
    overflow-y: auto;
    padding: 10px 12px;
    border: 1px solid var(--lb-border);
    border-radius: 4px;
    background: var(--lb-surface-alt);
    font-size: 0.9rem;
    line-height: 1.5;
    color: var(--lb-text);
}

.preview-placeholder[b-6onnix0e7a] {
    color: var(--lb-text-muted);
    font-style: italic;
}

.panel-actions[b-6onnix0e7a] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-top: 8px;
}

.panel-secondary-actions[b-6onnix0e7a] {
    display: flex;
    gap: 8px;
}

.dictation-unsupported[b-6onnix0e7a] {
    color: var(--lb-text-muted);
    font-style: italic;
    font-size: 0.875rem;
    margin: 0;
}

.dictation-initializing[b-6onnix0e7a] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    min-height: 48px;
    color: var(--lb-text-muted);
}

.dictation-initializing-text[b-6onnix0e7a] {
    font-size: 0.875rem;
}
/* /Components/Shared/DictationRichTextEditor.razor.rz.scp.css */
/* -- DictationRichTextEditor shared component styles -- */

.dictation-rte-container[b-s3r35yozjz] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    width: 100%;
}

/* -- Dictation bar below the RTE -- */
.dictation-rte-bar[b-s3r35yozjz] {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-top: none;
    border-radius: 0 0 4px 4px;
    flex-wrap: wrap;
}

/* -- Interim preview text (while speaking) -- */
.dictation-rte-interim[b-s3r35yozjz] {
    color: var(--lb-text-muted);
    font-style: italic;
    font-size: 0.85rem;
    flex: 1;
    min-width: 100px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1.4;
}
/* /Components/Shared/DictationTextArea.razor.rz.scp.css */
/* -- DictationTextArea shared component styles -- */

.dictation-container[b-c4kgw8loee] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
}

.dictation-input-row[b-c4kgw8loee] {
    display: flex;
    gap: 8px;
    align-items: flex-start;
    width: 100%;
}

    .dictation-input-row > :first-child[b-c4kgw8loee] {
        flex: 1 1 0%;
        min-width: 0;
        width: 100%;
    }

[b-c4kgw8loee] .dictation-input-row .e-control-wrapper,
[b-c4kgw8loee] .dictation-input-row .e-textarea {
    width: 100% !important;
}

.dictation-controls[b-c4kgw8loee] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    flex-shrink: 0;
    align-self: flex-start;
    margin-top: 4px;
}

[b-c4kgw8loee] .dictation-icon-btn .e-btn {
    width: 36px;
    height: 36px;
    min-width: 36px;
    padding: 0;
    border-radius: 6px;
}

.dictation-interim-preview[b-c4kgw8loee] {
    color: var(--lb-text-muted);
    font-style: italic;
    font-size: 0.875rem;
    padding: 8px 12px;
    border-left: 3px solid var(--lb-brand);
    background: var(--lb-surface-alt);
    border-radius: 0 4px 4px 0;
    max-height: 80px;
    overflow-y: auto;
    line-height: 1.4;
    transition: opacity 0.2s ease;
}

.char-counter[b-c4kgw8loee] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    text-align: right;
    align-self: flex-end;
}

.char-counter-warning[b-c4kgw8loee] {
    color: var(--lb-danger);
    font-weight: 600;
}
/* /Components/Shared/DocumentEditorToolbar.razor.rz.scp.css */
/* ============================================================
   DocumentEditorToolbar -- scoped styles
   ============================================================ */

.editor-toolbar[b-933x87jqbz] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 6px 12px;
    background: var(--lb-card, #ffffff);
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
    gap: 12px;
}

[b-933x87jqbz] .editor-toolbar-left {
    display: flex;
    align-items: center;
    gap: 12px;
}

[b-933x87jqbz] .editor-toolbar-right {
    display: flex;
    align-items: center;
    gap: 8px;
}

[b-933x87jqbz] .editor-toolbar-field {
    display: flex;
    align-items: center;
    gap: 6px;
}

[b-933x87jqbz] .editor-toolbar-label {
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    white-space: nowrap;
}
/* /Components/Shared/DocumentRibbon.razor.rz.scp.css */
/* DocumentRibbon.razor.css */
/* All comments ASCII only */

/* -- Ribbon shell ----------------------------------------------------------- */
.lb-doc-ribbon[b-kj1t6su9tt] {
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-card);
}

.lb-doc-ribbon[b-kj1t6su9tt]  .e-ribbon {
    border: none;
}

/* -- Toggle pressed state --------------------------------------------------- */
/* RibbonItem CssClass carries lb-rbn-on when the selection has that format
   (bold cursor -> Bold lit), mirroring Word. Extra class keeps specificity
   above the theme without resorting to !important. */
.lb-doc-ribbon[b-kj1t6su9tt]  .lb-rbn-on .e-btn {
    background: var(--lb-active-bg);
    color: var(--lb-active);
}

.lb-doc-ribbon[b-kj1t6su9tt]  .lb-rbn-on .e-btn .e-icons {
    color: var(--lb-active);
}

/* -- Ribbon dialog fields (Insert Table / Link / Page Setup) ---------------- */
.lb-rbn-field[b-kj1t6su9tt] {
    margin-bottom: 0.75rem;
}

.lb-rbn-field label[b-kj1t6su9tt] {
    display: block;
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    margin-bottom: 0.25rem;
}

.lb-rbn-field-grid[b-kj1t6su9tt] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1rem;
}

/* -- Save-state indicator (ribbon header right slot) ------------------------ */
/* Rendered via HelpPaneTemplate so it shows in Classic AND Simplified. Muted
   by default; only Failed uses an attention color. */
[b-kj1t6su9tt] .lb-save-ind {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 0 10px;
    font-size: 0.78rem;
    line-height: 1;
    white-space: nowrap;
    color: var(--lb-text-muted);
    user-select: none;
}

[b-kj1t6su9tt] .lb-save-ind .e-icons {
    font-size: 0.8rem;
}

[b-kj1t6su9tt] .lb-save-ind--saved {
    /* --lb-text-secondary is not defined app-wide; same fallback app.css
       uses for its one other consumer. */
    color: var(--lb-text-secondary, #6c757d);
}

[b-kj1t6su9tt] .lb-save-ind--failed {
    color: var(--lb-danger, #d64545);
    font-weight: 600;
}

[b-kj1t6su9tt] .lb-save-ind__spin {
    animation: lb-save-spin-b-kj1t6su9tt 1s linear infinite;
}

@keyframes lb-save-spin-b-kj1t6su9tt {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}
/* /Components/Shared/DocumentTypeIcon.razor.rz.scp.css */
/* -- DocumentTypeIcon: color-coded file-type badge -- */

.doc-type-icon[b-ohfabza2io] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 5px;
    flex-shrink: 0;
}

.doc-type-label[b-ohfabza2io] {
    font-size: 8px;
    font-weight: 700;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    line-height: 1;
}

/* -- Color schemes by file type (light mode) -- */
.doc-type-pdf[b-ohfabza2io]    { background: #fcebeb; color: #a32d2d; }
.doc-type-word[b-ohfabza2io]   { background: #e6f1fb; color: #185fa5; }
.doc-type-excel[b-ohfabza2io]  { background: #eaf3de; color: #3b6d11; }
.doc-type-ppt[b-ohfabza2io]    { background: #fbe8e0; color: #b34d22; }
.doc-type-image[b-ohfabza2io]  { background: #fbeaf0; color: #993556; }
.doc-type-video[b-ohfabza2io]  { background: #ede6fb; color: #5b2da3; }
.doc-type-audio[b-ohfabza2io]  { background: #e6f5fb; color: #186ea5; }
.doc-type-text[b-ohfabza2io]   { background: #f0f0f0; color: #4a4a4a; }
.doc-type-archive[b-ohfabza2io] { background: #faf3e0; color: #7a5a1a; }
.doc-type-email[b-ohfabza2io]  { background: #e8f0fb; color: #2b5797; }
.doc-type-default[b-ohfabza2io] { background: #f1efe8; color: #5f5e5a; }
/* Dark mode overrides live in app.css (global scope -- Blazor isolation blocks :global() here) */
/* /Components/Shared/ExcelFilterPopup.razor.rz.scp.css */
/* -- Shared Excel-style column filter popup --
   Plain DOM rendered by this component, so these scoped classes reach it (no ::deep).
   The SfButton chrome in .colf-actions is themed via e-flat / e-primary / e-small. */

/* Transparent click-away layer under the popup */
.colf-backdrop[b-u7k4utmmam] {
    position: fixed;
    inset: 0;
    z-index: 1200;
    background: transparent;
}

/* The popup panel itself */
.colf-popup[b-u7k4utmmam] {
    position: fixed;
    z-index: 1201;
    width: 260px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 10px;
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border-light);
    border-radius: 8px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
    /* #2234: on viewports shorter than the top-clamp's 400px budget, shrink and
       scroll internally instead of pushing the OK/Cancel row off-screen. */
    max-height: calc(100vh - 16px);
    overflow-y: auto;
}

.colf-search[b-u7k4utmmam] {
    width: 100%;
}

.colf-row[b-u7k4utmmam] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 4px 6px;
    border-radius: 4px;
    font-size: 0.85rem;
    color: var(--lb-text);
    cursor: pointer;
    user-select: none;
}

.colf-row:hover[b-u7k4utmmam] {
    background: var(--lb-surface-alt);
}

.colf-row input[type="checkbox"][b-u7k4utmmam] {
    flex-shrink: 0;
    accent-color: var(--lb-brand);
    cursor: pointer;
}

.colf-selectall[b-u7k4utmmam] {
    font-weight: 600;
    border-bottom: 1px solid var(--lb-border-light);
    padding-bottom: 6px;
}

.colf-list[b-u7k4utmmam] {
    max-height: 260px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
}

.colf-label[b-u7k4utmmam] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
}

.colf-empty[b-u7k4utmmam] {
    padding: 10px 6px;
    font-size: 0.85rem;
    color: var(--lb-text-muted);
    text-align: center;
}

/* Failed-load branch, replacing Select All + the checkbox list (#3536). Deliberately
   distinct from .colf-empty above: "could not ask the server" must not look like
   "there are no values" — mirrors TopBar's .panel-error / .panel-action-link. */
.colf-error[b-u7k4utmmam] {
    padding: 14px 6px;
    text-align: center;
}

.colf-error-text[b-u7k4utmmam] {
    margin: 0 0 6px;
    color: var(--lb-danger);
    font-size: 0.85rem;
}

.colf-retry-link[b-u7k4utmmam] {
    background: none;
    border: none;
    color: var(--lb-brand);
    font-size: 0.8rem;
    font-weight: 500;
    cursor: pointer;
    padding: 2px 4px;
    border-radius: 4px;
}

.colf-retry-link:hover[b-u7k4utmmam] {
    background: var(--lb-surface-alt);
    text-decoration: underline;
}

.colf-actions[b-u7k4utmmam] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding-top: 6px;
    border-top: 1px solid var(--lb-border-light);
}

.colf-flex[b-u7k4utmmam] {
    flex: 1;
}
/* /Components/Shared/ExportConfirmDialog.razor.rz.scp.css */
/* -- Export Confirmation Dialog scoped styles -- */

.export-confirm-body[b-wq3zat9lc3] {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    padding: 8px 0;
}

.export-confirm-icon[b-wq3zat9lc3] {
    font-size: 1.5rem;
    color: var(--lb-warning);
    flex-shrink: 0;
    margin-top: 2px;
}

.export-confirm-text[b-wq3zat9lc3] {
    font-size: 0.88rem;
    color: var(--lb-text);
    margin: 0;
    line-height: 1.5;
}
/* /Components/Shared/FinancialGridTotals.razor.rz.scp.css */
/* Totals strip under a Financial detail grid (#1979). Reads as a footer band:
   a tinted, bordered row that visually caps the grid it follows. */
.fgt-bar[b-zpeuc0x91v] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.5rem 1.25rem;
    padding: 0.5rem 0.75rem;
    margin-top: -1px; /* butt against the grid's bottom border */
    border: 1px solid var(--lb-border);
    border-top: 2px solid var(--lb-brand);
    border-radius: 0 0 8px 8px;
    background: var(--lb-accent-tint);
}

.fgt-lead[b-zpeuc0x91v] {
    font-size: 0.78rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
}

.fgt-count[b-zpeuc0x91v] {
    margin-left: 0.35rem;
    font-weight: 500;
    text-transform: none;
    letter-spacing: 0;
}

.fgt-items[b-zpeuc0x91v] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem 1.25rem;
    margin-left: auto;
}

.fgt-item[b-zpeuc0x91v] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.4rem;
}

.fgt-item-label[b-zpeuc0x91v] {
    font-size: 0.78rem;
    color: var(--lb-text-muted);
}

.fgt-item-value[b-zpeuc0x91v] {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--lb-text);
    font-variant-numeric: tabular-nums;
}

@media (max-width: 768px) {
    .fgt-items[b-zpeuc0x91v] {
        margin-left: 0;
        width: 100%;
    }
}
/* /Components/Shared/IdleTimeoutMonitor.razor.rz.scp.css */
/* ============================================================================
   IdleTimeoutMonitor -- Session expiry warning dialog
   ============================================================================ */

.idle-warning-header[b-clwhpaoobu] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-weight: 600;
    color: var(--lb-warning);
}

.idle-warning-icon[b-clwhpaoobu] {
    font-size: 1.25rem;
    color: var(--lb-warning);
}

.idle-warning-text[b-clwhpaoobu] {
    margin: 0.5rem 0;
    line-height: 1.5;
    color: var(--lb-text);
}
/* /Components/Shared/InboxMessageCardList.razor.rz.scp.css */
/* === InboxMessageCardList -- scoped styles ===
   Outlook-style 3-line card rendering for the email inbox message list.
   Adapted from the approved prototype (wwwroot/_proto/inbox-outlook-list/),
   real --lb-* tokens only. */

.inbox-card-list[b-1nqtjirh7n] {
    display: flex;
    flex-direction: column;
    /* The component OWNS its scrolling. The page's .inbox-list-host (and the
       splitter pane around it) are overflow:hidden — mirroring how the grid
       brings its own scrollbar — so without this the cards clipped at the
       pane edge with no way to scroll (user-caught). flex:1 + min-height:0
       take the host's height; the sentinel intersects as it scrolls into
       view, which is what arms the windowed loading. */
    flex: 1 1 auto;
    min-height: 0;
    overflow-y: auto;
    overscroll-behavior: contain;
}

/* ---- Select-all strip (#3384) ----
   A SIBLING of the scroll box, not a row inside it, so it stays put while the
   cards scroll under it. flex:0 0 auto is deliberate: the host is a flex column
   whose height the card list claims with flex:1 1 auto, and a shrinkable header
   in that column collapses to nothing at small heights (the case-tab
   shrink-and-clip lesson). */
.cards-select-all[b-1nqtjirh7n] {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    padding: .3rem .6rem .3rem .35rem;
    border-bottom: 1px solid var(--lb-border);
    background: var(--lb-surface-alt);
    font-size: .8rem;
    color: var(--lb-text-muted);
}

.cards-select-all label[b-1nqtjirh7n] {
    display: flex;
    align-items: center;
    gap: .4rem;
    margin: 0;
    cursor: pointer;
}

.cards-select-all-count[b-1nqtjirh7n] {
    white-space: nowrap;
}

/* ---- Day separator (sticky against this component's own scroll box) ---- */
.day-separator[b-1nqtjirh7n] {
    position: sticky;
    top: 0;
    z-index: 2;
    background: var(--lb-brand-light);
    color: var(--lb-brand-hover);
    font-size: .72rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: .25rem .6rem;
    border-bottom: 1px solid var(--lb-border-light);
}

/* ---- Card: 24px rail | 1fr | auto, three rows ---- */
.inbox-card[b-1nqtjirh7n] {
    display: grid;
    grid-template-columns: 24px 1fr auto;
    grid-template-rows: auto auto auto;
    column-gap: .4rem;
    row-gap: 0;
    align-items: center;
    padding: .45rem .6rem .45rem .35rem;
    border-bottom: 1px solid var(--lb-border-light);
    cursor: pointer;
    user-select: text; /* keep From/Subject/snippet copyable -- spec ask #4 */
}

.inbox-card:hover[b-1nqtjirh7n] {
    background: var(--lb-surface-alt);
}

/* Selection is a row wash + amber inset bar -- never a cell/element focus box. */
.inbox-card.sel[b-1nqtjirh7n] {
    background: var(--lb-active-bg);
    box-shadow: inset 3px 0 0 var(--lb-brand);
}

.inbox-card:focus[b-1nqtjirh7n] {
    outline: none;
}

/* Keyboard-focus indication stays visible on the operable controls inside the card. */
.inbox-card .flag-star:focus-visible[b-1nqtjirh7n],
.inbox-card .card-select:focus-visible[b-1nqtjirh7n] {
    outline: none;
    box-shadow: var(--lb-focus-ring);
}

/* ---- Rail: checkbox stacked above the unread dot, top-aligned across all 3 rows ---- */
.inbox-card .rail[b-1nqtjirh7n] {
    grid-row: 1 / 4;
    grid-column: 1;
    align-self: start;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .3rem;
    padding-top: .2rem;
}

/* Always rendered; a per-message CSS rule injected by lbSetUnreadDot toggles
   .is-read at runtime the same way it does for the grid template (EmailInbox.razor). */
.unread-dot[b-1nqtjirh7n] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--lb-brand);
}

.unread-dot.is-read[b-1nqtjirh7n] {
    visibility: hidden;
}

/* ---- Line 1: sender + received time ---- */
.inbox-card .from[b-1nqtjirh7n] {
    grid-row: 1;
    grid-column: 2;
    font-size: .85rem;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-card .when[b-1nqtjirh7n] {
    grid-row: 1;
    grid-column: 3;
    justify-self: end;
    font-size: .75rem;
    color: var(--lb-text-muted);
    white-space: nowrap;
}

.inbox-card.unread .from[b-1nqtjirh7n] {
    font-weight: 700;
    color: var(--lb-text-bright);
}

.inbox-card.unread .when[b-1nqtjirh7n] {
    color: var(--lb-brand-hover);
    font-weight: 600;
}

/* ---- Line 2: subject + attachment/flag icons ---- */
.inbox-card .subj[b-1nqtjirh7n] {
    grid-row: 2;
    grid-column: 2;
    font-size: .82rem;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-card.unread .subj[b-1nqtjirh7n] {
    font-weight: 700;
    color: var(--lb-text-bright);
}

.inbox-card .icons[b-1nqtjirh7n] {
    grid-row: 2;
    grid-column: 3;
    justify-self: end;
    display: flex;
    align-items: center;
    gap: .3rem;
    color: var(--lb-text-muted);
    font-size: .8rem;
}

.flag-star[b-1nqtjirh7n] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 24px;
    min-height: 24px;
    padding: 2px;
    background: none;
    border: none;
    border-radius: 4px;
    cursor: pointer;
    color: var(--lb-text-dim);
}

.flag-star:hover[b-1nqtjirh7n] {
    color: var(--lb-danger);
}

.flag-star.flagged[b-1nqtjirh7n] {
    color: var(--lb-danger);
}

/* ---- Line 3: snippet + page-supplied case/AI-suggestion slot ---- */
.inbox-card .snip[b-1nqtjirh7n] {
    grid-row: 3;
    grid-column: 2;
    font-size: .78rem;
    color: var(--lb-text-muted);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-card .case-slot[b-1nqtjirh7n] {
    grid-row: 3;
    grid-column: 3;
    justify-self: end;
}

/* ---- Infinite-scroll sentinel: zero-height, no visual footprint ---- */
.cards-sentinel[b-1nqtjirh7n] {
    width: 100%;
    /* flex: none is load-bearing: the list root is an overflowing flex column,
       and a flex item with no content gets SHRUNK TO ZERO HEIGHT there
       (cards survive on min-content; an empty div has none). A zero-height
       sentinel sitting exactly on the scroll boundary never intersects, so
       the windowed loading never fired (probe-caught live: scrollTop maxed,
       60 cards forever). 8px of real, unshrinkable height intersects just
       before the floor. */
    flex: 0 0 8px;
}

/* ============================================================
   Phone tier (<=768px): the PAGE scrolls, NOT this list.
   MUST stay last in the file — a media query adds no specificity, so these
   overrides only win by source order.
   ============================================================
   EmailInbox's phone media block sets .email-inbox-container and
   .inbox-layout to height:auto so the stacked preview stays reachable
   (#1532). That makes this list box grow to its full content height, so it
   never needs to scroll internally — and the `overscroll-behavior: contain`
   at the top of this file then TRAPPED every touch that landed on a card:
   with a screenful of emails and no page chrome left to grab, the page could
   not be scrolled at all (user-reported on a phone, 2026-07-31 — scrolling
   worked only while the header was still on screen). Hand scrolling back to
   the page here. The sentinel still arms the windowed loading: its
   IntersectionObserver has no explicit root, so it watches the viewport. */
@media (max-width: 768px) {
    .inbox-card-list[b-1nqtjirh7n] {
        flex: 0 0 auto;
        overflow-y: visible;
        overscroll-behavior: auto;
    }

    /* position:sticky resolves against the nearest SCROLLING ancestor — now
       the viewport — so a sticky separator would pin over the page chrome
       instead of over its own list. */
    .day-separator[b-1nqtjirh7n] {
        position: static;
    }
}
/* /Components/Shared/InsuranceDrawerForm.razor.rz.scp.css */
/* ----------------------------------------------------------------
   InsuranceDrawerForm.razor.css -- Scoped styles for the insurance form.
   Two-column grid layout for paired fields, single column for full-width.
   Collapses to single column at narrow drawer widths (<=400px).
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ---------------------------------------------------------------- */

.ins-form[b-1fgl02rg3v] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* -- Row types -------------------------------------------------- */
.ins-form__row[b-1fgl02rg3v] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ins-form__row--full[b-1fgl02rg3v] {
    grid-column: 1 / -1;
}

.ins-form__row--pair[b-1fgl02rg3v] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

/* -- Individual field inside a pair row ------------------------- */
.ins-form__field[b-1fgl02rg3v] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* -- Labels ----------------------------------------------------- */
.ins-form__label[b-1fgl02rg3v] {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
}

/* -- Validation errors ------------------------------------------ */
[b-1fgl02rg3v] .field-validation-error {
    font-size: 0.75rem;
    color: var(--lb-danger);
    margin-top: 2px;
}

.ins-form__errors[b-1fgl02rg3v] {
    margin-top: 8px;
}

.ins-form__errors ul[b-1fgl02rg3v] {
    margin: 0;
    padding-left: 18px;
}

.ins-form__errors li[b-1fgl02rg3v] {
    font-size: 0.8rem;
    color: var(--lb-danger);
}

/* -- Narrow drawer / small screens -- collapse to single column - */
@media (max-width: 400px) {
    .ins-form__row--pair[b-1fgl02rg3v] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/KeyDatesStrip.razor.rz.scp.css */
/* === KeyDatesStrip -- scoped styles === */

.key-dates-strip[b-v0a2sf01qs] {
    display: flex;
    gap: 12px;
    overflow-x: auto;
    padding: 8px 0;
    scrollbar-width: thin;
    -webkit-overflow-scrolling: touch;
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

.key-date-card[b-v0a2sf01qs] {
    flex: 0 0 auto;
    min-width: 110px;
    max-width: 160px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 8px 12px;
    border: 1px solid var(--lb-border-light);
    border-radius: 6px;
    background: var(--lb-card);
}

.key-date-label[b-v0a2sf01qs] {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.03em;
    color: var(--lb-text-muted);
}

.key-date-value[b-v0a2sf01qs] {
    font-size: 0.875rem;
    font-weight: 700;
    color: var(--lb-text);
}

.key-date-none[b-v0a2sf01qs] {
    color: var(--lb-text-dim);
}

.key-date-sub[b-v0a2sf01qs] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

/* -- Estimated value card -- */
.est-value[b-v0a2sf01qs] {
    color: var(--lb-success);
}

/* -- Urgency color coding -- */
.urgency-warning[b-v0a2sf01qs] {
    border-color: var(--lb-warning);
}

    .urgency-warning .key-date-value[b-v0a2sf01qs],
    .urgency-warning .key-date-sub[b-v0a2sf01qs] {
        color: var(--lb-warning);
        font-weight: 700;
    }

.urgency-critical[b-v0a2sf01qs] {
    border-color: var(--lb-danger);
}

    .urgency-critical .key-date-value[b-v0a2sf01qs],
    .urgency-critical .key-date-sub[b-v0a2sf01qs] {
        color: var(--lb-danger);
        font-weight: 700;
    }

/* -- Responsive -- */
@media (max-width: 576px) {
    .key-date-card[b-v0a2sf01qs] {
        min-width: 90px;
        padding: 6px 8px;
    }

    .key-date-value[b-v0a2sf01qs] {
        font-size: 0.8rem;
    }
}

.sol-filed[b-v0a2sf01qs] {
    background: var(--lb-success-bg);
    color: var(--lb-success);
    border-radius: 4px;
    padding: 1px 6px;
    font-weight: 600;
    font-size: 0.75rem;
}
/* /Components/Shared/LienDrawerForm.razor.rz.scp.css */
/* ----------------------------------------------------------------
   LienDrawerForm.razor.css -- Scoped styles for the lien edit form.
   Two-column grid layout for paired fields, single column for full-width.
   Collapses to single column at narrow drawer widths (<=400px).
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ---------------------------------------------------------------- */

.lien-form[b-srjqow8sr8] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* -- Row types -------------------------------------------------- */
.lien-form__row[b-srjqow8sr8] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.lien-form__row--full[b-srjqow8sr8] {
    grid-column: 1 / -1;
}

.lien-form__row--pair[b-srjqow8sr8] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

/* -- Individual field inside a pair row ------------------------- */
.lien-form__field[b-srjqow8sr8] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* -- Labels ----------------------------------------------------- */
.lien-form__label[b-srjqow8sr8] {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
}

/* -- Validation errors ------------------------------------------ */
[b-srjqow8sr8] .field-validation-error {
    font-size: 0.75rem;
    color: var(--lb-danger);
    margin-top: 2px;
}

.lien-form__errors[b-srjqow8sr8] {
    margin-top: 8px;
}

.lien-form__errors ul[b-srjqow8sr8] {
    margin: 0;
    padding-left: 18px;
}

.lien-form__errors li[b-srjqow8sr8] {
    font-size: 0.8rem;
    color: var(--lb-danger);
}

/* -- Narrow drawer / small screens -- collapse to single column - */
@media (max-width: 400px) {
    .lien-form__row--pair[b-srjqow8sr8] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/LitigationTimelineCard.razor.rz.scp.css */
/* Litigation Timeline Card - Horizontal timeline with status dots */

.litigation-timeline-card[b-eeonj61fju] {
    background: var(--lb-card);
    border: 0.5px solid var(--lb-border);
    border-radius: var(--border-radius-lg);
    padding: 8px 14px;
    margin-bottom: 10px;
}

.timeline-header[b-eeonj61fju] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 4px;
}

.timeline-title[b-eeonj61fju] {
    font-size: 13px;
    font-weight: 600;
    color: var(--lb-text-primary);
}

.timeline-anchor[b-eeonj61fju] {
    text-align: right;
    font-size: 12px;
    line-height: 1.5;
}

.anchor-judge[b-eeonj61fju] {
    font-weight: 500;
    color: var(--lb-text-primary);
}

.anchor-room[b-eeonj61fju],
.anchor-court[b-eeonj61fju],
.anchor-docket[b-eeonj61fju] {
    color: var(--lb-text-secondary);
    font-size: 11px;
}

/* Timeline container */
.timeline-container[b-eeonj61fju] {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 0;
    min-height: 50px;
}

.timeline-line[b-eeonj61fju] {
    position: absolute;
    left: 0;
    right: 0;
    top: 18px;
    height: 1px;
    background: var(--lb-border);
    z-index: 0;
}

/* Timeline node */
.timeline-node[b-eeonj61fju] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    position: relative;
    z-index: 1;
}

.timeline-dot[b-eeonj61fju] {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--lb-card);
    margin-bottom: 4px;
}

/* Dot status styles */
.timeline-dot--past[b-eeonj61fju] {
    background: var(--lb-success);
    border: 2px solid var(--lb-success);
}

.timeline-dot--current[b-eeonj61fju] {
    background: var(--lb-brand);
    border: 2px solid var(--lb-brand);
    box-shadow: 0 0 0 3px var(--lb-accent-tint);
}

.timeline-dot--future[b-eeonj61fju] {
    background: var(--lb-card);
    border: 2px solid var(--lb-text-tertiary);
}

.timeline-dot--pending[b-eeonj61fju] {
    background: var(--lb-warning);
    border: 2px solid var(--lb-warning);
}

.timeline-dot--danger[b-eeonj61fju] {
    background: var(--lb-danger);
    border: 2px solid var(--lb-danger);
}

.timeline-dot--empty[b-eeonj61fju] {
    background: var(--lb-card);
    border: 2px dashed var(--lb-border);
}

/* Timeline labels */
.timeline-label[b-eeonj61fju] {
    text-align: center;
    min-width: 50px;
    line-height: 1.3;
}

.label-text[b-eeonj61fju] {
    font-size: 11px;
    font-weight: 500;
    color: var(--lb-text-primary);
}

.label-date[b-eeonj61fju] {
    font-size: 10px;
    color: var(--lb-text-secondary);
}

.label-sublabel[b-eeonj61fju] {
    font-size: 10px;
    color: var(--lb-text-tertiary);
}

.label-sublabel--danger[b-eeonj61fju] {
    color: var(--lb-danger);
    font-weight: 600;
}

/* Responsive adjustments */
@media (max-width: 768px) {
    .litigation-timeline-card[b-eeonj61fju] {
        padding: 12px;
    }

    .timeline-header[b-eeonj61fju] {
        flex-direction: column;
        gap: 8px;
    }

    .timeline-anchor[b-eeonj61fju] {
        text-align: left;
    }

    .timeline-container[b-eeonj61fju] {
        overflow-x: auto;
        padding: 20px 10px;
        /* Without containment, a sideways swipe here chains to the browser's edge
           swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
        overscroll-behavior-x: contain;
        touch-action: pan-x;
    }

    .timeline-node[b-eeonj61fju] {
        min-width: 70px;
    }

    .label-text[b-eeonj61fju] {
        font-size: 10px;
    }

    .label-date[b-eeonj61fju],
    .label-sublabel[b-eeonj61fju] {
        font-size: 9px;
    }
}
/* /Components/Shared/M365ConnectPanel.razor.rz.scp.css */
/* M365ConnectPanel.razor.css */
/* All comments ASCII only - no Unicode */

/* -- Base panel ------------------------------------------------------------- */
.m365-panel[b-jq10jqppc0] {
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    background: var(--lb-card);
    padding: 1rem 1.25rem;
}

/* -- Checking (probe in progress) ------------------------------------------- */
.m365-panel-checking[b-jq10jqppc0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--lb-text-muted);
    font-size: 0.875rem;
}

.m365-spin[b-jq10jqppc0] {
    animation: m365-rotate-b-jq10jqppc0 1s linear infinite;
}

@keyframes m365-rotate-b-jq10jqppc0 {
    from { transform: rotate(0deg); }
    to   { transform: rotate(360deg); }
}

/* -- Connected state -------------------------------------------------------- */
.m365-panel-connected[b-jq10jqppc0] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.m365-connected-icon[b-jq10jqppc0] {
    color: var(--lb-success);
    font-size: 1.1rem;
}

.m365-connected-text[b-jq10jqppc0] {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
}

.m365-connected-title[b-jq10jqppc0] {
    font-weight: 600;
    color: var(--lb-text);
}

.m365-connected-sub[b-jq10jqppc0] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

/* -- Disconnected / connect actions ----------------------------------------- */
.m365-panel-head[b-jq10jqppc0] {
    display: flex;
    gap: 0.75rem;
    align-items: flex-start;
}

.m365-head-icon[b-jq10jqppc0] {
    color: var(--lb-brand);
    font-size: 1.1rem;
    margin-top: 0.15rem;
}

.m365-panel-title[b-jq10jqppc0] {
    margin: 0 0 0.35rem;
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
}

.m365-panel-desc[b-jq10jqppc0] {
    margin: 0;
    font-size: 0.875rem;
    color: var(--lb-text-muted);
}

.m365-panel-actions[b-jq10jqppc0] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.85rem;
}

.m365-panel-hint[b-jq10jqppc0] {
    margin: 0.85rem 0 0;
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

/* -- Read-only consent link box --------------------------------------------- */
.m365-consent-link[b-jq10jqppc0] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-top: 0.6rem;
    padding: 0.5rem 0.6rem;
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border);
    border-radius: 0.375rem;
}

.m365-consent-link-text[b-jq10jqppc0] {
    flex: 1 1 auto;
    overflow-x: auto;
    white-space: nowrap;
    font-size: 0.75rem;
    color: var(--lb-text);
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

.m365-copied[b-jq10jqppc0] {
    display: inline-block;
    margin-top: 0.35rem;
    font-size: 0.75rem;
    color: var(--lb-success);
}

/* -- Responsive -------------------------------------------------------------- */
@media (max-width: 576px) {
    .m365-panel[b-jq10jqppc0] {
        padding: 0.85rem;
    }

    .m365-panel-actions[b-jq10jqppc0] {
        flex-direction: column;
        align-items: stretch;
    }
}
/* /Components/Shared/MergeCodeSidebar.razor.rz.scp.css */
/* ============================================================
   MergeCodeSidebar -- scoped styles
   ============================================================ */

.mc-sidebar[b-m41b5y9n8s] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    background: var(--lb-card, #ffffff);
}

/* -- Header with search -- */

[b-m41b5y9n8s] .mc-header {
    flex-shrink: 0;
    padding: 8px;
    border-bottom: 1px solid var(--lb-border);
}

[b-m41b5y9n8s] .mc-search {
    font-size: 0.8rem;
}

[b-m41b5y9n8s] .mc-header-actions {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 6px;
    margin-top: 6px;
}

[b-m41b5y9n8s] .mc-link-btn {
    border: none;
    background: transparent;
    padding: 0;
    cursor: pointer;
    font-size: 0.72rem;
    color: var(--lb-accent);
}

[b-m41b5y9n8s] .mc-link-btn:hover {
    text-decoration: underline;
}

[b-m41b5y9n8s] .mc-action-sep {
    color: var(--lb-text-muted);
    font-size: 0.72rem;
}

/* -- Scrollable body -- */

[b-m41b5y9n8s] .mc-body {
    flex: 1 1 auto;
    min-height: 0; /* allow the flex child to shrink so overflow-y scrolls instead of clipping */
    overflow-y: auto;
    padding: 4px 0;
}

/* -- Category sections -- */

[b-m41b5y9n8s] .mc-category {
    border-bottom: 1px solid var(--lb-border-light);
}

[b-m41b5y9n8s] .mc-category-header {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 8px 12px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--lb-text);
    text-align: left;
}

[b-m41b5y9n8s] .mc-category-header:hover {
    background: rgba(0, 0, 0, 0.03);
}

[b-m41b5y9n8s] .mc-chevron {
    font-size: 0.6rem;
    transition: transform 0.15s ease;
    color: var(--lb-text-muted);
}

[b-m41b5y9n8s] .mc-chevron-open {
    transform: rotate(90deg);
}

[b-m41b5y9n8s] .mc-category-label {
    flex: 1;
}

[b-m41b5y9n8s] .mc-category-count {
    color: var(--lb-text-muted);
    font-weight: 400;
    font-size: 0.75rem;
}

[b-m41b5y9n8s] .mc-category-body {
    padding: 0 8px 6px;
}

/* -- Individual code row -- */

[b-m41b5y9n8s] .mc-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    gap: 8px;
    padding: 4px 8px;
    border-radius: 4px;
    font-size: 0.78rem;
    line-height: 1.4;
}

[b-m41b5y9n8s] .mc-row-available {
    cursor: pointer;
}

[b-m41b5y9n8s] .mc-row-available:hover {
    background: rgba(204, 108, 44, 0.08);
}

[b-m41b5y9n8s] .mc-row-available:active {
    background: var(--lb-accent-tint);
}

[b-m41b5y9n8s] .mc-row-unavailable {
    cursor: default;
    opacity: 0.55;
}

[b-m41b5y9n8s] .mc-label {
    flex-shrink: 0;
    font-weight: 500;
    color: var(--lb-text);
}

[b-m41b5y9n8s] .mc-value {
    text-align: right;
    color: var(--lb-text-muted);
    font-size: 0.75rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    max-width: 140px;
}

[b-m41b5y9n8s] .mc-value em {
    font-style: italic;
    color: var(--lb-text-muted);
}

/* -- Empty state -- */

[b-m41b5y9n8s] .mc-empty {
    padding: 24px 12px;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

/* ============================================================
   Dark mode
   ============================================================ */

:global([data-theme="dark"]) .mc-category-header:hover[b-m41b5y9n8s] {
    background: rgba(255, 255, 255, 0.05);
}

:global([data-theme="dark"]) .mc-row-available:hover[b-m41b5y9n8s] {
    background: var(--lb-accent-tint);
}

:global([data-theme="dark"]) .mc-category[b-m41b5y9n8s] {
    border-color: var(--lb-border-dark);
}

:global([data-theme="dark"]) .mc-header[b-m41b5y9n8s] {
    border-color: var(--lb-border-dark);
}

/* Contact picker dropdown inside the Contact category group */
[b-m41b5y9n8s] .mc-contact-picker {
    padding: 4px 8px 6px;
}

/* Token shown as the row value in template mode */
[b-m41b5y9n8s] .mc-token {
    font-size: 0.74rem;
    color: var(--lb-text-muted);
}

/* -- Reveal toggle on a sensitive (SSN / tax id / DOB) row -- */

[b-m41b5y9n8s] .mc-reveal-btn {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    padding: 0;
    border: none;
    border-radius: 3px;
    background: transparent;
    cursor: pointer;
    color: var(--lb-text-muted);
    line-height: 1;
}

[b-m41b5y9n8s] .mc-reveal-btn:hover:not(:disabled) {
    background: var(--lb-accent-tint);
    color: var(--lb-accent);
}

[b-m41b5y9n8s] .mc-reveal-btn:disabled {
    cursor: default;
    opacity: 0.5;
}

[b-m41b5y9n8s] .mc-reveal-btn .e-icons {
    font-size: 0.85rem;
}
/* /Components/Shared/PhoneLink.razor.rz.scp.css */
/* -- PhoneLink scoped styles -- */
.phone-link[b-tm8cfdoulk] {
    color: var(--lb-brand);
    text-decoration: none;
    white-space: nowrap;
}

.phone-link:hover[b-tm8cfdoulk] {
    text-decoration: underline;
}
/* /Components/Shared/QuickFollowUpButton.razor.rz.scp.css */
/* QuickFollowUpButton.razor -- scoped styles */

.follow-up-label[b-yvvwtxr3y2] {
    margin-left: 4px;
    font-size: 0.8rem;
}

[b-yvvwtxr3y2] .follow-up-btn.e-btn {
    min-width: 28px;
    height: 28px;
}
/* /Components/Shared/QuickPartsSidebar.razor.rz.scp.css */
/* ============================================================
   QuickPartsSidebar -- scoped styles (Phase 4 of the Quick Parts
   Library spec). Two-level grouping: scope at the top, category
   or part-type underneath. Visual cues distinguish My from Firm
   so the personal list never gets lost in a long firm library.
   ============================================================ */

.qp-sidebar[b-fjlna1p4nr] {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
    background: var(--lb-card, #ffffff);
}

/* -- Header (search + import) -- */

[b-fjlna1p4nr] .qp-header {
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 8px;
    border-bottom: 1px solid var(--lb-border);
}

[b-fjlna1p4nr] .qp-search {
    font-size: 0.8rem;
    flex: 1 1 auto;
    min-width: 0;
}

[b-fjlna1p4nr] .qp-import-btn {
    flex: 0 0 auto;
    font-size: 0.78rem;
    white-space: nowrap;
}

/* -- Scrollable body -- */

[b-fjlna1p4nr] .qp-body {
    flex: 1;
    overflow-y: auto;
    padding: 4px 0;
}

/* -- Scope sections (My / Firm) -- */

[b-fjlna1p4nr] .qp-scope {
    border-bottom: 1px solid var(--lb-border-light);
}

[b-fjlna1p4nr] .qp-scope-header {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 9px 10px;
    border: none;
    cursor: pointer;
    font-size: 0.78rem;
    font-weight: 700;
    text-align: left;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

[b-fjlna1p4nr] .qp-scope-my .qp-scope-header {
    background: var(--lb-accent-tint, rgba(204, 108, 44, 0.06));
    color: var(--lb-text);
}

[b-fjlna1p4nr] .qp-scope-firm .qp-scope-header {
    background: var(--lb-surface-alt, #f7f7f5);
    color: var(--lb-text);
}

[b-fjlna1p4nr] .qp-scope-header:hover {
    filter: brightness(0.97);
}

[b-fjlna1p4nr] .qp-scope-label {
    flex: 1;
}

[b-fjlna1p4nr] .qp-scope-count {
    color: var(--lb-text-muted);
    font-weight: 600;
    font-size: 0.72rem;
}

[b-fjlna1p4nr] .qp-scope-body {
    padding: 2px 0 6px;
}

/* -- Inner group sections (Category for My, PartType for Firm) -- */

[b-fjlna1p4nr] .qp-group {
    margin: 0 0 2px 0;
}

[b-fjlna1p4nr] .qp-group-header {
    display: flex;
    align-items: center;
    gap: 6px;
    width: 100%;
    padding: 5px 12px 5px 22px;
    border: none;
    background: transparent;
    cursor: pointer;
    font-size: 0.76rem;
    font-weight: 600;
    color: var(--lb-text);
    text-align: left;
}

[b-fjlna1p4nr] .qp-group-header:hover {
    background: rgba(0, 0, 0, 0.03);
}

[b-fjlna1p4nr] .qp-group-label {
    flex: 1;
}

[b-fjlna1p4nr] .qp-group-count {
    color: var(--lb-text-muted);
    font-weight: 400;
    font-size: 0.72rem;
}

[b-fjlna1p4nr] .qp-group-body {
    padding: 0 8px 4px 22px;
}

/* -- Chevron -- */

[b-fjlna1p4nr] .qp-chevron {
    font-size: 0.65rem;
    transition: transform 0.15s ease;
    color: var(--lb-text-muted);
}

[b-fjlna1p4nr] .qp-chevron-small {
    font-size: 0.55rem;
}

[b-fjlna1p4nr] .qp-chevron-open {
    transform: rotate(90deg);
}

/* -- Individual quick-part row -- */

[b-fjlna1p4nr] .qp-row {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 5px 8px;
    border-radius: 4px;
    font-size: 0.78rem;
    line-height: 1.4;
    cursor: pointer;
}

[b-fjlna1p4nr] .qp-row:hover {
    background: rgba(204, 108, 44, 0.08);
}

[b-fjlna1p4nr] .qp-row:active {
    background: var(--lb-accent-tint);
}

[b-fjlna1p4nr] .qp-row-top {
    display: flex;
    align-items: baseline;
    gap: 6px;
}

[b-fjlna1p4nr] .qp-label {
    flex: 1;
    font-weight: 500;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

[b-fjlna1p4nr] .qp-shortcut {
    font-size: 0.7rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    padding: 1px 5px;
    border-radius: 3px;
    font-family: monospace;
    white-space: nowrap;
}

[b-fjlna1p4nr] .qp-format-badge {
    font-size: 0.62rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    padding: 1px 4px;
    border-radius: 3px;
    font-weight: 700;
    letter-spacing: 0.04em;
}

/* Explicit per-row insert affordance. Double-click still works, but the
   button makes insertion discoverable instead of double-click-only. */
[b-fjlna1p4nr] .qp-insert-btn {
    flex: 0 0 auto;
    font-size: 0.68rem;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
    padding: 1px 8px;
    border-radius: 3px;
    cursor: pointer;
    color: var(--lb-brand, #D4890C);
    background: transparent;
    border: 1px solid var(--lb-brand, #D4890C);
    transition: background 0.12s ease, color 0.12s ease;
}

[b-fjlna1p4nr] .qp-insert-btn:hover {
    background: var(--lb-brand, #D4890C);
    color: #fff;
}

[b-fjlna1p4nr] .qp-insert-btn:focus-visible {
    outline: 2px solid var(--lb-brand, #D4890C);
    outline-offset: 1px;
}

[b-fjlna1p4nr] .qp-preview {
    color: var(--lb-text-muted);
    font-size: 0.72rem;
    max-height: 4.8em;
    overflow: hidden;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    white-space: normal;
    word-break: break-word;
}

/* HTML-rendered preview: visually renders the rich content at a small scale.
   pointer-events: none keeps clicks from being swallowed by inner elements;
   overflow: hidden clips content that would otherwise stretch the sidebar. */
[b-fjlna1p4nr] .qp-preview-html {
    font-size: 0.65rem;
    line-height: 1.4;
    max-height: 6em;
    overflow: hidden;
    pointer-events: none;
    color: var(--lb-text);
    /* Suppress excessive Word-HTML margins so the first line is visible */
    contain: layout style;
}

[b-fjlna1p4nr] .qp-preview-html p:first-child,
[b-fjlna1p4nr] .qp-preview-html h1:first-child,
[b-fjlna1p4nr] .qp-preview-html h2:first-child,
[b-fjlna1p4nr] .qp-preview-html h3:first-child,
[b-fjlna1p4nr] .qp-preview-html h4:first-child,
[b-fjlna1p4nr] .qp-preview-html h5:first-child,
[b-fjlna1p4nr] .qp-preview-html h6:first-child {
    margin-top: 0;
}

[b-fjlna1p4nr] .qp-preview-html p:last-child {
    margin-bottom: 0;
}

[b-fjlna1p4nr] .qp-preview-html table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

[b-fjlna1p4nr] .qp-preview-html img {
    max-width: 100%;
    height: auto;
}

[b-fjlna1p4nr] .qp-empty {
    padding: 18px 14px;
    text-align: center;
    color: var(--lb-text-muted);
    font-size: 0.8rem;
}

/* ============================================================
   Dark mode
   ============================================================ */

:global([data-theme="dark"]) .qp-header[b-fjlna1p4nr],
:global([data-theme="dark"]) .qp-scope[b-fjlna1p4nr] {
    border-color: var(--lb-border-dark);
}
/* /Components/Shared/RecordDrawer.razor.rz.scp.css */
/* ----------------------------------------------------------------
   RecordDrawer.razor.css -- Scoped styles for the drawer panel.
   Supports two positions via modifier classes:
     --side   (default) slides from the right edge
     --bottom           slides up from the bottom, full viewport width
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ASCII-only comments to avoid CSS isolation bundler issues.
   ---------------------------------------------------------------- */

/* -- Shared base ------------------------------------------------ */
.record-drawer[b-4u0tcufjxn] {
    position: fixed;
    z-index: 1040;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    background: var(--lb-bg-white);
    box-shadow: none;
}

.record-drawer--open[b-4u0tcufjxn] {
    box-shadow: 0 0 24px rgba(0, 0, 0, 0.14);
}

/* ================================================================
   SIDE POSITION (default) -- slides from right
   Positioned absolute within a page-drawer-host container so the
   drawer stays inside the tab content area (below the topbar).
   ================================================================ */
.record-drawer--side[b-4u0tcufjxn] {
    position: fixed;
    top: 0;
    bottom: 0;
    right: 0;
    width: 0;
    border-left: 0 solid var(--lb-border);
    transition: width 220ms ease;
}

.record-drawer--side.record-drawer--open[b-4u0tcufjxn] {
    width: 540px;
    border-left-width: 1px;
}

/* ================================================================
   BOTTOM POSITION -- slides up from bottom, full width
   ================================================================ */
.record-drawer--bottom[b-4u0tcufjxn] {
    bottom: 0;
    left: 0;
    right: 0;
    height: 0;
    border-top: 0 solid var(--lb-border);
    transition: height 250ms ease;
}

.record-drawer--bottom.record-drawer--open[b-4u0tcufjxn] {
    height: 55vh;
    border-top-width: 1px;
}

/* Bottom drawer body fills available space for child layout */
.record-drawer--bottom .record-drawer__body[b-4u0tcufjxn] {
    overflow: hidden;
}

/* -- Header ----------------------------------------------------- */
.record-drawer__header[b-4u0tcufjxn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--lb-border);
    flex-shrink: 0;
    background: var(--lb-bg-surface);
}

.record-drawer__title-area[b-4u0tcufjxn] {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.record-drawer__title[b-4u0tcufjxn] {
    margin: 0;
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.record-drawer__dirty-dot[b-4u0tcufjxn] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--lb-warning);
    flex-shrink: 0;
}

[b-4u0tcufjxn] .record-drawer__close-btn {
    flex-shrink: 0;
}

/* -- Body (scrollable) ------------------------------------------ */
.record-drawer__body[b-4u0tcufjxn] {
    flex: 1 1 auto;
    overflow-y: auto;
    padding: 16px;
    position: relative;
}

/* -- Footer (pinned to bottom) ----------------------------------
   Wraps at every width, not just on a phone: justify-content:flex-end with no wrap
   let a too-wide action set overflow to the LEFT, so the first button (usually the
   primary Save) sat flush against the drawer edge with no padding, and the buttons
   shrank to clipped circles. The calendar event drawer carries up to five actions
   (Save, Follow-up, Sync to Outlook, Show log, Delete), which overflows the 540px
   desktop drawer on its own. */
.record-drawer__footer[b-4u0tcufjxn] {
    flex-shrink: 0;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 12px 16px;
    border-top: 1px solid var(--lb-border);
    background: var(--lb-bg-surface);
}

/* -- Mobile: side -> full-width, bottom -> taller --------------- */
@media (max-width: 768px) {
    .record-drawer--side.record-drawer--open[b-4u0tcufjxn] {
        width: 100%;
    }

    .record-drawer--bottom.record-drawer--open[b-4u0tcufjxn] {
        height: 85vh;
    }

    .record-drawer--bottom .record-drawer__body[b-4u0tcufjxn] {
        overflow: auto;
    }
}
/* /Components/Shared/ReportHeader.razor.rz.scp.css */
/* === ReportHeader -- scoped styles === */

.report-header-strip[b-2mj0mpi2zp] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 16px;
    background: var(--lb-bg-surface);
    border-radius: 6px;
    margin-bottom: 12px;
}

.report-header-firm[b-2mj0mpi2zp] {
    font-size: 0.85rem;
    font-weight: 500;
    color: var(--lb-text-muted);
    letter-spacing: 0.01em;
}

.report-header-meta[b-2mj0mpi2zp] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 4px;
}

.report-header-title[b-2mj0mpi2zp] {
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--lb-text);
}

.report-header-sep[b-2mj0mpi2zp] {
    color: var(--lb-text-muted);
    margin: 0 2px;
    user-select: none;
}

.report-header-detail[b-2mj0mpi2zp] {
    font-size: 0.8rem;
    color: var(--lb-text-muted);
}

.report-header-loading[b-2mj0mpi2zp] {
    font-style: italic;
}

.report-header-filters[b-2mj0mpi2zp] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 6px;
    padding-left: 8px;
    border-left: 3px solid var(--lb-border-light);
    margin-top: 2px;
}

.report-header-filters-label[b-2mj0mpi2zp] {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--lb-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.report-header-filters-value[b-2mj0mpi2zp] {
    font-size: 0.8rem;
    font-style: italic;
    color: var(--lb-text-secondary);
}

/* Print: ensure the header is visible on printed pages */
@media print {
    .report-header-strip[b-2mj0mpi2zp] {
        background: none;
        border: 1px solid var(--lb-border-light);
        break-inside: avoid;
    }
}
/* /Components/Shared/ReportTruncationNotice.razor.rz.scp.css */
.report-trunc-notice[b-a6ga2ri752] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 16px;
    padding: 10px 14px;
    border: 1px solid var(--lb-warning, #C05F1A);
    border-left-width: 4px;
    border-radius: 6px;
    background: var(--lb-warning-bg, #FBF0E8);
    font-size: 0.875rem;
    line-height: 1.4;
}

.report-trunc-icon[b-a6ga2ri752] {
    flex: 0 0 auto;
    font-size: 16px;
    color: var(--lb-warning, #C05F1A);
}

.report-trunc-text[b-a6ga2ri752] {
    color: var(--lb-text, #1f2937);
}
/* /Components/Shared/SpecialDamageDrawerForm.razor.rz.scp.css */
/* ----------------------------------------------------------------
   SpecialDamageDrawerForm.razor.css -- Scoped styles for the SD form.
   Two-column grid layout for paired fields, single column for full-width.
   Collapses to single column at narrow drawer widths (<=400px).
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ---------------------------------------------------------------- */

.sd-form[b-xjnnvuxnou] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* -- Row types -------------------------------------------------- */
.sd-form__row[b-xjnnvuxnou] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.sd-form__row--full[b-xjnnvuxnou] {
    grid-column: 1 / -1;
}

.sd-form__row--pair[b-xjnnvuxnou] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

/* -- Individual field inside a pair row ------------------------- */
.sd-form__field[b-xjnnvuxnou] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* -- Labels ----------------------------------------------------- */
.sd-form__label[b-xjnnvuxnou] {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
}

/* -- Validation errors ------------------------------------------ */
[b-xjnnvuxnou] .field-validation-error {
    font-size: 0.75rem;
    color: var(--lb-danger);
    margin-top: 2px;
}

.sd-form__errors[b-xjnnvuxnou] {
    margin-top: 8px;
}

.sd-form__errors ul[b-xjnnvuxnou] {
    margin: 0;
    padding-left: 18px;
}

.sd-form__errors li[b-xjnnvuxnou] {
    font-size: 0.8rem;
    color: var(--lb-danger);
}

/* -- Narrow drawer / small screens -- collapse to single column - */
@media (max-width: 400px) {
    .sd-form__row--pair[b-xjnnvuxnou] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/StatCard.razor.rz.scp.css */
/* -- Stat card: compact summary tile for dashboard header rows -- */

.stat-card[b-tw4q0bjbx6] {
    background: var(--lb-bg-white);
    border: 1px solid var(--lb-border);
    border-top: 1px solid color-mix(in srgb, var(--stat-accent, var(--lb-info)) 22%, var(--lb-border));
    border-left: 4px solid var(--stat-accent, var(--lb-info));
    border-radius: 8px;
    box-shadow: var(--lb-shadow);
    padding: 10px 14px;
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
}

/* -- Header row: label on the left, sub-label pushed right -- */
.stat-header[b-tw4q0bjbx6] {
    display: flex;
    align-items: baseline;
    gap: 6px;
    min-width: 0;
}

.stat-label[b-tw4q0bjbx6] {
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--lb-text-muted);
    line-height: 1.2;
    white-space: nowrap;
}

.stat-sublabel[b-tw4q0bjbx6] {
    font-size: 0.7rem;
    color: var(--lb-text-dim);
    line-height: 1.2;
    margin-left: auto;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.stat-value[b-tw4q0bjbx6] {
    font-size: 1.5rem;
    font-weight: 600;
    line-height: 1.2;
    color: var(--lb-text);
    font-variant-numeric: tabular-nums;
}

/* Clickable stat card link variant */
.stat-card-link[b-tw4q0bjbx6] {
    text-decoration: none;
    color: inherit;
    cursor: pointer;
    transition: box-shadow 0.15s ease, border-color 0.15s ease;
    /* Reset button styles when rendered as <button> */
    font: inherit;
    text-align: inherit;
}

.stat-card-link:hover[b-tw4q0bjbx6] {
    border-color: var(--stat-accent, var(--lb-info));
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08);
    text-decoration: none;
    color: inherit;
}

.stat-card-link:focus-visible[b-tw4q0bjbx6] {
    outline: 2px solid var(--stat-accent, var(--lb-info));
    outline-offset: 2px;
}

/* Active (selected) stat card filter */
.stat-card-active[b-tw4q0bjbx6] {
    border-color: var(--stat-accent, var(--lb-info));
    box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
    background: color-mix(in srgb, var(--stat-accent, var(--lb-info)) 6%, var(--lb-bg-white));
}

/* -- Phone: stack the sub-label under the label so it wraps instead of
      truncating with an ellipsis on a full-width single-column card. -- */
@media (max-width: 576px) {
    .stat-header[b-tw4q0bjbx6] {
        flex-direction: column;
        align-items: flex-start;
    }

    .stat-sublabel[b-tw4q0bjbx6] {
        margin-left: 0;
        white-space: normal;
        overflow: visible;
        text-overflow: clip;
    }
}
/* /Components/Shared/StatusPill.razor.rz.scp.css */
/* -- StatusPill: colored badge for record status values -- */

.status-pill[b-1ys7t41lpp] {
    display: inline-block;
    font-size: 11px;
    font-weight: 600;
    line-height: 1;
    padding: 3px 8px;
    border-radius: 10px;
    white-space: nowrap;
}

.status-pill-green[b-1ys7t41lpp] {
    background: var(--status-green-bg, #e1f5ee);
    color: var(--status-green-text, #0f6e56);
    border: 1px solid var(--status-green-border, transparent);
}

.status-pill-amber[b-1ys7t41lpp] {
    background: var(--status-amber-bg, #faeeda);
    color: var(--status-amber-text, #854f0b);
    border: 1px solid var(--status-amber-border, transparent);
}

.status-pill-blue[b-1ys7t41lpp] {
    background: var(--status-blue-bg, #e6f1fb);
    color: var(--status-blue-text, #185fa5);
    border: 1px solid var(--status-blue-border, transparent);
}

.status-pill-gray[b-1ys7t41lpp] {
    background: var(--status-gray-bg, #f1efe8);
    color: var(--status-gray-text, #5f5e5a);
    border: 1px solid var(--status-gray-border, #d5d3cc);
}

/* Dark mode overrides live in app.css (global scope -- Blazor isolation blocks :global() here) */
/* /Components/Shared/TaskRow.razor.rz.scp.css */
/* TaskRow.razor -- scoped styles for the task row component */

.task-row[b-09xf8ga6bi] {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    padding: 10px 12px;
    border-bottom: 1px solid var(--lb-border);
    transition: background-color 0.15s ease;
    cursor: default;
}

.task-row:hover[b-09xf8ga6bi] {
    background-color: var(--lb-elevated);
}

.task-row.task-completed .task-description[b-09xf8ga6bi] {
    text-decoration: line-through;
    color: var(--lb-text-muted);
}

.task-row.task-overdue[b-09xf8ga6bi] {
    border-left: 3px solid var(--lb-danger);
}

.task-check[b-09xf8ga6bi] {
    flex-shrink: 0;
    padding-top: 2px;
}

.task-body[b-09xf8ga6bi] {
    flex: 1;
    min-width: 0;
    cursor: pointer;
}

.task-header-row[b-09xf8ga6bi] {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 4px;
}

.task-description[b-09xf8ga6bi] {
    font-size: 0.9rem;
    font-weight: 500;
    color: var(--lb-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    min-width: 0;
}

.task-priority[b-09xf8ga6bi] {
    font-size: 0.7rem;
    font-weight: 600;
    text-transform: uppercase;
    padding: 1px 6px;
    border-radius: 3px;
    white-space: nowrap;
}

.task-priority.priority-high[b-09xf8ga6bi] {
    background-color: var(--lb-danger-bg);
    color: var(--lb-danger);
}

.task-priority.priority-normal[b-09xf8ga6bi] {
    background-color: var(--lb-info-bg);
    color: var(--lb-info);
}

.task-priority.priority-low[b-09xf8ga6bi] {
    background-color: var(--lb-surface-alt);
    color: var(--lb-text-muted);
}

.task-meta-row[b-09xf8ga6bi] {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 0.78rem;
    color: var(--lb-text-dim);
}

.task-due[b-09xf8ga6bi] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
}

.task-due.due-overdue[b-09xf8ga6bi] {
    color: var(--lb-danger);
    font-weight: 600;
}

.task-case[b-09xf8ga6bi] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 180px;
}

.task-checklist-badge[b-09xf8ga6bi] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
}

.task-actions[b-09xf8ga6bi] {
    flex-shrink: 0;
    display: flex;
    gap: 2px;
    opacity: 0;
    transition: opacity 0.15s ease;
}

.task-row:hover .task-actions[b-09xf8ga6bi] {
    opacity: 1;
}

/* Touch fallback: phones and tablets cannot trigger :hover, so .task-actions
 * would stay at opacity: 0 and be unreachable. Always show on (hover: none). */
@media (hover: none) {
    .task-actions[b-09xf8ga6bi] {
        opacity: 1;
    }
}

[b-09xf8ga6bi] .task-action-btn.e-btn {
    min-width: 28px;
    height: 28px;
    padding: 0;
}

[b-09xf8ga6bi] .task-delete-btn.e-btn:hover {
    color: var(--lb-danger);
}

[b-09xf8ga6bi] .task-gotocase-btn.e-btn:hover {
    color: var(--lb-brand);
}

/* -- Phase 2: Kanban status indicator -- */
.task-kanban-status[b-09xf8ga6bi] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 0.75rem;
    font-weight: 500;
    color: var(--lb-text-dim);
}

.task-kanban-dot[b-09xf8ga6bi] {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    flex-shrink: 0;
}

/* -- Phase 2: Source traceability labels -- */
.task-source-label[b-09xf8ga6bi] {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-size: 0.72rem;
    color: var(--lb-brand);
    background: var(--lb-surface-alt);
    border-radius: 3px;
    padding: 1px 6px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 150px;
}

.task-source-label .e-icons[b-09xf8ga6bi] {
    font-size: 0.65rem;
}

/* -- Responsive: phone --
 * .task-meta-row packs kanban status, due date, case badge, checklist count,
 * and source label into one non-wrapping flex row. At phone widths the
 * available space (row width minus the checkbox and the always-visible
 * .task-actions -- see the (hover: none) rule above) is too narrow for all of
 * them on one line, so items were silently clipped at .task-section's
 * overflow:hidden boundary. Let the meta row wrap instead, and trim the two
 * fixed max-widths so a wrapped line can fit more than one item. */
@media (max-width: 576px) {
    .task-row[b-09xf8ga6bi] {
        padding: 8px 10px;
        gap: 6px;
    }

    .task-meta-row[b-09xf8ga6bi] {
        flex-wrap: wrap;
        gap: 4px 10px;
    }

    .task-case[b-09xf8ga6bi] {
        max-width: 140px;
    }

    .task-source-label[b-09xf8ga6bi] {
        max-width: 120px;
    }
}
/* /Components/Shared/TimeslipDrawerForm.razor.rz.scp.css */
/* ----------------------------------------------------------------
   TimeslipDrawerForm.razor.css -- Scoped styles for the timeslip form.
   Two-column grid layout for paired fields, single column for full-width.
   Collapses to single column at narrow drawer widths (<=400px).
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ---------------------------------------------------------------- */

.ts-form[b-jsgen4r8h7] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* -- Row types -------------------------------------------------- */
.ts-form__row[b-jsgen4r8h7] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.ts-form__row--full[b-jsgen4r8h7] {
    grid-column: 1 / -1;
}

.ts-form__row--pair[b-jsgen4r8h7] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

/* -- Individual field inside a pair row ------------------------- */
.ts-form__field[b-jsgen4r8h7] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* -- Labels ----------------------------------------------------- */
.ts-form__label[b-jsgen4r8h7] {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
}

/* -- Computed amount display ------------------------------------ */
.ts-form__amount-display[b-jsgen4r8h7] {
    font-size: 1.1rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    color: var(--lb-text);
    padding: 6px 0;
}

/* -- Validation errors ------------------------------------------ */
[b-jsgen4r8h7] .field-validation-error {
    font-size: 0.75rem;
    color: var(--lb-danger);
    margin-top: 2px;
}

.ts-form__errors[b-jsgen4r8h7] {
    margin-top: 8px;
}

.ts-form__errors ul[b-jsgen4r8h7] {
    margin: 0;
    padding-left: 18px;
}

.ts-form__errors li[b-jsgen4r8h7] {
    font-size: 0.8rem;
    color: var(--lb-danger);
}

/* -- Narrow drawer / small screens -- collapse to single column - */
@media (max-width: 400px) {
    .ts-form__row--pair[b-jsgen4r8h7] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/UpcomingEventNotifier.razor.rz.scp.css */
/* UpcomingEventNotifier.razor.css -- Toast notification styling */

.upcoming-toast-body[b-unmv69b856] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 4px 0;
}

.upcoming-toast-icon[b-unmv69b856] {
    font-size: 1.2rem;
    color: var(--lb-brand);
    flex-shrink: 0;
    margin-top: 2px;
}

.upcoming-toast-text[b-unmv69b856] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 0.85rem;
    color: var(--lb-text);
}

.upcoming-toast-text strong[b-unmv69b856] {
    font-size: 0.9rem;
}
/* /Components/Shared/UrgencyBadge.razor.rz.scp.css */
/* -- UrgencyBadge: small colored pill for urgency tiers -- */

.urgency-badge[b-2nz6g391f3] {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    line-height: 1.4;
    white-space: nowrap;
    text-align: center;
}

.urgency-badge--critical[b-2nz6g391f3] {
    background: var(--lb-danger);
    color: var(--lb-text-on-danger);
}

.urgency-badge--urgent[b-2nz6g391f3] {
    background: var(--lb-warning);
    color: var(--lb-text-on-warning);
}

.urgency-badge--warning[b-2nz6g391f3] {
    background: var(--lb-info);
    color: var(--lb-text-on-info);
}
/* /Components/Shared/WageLossDrawerForm.razor.rz.scp.css */
/* ----------------------------------------------------------------
   WageLossDrawerForm.razor.css -- Scoped styles for the wage loss form.
   Two-column grid layout for paired fields, single column for full-width.
   Collapses to single column at narrow drawer widths (<=400px).
   All colors use --lb-* design tokens. No hardcoded hex. No !important.
   ---------------------------------------------------------------- */

.wl-form[b-7hbisl4fg3] {
    display: flex;
    flex-direction: column;
    gap: 14px;
}

/* -- Row types -------------------------------------------------- */
.wl-form__row[b-7hbisl4fg3] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.wl-form__row--full[b-7hbisl4fg3] {
    grid-column: 1 / -1;
}

.wl-form__row--pair[b-7hbisl4fg3] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}

/* -- Individual field inside a pair row ------------------------- */
.wl-form__field[b-7hbisl4fg3] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

/* -- Labels ----------------------------------------------------- */
.wl-form__label[b-7hbisl4fg3] {
    font-size: 0.8rem;
    font-weight: 500;
    color: var(--lb-text-muted);
}

/* -- Validation errors ------------------------------------------ */
[b-7hbisl4fg3] .field-validation-error {
    font-size: 0.75rem;
    color: var(--lb-danger);
    margin-top: 2px;
}

.wl-form__errors[b-7hbisl4fg3] {
    margin-top: 8px;
}

.wl-form__errors ul[b-7hbisl4fg3] {
    margin: 0;
    padding-left: 18px;
}

.wl-form__errors li[b-7hbisl4fg3] {
    font-size: 0.8rem;
    color: var(--lb-danger);
}

/* -- Narrow drawer / small screens -- collapse to single column - */
@media (max-width: 400px) {
    .wl-form__row--pair[b-7hbisl4fg3] {
        grid-template-columns: 1fr;
    }
}
/* /Components/Shared/WcBodyPartPicker.razor.rz.scp.css */
.wc-bodypart-picker[b-kfnpx50qvu] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.wc-bodypart-picker .section-label[b-kfnpx50qvu] {
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    font-weight: 600;
}

.selected-parts[b-kfnpx50qvu] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.bodypart-card[b-kfnpx50qvu] {
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 0.75rem;
    background: var(--lb-bg-white);
}

.bp-card-header[b-kfnpx50qvu] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 0.5rem;
}

.bp-name[b-kfnpx50qvu] {
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--lb-text);
    flex: 1;
}

.bp-max-weeks[b-kfnpx50qvu] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    background: var(--lb-surface-alt);
    padding: 0.125rem 0.5rem;
    border-radius: var(--lb-radius-pill);
}

[b-kfnpx50qvu] .bp-remove-btn {
    min-width: auto;
    padding: 0.125rem 0.25rem;
}

.bp-card-body[b-kfnpx50qvu] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.bp-impairment-row[b-kfnpx50qvu] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.bp-field-label[b-kfnpx50qvu] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}

.bp-impairment-controls[b-kfnpx50qvu] {
    max-width: 160px;
}

.bp-calc-row[b-kfnpx50qvu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding-top: 0.25rem;
    border-top: 1px dashed var(--lb-border-light);
}

.bp-calc-label[b-kfnpx50qvu] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.bp-calc-value[b-kfnpx50qvu] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text);
}

.add-bp-btn[b-kfnpx50qvu] {
    align-self: flex-start;
}

.bp-picker-overlay[b-kfnpx50qvu] {
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    background: var(--lb-bg-white);
    padding: 0.75rem;
    box-shadow: var(--lb-shadow);
}

.bp-picker-header[b-kfnpx50qvu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 0.5rem;
}

.bp-search[b-kfnpx50qvu] {
    margin-bottom: 0.5rem;
}

.bp-category-list[b-kfnpx50qvu] {
    max-height: 280px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.bp-category[b-kfnpx50qvu] {
    display: flex;
    flex-direction: column;
    gap: 0.125rem;
}

.bp-category-name[b-kfnpx50qvu] {
    font-size: 0.6875rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    color: var(--lb-text-dim);
    font-weight: 600;
    padding: 0.25rem 0;
}

.bp-pick-item[b-kfnpx50qvu] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.375rem 0.5rem;
    border: none;
    background: transparent;
    cursor: pointer;
    border-radius: 4px;
    font-size: 0.8125rem;
    color: var(--lb-text);
    text-align: left;
    width: 100%;
}

.bp-pick-item:hover:not(.bp-pick-disabled)[b-kfnpx50qvu] {
    background: var(--lb-brand-light);
}

.bp-pick-disabled[b-kfnpx50qvu] {
    opacity: 0.4;
    cursor: not-allowed;
}

.bp-pick-weeks[b-kfnpx50qvu] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
}
/* /Components/Shared/WcComparePanel.razor.rz.scp.css */
.wc-compare-panel[b-gmr5zinr80] {
    padding: 1rem;
}

.wc-compare-panel .section-label[b-gmr5zinr80] {
    display: block;
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    font-weight: 600;
    margin-bottom: 0.75rem;
}

.compare-loading[b-gmr5zinr80],
.compare-empty[b-gmr5zinr80] {
    font-size: 0.875rem;
    color: var(--lb-text-muted);
    text-align: center;
    padding: 2rem 0;
}

.compare-scope[b-gmr5zinr80] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
    margin: 0 0 0.75rem;
}

.compare-cards[b-gmr5zinr80] {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.compare-card[b-gmr5zinr80] {
    flex: 1;
    min-width: 220px;
    max-width: 320px;
    border: 1px solid var(--lb-border);
    border-radius: var(--lb-radius-card);
    padding: 1rem;
    background: var(--lb-bg-white);
    position: relative;
}

.compare-card-best[b-gmr5zinr80] {
    border-color: var(--lb-success);
    border-width: 2px;
}

.compare-badge[b-gmr5zinr80] {
    position: absolute;
    top: -0.625rem;
    right: 0.75rem;
    background: var(--lb-success-bg);
    color: var(--lb-success);
    font-size: 0.6875rem;
    font-weight: 600;
    padding: 0.125rem 0.5rem;
    border-radius: var(--lb-radius-pill);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.compare-name[b-gmr5zinr80] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--lb-text);
    margin: 0 0 0.125rem;
}

.compare-type[b-gmr5zinr80] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    display: block;
    margin-bottom: 0.75rem;
}

.compare-rows[b-gmr5zinr80] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.compare-row[b-gmr5zinr80] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.25rem 0;
}

.compare-label[b-gmr5zinr80] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.compare-value[b-gmr5zinr80] {
    font-size: 0.875rem;
    font-weight: 500;
    color: var(--lb-text);
}

.compare-deduction[b-gmr5zinr80] {
    color: var(--lb-danger);
}

.compare-net-row[b-gmr5zinr80] {
    border-top: 1px solid var(--lb-border-light);
    padding-top: 0.5rem;
    margin-top: 0.25rem;
}

.compare-net-row .compare-label[b-gmr5zinr80] {
    font-weight: 600;
    color: var(--lb-text);
}

.compare-net-row .compare-value[b-gmr5zinr80] {
    font-size: 1.125rem;
    font-weight: 700;
}

.compare-positive[b-gmr5zinr80] {
    color: var(--lb-success);
}

.compare-negative[b-gmr5zinr80] {
    color: var(--lb-danger);
}

.compare-promoted[b-gmr5zinr80] {
    display: block;
    font-size: 0.75rem;
    color: var(--lb-info);
    margin-top: 0.5rem;
    font-style: italic;
}

.compare-pv-row[b-gmr5zinr80] {
    padding: 0.125rem 0;
}

.compare-pv-label[b-gmr5zinr80] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    font-style: italic;
}

.compare-pv-value[b-gmr5zinr80] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--lb-text-muted);
}
/* /Components/Shared/WcResultsPanel.razor.rz.scp.css */
.wc-results-panel[b-s22l4iadg7] {
    padding: 1.25rem;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.wc-results-header[b-s22l4iadg7] {
    margin-bottom: 0.75rem;
}

.section-label[b-s22l4iadg7] {
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    font-weight: 600;
}

.wc-result-row[b-s22l4iadg7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.35rem 0;
}

.result-label[b-s22l4iadg7] {
    font-size: 0.875rem;
    color: var(--lb-text);
}

.result-value[b-s22l4iadg7] {
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--lb-text);
}

.deduction-value[b-s22l4iadg7] {
    color: var(--lb-danger);
}

.wc-result-gross[b-s22l4iadg7] {
    border-top: 1px solid var(--lb-border-light);
    padding-top: 0.5rem;
    margin-top: 0.25rem;
}

.wc-result-gross .result-value[b-s22l4iadg7] {
    font-size: 1rem;
    font-weight: 700;
}

.wc-result-gross-muted .result-label[b-s22l4iadg7],
.wc-result-gross-muted .result-value[b-s22l4iadg7] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
    font-weight: 500;
}

.wc-result-pv[b-s22l4iadg7] {
    padding: 0.25rem 0;
}

.wc-result-pv .result-label[b-s22l4iadg7] {
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
}

.wc-result-pv .result-value[b-s22l4iadg7] {
    color: var(--lb-text-muted);
    font-size: 0.875rem;
}

.wc-result-pv-gross .result-label-bold[b-s22l4iadg7] {
    font-weight: 700;
    color: var(--lb-text);
}

.wc-result-pv-gross .result-value-bold[b-s22l4iadg7] {
    font-size: 1rem;
    font-weight: 700;
    color: var(--lb-text);
}
}

.wc-result-basis .result-label[b-s22l4iadg7],
.wc-result-basis .result-value[b-s22l4iadg7] {
    color: var(--lb-text-muted);
    font-size: 0.8125rem;
    font-weight: 500;
}

.wc-result-warning[b-s22l4iadg7] {
    margin: 0.5rem 0;
    padding: 0.5rem 0.75rem;
    border-left: 3px solid var(--lb-warning, #b45309);
    background: var(--lb-warning-bg, rgba(180, 83, 9, 0.08));
    color: var(--lb-text);
    font-size: 0.8125rem;
}

.wc-result-subtotal .result-value[b-s22l4iadg7] {
    font-weight: 700;
}

.wc-result-divider[b-s22l4iadg7] {
    border-top: 2px solid var(--lb-border);
    margin: 0.5rem 0;
}

.wc-result-net[b-s22l4iadg7] {
    padding: 0.5rem 0;
}

.wc-result-net .result-label[b-s22l4iadg7] {
    font-size: 1.125rem;
    font-weight: 700;
}

.wc-result-net .result-value[b-s22l4iadg7] {
    font-size: 1.5rem;
    font-weight: 700;
}

.net-positive .result-value[b-s22l4iadg7] {
    color: var(--lb-success);
}

.net-negative .result-value[b-s22l4iadg7] {
    color: var(--lb-danger);
}

.wc-liens-section[b-s22l4iadg7] {
    margin-top: 0.5rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--lb-border-light);
}

.wc-liens-section .section-label[b-s22l4iadg7] {
    display: block;
    margin-bottom: 0.25rem;
}

.lien-desc[b-s22l4iadg7] {
    padding-left: 0.5rem;
    font-size: 0.8125rem;
}

.lien-total-row[b-s22l4iadg7] {
    border-top: 1px dashed var(--lb-border-light);
    padding-top: 0.35rem;
    margin-top: 0.25rem;
}

.wc-bodypart-breakdown[b-s22l4iadg7] {
    margin-top: 0.75rem;
    padding-top: 0.5rem;
    border-top: 1px solid var(--lb-border-light);
}

.wc-bodypart-breakdown .section-label[b-s22l4iadg7] {
    display: block;
    margin-bottom: 0.25rem;
}

.bp-row .result-label[b-s22l4iadg7] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.bp-row .result-value[b-s22l4iadg7] {
    font-size: 0.8125rem;
    font-weight: 500;
}
/* /Components/Shared/WcWageDiffInputs.razor.rz.scp.css */
.wc-wagediff-inputs[b-3934jgnufh] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.wc-wagediff-inputs .section-label[b-3934jgnufh] {
    text-transform: uppercase;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    color: var(--lb-text-muted);
    font-weight: 600;
    margin-bottom: 0.25rem;
}

.wagediff-field[b-3934jgnufh] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}

.wagediff-field .field-label[b-3934jgnufh] {
    font-size: 0.8125rem;
    font-weight: 500;
    color: var(--lb-text);
}

.wagediff-summary[b-3934jgnufh] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 0.75rem;
    margin-top: 0.25rem;
}

.summary-row[b-3934jgnufh] {
    display: flex;
    justify-content: space-between;
    padding: 0.25rem 0;
}

.summary-label[b-3934jgnufh] {
    font-size: 0.8125rem;
    color: var(--lb-text-muted);
}

.summary-value[b-3934jgnufh] {
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--lb-text);
}

.required-indicator[b-3934jgnufh] {
    color: var(--lb-danger);
    font-weight: 600;
    margin-left: 2px;
}

.wc-pv-section[b-3934jgnufh] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    border-top: 1px solid var(--lb-border-light);
    padding-top: 0.75rem;
    margin-top: 0.25rem;
}

.wc-pv-info[b-3934jgnufh] {
    background: var(--lb-surface-alt);
    border: 1px solid var(--lb-border-light);
    border-radius: var(--lb-radius-card);
    padding: 0.5rem 0.75rem;
}

.wc-pv-hint[b-3934jgnufh] {
    font-size: 0.75rem;
    color: var(--lb-text-muted);
    margin: 0;
}
/* /Components/Shared/WorkflowStageBar.razor.rz.scp.css */
/* -- WorkflowStageBar -- scoped styles -- */

.stage-bar[b-w3q34m0m8t] {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    gap: 0;
    padding: 6px 16px 2px;
    margin-bottom: 12px;
    overflow-x: auto;
    /* Without containment, a sideways swipe here chains to the browser's edge
       swipe-back and exits the page (mobile bug class; see .docs-filter-chips). */
    overscroll-behavior-x: contain;
    touch-action: pan-x;
}

/* -- Individual stage item -- */
.stage-item[b-w3q34m0m8t] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    min-width: 72px;
    flex: 1 1 0;
    max-width: 160px;
    user-select: none;
    padding: 0;
    border: 0;
    margin: 0;
    background: none;
    color: inherit;
    font: inherit;
    line-height: 1.2;
    text-align: inherit;
    /* The active stage renders as a <div> while clickable stages render as a
       <button>. Without normalizing the button's box (UA appearance, line-box,
       margins) the two element types align differently under the bar's
       align-items:flex-end, dropping the active label below the row on phones. */
    box-sizing: border-box;
    -webkit-appearance: none;
    appearance: none;
}

.stage-clickable[b-w3q34m0m8t] {
    cursor: pointer;
}

.stage-clickable:hover .stage-label[b-w3q34m0m8t] {
    text-decoration: underline;
}

.stage-clickable:focus-visible[b-w3q34m0m8t] {
    outline: 2px solid var(--lb-brand);
    outline-offset: 2px;
    border-radius: 4px;
}

/* -- Stage label text -- */
.stage-label[b-w3q34m0m8t] {
    font-size: 0.72rem;
    line-height: 1.2;
    text-align: center;
    white-space: nowrap;
    padding: 0 2px;
}

/* -- 4px colored line below label -- */
.stage-line[b-w3q34m0m8t] {
    width: 100%;
    height: 4px;
    border-radius: 2px;
}

/* -- Connector between stages -- */
.stage-connector[b-w3q34m0m8t] {
    width: 12px;
    height: 4px;
    flex-shrink: 0;
    align-self: flex-end;
    border-radius: 0;
}

/* -- Completed state -- */
.stage-completed .stage-label[b-w3q34m0m8t] {
    color: var(--lb-success);
    font-weight: 500;
}

.stage-completed .stage-line[b-w3q34m0m8t] {
    background: var(--lb-success);
}

.connector-completed[b-w3q34m0m8t] {
    background: var(--lb-success);
}

/* -- Active state -- */
.stage-active .stage-label[b-w3q34m0m8t] {
    color: var(--lb-text-bright);
    font-weight: 700;
}

.stage-active .stage-line[b-w3q34m0m8t] {
    background: var(--lb-blue);
}

/* -- Future state -- */
.stage-future .stage-label[b-w3q34m0m8t] {
    color: var(--lb-text-dim);
    font-weight: 400;
}

.stage-future .stage-line[b-w3q34m0m8t] {
    background: var(--lb-border-light);
}

.connector-future[b-w3q34m0m8t] {
    background: var(--lb-border-light);
}

/* -- Compact inline dot stepper (Compact="true") --------------------------
   Row of dot + label per stage with short connecting bars, sized to sit
   inside the case header's meta row. State colors mirror the full-size
   bar: completed = green, active = blue ring, future = gray. */
.stage-bar-compact[b-w3q34m0m8t] {
    align-items: center;
    justify-content: flex-start;
    padding: 0;
    margin-bottom: 0;
    overflow-x: visible;
    /* Stage count is tenant-configurable: the bar must be able to shrink
       inside the header row (min-width: 0) and wrap onto extra lines
       (flex-wrap) instead of bleeding out of the card when there are many
       stages or a narrow viewport. */
    min-width: 0;
    flex-wrap: wrap;
    row-gap: 2px;
}

/* Connector + stage rendered as one unbreakable unit (see markup comment):
   flex line wrapping moves whole segments, never a bare connector dash. */
.stage-seg[b-w3q34m0m8t] {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
}

.stage-bar-compact .stage-item[b-w3q34m0m8t] {
    flex-direction: row;
    align-items: center;
    gap: 5px;
    min-width: 0;
    flex: 0 0 auto;
    max-width: none;
    /* Keeps the click target ~23px tall even when the label is collapsed
       to a bare 11px dot below the desktop tier (touch-target floor). */
    padding: 6px 4px;
}

.stage-dot[b-w3q34m0m8t] {
    width: 11px;
    height: 11px;
    border-radius: 50%;
    border: 2px solid var(--lb-border-light);
    background: var(--lb-border-light);
    box-sizing: border-box;
    flex-shrink: 0;
}

.stage-bar-compact .stage-completed .stage-dot[b-w3q34m0m8t] {
    background: var(--lb-success);
    border-color: var(--lb-success);
}

.stage-bar-compact .stage-active .stage-dot[b-w3q34m0m8t] {
    /* Hole color matches the header card surface (bg-white, not card). */
    background: var(--lb-bg-white);
    border-color: var(--lb-blue);
}

/* Stage names are free-text tenant data: cap a runaway label so a single
   unbreakable connector+dot+label segment can never push past the card
   edge on a narrow phone. */
.stage-bar-compact .stage-label[b-w3q34m0m8t] {
    max-width: 40vw;
    overflow: hidden;
    text-overflow: ellipsis;
}

.stage-bar-compact .stage-connector[b-w3q34m0m8t] {
    width: 16px;
    height: 2px;
    align-self: center;
    margin: 0 4px;
}

/* Below the desktop tier (app breakpoint model: desktop >= 1200px):
   non-active stages collapse to bare dots (their names stay reachable via
   the title tooltip); the active stage keeps its label. Keyed to 1200
   rather than 992 because the 992-1199 band is exactly where full labels
   plus the banner meta stop fitting on one line and would stack the
   header to a third row. */
@media (max-width: 1199.98px) {
    .stage-bar-compact .stage-item:not(.stage-active) .stage-label[b-w3q34m0m8t] {
        display: none;
    }

    .stage-bar-compact .stage-connector[b-w3q34m0m8t] {
        width: 10px;
    }
}

/* -- Backward-move warning callout (shown inside the confirm dialog) -- */
.stage-back-warning[b-w3q34m0m8t] {
    display: flex;
    align-items: flex-start;
    gap: 0.4rem;
    margin-top: 0.5rem;
    padding: 0.5rem 0.65rem;
    font-size: 0.82rem;
    line-height: 1.35;
    background: var(--lb-warning-bg);
    border: 1px solid var(--lb-warning);
    border-radius: var(--lb-radius-card);
    color: var(--lb-warning);
}

/* -- Responsive: shrink on small screens -- */
@media (max-width: 576px) {
    .stage-item[b-w3q34m0m8t] {
        min-width: 56px;
    }

    .stage-label[b-w3q34m0m8t] {
        font-size: 0.65rem;
    }

    .stage-connector[b-w3q34m0m8t] {
        width: 6px;
    }
}
