/* /Layout/MainLayout.razor.rz.scp.css */
/* See MainLayout.razor. The backdrop dots and frame colors come from the --app-* tokens in
   wwwroot/css/app.css so they follow light/dark. */
.app-backdrop[b-s8wjkqjxeg] {
    min-height: 100vh;
    padding: 1.5rem;
    background-color: var(--app-backdrop);
    background-image: radial-gradient(var(--app-backdrop-dot) 1px, transparent 1px);
    background-size: 22px 22px;
}

.app-frame[b-s8wjkqjxeg] {
    max-width: 1320px;
    margin: 0 auto;
    min-height: calc(100vh - 3rem);
    background: var(--bs-body-bg);
    border: 1px solid var(--app-hairline);
    border-radius: 14px;
    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 8px 24px rgba(16, 24, 40, 0.06);
    display: flex;
    flex-direction: column;
}

.app-main[b-s8wjkqjxeg] {
    flex: 1;
    padding: 0 2.25rem 2rem;
}

.content[b-s8wjkqjxeg] {
    padding-top: 1.25rem;
}

@media (max-width: 767.98px) {
    .app-backdrop[b-s8wjkqjxeg] {
        padding: 0;
    }

    .app-frame[b-s8wjkqjxeg] {
        border-radius: 0;
        border: none;
        min-height: 100vh;
    }

    .app-main[b-s8wjkqjxeg] {
        padding: 0 1rem 1.5rem;
    }
}
/* /Layout/NavMenu.razor.rz.scp.css */
/* Top bar — see NavMenu.razor. Colors come from Bootstrap's theme variables and the --app-*
   tokens in wwwroot/css/app.css, so light and dark both work. */
.app-topbar[b-kz9d4hfspn] {
    display: flex;
    align-items: center;
    gap: 1.75rem;
    padding: 0.9rem 2.25rem;
    border-bottom: 1px solid var(--app-hairline);
    flex-wrap: wrap;
}

.app-brand[b-kz9d4hfspn] {
    display: inline-flex;
    align-items: center;
    gap: 0.55rem;
    font-weight: 600;
    font-size: 0.95rem;
    color: var(--bs-emphasis-color);
    text-decoration: none;
}

.app-brand-mark[b-kz9d4hfspn] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 6px;
    background: var(--app-ink);
    color: var(--app-ink-contrast);
}

.app-topbar-body[b-kz9d4hfspn] {
    display: flex;
    align-items: center;
    flex: 1;
    gap: 1rem;
}

.app-tabs[b-kz9d4hfspn] {
    display: flex;
    align-items: center;
    gap: 0.25rem;
}

[b-kz9d4hfspn] .app-tab {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.35rem 0.8rem;
    border-radius: 7px;
    font-size: 0.85rem;
    color: var(--bs-secondary-color);
    text-decoration: none;
    transition: background-color 0.15s ease, color 0.15s ease;
}

    [b-kz9d4hfspn] .app-tab:hover {
        color: var(--bs-emphasis-color);
        background: var(--app-subtle);
    }

    [b-kz9d4hfspn] .app-tab.active {
        color: var(--bs-emphasis-color);
        background: var(--app-subtle);
        font-weight: 500;
    }

[b-kz9d4hfspn] .app-tab-warning {
    color: var(--app-draft-text);
}

/* Admin menu (2026-09-28) — same look as the name menu in LoginDisplay.razor.css. */
.app-admin[b-kz9d4hfspn] {
    position: relative;
}

[b-kz9d4hfspn] .app-admin-toggle {
    border: none;
    background: none;
}

    [b-kz9d4hfspn] .app-admin-toggle svg {
        color: var(--bs-secondary-color);
    }

.app-admin-scrim[b-kz9d4hfspn] {
    position: fixed;
    inset: 0;
    z-index: 1040;
}

.app-admin-menu[b-kz9d4hfspn] {
    position: absolute;
    left: 0;
    top: calc(100% + 6px);
    z-index: 1041;
    min-width: 160px;
    padding: 0.3rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--app-hairline);
    border-radius: 9px;
    box-shadow: 0 8px 24px rgba(16, 24, 40, 0.12);
}

[b-kz9d4hfspn] .app-admin-menu-item {
    display: block;
    padding: 0.45rem 0.65rem;
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--bs-body-color);
    text-decoration: none;
}

    [b-kz9d4hfspn] .app-admin-menu-item:hover,
    [b-kz9d4hfspn] .app-admin-menu-item.active {
        background: var(--app-subtle);
        color: var(--bs-emphasis-color);
    }

.app-tab-count[b-kz9d4hfspn] {
    min-width: 1.15rem;
    height: 1.15rem;
    padding: 0 0.3rem;
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 600;
    line-height: 1.15rem;
    text-align: center;
    background: var(--app-ink);
    color: var(--app-ink-contrast);
}

.app-topbar-actions[b-kz9d4hfspn] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    margin-left: auto;
}

.app-topbar-divider[b-kz9d4hfspn] {
    width: 1px;
    height: 1.25rem;
    margin: 0 0.6rem;
    background: var(--app-hairline);
}

.app-icon-btn.is-spinning svg[b-kz9d4hfspn] {
    animation: app-spin-b-kz9d4hfspn 0.9s linear infinite;
}

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

@media (max-width: 767.98px) {
    .app-topbar[b-kz9d4hfspn] {
        padding: 0.75rem 1rem;
        gap: 0.75rem;
    }

    .app-topbar-body[b-kz9d4hfspn] {
        flex-basis: 100%;
        flex-direction: column;
        align-items: stretch;
        gap: 0.75rem;
    }

        .app-topbar-body.collapsed[b-kz9d4hfspn] {
            display: none;
        }

    .app-tabs[b-kz9d4hfspn] {
        flex-direction: column;
        align-items: stretch;
    }

    .app-topbar-actions[b-kz9d4hfspn] {
        margin-left: 0;
    }
}
/* /Pages/ConnectAgilityBlue.razor.rz.scp.css */
/* Tinted backdrop for the Connect Agility Blue "login" card (requested 2026-09-22).
   Built from Bootstrap's own --bs-primary-rgb/--bs-secondary-rgb (set per-theme in
   wwwroot/css/app.css) rather than new hardcoded colors, so it stays correct in both
   light and dark mode automatically instead of needing its own [data-bs-theme] rules. */
.connect-ab-backdrop[b-f5gkonsae0] {
    min-height: calc(100vh - 12rem);
    border-radius: var(--bs-border-radius-lg);
    background: linear-gradient(135deg,
        rgba(var(--bs-primary-rgb), 0.12),
        rgba(var(--bs-secondary-rgb), 0.16));
}
/* /Pages/MyEntries.razor.rz.scp.css */
/* My Entries — see MyEntries.razor. Colors from Bootstrap's theme variables and the --app-*
   tokens in wwwroot/css/app.css, so light and dark both work. */

/* ---- Toolbar ---------------------------------------------------------------- */
.entries-toolbar[b-11vsfc7d3g] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    padding-top: 0.25rem;
}

.entries-viewing[b-11vsfc7d3g] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.875rem;
}

.entries-viewing-label[b-11vsfc7d3g] {
    color: var(--app-muted);
}

.entries-viewing-value[b-11vsfc7d3g] {
    font-weight: 600;
    color: var(--bs-emphasis-color);
}

.entries-viewing-select[b-11vsfc7d3g] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

    .entries-viewing-select select[b-11vsfc7d3g] {
        appearance: none;
        border: none;
        background: transparent;
        padding: 0.2rem 1.4rem 0.2rem 0.35rem;
        margin-left: -0.35rem;
        border-radius: 6px;
        font-weight: 600;
        color: var(--bs-emphasis-color);
        cursor: pointer;
        max-width: 18rem;
        text-overflow: ellipsis;
    }

        .entries-viewing-select select:hover[b-11vsfc7d3g],
        .entries-viewing-select select:focus-visible[b-11vsfc7d3g] {
            background: var(--app-subtle);
            outline: none;
        }

    .entries-viewing-select svg[b-11vsfc7d3g] {
        position: absolute;
        right: 0.35rem;
        pointer-events: none;
        color: var(--app-muted);
    }

.entries-toolbar-right[b-11vsfc7d3g] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}

.entries-week[b-11vsfc7d3g] {
    display: inline-flex;
    align-items: center;
    height: 34px;
    border: 1px solid var(--app-hairline);
    border-radius: 8px;
    background: var(--bs-body-bg);
}

.entries-week-step[b-11vsfc7d3g] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 100%;
    border: none;
    background: none;
    color: var(--app-muted);
    border-radius: 8px;
}

    .entries-week-step:hover:not(:disabled)[b-11vsfc7d3g] {
        color: var(--bs-emphasis-color);
        background: var(--app-subtle);
    }

.entries-week-label[b-11vsfc7d3g] {
    min-width: 8.5rem;
    padding: 0 0.35rem;
    text-align: center;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--bs-emphasis-color);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

.entries-today[b-11vsfc7d3g],
.entries-new[b-11vsfc7d3g] {
    height: 34px;
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0 0.9rem;
    border-radius: 8px;
    font-size: 0.85rem;
}

/* Today is disabled while the viewed week already IS the current week (nothing to jump to) —
   that's by design, not a stuck/broken button, but Bootstrap's default disabled treatment
   (opacity 0.65 on an already-subtle outline button) barely reads as disabled at a glance.
   Dim it further and show a "not-allowed" cursor so hovering it makes clear why nothing
   happens, instead of looking like a button that just isn't responding. */
.entries-today:disabled[b-11vsfc7d3g] {
    opacity: 0.45;
    /* Bootstrap's own .btn:disabled sets pointer-events:none, which also stops the browser
       from hit-testing the element for :hover — so cursor:not-allowed alone would never
       actually show. Re-enabling pointer-events here is safe: the real HTML "disabled"
       attribute (not CSS) is what blocks the click/keyboard activation, same as any other
       disabled button. */
    pointer-events: auto;
    cursor: not-allowed;
}

/* ---- Week Activity (legacy header values) ----------------------------------- */
.entries-activity[b-11vsfc7d3g] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1.5rem;
    margin: 1rem 0 0.5rem;
    padding: 0.7rem 0.95rem;
    min-height: 2.6rem;
    border-radius: 10px;
    background: var(--app-subtle);
    font-size: 0.85rem;
    font-variant-numeric: tabular-nums;
    color: var(--bs-emphasis-color);
    font-weight: 600;
}

.entries-stat-label[b-11vsfc7d3g] {
    color: var(--app-muted);
    font-weight: 400;
    margin-right: 0.2rem;
}

    .entries-stat-label[b-11vsfc7d3g]::after {
        content: ":";
    }

.entries-stat-pct[b-11vsfc7d3g] {
    color: var(--app-muted);
    font-weight: 500;
    margin-left: 0.15rem;
}

.entries-stat-placeholder[b-11vsfc7d3g] {
    color: var(--app-muted);
    font-weight: 400;
}

/* ---- States ------------------------------------------------------------------ */
.entries-state[b-11vsfc7d3g] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    padding: 3rem 0;
    justify-content: center;
    color: var(--app-muted);
    font-size: 0.9rem;
}

.entries-empty[b-11vsfc7d3g] {
    flex-direction: column;
    gap: 0.25rem;
}

    .entries-empty strong[b-11vsfc7d3g] {
        color: var(--bs-emphasis-color);
        font-weight: 600;
    }

/* ---- Grid -------------------------------------------------------------------- */
.entries-table[b-11vsfc7d3g] {
    width: 100%;
    min-width: 1100px;
    table-layout: fixed;
    border-collapse: collapse;
    font-size: 0.85rem;
    color: var(--bs-body-color);
}

.col-matter[b-11vsfc7d3g] { width: 19%; }
.col-type[b-11vsfc7d3g] { width: 12%; }
.col-qty[b-11vsfc7d3g] { width: 6%; }
.col-price[b-11vsfc7d3g] { width: 7%; }
.col-billable[b-11vsfc7d3g] { width: 8%; }
.col-subcode[b-11vsfc7d3g] { width: 10%; }
.col-task[b-11vsfc7d3g] { width: 12%; }
.col-status[b-11vsfc7d3g] { width: 9%; }
.col-actions[b-11vsfc7d3g] { width: 17%; }

.entries-table thead th:last-child[b-11vsfc7d3g],
.entries-row td:last-child[b-11vsfc7d3g] {
    padding-right: 0;
}

/* Was display:flex directly on the <td> — that drops the cell out of the table's fixed
   column-width layout (it shrinks to fit the buttons instead), so the row's bottom border
   stopped short of the buttons instead of running the full row width like every other
   column. The flex layout now lives on this wrapper div inside a plain table cell instead —
   see MyEntries.razor's actions <td>. */
.entries-actions[b-11vsfc7d3g] {
    display: flex;
    justify-content: flex-end;
    gap: 0.4rem;
}

.entries-clone-btn[b-11vsfc7d3g] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.3rem 0.6rem;
    border: 1px solid var(--app-hairline);
    border-radius: 7px;
    background: var(--bs-body-bg);
    color: var(--bs-secondary-color);
    font-size: 0.75rem;
    font-weight: 500;
    white-space: nowrap;
}

    .entries-clone-btn:hover:not(:disabled)[b-11vsfc7d3g] {
        background: var(--app-subtle);
        color: var(--bs-emphasis-color);
    }

    .entries-clone-btn:disabled[b-11vsfc7d3g] {
        opacity: 0.6;
    }

    .entries-clone-btn .spinner-border[b-11vsfc7d3g] {
        width: 0.75rem;
        height: 0.75rem;
        border-width: 0.15em;
    }

.entries-table thead th[b-11vsfc7d3g] {
    padding: 0.9rem 0.75rem 0.7rem 0;
    border-bottom: 1px solid var(--app-hairline);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--app-muted);
    white-space: nowrap;
}

.entries-day th[b-11vsfc7d3g] {
    padding: 1.4rem 0 0.6rem;
    border-bottom: 1px solid var(--app-hairline);
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--bs-emphasis-color);
}

.entries-day-total[b-11vsfc7d3g] {
    margin-left: 0.5rem;
    font-weight: 500;
    color: var(--app-faint);
    font-variant-numeric: tabular-nums;
}

.entries-row td[b-11vsfc7d3g] {
    padding: 0.95rem 0.75rem 0.95rem 0;
    border-bottom: 1px solid var(--app-hairline);
    vertical-align: top;
}

.entries-row:hover td[b-11vsfc7d3g] {
    background: color-mix(in srgb, var(--app-subtle) 55%, transparent);
}

/* A row with a narrative gets a second, full-width row right under it (see MyEntries.razor) —
   these two rules make that pair read as ONE entry instead of two: the data row's own bottom
   border/padding move down onto the narrative row that follows it, so the visible divider
   still lands once, after the whole entry, not in the middle of it. */
.entries-row.entries-row-attached td[b-11vsfc7d3g] {
    padding-bottom: 0.35rem;
    border-bottom: none;
}

.entries-narrative-row td[b-11vsfc7d3g] {
    padding-top: 0;
}

.entries-matter[b-11vsfc7d3g] {
    font-weight: 500;
    color: var(--bs-emphasis-color);
    line-height: 1.35;
}

.entries-sub[b-11vsfc7d3g] {
    margin-top: 0.1rem;
    font-size: 0.75rem;
    color: var(--app-muted);
}

/* Two lines, then "…"; click to read the whole narrative. Lives in its own full-width row now
   (bug fix 2026-09-28: it used to sit inside the Matter/Client cell and wrap at that column's
   ~21% width) — no margin-top here anymore since it's no longer stacked directly under the
   subtitle text in the same cell. */
.entries-narrative[b-11vsfc7d3g] {
    font-size: 0.75rem;
    line-height: 1.45;
    color: var(--app-muted);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    cursor: pointer;
    overflow-wrap: anywhere;
}

    .entries-narrative.is-open[b-11vsfc7d3g] {
        display: block;
        -webkit-line-clamp: unset;
        line-clamp: unset;
    }

.entries-type[b-11vsfc7d3g] {
    color: var(--bs-body-color);
}

.entries-num[b-11vsfc7d3g] {
    font-variant-numeric: tabular-nums;
    font-weight: 500;
    color: var(--bs-emphasis-color);
}

    .entries-num.is-zero[b-11vsfc7d3g] {
        color: var(--app-faint);
        font-weight: 400;
    }

.entries-task[b-11vsfc7d3g] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* ---- Pills ------------------------------------------------------------------- */
[b-11vsfc7d3g] .pill {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    padding: 0.15rem 0.5rem;
    border-radius: 6px;
    font-size: 0.7rem;
    font-weight: 500;
    line-height: 1.4;
    white-space: nowrap;
}

[b-11vsfc7d3g] .pill-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}

[b-11vsfc7d3g] .pill-positive {
    background: var(--app-positive-bg);
    color: var(--app-positive-text);
}

[b-11vsfc7d3g] .pill-neutral {
    background: var(--app-neutral-bg);
    color: var(--app-neutral-text);
}

[b-11vsfc7d3g] .pill-draft {
    background: var(--app-draft-bg);
    color: var(--app-draft-text);
}

    [b-11vsfc7d3g] .pill-draft .pill-dot {
        background: var(--app-draft-dot);
    }

@media (max-width: 767.98px) {
    .entries-toolbar-right[b-11vsfc7d3g] {
        width: 100%;
    }

    .entries-new[b-11vsfc7d3g] {
        margin-left: auto;
    }
}
/* /Pages/ReviewEntries.razor.rz.scp.css */
/* Review Entries — see ReviewEntries.razor. The summary grid this file used to style was
   removed 2026-09-30; the entry cards' own header (EntryDraftCard.razor.css) replaced it. */

/* Toolbar: add/expand on the left, batch actions (Clear all, Post) on the right. */
.review-toolbar[b-5ob3g3v1u5] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem;
    padding-top: 0.25rem;
}

.review-toolbar-group[b-5ob3g3v1u5] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.review-intro[b-5ob3g3v1u5] {
    margin: 0.9rem 0 0.25rem;
    font-size: 0.85rem;
    color: var(--app-muted);
}
/* /Pages/SignIn.razor.rz.scp.css */
/* Same card backdrop as ConnectAgilityBlue.razor.css (scoped CSS is per page, so it is copied).
   Built from Bootstrap's own --bs-primary-rgb/--bs-secondary-rgb (set per-theme in
   wwwroot/css/app.css) rather than new hardcoded colors, so it stays correct in both
   light and dark mode automatically instead of needing its own [data-bs-theme] rules. */
.connect-ab-backdrop[b-qk5odl307n] {
    min-height: calc(100vh - 12rem);
    border-radius: var(--bs-border-radius-lg);
    background: linear-gradient(135deg,
        rgba(var(--bs-primary-rgb), 0.12),
        rgba(var(--bs-secondary-rgb), 0.16));
}
/* /Pages/WorkWeeks.razor.rz.scp.css */
/* Work weeks — see WorkWeeks.razor. Same look as the Entries table (MyEntries.razor.css),
   colors from Bootstrap's theme variables and the --app-* tokens, so light and dark both work. */

.ww-header[b-onp83e0d97] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding-top: 0.25rem;
}

.ww-title[b-onp83e0d97] {
    margin: 0 0 0.35rem;
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--bs-emphasis-color);
}

.ww-lede[b-onp83e0d97] {
    margin: 0;
    max-width: 44rem;
    font-size: 0.875rem;
    color: var(--app-muted);
}

.ww-state[b-onp83e0d97] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.6rem;
    padding: 3rem 0;
    color: var(--app-muted);
    font-size: 0.9rem;
}

.ww-table[b-onp83e0d97] {
    width: 100%;
    max-width: 52rem;
    margin-top: 1.25rem;
    border-collapse: collapse;
    font-size: 0.85rem;
    color: var(--bs-body-color);
}

    .ww-table thead th[b-onp83e0d97] {
        padding: 0.9rem 0.75rem 0.7rem 0;
        border-bottom: 1px solid var(--app-hairline);
        font-size: 0.7rem;
        font-weight: 600;
        letter-spacing: 0.06em;
        text-transform: uppercase;
        color: var(--app-muted);
        white-space: nowrap;
    }

    .ww-table tbody td[b-onp83e0d97],
    .ww-table tfoot td[b-onp83e0d97] {
        padding: 0.6rem 0.75rem 0.6rem 0;
        border-bottom: 1px solid var(--app-hairline);
        vertical-align: middle;
    }

    .ww-table tbody tr:hover td[b-onp83e0d97] {
        background: color-mix(in srgb, var(--app-subtle) 55%, transparent);
    }

    .ww-table tfoot td[b-onp83e0d97] {
        border-bottom: none;
        padding-top: 0.9rem;
    }

.ww-code[b-onp83e0d97] {
    font-weight: 600;
    color: var(--bs-emphasis-color);
    font-variant-numeric: tabular-nums;
}

.ww-num[b-onp83e0d97] {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.ww-muted[b-onp83e0d97] {
    color: var(--app-muted);
}

.ww-hours-input[b-onp83e0d97] {
    width: 6rem;
    margin-left: auto;
    text-align: right;
}

.ww-code-input[b-onp83e0d97] {
    max-width: 11rem;
    text-transform: uppercase;
}

    .ww-code-input[b-onp83e0d97]::placeholder {
        text-transform: none;
    }

.ww-actions[b-onp83e0d97] {
    display: flex;
    justify-content: flex-end;
    gap: 0.4rem;
    white-space: nowrap;
}
/* /Shared/EntryDraftCard.razor.rz.scp.css */
/* Match the review grid and My Entries (0.85rem) — this form had no font-size set, so its
   labels/inputs were at Bootstrap's default 1rem, same gap as the grid fix. "Entry N" in the
   header stays a size up since it's acting as a row title, not body text.

   Bootstrap's .form-control/.form-select set their own font-size in rem, which is relative
   to the root <html> size, not this card-body's — so the card-body rule above shrank the
   labels (plain inherited text) but left every input/select/textarea at Bootstrap's full
   1rem, which is exactly the mismatch reported 2026-09-27 ("the input font seems to be
   larger that the labels"). Those elements need their own explicit font-size to actually
   follow suit. */
[b-is88l418z4] .card-body {
    font-size: 0.85rem;
}

[b-is88l418z4] .card-body .form-control,
[b-is88l418z4] .card-body .form-select {
    font-size: 0.85rem;
}

[b-is88l418z4] .card-header strong {
    font-size: 0.95rem;
}

/* Card header (2026-09-30): replaces Review Entries' summary grid. Line 1 holds the facts in a
   wrapping row; the matter is the one that shrinks and gets an ellipsis. Line 2 (collapsed
   only) is one muted, cut-off line. */
.entry-head[b-is88l418z4] {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 0.75rem;
    padding-top: 0.6rem;
    padding-bottom: 0.6rem;
    cursor: pointer;
}

.entry-head-text[b-is88l418z4] {
    flex: 1 1 auto;
    min-width: 0;
}

.entry-head-line[b-is88l418z4] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.35rem 0.6rem;
    font-size: 0.85rem;
    min-width: 0;
}

.entry-head-fact[b-is88l418z4] {
    color: var(--bs-body-color);
    white-space: nowrap;
}

    .entry-head-fact + .entry-head-fact[b-is88l418z4]::before {
        content: "·";
        margin-right: 0.6rem;
        color: var(--app-faint);
    }

.entry-head-matter[b-is88l418z4] {
    min-width: 0;
    max-width: 28rem;
    overflow: hidden;
    text-overflow: ellipsis;
    font-weight: 500;
    color: var(--bs-emphasis-color);
}

.entry-head-sub[b-is88l418z4] {
    margin-top: 0.2rem;
    font-size: 0.75rem;
    color: var(--app-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.entry-head-actions[b-is88l418z4] {
    display: flex;
    gap: 0.5rem;
    flex-shrink: 0;
}

@media (max-width: 575.98px) {
    .entry-head[b-is88l418z4] {
        flex-direction: column;
    }

    .entry-head-matter[b-is88l418z4] {
        max-width: 100%;
    }
}
/* /Shared/LoginDisplay.razor.rz.scp.css */
.app-user[b-7f73g2zswr] {
    position: relative;
}

.app-user-name[b-7f73g2zswr] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    border: none;
    background: none;
    padding: 0.3rem 0.4rem;
    border-radius: 6px;
    font-size: 0.85rem;
    font-weight: 600;
    color: var(--bs-emphasis-color);
}

    .app-user-name:hover[b-7f73g2zswr] {
        background: var(--app-subtle);
    }

    .app-user-name svg[b-7f73g2zswr] {
        color: var(--bs-secondary-color);
    }

/* Click-outside catcher, invisible. */
.app-user-scrim[b-7f73g2zswr] {
    position: fixed;
    inset: 0;
    z-index: 1040;
}

.app-user-menu[b-7f73g2zswr] {
    position: absolute;
    right: 0;
    top: calc(100% + 6px);
    z-index: 1041;
    min-width: 160px;
    padding: 0.3rem;
    background: var(--bs-body-bg);
    border: 1px solid var(--app-hairline);
    border-radius: 9px;
    box-shadow: 0 8px 24px rgba(16, 24, 40, 0.12);
}

.app-user-menu-item[b-7f73g2zswr] {
    display: block;
    width: 100%;
    text-align: left;
    border: none;
    background: none;
    padding: 0.45rem 0.65rem;
    border-radius: 6px;
    font-size: 0.85rem;
    color: var(--bs-body-color);
}

    .app-user-menu-item:hover[b-7f73g2zswr] {
        background: var(--app-subtle);
    }

@media (max-width: 767.98px) {
    .app-user-menu[b-7f73g2zswr] {
        left: 0;
        right: auto;
    }
}
