/* _content/Dispatch.Web/Components/AccessDenied.razor.rz.scp.css */
/* AccessDenied.razor.css — shared denied / not-found panel (UI-13) */

.access-denied[b-u9l20o1f1t] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 2rem 0;
}

.access-denied h1[b-u9l20o1f1t] { font-family: var(--font-display); font-size: 1.5rem; color: var(--fg-0); }
.access-denied p[b-u9l20o1f1t]  { color: var(--fg-1); }
.access-denied a[b-u9l20o1f1t]  { color: var(--signal); }
/* _content/Dispatch.Web/Components/Auth/AuthShell.razor.rz.scp.css */
/* AuthShell.razor.css — shared auth-form primitives.
   Direct selectors target this component's own markup;
   ::deep targets descendant content rendered via ChildContent.

   Pages that need extra styling (e.g. ConfirmEmail's .status-headline,
   AcceptInvite's .join-actions) keep those rules in their own .razor.css.
   ------------------------------------------------------------------ */

/* ---- Auth shell ------------------------------------------- */

.auth[b-yt5os87vyx] {
    display: flex;
    flex-direction: column;
    gap: 0;
    max-width: 460px;
    width: 100%;
    margin: 0 auto;
    padding: clamp(48px, 8vh, 96px) 24px 64px;
}

.auth-title[b-yt5os87vyx] {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.375rem;
}

/* When no tag follows the title (e.g. ConfirmEmail), give the title
   more breathing room before the next block. */
.auth-title.auth-title--solo[b-yt5os87vyx] {
    margin-bottom: 1.5rem;
}

.auth-tag[b-yt5os87vyx] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    margin-bottom: 2rem;
}

/* ---- Status block ----------------------------------------- */

[b-yt5os87vyx] .status {
    border-radius: 6px;
    padding: 14px 16px;
    font-size: 0.9375rem;
    line-height: 1.5;
    margin-bottom: 1.5rem;
}

[b-yt5os87vyx] .status-ok {
    background-color: color-mix(in srgb, var(--ok) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--ok) 35%, transparent);
    color: var(--ok);
}

[b-yt5os87vyx] .status-err {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 35%, transparent);
    color: var(--err);
}

/* ---- Form fields ------------------------------------------ */

[b-yt5os87vyx] .field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 1rem;
}

[b-yt5os87vyx] .field-label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--fg-1);
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

[b-yt5os87vyx] .field-input {
    height: 46px;
    padding: 0 14px;
    background-color: var(--bg-1);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.9375rem;
    width: 100%;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

[b-yt5os87vyx] .field-input::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

[b-yt5os87vyx] .field-input:focus {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

/* ---- Validation ------------------------------------------- */

[b-yt5os87vyx] .auth-error {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 40%, transparent);
    border-radius: 6px;
    color: var(--err);
    font-size: 0.875rem;
    padding: 10px 14px;
    margin-bottom: 1.25rem;
}

[b-yt5os87vyx] .validation-message {
    font-size: 0.8125rem;
    color: var(--err);
    margin-top: 2px;
}

/* ---- Primary CTA button ----------------------------------- */

[b-yt5os87vyx] .btn.primary.signal {
    display: block;
    width: 100%;
    height: 46px;
    margin-top: 0.5rem;
    background-color: var(--signal);
    color: var(--on-signal);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    text-align: center;
    line-height: 46px;
    text-decoration: none;
    transition: opacity 0.15s ease, transform 0.1s ease;
}

[b-yt5os87vyx] .btn.primary.signal:hover {
    opacity: 0.88;
}

[b-yt5os87vyx] .btn.primary.signal:active {
    transform: scale(0.985);
}

[b-yt5os87vyx] .btn.primary.signal:focus-visible {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--signal) 20%, transparent);
}

/* ---- Secondary ghost button (used by AcceptInvite) -------- */

[b-yt5os87vyx] .btn.secondary {
    display: block;
    width: 100%;
    height: 46px;
    background-color: transparent;
    color: var(--fg-0);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    border: 1px solid var(--border-input);
    cursor: pointer;
    text-align: center;
    line-height: 44px;
    text-decoration: none;
    transition: background-color 0.12s ease, color 0.12s ease;
}

[b-yt5os87vyx] .btn.secondary:hover {
    background-color: var(--surface-hover);
    color: var(--fg-0);
}

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

[b-yt5os87vyx] .auth-foot {
    display: flex;
    flex-direction: column;
    gap: 0.625rem;
    margin-top: 1.75rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--border);
}

[b-yt5os87vyx] .auth-foot a {
    font-size: 0.875rem;
    color: var(--fg-1);
    text-decoration: none;
    transition: color 0.15s ease;
}

[b-yt5os87vyx] .auth-foot a:hover {
    color: var(--fg-0);
}
/* _content/Dispatch.Web/Components/Layout/LeftRail.razor.rz.scp.css */
/* LeftRail.razor.css — icon-only vertical nav rail
   64px wide, sticky to viewport, blends with page (--bg-0).
   Each icon button 40x40 with 10px radius; active state shows a
   signal-coral inset stripe on the inner-left edge.
   ------------------------------------------------------------------ */

/* ---- Rail container --------------------------------------- */

.lr-rail[b-qzkhwmfu4m] {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 64px;
    padding: 12px 0;
    background: var(--bg-0);
    border-right: 1px solid var(--rule);
    gap: 4px;
    flex-shrink: 0;
    height: 100%;
}

/* ---- Nav items -------------------------------------------- */

.lr-item[b-qzkhwmfu4m] {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 10px;
    color: var(--fg-2);
    text-decoration: none;
    border: 1px solid transparent;
    transition: all 0.2s var(--ease);
    flex-shrink: 0;
}

.lr-item:hover[b-qzkhwmfu4m] {
    color: var(--fg-0);
    background: var(--bg-2);
}

.lr-item:focus-visible[b-qzkhwmfu4m] {
    outline: 2px solid var(--focus-ring);
    outline-offset: 2px;
}

/* ---- Active state ----------------------------------------- */

.lr-item--active[b-qzkhwmfu4m] {
    color: var(--fg-0);
    background: var(--bg-2);
    border-color: var(--rule-strong);
    box-shadow: inset 2px 0 0 var(--signal);
}

/* ---- Bottom-anchored item (Settings) ---------------------- */

.lr-item--bottom[b-qzkhwmfu4m] {
    margin-top: auto;
}

/* ---- CSS-only tooltip via [data-tooltip] pseudo-element ---
   Read from data-tooltip (not title) so the native browser tooltip
   doesn't double up on hover. aria-label on the anchor handles SR. */

.lr-item[b-qzkhwmfu4m]::after {
    content: attr(data-tooltip);
    position: absolute;
    left: calc(100% + 10px);
    top: 50%;
    transform: translateY(-50%);
    white-space: nowrap;
    background: var(--bg-2);
    color: var(--fg-0);
    font-family: var(--font-body);
    font-size: 0.8125rem;
    font-weight: 500;
    padding: 4px 9px;
    border-radius: 5px;
    border: 1px solid var(--rule-strong);
    box-shadow: var(--shadow);
    pointer-events: none;
    opacity: 0;
    transition: opacity 0.12s ease;
    z-index: 300;
}

.lr-item:hover[b-qzkhwmfu4m]::after,
.lr-item:focus-visible[b-qzkhwmfu4m]::after {
    opacity: 1;
}

/* Disabled item (rendered when no workspace slug is in scope). */
.lr-item--disabled[b-qzkhwmfu4m] {
    pointer-events: none;
    opacity: 0.4;
}

.lr-context[b-qzkhwmfu4m] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 32px;
    border-radius: 8px;
    background: var(--bg-2);
    color: var(--fg-1);
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.7rem;
    font-weight: 600;
    margin-bottom: 4px;
}
.lr-context-divider[b-qzkhwmfu4m] {
    width: 32px;
    height: 1px;
    background: var(--rule);
    margin: 4px 0 8px 0;
}
/* _content/Dispatch.Web/Components/Layout/MainLayout.razor.rz.scp.css */
/* MainLayout.razor.css — mission-control shell grid
   ml-shell: full-viewport grid (topbar row + body row)
   ml-body:  two-column grid (left-rail + main content)
   ml-main:  scrollable content area with generous padding
   ------------------------------------------------------------------ */

/* ---- Shell grid ------------------------------------------- */

.ml-shell[b-e624qz5vuo] {
    display: grid;
    grid-template-rows: auto 1fr;
    height: 100dvh;
    position: relative;
    z-index: 1;
}

/* ---- Body grid: rail + content ---------------------------- */

.ml-body[b-e624qz5vuo] {
    display: grid;
    grid-template-columns: auto 1fr;
    min-height: 0;
    overflow: hidden;
}

/* ---- Main content area ------------------------------------ */

.ml-main[b-e624qz5vuo] {
    padding: clamp(24px, 4vw, 48px) clamp(24px, 5vw, 56px);
    overflow-y: auto;
    min-width: 0;
}
/* _content/Dispatch.Web/Components/Layout/MarketingLayout.razor.rz.scp.css */
/* MarketingLayout — scoped CSS
   Centered single-column: brand mark · content · thin footer.
   No chrome, no nav. Mission-control: restrained, technical, confident.
   ------------------------------------------------------------------ */

.m-shell[b-h56mp4sug3] {
    min-height: 100vh;
    display: grid;
    grid-template-rows: auto 1fr auto;
    background-color: var(--bg-0);
}

/* ---- Brand header ----------------------------------------- */

.m-brand[b-h56mp4sug3] {
    padding: 28px 32px;
    display: flex;
    align-items: center;
}

.m-wordmark[b-h56mp4sug3] {
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    text-decoration: none;
    display: inline-flex;
    align-items: center;
    gap: 0.2em;
    transition: opacity 0.15s ease;
}

.m-wordmark:hover[b-h56mp4sug3] {
    opacity: 0.8;
    color: var(--fg-0);
}

.m-accent[b-h56mp4sug3] {
    font-family: var(--font-mono);
    color: var(--signal);
    font-size: 0.95em;
    line-height: 1;
    /* Prevent signal accent from inheriting hover color */
    transition: none;
}

/* ---- Main content ----------------------------------------- */

/* Always full-bleed. Each page is responsible for its own max-width and
   padding via its scoped CSS — auth pages cap themselves at ~460px, the
   landing page sets per-section caps, status pages center themselves.
   Why: the previous `:has(> .hero)` opt-out broke under Blazor scoped CSS
   (the .hero in Landing.razor lives in a different scope than .m-main),
   so Landing was stuck at 480px. Pushing the cap to each page is robust. */
.m-main[b-h56mp4sug3] {
    width: 100%;
    min-width: 0;
}

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

.m-foot[b-h56mp4sug3] {
    padding: 20px 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
    color: var(--fg-1);
    border-top: 1px solid var(--border);
}

.m-foot a[b-h56mp4sug3] {
    color: var(--fg-1);
    text-decoration: none;
}

.m-foot a:hover[b-h56mp4sug3] {
    color: var(--fg-0);
}

.m-foot-sep[b-h56mp4sug3] {
    opacity: 0.5;
}
/* _content/Dispatch.Web/Components/Layout/SetupStatusBadge.razor.rz.scp.css */
.setup-badge[b-92tl2sl154] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border-radius: 8px;
    font-size: 12.5px;
    font-weight: 500;
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.08);
    color: inherit;
    text-decoration: none;
    transition: background 0.12s ease, border-color 0.12s ease;
}
.setup-badge:hover[b-92tl2sl154] { background: rgba(255,255,255,0.08); }
.setup-badge .count[b-92tl2sl154] {
    font-variant-numeric: tabular-nums;
    background: rgba(210,153,34,0.16);
    color: #e8a82d;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 600;
}
.setup-badge.is-complete[b-92tl2sl154] { color: rgba(63,185,80,0.85); border-color: rgba(63,185,80,0.25); }
.setup-badge.is-complete svg[b-92tl2sl154] { stroke: currentColor; }
/* _content/Dispatch.Web/Components/Layout/ThemeToggle.razor.rz.scp.css */
/* ThemeToggle.razor.css — segmented DARK | LIGHT pill
   ------------------------------------------------------------------ */

/* ---- Wrapper (the segmented pill) ------------------------- */

.tt-group[b-k2vlwui3n0] {
    display: inline-flex;
    align-items: center;
    background: var(--bg-2);
    border: 1px solid var(--rule);
    border-radius: 999px;
    padding: 3px;
    cursor: pointer;
    user-select: none;
    flex-shrink: 0;
}

/* ---- Segment buttons -------------------------------------- */

.tt-seg[b-k2vlwui3n0] {
    all: unset;
    display: inline-grid;
    place-items: center;
    width: 48px;
    height: 22px;
    border-radius: 999px;
    color: var(--fg-2);
    cursor: pointer;
    transition: background 0.2s var(--ease), color 0.2s var(--ease), box-shadow 0.2s var(--ease);
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.08em;
}

.tt-seg:hover[b-k2vlwui3n0] {
    color: var(--fg-1);
}

.tt-seg[aria-pressed="true"][b-k2vlwui3n0] {
    background: var(--bg-0);
    color: var(--fg-0);
    box-shadow: inset 0 0 0 1px var(--rule-strong);
}

.tt-seg:focus-visible[b-k2vlwui3n0] {
    outline: 2px solid var(--fg-2);
    outline-offset: 1px;
}
/* _content/Dispatch.Web/Components/Layout/Topbar.razor.rz.scp.css */
/* Topbar.razor.css — full-width mission-control topbar
   56px tall, hairline border bottom, sits on the page wash (--bg-0).
   Left: brand mark + wordmark | switcher pill
   Right: transmitting pill + segmented theme toggle + avatar
   ------------------------------------------------------------------ */

/* ---- Topbar container ------------------------------------- */

.tb-bar[b-rlrriz27gw] {
    display: flex;
    align-items: center;
    gap: 18px;
    height: 56px;
    padding: 0 22px 0 8px;
    background: var(--bg-0);
    border-bottom: 1px solid var(--rule);
    position: sticky;
    top: 0;
    z-index: 100;
    flex-shrink: 0;
}

/* ---- Brand: mark + wordmark ------------------------------- */

.tb-brand[b-rlrriz27gw] {
    display: flex;
    align-items: center;
    gap: 10px;
    text-decoration: none;
    color: var(--fg-0);
    flex-shrink: 0;
    transition: opacity 0.15s var(--ease);
}

.tb-brand:hover[b-rlrriz27gw] {
    opacity: 0.85;
    color: var(--fg-0);
}

.tb-mark[b-rlrriz27gw] {
    width: 22px;
    height: 22px;
    border-radius: 6px;
    background:
        conic-gradient(from 220deg,
            var(--signal) 0 30%,
            var(--fg-0) 30% 60%,
            var(--info) 60% 100%);
    box-shadow: inset 0 0 0 2px var(--bg-0);
    flex-shrink: 0;
}

.tb-wordmark[b-rlrriz27gw] {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 15px;
    letter-spacing: -0.01em;
    color: var(--fg-0);
    line-height: 1;
}

/* ---- Right cluster: pill + toggle + avatar ---------------- */

.tb-right[b-rlrriz27gw] {
    margin-left: auto;
    display: flex;
    align-items: center;
    gap: 18px;
}

/* ---- Transmitting pill ------------------------------------ */

.tb-pill[b-rlrriz27gw] {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--bg-2);
    border: 1px solid var(--rule);
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-1);
    letter-spacing: 0.04em;
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
    transition: color 0.15s var(--ease), border-color 0.15s var(--ease);
}

.tb-pill:hover[b-rlrriz27gw] {
    color: var(--fg-0);
    border-color: var(--rule-strong);
}

.tb-pill-dot[b-rlrriz27gw] {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: var(--signal);
    box-shadow: 0 0 0 0 var(--signal);
    animation: tb-live-b-rlrriz27gw 1.5s var(--ease) infinite;
    flex-shrink: 0;
}

@keyframes tb-live-b-rlrriz27gw {
    0%   { box-shadow: 0 0 0 0 rgba(255, 74, 61, 0.55); }
    100% { box-shadow: 0 0 0 8px rgba(255, 74, 61, 0); }
}

@media (prefers-reduced-motion: reduce) {
    .tb-pill-dot[b-rlrriz27gw] { animation: none; }
}

/* ---- Avatar button + account menu ------------------------- */

.tb-acct-details[b-rlrriz27gw] {
    position: relative;
}

.tb-avatar[b-rlrriz27gw] {
    display: grid;
    place-items: center;
    width: 30px;
    height: 30px;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--info), var(--signal));
    cursor: pointer;
    list-style: none;
    transition: transform 0.15s var(--ease);
}

.tb-avatar[b-rlrriz27gw]::-webkit-details-marker { display: none; }
.tb-avatar[b-rlrriz27gw]::marker { display: none; }

.tb-avatar:hover[b-rlrriz27gw] {
    transform: translateY(-1px);
}

.tb-avatar-initial[b-rlrriz27gw] {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 12px;
    color: var(--on-accent);
    line-height: 1;
    text-transform: uppercase;
    user-select: none;
}

/* ---- Account dropdown panel ------------------------------- */

.tb-acct-panel[b-rlrriz27gw] {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    min-width: 220px;
    background: var(--bg-2);
    border: 1px solid var(--rule-strong);
    border-radius: var(--r-m);
    box-shadow: var(--shadow);
    z-index: 200;
    padding: 6px 0;
    overflow: hidden;
}

/* ---- User identity block ---------------------------------- */

.tb-acct-identity[b-rlrriz27gw] {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding: 10px 14px 8px;
}

.tb-acct-name[b-rlrriz27gw] {
    font-family: var(--font-display);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--fg-0);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.tb-acct-email[b-rlrriz27gw] {
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--fg-2);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---- Dividers --------------------------------------------- */

.tb-acct-divider[b-rlrriz27gw] {
    height: 1px;
    background: var(--rule);
    margin: 6px 0;
}

/* ---- Menu links ------------------------------------------- */

.tb-acct-link[b-rlrriz27gw] {
    display: block;
    padding: 7px 14px;
    font-family: var(--font-body);
    font-size: 0.8125rem;
    color: var(--fg-1);
    text-decoration: none;
    transition: background-color 0.1s var(--ease), color 0.1s var(--ease);
}

.tb-acct-link:hover[b-rlrriz27gw] {
    background: var(--bg-3);
    color: var(--fg-0);
}

/* ---- Sign out button (styled as a link) ------------------- */

.tb-logout-form[b-rlrriz27gw] {
    margin: 0;
    padding: 0;
}

.tb-acct-link--btn[b-rlrriz27gw] {
    width: 100%;
    text-align: left;
    background: none;
    border: none;
    cursor: pointer;
    font: inherit;
    appearance: none;
    -webkit-appearance: none;
}

.tb-ws-group[b-rlrriz27gw] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}
.tb-ws-label[b-rlrriz27gw] {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    color: var(--fg-2);
}
/* _content/Dispatch.Web/Components/Layout/WorkspaceSwitcher.razor.rz.scp.css */
/* WorkspaceSwitcher.razor.css — <details> pill switcher
   ------------------------------------------------------------------ */

/* ---- Container -------------------------------------------- */

.ws-details[b-aygamr94fk] {
    position: relative;
}

/* ---- Summary (trigger) — the pill ------------------------- */

.ws-summary[b-aygamr94fk] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px 12px;
    border: 1px solid var(--rule-strong);
    border-radius: 999px;
    cursor: pointer;
    list-style: none;
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--fg-1);
    background: transparent;
    transition: color 0.2s var(--ease), border-color 0.2s var(--ease);
    user-select: none;
    white-space: nowrap;
}

/* Remove default disclosure marker */
.ws-summary[b-aygamr94fk]::-webkit-details-marker { display: none; }
.ws-summary[b-aygamr94fk]::marker { display: none; }

.ws-summary:hover[b-aygamr94fk] {
    color: var(--fg-0);
    border-color: var(--fg-2);
}

.ws-details[open] .ws-summary[b-aygamr94fk] {
    color: var(--fg-0);
    border-color: var(--fg-2);
}

/* ---- Status dot ------------------------------------------- */

.ws-dot[b-aygamr94fk] {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: var(--ok);
    flex-shrink: 0;
}

/* ---- Workspace name --------------------------------------- */

.ws-name[b-aygamr94fk] {
    line-height: 1;
}

/* ---- Chevron glyph ---------------------------------------- */

.ws-chevron[b-aygamr94fk] {
    opacity: 0.5;
    line-height: 1;
    font-size: 0.9em;
    transition: transform 0.15s var(--ease);
}

.ws-details[open] .ws-chevron[b-aygamr94fk] {
    transform: rotate(180deg);
}

/* ---- Dropdown panel --------------------------------------- */

.ws-panel[b-aygamr94fk] {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    min-width: 240px;
    background: var(--bg-2);
    border: 1px solid var(--rule-strong);
    border-radius: var(--r-m);
    box-shadow: var(--shadow);
    z-index: 200;
    padding: 6px 0;
    overflow: hidden;
}

/* ---- Workspace items -------------------------------------- */

.ws-item[b-aygamr94fk] {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: center;
    gap: 0;
    padding: 8px 14px;
    font-family: var(--font-body);
    font-size: 0.875rem;
    color: var(--fg-0);
    text-decoration: none;
    transition: background-color 0.1s var(--ease);
    position: relative;
}

.ws-item:hover[b-aygamr94fk] {
    background: var(--bg-3);
    color: var(--fg-0);
}

.ws-item--active[b-aygamr94fk] {
    color: var(--fg-0);
    background: color-mix(in srgb, var(--signal) 8%, transparent);
}

.ws-item-name[b-aygamr94fk] {
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.ws-item-slug[b-aygamr94fk] {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    color: var(--fg-2);
    margin-left: 8px;
    flex-shrink: 0;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

/* ---- Empty state ------------------------------------------ */

.ws-empty[b-aygamr94fk] {
    display: block;
    padding: 8px 14px;
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--fg-2);
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

/* ---- Divider ---------------------------------------------- */

.ws-divider[b-aygamr94fk] {
    height: 1px;
    background: var(--rule);
    margin: 6px 0;
}

/* ---- New workspace link ----------------------------------- */

.ws-new[b-aygamr94fk] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    font-family: var(--font-body);
    font-size: 0.8125rem;
    color: var(--fg-1);
    text-decoration: none;
    transition: background-color 0.1s var(--ease), color 0.1s var(--ease);
}

.ws-new:hover[b-aygamr94fk] {
    background: var(--bg-3);
    color: var(--fg-0);
}

.ws-new-plus[b-aygamr94fk] {
    font-family: var(--font-mono);
    font-size: 1.1em;
    font-weight: 400;
    line-height: 1;
    color: var(--fg-2);
}
/* _content/Dispatch.Web/Components/Pages/Account.razor.rz.scp.css */
/* Account.razor.css — scoped styles
   Settings-style chrome, max-width 640px, two stacked cards.
   ------------------------------------------------------------------ */

/* ---- Page shell ------------------------------------------- */

.acct-page[b-j3jivsqf38] {
    max-width: 640px;
    padding: 2.5rem 1.5rem 4rem;
}

.acct-header[b-j3jivsqf38] {
    margin-bottom: 2rem;
}

.acct-title[b-j3jivsqf38] {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.375rem;
}

.acct-tag[b-j3jivsqf38] {
    font-size: 0.9375rem;
    color: var(--fg-1);
}

/* ---- Card ------------------------------------------------- */

.card[b-j3jivsqf38] {
    background-color: var(--bg-1);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 1.75rem;
    margin-bottom: 1.25rem;
}

.card-heading[b-j3jivsqf38] {
    font-family: var(--font-display);
    font-size: 1.125rem;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin-bottom: 1.25rem;
    padding-bottom: 0.875rem;
    border-bottom: 1px solid var(--border);
}

/* ---- Status banners --------------------------------------- */

.status[b-j3jivsqf38] {
    border-radius: 6px;
    font-size: 0.875rem;
    padding: 10px 14px;
    margin-bottom: 1.25rem;
}

.status-ok[b-j3jivsqf38] {
    background-color: color-mix(in srgb, var(--ok) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--ok) 35%, transparent);
    color: var(--ok);
}

.status-err[b-j3jivsqf38] {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 40%, transparent);
    color: var(--err);
}

/* ---- Form fields ------------------------------------------ */

.field[b-j3jivsqf38] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 1rem;
}

.field-label[b-j3jivsqf38] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--fg-1);
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.field-input[b-j3jivsqf38] {
    height: 46px;
    padding: 0 14px;
    background-color: var(--bg-0);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.9375rem;
    width: 100%;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.field-input[b-j3jivsqf38]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.field-input:focus[b-j3jivsqf38] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

/* ---- Validation ------------------------------------------- */

[b-j3jivsqf38] .validation-message {
    font-size: 0.8125rem;
    color: var(--err);
    margin-top: 2px;
}

/* ---- Primary CTA button ----------------------------------- */

.btn.primary.signal[b-j3jivsqf38] {
    display: inline-block;
    height: 42px;
    padding: 0 1.5rem;
    margin-top: 0.25rem;
    background-color: var(--signal);
    color: var(--on-signal);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    transition: opacity 0.15s ease, transform 0.1s ease;
}

.btn.primary.signal:hover[b-j3jivsqf38] {
    opacity: 0.88;
}

.btn.primary.signal:active[b-j3jivsqf38] {
    transform: scale(0.985);
}

.btn.primary.signal:focus-visible[b-j3jivsqf38] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--signal) 20%, transparent);
}
/* _content/Dispatch.Web/Components/Pages/ConfirmEmail.razor.rz.scp.css */
/* ConfirmEmail.razor.css — page-specific overrides on top of AuthShell.
   The .status-stacked variant is a column layout with headline + body,
   used only on this page.
   ------------------------------------------------------------------ */

.status.status-stacked[b-1l0hmjn0ia] {
    padding: 16px 18px;
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 0.5rem;
}

.status-headline[b-1l0hmjn0ia] {
    font-family: var(--font-display);
    font-size: 1.125rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    display: block;
}

.status-stacked.status-ok .status-headline[b-1l0hmjn0ia]  { color: var(--ok); }
.status-stacked.status-err .status-headline[b-1l0hmjn0ia] { color: var(--err); }

.status-body[b-1l0hmjn0ia] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    display: block;
}
/* _content/Dispatch.Web/Components/Pages/Error.razor.rz.scp.css */
/* Error.razor.css — scoped styles
   Generic error page: understated treatment, trace-id in mono, return CTA.
   ------------------------------------------------------------------ */

/* ---- Page shell ------------------------------------------- */

.status-page[b-qb6yu5mw35] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    max-width: 560px;
    width: 100%;
    margin: 0 auto;
    padding: clamp(48px, 10vh, 128px) 24px 64px;
}

/* ---- Headline --------------------------------------------- */

.status-headline[b-qb6yu5mw35] {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.5rem;
}

/* ---- Body copy -------------------------------------------- */

.status-body[b-qb6yu5mw35] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    margin-bottom: 1.5rem;
}

/* ---- Trace ID --------------------------------------------- */

.trace-id[b-qb6yu5mw35] {
    display: block;
    font-family: var(--font-mono);
    font-size: 0.75rem;
    color: var(--fg-1);
    background-color: var(--bg-1);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 6px 10px;
    margin-bottom: 2rem;
    letter-spacing: 0.02em;
    opacity: 0.7;
    word-break: break-all;
}

/* ---- Return CTA ------------------------------------------- */

.btn.primary[b-qb6yu5mw35] {
    display: inline-flex;
    align-items: center;
    height: 42px;
    padding: 0 20px;
    background-color: var(--bg-1);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.btn.primary:hover[b-qb6yu5mw35] {
    background-color: var(--surface-hover);
    border-color: var(--fg-1);
    color: var(--fg-0);
}

.btn.primary:focus-visible[b-qb6yu5mw35] {
    outline: 2px solid var(--focus-ring);
    outline-offset: 3px;
}
/* _content/Dispatch.Web/Components/Pages/Landing.razor.rz.scp.css */
/* ──────────────────────────────────────────────────────────────
   Landing.razor.css — scoped landing page
   Design language: monumental Bricolage display, mono eyebrows,
   hairline rules, signal-coral accents, atmospheric glow.
   No images. All visuals are HTML/CSS/SVG.
   ────────────────────────────────────────────────────────────── */

/* ---- Shared section frame --------------------------------- */

.lp-section[b-jpcevzl7mq] {
    position: relative;
    width: 100%;
}

.lp-section-inner[b-jpcevzl7mq] {
    max-width: 1200px;
    margin: 0 auto;
    padding: clamp(96px, 12vw, 160px) clamp(24px, 4vw, 64px);
}

.lp-section-head[b-jpcevzl7mq] {
    max-width: 720px;
    margin-bottom: clamp(48px, 6vw, 80px);
}

.lp-section-h2[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 64;
    font-weight: 500;
    font-size: clamp(32px, 4.5vw, 56px);
    line-height: 1;
    letter-spacing: -0.025em;
    color: var(--fg-0);
    margin: 14px 0 18px;
}

.lp-section-h2 em[b-jpcevzl7mq] {
    font-style: italic;
    color: var(--signal);
    font-weight: 400;
}

.lp-section-lede[b-jpcevzl7mq] {
    font-family: var(--font-body);
    font-size: clamp(15px, 1.4vw, 18px);
    color: var(--fg-1);
    line-height: 1.55;
    margin: 0;
    max-width: 56ch;
}

.lp-eyebrow[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 11px;
    font-weight: 500;
    color: var(--fg-2);
    letter-spacing: 0.18em;
    text-transform: uppercase;
}

/* ---- Buttons ---------------------------------------------- */

.lp-btn[b-jpcevzl7mq] {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 14px;
    padding: 14px 22px;
    border-radius: var(--r-m);
    text-decoration: none;
    border: 1px solid transparent;
    cursor: pointer;
    transition: transform .15s var(--ease), background .2s var(--ease), color .2s var(--ease), border-color .2s var(--ease);
    white-space: nowrap;
}

.lp-btn-signal[b-jpcevzl7mq] {
    background: var(--signal);
    color: var(--on-signal);
}

.lp-btn-signal:hover[b-jpcevzl7mq] {
    transform: translateY(-1px);
    color: var(--on-signal);
    filter: brightness(1.08);
}

.lp-btn-ghost[b-jpcevzl7mq] {
    background: transparent;
    color: var(--fg-0);
    border-color: var(--rule-strong);
}

.lp-btn-ghost:hover[b-jpcevzl7mq] {
    border-color: var(--fg-2);
    color: var(--fg-0);
    background: var(--bg-2);
}

.lp-btn-lg[b-jpcevzl7mq] {
    font-size: 15px;
    padding: 18px 28px;
    border-radius: var(--r-l);
}

.lp-btn-arrow[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-weight: 400;
    transition: transform .2s var(--ease);
}

.lp-btn:hover .lp-btn-arrow[b-jpcevzl7mq] {
    transform: translateX(3px);
}

/* ──────────────────────────  HERO  ────────────────────────── */

.lp-hero[b-jpcevzl7mq] {
    position: relative;
    width: 100%;
    overflow: hidden;
}

.lp-hero-inner[b-jpcevzl7mq] {
    max-width: 1200px;
    margin: 0 auto;
    padding: clamp(96px, 13vw, 160px) clamp(24px, 4vw, 64px) clamp(80px, 10vw, 128px);
}

.lp-hero-h1[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 500;
    font-size: clamp(56px, 9vw, 124px);
    line-height: 0.92;
    letter-spacing: -0.025em;
    color: var(--fg-0);
    margin: 18px 0 32px;
    max-width: 16ch;
    opacity: 0;
    transform: translateY(14px);
    animation: lp-fade-up-b-jpcevzl7mq .8s var(--ease) .1s forwards;
}

.lp-hero-h1 em[b-jpcevzl7mq] {
    font-style: italic;
    color: var(--signal);
    font-weight: 400;
}

.lp-hero-sub[b-jpcevzl7mq] {
    font-family: var(--font-body);
    font-size: clamp(17px, 1.6vw, 21px);
    line-height: 1.55;
    color: var(--fg-1);
    max-width: 56ch;
    margin: 0 0 40px;
    opacity: 0;
    transform: translateY(14px);
    animation: lp-fade-up-b-jpcevzl7mq .8s var(--ease) .25s forwards;
}

.lp-hero-cta[b-jpcevzl7mq] {
    display: flex;
    align-items: center;
    gap: 14px;
    flex-wrap: wrap;
    margin-bottom: 56px;
    opacity: 0;
    transform: translateY(14px);
    animation: lp-fade-up-b-jpcevzl7mq .8s var(--ease) .4s forwards;
}

.lp-meta-row[b-jpcevzl7mq] {
    display: flex;
    align-items: center;
    gap: 18px;
    flex-wrap: wrap;
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.16em;
    color: var(--fg-2);
    padding-top: 24px;
    border-top: 1px solid var(--rule);
    opacity: 0;
    transform: translateY(14px);
    animation: lp-fade-up-b-jpcevzl7mq .8s var(--ease) .55s forwards;
}

.lp-meta-row b[b-jpcevzl7mq] {
    color: var(--fg-0);
    font-weight: 500;
}

.lp-meta-sep[b-jpcevzl7mq] {
    width: 1px;
    height: 12px;
    background: var(--rule-strong);
    display: inline-block;
}

@keyframes lp-fade-up-b-jpcevzl7mq {
    to {
        opacity: 1;
        transform: none;
    }
}

/* ──────────────────────  OPERATOR CONSOLE  ────────────────────── */

.lp-operator[b-jpcevzl7mq] {
    border-top: 1px solid var(--rule);
}

.lp-console[b-jpcevzl7mq] {
    border: 1px solid var(--rule-strong);
    border-radius: var(--r-l);
    background: var(--bg-1);
    box-shadow: var(--shadow);
    overflow: hidden;
}

.lp-console-topbar[b-jpcevzl7mq] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 12px 18px;
    border-bottom: 1px solid var(--rule);
    background: var(--bg-0);
}

.lp-console-brand[b-jpcevzl7mq] {
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 14px;
    letter-spacing: -0.01em;
    color: var(--fg-0);
}

.lp-console-mark[b-jpcevzl7mq] {
    width: 20px;
    height: 20px;
    border-radius: 5px;
    background: conic-gradient(from 220deg, var(--signal) 0 30%, var(--fg-0) 30% 60%, var(--info) 60% 100%);
    box-shadow: inset 0 0 0 2px var(--bg-1);
}

.lp-console-ws[b-jpcevzl7mq] {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 5px 11px;
    border: 1px solid var(--rule-strong);
    border-radius: 999px;
    font-family: var(--font-mono);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.12em;
    color: var(--fg-1);
}

.lp-console-ws-dot[b-jpcevzl7mq] {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: var(--ok);
}

.lp-console-spacer[b-jpcevzl7mq] {
    flex: 1;
}

.lp-console-pill[b-jpcevzl7mq] {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--bg-2);
    border: 1px solid var(--rule);
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--fg-1);
    letter-spacing: 0.04em;
}

.lp-console-live[b-jpcevzl7mq] {
    width: 6px;
    height: 6px;
    border-radius: 999px;
    background: var(--signal);
    box-shadow: 0 0 0 0 var(--signal);
    animation: lp-live-b-jpcevzl7mq 1.5s var(--ease) infinite;
}

@keyframes lp-live-b-jpcevzl7mq {
    0%   { box-shadow: 0 0 0 0 rgba(255,74,61,.55); }
    100% { box-shadow: 0 0 0 8px rgba(255,74,61,0); }
}

.lp-console-body[b-jpcevzl7mq] {
    display: grid;
    grid-template-columns: 1fr 300px;
    min-height: 480px;
}

.lp-console-main[b-jpcevzl7mq] {
    padding: 32px 36px;
    border-right: 1px solid var(--rule);
}

.lp-console-eyebrow[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--fg-2);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}

.lp-console-h1[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 64;
    font-weight: 500;
    font-size: clamp(28px, 3vw, 40px);
    line-height: 0.95;
    letter-spacing: -0.025em;
    color: var(--fg-0);
    margin: 0 0 24px;
}

.lp-console-h1 em[b-jpcevzl7mq] {
    font-style: italic;
    color: var(--signal);
    font-weight: 400;
}

/* ── queue rows ── */

.lp-queue[b-jpcevzl7mq] {
    display: flex;
    flex-direction: column;
    border-top: 1px solid var(--rule);
}

.lp-ticket[b-jpcevzl7mq] {
    display: grid;
    grid-template-columns: 110px 1fr 170px;
    gap: 22px;
    padding: 22px 0;
    border-bottom: 1px solid var(--rule);
    align-items: center;
}

.lp-ticket-id[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 700;
    font-size: 52px;
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--fg-0);
    font-variant-numeric: tabular-nums;
}

.lp-ticket-active .lp-ticket-id[b-jpcevzl7mq] {
    color: var(--signal);
}

.lp-ticket-prefix[b-jpcevzl7mq] {
    display: block;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.18em;
    color: var(--fg-2);
    margin-bottom: 4px;
}

.lp-ticket-title[b-jpcevzl7mq] {
    margin: 0 0 6px;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 17px;
    line-height: 1.3;
    letter-spacing: -0.012em;
    color: var(--fg-0);
}

.lp-ti-coral[b-jpcevzl7mq] { color: var(--signal); }
.lp-ti-info[b-jpcevzl7mq]  { color: var(--info); }

.lp-ticket-meta[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--fg-2);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.lp-ticket-meta b[b-jpcevzl7mq] { color: var(--fg-1); font-weight: 500; }

.lp-ticket-right[b-jpcevzl7mq] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 10px;
}

/* status pills */
.lp-status[b-jpcevzl7mq] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-mono);
    font-size: 10px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--fg-1);
}

.lp-status-blip[b-jpcevzl7mq] {
    width: 7px;
    height: 7px;
    border-radius: 999px;
    background: var(--fg-3);
}

.lp-status-run[b-jpcevzl7mq] { color: var(--signal); }
.lp-status-run .lp-status-blip[b-jpcevzl7mq] {
    background: var(--signal);
    box-shadow: 0 0 0 0 var(--signal);
    animation: lp-live-b-jpcevzl7mq 1.5s var(--ease) infinite;
}
.lp-status-wait[b-jpcevzl7mq] { color: var(--warn); }
.lp-status-wait .lp-status-blip[b-jpcevzl7mq] { background: var(--warn); }
.lp-status-done .lp-status-blip[b-jpcevzl7mq] { background: var(--ok); }

/* sparklines */
.lp-spark[b-jpcevzl7mq] {
    width: 160px;
    height: 24px;
    overflow: hidden;
}
.lp-spark svg[b-jpcevzl7mq] { width: 100%; height: 100%; display: block; }
.lp-spark path[b-jpcevzl7mq] {
    fill: none;
    stroke: var(--fg-3);
    stroke-width: 1.4;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.lp-spark-active path[b-jpcevzl7mq] {
    stroke: var(--signal);
    animation: lp-spark-scroll-b-jpcevzl7mq 5s linear infinite;
}
@keyframes lp-spark-scroll-b-jpcevzl7mq {
    from { transform: translateX(0); }
    to   { transform: translateX(-25%); }
}

/* ── side panel ── */

.lp-console-side[b-jpcevzl7mq] {
    padding: 28px 22px;
    background: var(--bg-1);
    display: flex;
    flex-direction: column;
    gap: 20px;
}

.lp-side-h[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--fg-2);
    font-weight: 500;
}

.lp-transmit[b-jpcevzl7mq] {
    border: 1px solid var(--signal);
    border-radius: var(--r-l);
    padding: 16px;
    background:
        linear-gradient(180deg, rgba(255,74,61,.10), transparent 80%),
        var(--bg-2);
    box-shadow: var(--shadow);
    position: relative;
    overflow: hidden;
}

.lp-transmit-label[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    color: var(--signal);
    text-transform: uppercase;
    margin-bottom: 8px;
}

.lp-transmit-who[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-size: 15px;
    font-weight: 500;
    line-height: 1.25;
    margin-bottom: 12px;
    color: var(--fg-0);
}

.lp-transmit-stream[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-1);
    line-height: 1.65;
    background: var(--bg-0);
    border-radius: var(--r-s);
    padding: 12px;
    border: 1px solid var(--rule);
    height: 132px;
    overflow: hidden;
    position: relative;
}

.lp-transmit-stream[b-jpcevzl7mq]::after {
    content: "";
    position: absolute;
    left: 0; right: 0; bottom: 0;
    height: 36px;
    background: linear-gradient(180deg, transparent, var(--bg-0));
    pointer-events: none;
}

.lp-transmit-stream span[b-jpcevzl7mq] { display: block; }
.lp-tool[b-jpcevzl7mq]   { color: var(--info); }
.lp-accent[b-jpcevzl7mq] { color: var(--signal); }
.lp-dim[b-jpcevzl7mq]    { opacity: 0.65; }

.lp-cursor[b-jpcevzl7mq] {
    display: inline-block;
    width: 7px;
    height: 13px;
    background: var(--signal);
    vertical-align: -2px;
    margin-left: 2px;
    animation: lp-blink-b-jpcevzl7mq 1s steps(2, end) infinite;
}
.lp-cursor-sm[b-jpcevzl7mq] { height: 11px; width: 6px; }
@keyframes lp-blink-b-jpcevzl7mq { 50% { opacity: 0; } }

/* mini stat grid */
.lp-mini-grid[b-jpcevzl7mq] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    background: var(--rule);
    border: 1px solid var(--rule);
    border-radius: var(--r-m);
    overflow: hidden;
}
.lp-mini[b-jpcevzl7mq] {
    background: var(--bg-1);
    padding: 12px 12px 14px;
}
.lp-mini-num[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 56;
    font-size: 28px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--fg-0);
}
.lp-mini-unit[b-jpcevzl7mq] {
    font-size: 0.55em;
    color: var(--fg-2);
}
.lp-mini-lbl[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.16em;
    color: var(--fg-2);
    text-transform: uppercase;
    margin-top: 6px;
}
.lp-mini-signal .lp-mini-num[b-jpcevzl7mq] { color: var(--signal); }

/* ──────────────────────  FLOW (3-up)  ────────────────────── */

.lp-flow[b-jpcevzl7mq] {
    border-top: 1px solid var(--rule);
}

.lp-flow-grid[b-jpcevzl7mq] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--rule);
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}

.lp-flow-col[b-jpcevzl7mq] {
    background: var(--bg-0);
    padding: 40px 32px 44px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    position: relative;
}

.lp-flow-num[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 700;
    font-size: 80px;
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--fg-2);
    opacity: 0.35;
    margin-bottom: 4px;
    font-variant-numeric: tabular-nums;
}

.lp-flow-h[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-weight: 500;
    font-size: clamp(22px, 2vw, 26px);
    line-height: 1.15;
    letter-spacing: -0.015em;
    color: var(--fg-0);
    margin: 4px 0 0;
}

.lp-flow-body[b-jpcevzl7mq] {
    font-family: var(--font-body);
    font-size: 15px;
    line-height: 1.6;
    color: var(--fg-1);
    margin: 0;
    flex: 1;
}

.lp-flow-vis[b-jpcevzl7mq] {
    margin-top: 18px;
    padding: 14px;
    border: 1px solid var(--rule-strong);
    border-radius: var(--r-m);
    background: var(--bg-1);
    font-family: var(--font-mono);
    font-size: 11.5px;
    line-height: 1.7;
    min-height: 130px;
}

/* terminal block */
.lp-flow-term .lp-term-row[b-jpcevzl7mq] { color: var(--fg-1); }
.lp-flow-term .lp-term-prompt[b-jpcevzl7mq] { color: var(--info); margin-right: 6px; }
.lp-flow-term .lp-term-arg[b-jpcevzl7mq] { color: var(--fg-2); }
.lp-flow-term .lp-term-ok[b-jpcevzl7mq] { color: var(--ok); margin-right: 6px; }
.lp-flow-term .lp-term-coral[b-jpcevzl7mq] { color: var(--signal); }
.lp-flow-term .lp-term-dim[b-jpcevzl7mq] { color: var(--fg-2); }

/* oscilloscope */
.lp-flow-osc[b-jpcevzl7mq] {
    padding: 0;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: stretch;
}
.lp-flow-osc svg[b-jpcevzl7mq] {
    width: 100%;
    height: 100%;
    min-height: 130px;
    display: block;
}
.lp-osc-grid[b-jpcevzl7mq] {
    fill: none;
    stroke: var(--rule-strong);
    stroke-width: 1;
    stroke-dasharray: 3 4;
}
.lp-osc-line[b-jpcevzl7mq] {
    fill: none;
    stroke: var(--signal);
    stroke-width: 1.4;
    stroke-linecap: round;
    stroke-linejoin: round;
    animation: lp-spark-scroll-b-jpcevzl7mq 4s linear infinite;
}

/* diff */
.lp-flow-diff[b-jpcevzl7mq] {
    background: var(--bg-1);
    padding: 12px 14px;
}
.lp-diff-row[b-jpcevzl7mq] { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.lp-diff-meta[b-jpcevzl7mq] { color: var(--info); margin-bottom: 4px; }
.lp-diff-ctx[b-jpcevzl7mq]  { color: var(--fg-2); }
.lp-diff-add[b-jpcevzl7mq]  { color: var(--ok);  background: rgba(182,232,92,.06); border-left: 2px solid var(--ok);  padding-left: 6px; margin-left: -8px; }
.lp-diff-del[b-jpcevzl7mq]  { color: var(--err); background: rgba(255,106,133,.06); border-left: 2px solid var(--err); padding-left: 6px; margin-left: -8px; }

/* ──────────────────────  PRICING (3-tier)  ────────────────────── */

.lp-pricing[b-jpcevzl7mq] {
    border-top: 1px solid var(--rule);
}

.lp-pricing-grid[b-jpcevzl7mq] {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 1px;
    background: var(--rule);
    border: 1px solid var(--rule);
    border-radius: var(--r-l);
    overflow: hidden;
}

@media (max-width: 900px) {
    .lp-pricing-grid[b-jpcevzl7mq] {
        grid-template-columns: 1fr;
    }
}

.lp-tier[b-jpcevzl7mq] {
    position: relative;
    background: var(--bg-1);
    padding: 36px 28px 32px;
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-height: 460px;
}

.lp-tier-feature[b-jpcevzl7mq] {
    background: var(--bg-2);
    box-shadow: inset 0 0 0 1px var(--signal);
    z-index: 1;
}

.lp-tier-ribbon[b-jpcevzl7mq] {
    position: absolute;
    top: 0;
    right: 0;
    padding: 5px 12px 6px;
    background: var(--signal);
    color: var(--on-signal);
    font-family: var(--font-mono);
    font-size: 9.5px;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    border-radius: 0 0 0 var(--r-s);
}

.lp-tier-tag[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--fg-2);
}

.lp-tier-tag-signal[b-jpcevzl7mq] { color: var(--signal); }
.lp-tier-tag-warn[b-jpcevzl7mq]   { color: var(--warn); }

/* Locked-tier dim treatment: same structure, less weight, no coral. */
.lp-tier-locked .lp-tier-name[b-jpcevzl7mq],
.lp-tier-locked .lp-tier-num[b-jpcevzl7mq] {
    color: var(--fg-1);
}

.lp-tier-locked .lp-tier-num[b-jpcevzl7mq] {
    font-size: 36px;
}

.lp-tier-name[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 28px;
    letter-spacing: -0.02em;
    line-height: 1.1;
    color: var(--fg-0);
    margin: 0;
}

.lp-tier-price[b-jpcevzl7mq] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-top: 2px;
}

.lp-tier-num[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 56;
    font-weight: 600;
    font-size: 48px;
    letter-spacing: -0.025em;
    line-height: 1;
    color: var(--fg-0);
    font-variant-numeric: tabular-nums;
}

.lp-tier-feature .lp-tier-num[b-jpcevzl7mq] { color: var(--signal); }

.lp-tier-per[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--fg-2);
}

.lp-tier-lede[b-jpcevzl7mq] {
    font-family: var(--font-body);
    font-size: 14px;
    color: var(--fg-1);
    line-height: 1.5;
    margin: 0;
}

.lp-tier-feats[b-jpcevzl7mq] {
    list-style: none;
    padding: 18px 0 0 0;
    margin: 4px 0 0 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    border-top: 1px solid var(--rule);
}

.lp-tier-feats li[b-jpcevzl7mq] {
    position: relative;
    padding-left: 24px;
    font-size: 14px;
    color: var(--fg-1);
    line-height: 1.45;
}

.lp-tier-feats li[b-jpcevzl7mq]::before {
    content: "";
    position: absolute;
    left: 2px;
    top: 7px;
    width: 12px;
    height: 7px;
    border-left: 1.5px solid var(--ok);
    border-bottom: 1.5px solid var(--ok);
    transform: rotate(-45deg);
    transform-origin: 0 100%;
}

.lp-tier-feature .lp-tier-feats li[b-jpcevzl7mq]::before { border-color: var(--signal); }

.lp-tier-cta[b-jpcevzl7mq] {
    margin-top: auto;
    align-self: stretch;
    justify-content: center;
    text-align: center;
}

.lp-pricing-note[b-jpcevzl7mq] {
    margin: 24px auto 0;
    max-width: 760px;
    text-align: center;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.04em;
    color: var(--fg-2);
    line-height: 1.6;
}

/* ──────────────────────  QUOTE  ────────────────────── */

.lp-quote[b-jpcevzl7mq] {
    border-top: 1px solid var(--rule);
    border-bottom: 1px solid var(--rule);
}

.lp-quote-inner[b-jpcevzl7mq] {
    max-width: 800px;
    margin: 0 auto;
    padding: clamp(80px, 10vw, 128px) clamp(24px, 4vw, 48px);
    text-align: center;
}

.lp-quote-text[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 64;
    font-weight: 500;
    font-style: italic;
    font-size: clamp(28px, 4vw, 48px);
    line-height: 1.25;
    letter-spacing: -0.015em;
    color: var(--fg-0);
    margin: 0 0 28px;
}

.lp-quote-text em[b-jpcevzl7mq] {
    color: var(--signal);
    font-style: italic;
}

.lp-quote-attr[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--fg-2);
}

/* ──────────────────────  BOTTOM CTA  ────────────────────── */

.lp-cta[b-jpcevzl7mq] {
    position: relative;
    overflow: hidden;
    text-align: center;
}

.lp-cta-glow[b-jpcevzl7mq] {
    position: absolute;
    inset: 0;
    background:
        radial-gradient(800px 500px at 50% 50%, rgba(255,74,61,.10), transparent 65%),
        radial-gradient(500px 400px at 50% 100%, rgba(95,220,239,.05), transparent 60%);
    pointer-events: none;
    z-index: 0;
}

.lp-cta-inner[b-jpcevzl7mq] {
    position: relative;
    z-index: 1;
    max-width: 720px;
    margin: 0 auto;
    padding: clamp(96px, 13vw, 160px) clamp(24px, 4vw, 48px);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 22px;
}

.lp-cta-h[b-jpcevzl7mq] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 500;
    font-size: clamp(48px, 7vw, 96px);
    line-height: 0.95;
    letter-spacing: -0.025em;
    color: var(--fg-0);
    margin: 8px 0 6px;
}

.lp-cta-h em[b-jpcevzl7mq] {
    font-style: italic;
    color: var(--signal);
    font-weight: 400;
}

.lp-cta-sub[b-jpcevzl7mq] {
    font-family: var(--font-body);
    font-size: clamp(15px, 1.4vw, 18px);
    line-height: 1.55;
    color: var(--fg-1);
    margin: 0 0 14px;
    max-width: 48ch;
}

.lp-cta-link[b-jpcevzl7mq] {
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.18em;
    color: var(--fg-2);
    text-decoration: none;
    margin-top: 6px;
    transition: color .2s var(--ease);
}

.lp-cta-link:hover[b-jpcevzl7mq] { color: var(--signal); }

/* ──────────────────────  RESPONSIVE  ────────────────────── */

@media (max-width: 1100px) {
    .lp-console-body[b-jpcevzl7mq] {
        grid-template-columns: 1fr;
    }
    .lp-console-main[b-jpcevzl7mq] {
        border-right: none;
        border-bottom: 1px solid var(--rule);
    }
    .lp-stat-grid[b-jpcevzl7mq] {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width: 900px) {
    .lp-flow-grid[b-jpcevzl7mq] {
        grid-template-columns: 1fr;
    }
    .lp-ticket[b-jpcevzl7mq] {
        grid-template-columns: 80px 1fr;
        gap: 14px;
    }
    .lp-ticket-id[b-jpcevzl7mq] { font-size: 38px; }
    .lp-ticket-right[b-jpcevzl7mq] {
        grid-column: 2;
        align-items: flex-start;
        flex-direction: row;
        gap: 14px;
        flex-wrap: wrap;
    }
    .lp-spark[b-jpcevzl7mq] { width: 130px; }
    .lp-console-main[b-jpcevzl7mq] { padding: 24px 20px; }
    .lp-meta-row[b-jpcevzl7mq] { gap: 12px; font-size: 10px; }
    .lp-meta-sep[b-jpcevzl7mq] { display: none; }
}

@media (max-width: 640px) {
    .lp-stat-grid[b-jpcevzl7mq] {
        grid-template-columns: 1fr;
    }
    .lp-stat[b-jpcevzl7mq] { min-height: 0; padding: 26px 22px; }
    .lp-hero-cta[b-jpcevzl7mq] { flex-direction: column; align-items: stretch; }
    .lp-btn[b-jpcevzl7mq] { justify-content: center; }
}

/* ──────────────────────  REDUCED MOTION  ────────────────────── */

@media (prefers-reduced-motion: reduce) {
    .lp-hero-h1[b-jpcevzl7mq],
    .lp-hero-sub[b-jpcevzl7mq],
    .lp-hero-cta[b-jpcevzl7mq],
    .lp-meta-row[b-jpcevzl7mq] {
        opacity: 1;
        transform: none;
        animation: none;
    }
    .lp-spark-active path[b-jpcevzl7mq],
    .lp-osc-line[b-jpcevzl7mq],
    .lp-console-live[b-jpcevzl7mq],
    .lp-status-run .lp-status-blip[b-jpcevzl7mq],
    .lp-cursor[b-jpcevzl7mq] {
        animation: none;
    }
    .lp-cursor[b-jpcevzl7mq] { opacity: 1; }
    .lp-btn:hover[b-jpcevzl7mq] { transform: none; }
    .lp-btn:hover .lp-btn-arrow[b-jpcevzl7mq] { transform: none; }
}
/* _content/Dispatch.Web/Components/Pages/Login.razor.rz.scp.css */
/* Login.razor.css — page-specific styles only.
   Shared .auth/.field/.btn/.status rules live in AuthShell.razor.css.
   ------------------------------------------------------------------ */

/* ---- Inline link-style button (resend confirmation) ------- */

.btn-link[b-7rb4tmlqu8] {
    background: none;
    border: 0;
    padding: 0;
    margin-top: 0.75rem;
    color: var(--signal);
    font-family: var(--font-body);
    font-size: 0.875rem;
    text-align: left;
    cursor: pointer;
    text-decoration: underline;
    text-underline-offset: 2px;
}

.btn-link:hover[b-7rb4tmlqu8] {
    color: var(--fg-0);
}

.btn-link:focus-visible[b-7rb4tmlqu8] {
    outline: 2px solid var(--focus-ring);
    outline-offset: 2px;
    border-radius: 2px;
}
/* _content/Dispatch.Web/Components/Pages/Logout.razor.rz.scp.css */
/* Logout.razor.css — confirm-only sign-out page */

.logout-confirm[b-p4l4b6wq2w] {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-top: 8px;
}

.logout-cancel[b-p4l4b6wq2w] { color: var(--signal); }
/* _content/Dispatch.Web/Components/Pages/NotFound.razor.rz.scp.css */
/* NotFound.razor.css — scoped styles
   404 page: monumental signal numeral, restrained copy, return CTA.
   ------------------------------------------------------------------ */

/* ---- Page shell ------------------------------------------- */

.status-page[b-481r4lfyjh] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    max-width: 560px;
    width: 100%;
    margin: 0 auto;
    padding: clamp(48px, 10vh, 128px) 24px 64px;
}

/* ---- Monumental 404 numeral ------------------------------- */

.status-numeral[b-481r4lfyjh] {
    font-family: var(--font-display);
    font-size: clamp(64px, 12vw, 144px);
    font-weight: 800;
    letter-spacing: -0.05em;
    line-height: 0.9;
    color: var(--signal);
    margin-bottom: 1.25rem;
    /* Optical bleed: pull slightly left to align the visual weight */
    margin-left: -0.04em;
}

/* ---- Headline --------------------------------------------- */

.status-headline[b-481r4lfyjh] {
    font-family: var(--font-display);
    font-size: 1.75rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.5rem;
}

/* ---- Body copy -------------------------------------------- */

.status-body[b-481r4lfyjh] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    margin-bottom: 2rem;
}

/* ---- Return CTA ------------------------------------------- */

.btn.primary[b-481r4lfyjh] {
    display: inline-flex;
    align-items: center;
    height: 42px;
    padding: 0 20px;
    background-color: var(--bg-1);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-decoration: none;
    cursor: pointer;
    transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}

.btn.primary:hover[b-481r4lfyjh] {
    background-color: var(--surface-hover);
    border-color: var(--fg-1);
    color: var(--fg-0);
}

.btn.primary:focus-visible[b-481r4lfyjh] {
    outline: 2px solid var(--focus-ring);
    outline-offset: 3px;
}
/* _content/Dispatch.Web/Components/Pages/Onboarding/AcceptInvite.razor.rz.scp.css */
/* AcceptInvite.razor.css — page-specific styles only.
   Shared .auth/.btn/.auth-foot rules live in AuthShell.razor.css.
   ------------------------------------------------------------------ */

.join-actions[b-r8skrvoexs] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}
/* _content/Dispatch.Web/Components/Pages/Onboarding/CreateWorkspace.razor.rz.scp.css */
/* CreateWorkspace.razor.css — mirrors Login.razor.css auth class language */

/* ---- Sign-out chip (onboarding escape hatch) -------------- */

.cw-signout-bar[b-46jd3bcu45] {
    max-width: 460px;
    width: 100%;
    margin: 0 auto;
    padding: 24px 24px 0 24px;
    display: flex;
    justify-content: flex-end;
}

.cw-signout-btn[b-46jd3bcu45] {
    background: none;
    border: none;
    padding: 0;
    font: inherit;
    color: var(--fg-2);
    font-size: 0.8125rem;
    cursor: pointer;
    transition: color 0.15s ease;
}

.cw-signout-btn:hover[b-46jd3bcu45] {
    color: var(--fg-0);
}

.cw-signout-btn:focus-visible[b-46jd3bcu45] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
    border-radius: 2px;
}

/* ---- Auth shell ------------------------------------------- */

.auth[b-46jd3bcu45] {
    display: flex;
    flex-direction: column;
    gap: 0;
    max-width: 460px;
    width: 100%;
    margin: 0 auto;
    padding: clamp(48px, 8vh, 96px) 24px 64px;
}

.auth-title[b-46jd3bcu45] {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.375rem;
}

.auth-tag[b-46jd3bcu45] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    margin-bottom: 2rem;
}

/* ---- Form fields ------------------------------------------ */

.field[b-46jd3bcu45] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 1rem;
}

.field-label[b-46jd3bcu45] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--fg-1);
    letter-spacing: 0.02em;
    text-transform: uppercase;
    display: flex;
    flex-direction: column;
    gap: 2px;
}

.field-hint[b-46jd3bcu45] {
    font-size: 0.75rem;
    font-weight: 400;
    text-transform: none;
    letter-spacing: 0;
    color: var(--fg-1);
    opacity: 0.7;
}

.field-input[b-46jd3bcu45] {
    height: 46px;
    padding: 0 14px;
    background-color: var(--bg-1);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.9375rem;
    width: 100%;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.field-input[b-46jd3bcu45]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.field-input:focus[b-46jd3bcu45] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

.field-mono[b-46jd3bcu45] {
    font-family: var(--font-mono);
    font-size: 0.875rem;
}

/* ---- Validation ------------------------------------------- */

.auth-error[b-46jd3bcu45] {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 40%, transparent);
    border-radius: 6px;
    color: var(--err);
    font-size: 0.875rem;
    padding: 10px 14px;
    margin-bottom: 1.25rem;
}

[b-46jd3bcu45] .validation-message {
    font-size: 0.8125rem;
    color: var(--err);
    margin-top: 2px;
}

/* ---- Primary CTA button ----------------------------------- */

.btn.primary.signal[b-46jd3bcu45] {
    display: block;
    width: 100%;
    height: 46px;
    margin-top: 0.5rem;
    background-color: var(--signal);
    color: var(--on-signal);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    transition: opacity 0.15s ease, transform 0.1s ease;
}

.btn.primary.signal:hover[b-46jd3bcu45] { opacity: 0.88; }
.btn.primary.signal:active[b-46jd3bcu45] { transform: scale(0.985); }

.btn.primary.signal:focus-visible[b-46jd3bcu45] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--signal) 20%, transparent);
}
/* _content/Dispatch.Web/Components/Pages/Privacy.razor.rz.scp.css */
/* Privacy.razor.css — scoped styles
   Static content page with comfortable prose measure.
   ------------------------------------------------------------------ */

/* ---- Page shell ------------------------------------------- */

.privacy[b-eyz5dwxefg] {
    display: flex;
    flex-direction: column;
    gap: 0;
    max-width: 720px;
    width: 100%;
    margin: 0 auto;
    padding: clamp(48px, 8vh, 96px) 24px 64px;
}

.privacy-title[b-eyz5dwxefg] {
    font-family: var(--font-display);
    font-size: 2rem;
    font-weight: 700;
    letter-spacing: -0.03em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 2rem;
}

/* ---- Prose container -------------------------------------- */

.prose[b-eyz5dwxefg] {
    max-width: 60ch;
    color: var(--fg-1);
    font-size: 0.9375rem;
    line-height: 1.7;
    display: flex;
    flex-direction: column;
    gap: 0;
}

.prose p[b-eyz5dwxefg] {
    margin-bottom: 1rem;
}

.prose h2[b-eyz5dwxefg] {
    font-family: var(--font-display);
    font-size: 1.125rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin-top: 2rem;
    margin-bottom: 0.5rem;
    padding-top: 1.5rem;
    border-top: 1px solid var(--border);
}

.prose h2:first-of-type[b-eyz5dwxefg] {
    margin-top: 0;
}
/* _content/Dispatch.Web/Components/Pages/Settings.razor.rz.scp.css */
.card[b-4q0e9bihfu] {
    border: 1px solid var(--border);
    border-radius: 0.5rem;
    padding: 1.25rem 1.5rem;
    margin-bottom: 1.25rem;
    max-width: 50rem;
    background: #fff;
}

.card h2[b-4q0e9bihfu] {
    margin-top: 0;
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
}

.card h2 .hint[b-4q0e9bihfu] {
    color: var(--muted);
    font-size: 0.8rem;
    font-weight: 400;
}

.field[b-4q0e9bihfu] {
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
    margin-bottom: 0.85rem;
}

.field label[b-4q0e9bihfu] {
    font-weight: 600;
    font-size: 0.9rem;
}

.field input[b-4q0e9bihfu] { width: 100%; }

.field small[b-4q0e9bihfu] {
    color: var(--muted);
    font-size: 0.8rem;
}

.field-row[b-4q0e9bihfu] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}

.actions[b-4q0e9bihfu] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-top: 0.5rem;
}

.saved[b-4q0e9bihfu] {
    color: #1f6033;
    font-size: 0.85rem;
}

.warn[b-4q0e9bihfu] {
    color: #855900;
    background: #fff8e1;
    border-left: 3px solid #f0c674;
    padding: 0.5rem 0.75rem;
    border-radius: 0.3rem;
    font-size: 0.85rem;
    margin-top: 1rem;
}

.warn-inline[b-4q0e9bihfu] { color: #c0392b; margin-left: 0.5rem; font-size: 0.85rem; }

dl[b-4q0e9bihfu] {
    display: grid;
    grid-template-columns: max-content 1fr;
    gap: 0.4rem 1.5rem;
    margin: 0;
}

dt[b-4q0e9bihfu] {
    font-weight: 600;
    color: var(--muted);
}

dd[b-4q0e9bihfu] { margin: 0; }
/* _content/Dispatch.Web/Components/Pages/Workspace/DiffViewer.razor.rz.scp.css */
/* DiffViewer.razor.css — unified-diff renderer, hairline / editorial */

/* ---- Empty state ----------------------------------------- */

.dv-empty[b-6kufhmu9vq] {
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--fg-2);
    padding: 32px;
    border: 1px solid var(--rule);
    border-radius: var(--r-m);
    background: var(--bg-1);
    text-align: center;
}

/* ---- Container ------------------------------------------- */

.dv[b-6kufhmu9vq] {
    border: 1px solid var(--rule);
    border-radius: var(--r-m);
    background: var(--bg-1);
    overflow: hidden;
}

/* ---- Header bar ------------------------------------------ */

.dv-header[b-6kufhmu9vq] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 12px 16px;
    border-bottom: 1px solid var(--rule);
    background: var(--bg-2);
}

.dv-files[b-6kufhmu9vq],
.dv-stat[b-6kufhmu9vq] {
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .04em;
}

.dv-files[b-6kufhmu9vq] {
    color: var(--fg-1);
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.dv-file-icon[b-6kufhmu9vq] {
    color: var(--fg-2);
    font-size: 12px;
    line-height: 1;
}

.dv-ins[b-6kufhmu9vq] { color: var(--ok); }
.dv-del[b-6kufhmu9vq] { color: var(--err); }

.dv-spacer[b-6kufhmu9vq] { flex: 1 1 auto; }

.dv-download[b-6kufhmu9vq] {
    padding: 6px 12px;
    border: 1px solid var(--rule-strong);
    border-radius: var(--r-s);
    color: var(--fg-1);
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: .12em;
    text-decoration: none;
    transition: color .15s var(--ease),
                border-color .15s var(--ease),
                background-color .15s var(--ease);
}

.dv-download:hover[b-6kufhmu9vq],
.dv-download:focus-visible[b-6kufhmu9vq] {
    color: var(--fg-0);
    border-color: var(--fg-2);
    background: var(--bg-3);
}

/* ---- Body ------------------------------------------------ */

.dv-body-wrap[b-6kufhmu9vq] {
    /* outer scroll container; pre handles its own overflow as well */
    overflow: hidden;
}

.dv-body[b-6kufhmu9vq] {
    font-family: var(--font-mono);
    font-size: 12px;
    line-height: 1.55;
    padding: 16px 20px;
    margin: 0;
    color: var(--fg-1);
    background: var(--bg-1);
    overflow-x: auto;
    overflow-y: auto;
    max-height: 70vh;
}

/* ---- Rows + gutter --------------------------------------- */

.dv-row[b-6kufhmu9vq] {
    display: grid;
    grid-template-columns: 4ch 4ch 1fr;
    align-items: baseline;
    column-gap: 0;
}

.dv-num[b-6kufhmu9vq] {
    font-family: var(--font-mono);
    color: var(--fg-2);
    text-align: right;
    padding-right: 8px;
    user-select: none;
    -webkit-user-select: none;
}

.dv-line[b-6kufhmu9vq] {
    color: var(--fg-1);
    white-space: pre;
}

/* Variant classes now live on .dv-row so the gutter shares the row treatment */

.dv-row.dv-line--meta .dv-line[b-6kufhmu9vq] {
    color: var(--fg-0);
    font-weight: 500;
}

.dv-row.dv-line--hunk .dv-line[b-6kufhmu9vq] {
    color: var(--info);
    opacity: .9;
    padding-block: 4px;
}

.dv-row.dv-line--add[b-6kufhmu9vq] {
    background: color-mix(in srgb, var(--ok) 6%, transparent);
    border-left: 2px solid var(--ok);
    margin-left: -8px;
    padding-left: 6px;
}

.dv-row.dv-line--add .dv-line[b-6kufhmu9vq] {
    color: var(--ok);
}

.dv-row.dv-line--del[b-6kufhmu9vq] {
    background: color-mix(in srgb, var(--err) 6%, transparent);
    border-left: 2px solid var(--err);
    margin-left: -8px;
    padding-left: 6px;
}

.dv-row.dv-line--del .dv-line[b-6kufhmu9vq] {
    color: var(--err);
}

.dv-row.dv-line--ctx[b-6kufhmu9vq] {
    /* baseline; no special treatment */
}
/* _content/Dispatch.Web/Components/Pages/Workspace/Members.razor.rz.scp.css */
/* Members.razor.css — scoped styles */

/* ---- A11y helpers ----------------------------------------- */

.sr-only[b-gpd67vezwl] {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ---- Page header ------------------------------------------ */

.page-head[b-gpd67vezwl] {
    margin-bottom: 1.75rem;
}

.page-title[b-gpd67vezwl] {
    font-family: var(--font-display);
    font-size: 1.75rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.25rem;
}

.page-subtitle[b-gpd67vezwl] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    margin: 0;
}

/* ---- Status banners --------------------------------------- */

.status[b-gpd67vezwl] {
    border-radius: 6px;
    font-size: 0.875rem;
    padding: 10px 14px;
    margin-bottom: 1.25rem;
    max-width: 52rem;
}

.status-ok[b-gpd67vezwl] {
    background-color: color-mix(in srgb, var(--ok) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--ok) 35%, transparent);
    color: var(--ok);
}

.status-err[b-gpd67vezwl] {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 40%, transparent);
    color: var(--err);
}

.dev-link[b-gpd67vezwl] {
    font-size: 0.8125rem;
    opacity: 0.8;
}

.dev-link a[b-gpd67vezwl] {
    color: inherit;
    word-break: break-all;
}

/* ---- Card ------------------------------------------------- */

.card[b-gpd67vezwl] {
    background-color: var(--bg-1);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.25rem;
    max-width: 52rem;
}

.card-heading[b-gpd67vezwl] {
    font-family: var(--font-display);
    font-size: 1.0625rem;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin-bottom: 1.25rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border);
}

/* ---- Member table ----------------------------------------- */

.members-table[b-gpd67vezwl] {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.9rem;
}

.members-table th[b-gpd67vezwl] {
    text-align: left;
    font-size: 0.75rem;
    font-weight: 600;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--fg-1);
    padding: 0 0.75rem 0.5rem 0;
    border-bottom: 1px solid var(--border);
}

.members-table td[b-gpd67vezwl] {
    padding: 0.75rem 0.75rem 0.75rem 0;
    border-bottom: 1px solid var(--border);
    color: var(--fg-0);
    vertical-align: middle;
}

.members-table tbody tr:last-child td[b-gpd67vezwl] {
    border-bottom: none;
}

.members-table .current-user td[b-gpd67vezwl] {
    background: color-mix(in srgb, var(--info) 5%, transparent);
}

/* ---- Avatar + member info --------------------------------- */

.member-cell[b-gpd67vezwl] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
}

.avatar[b-gpd67vezwl] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background-color: color-mix(in srgb, var(--signal) 18%, var(--bg-0));
    color: var(--signal);
    font-size: 0.875rem;
    font-weight: 700;
    flex-shrink: 0;
    letter-spacing: 0;
}

.member-info[b-gpd67vezwl] {
    display: flex;
    flex-direction: column;
    gap: 1px;
}

.member-name[b-gpd67vezwl] {
    font-weight: 500;
    color: var(--fg-0);
    display: flex;
    align-items: center;
    gap: 0.4rem;
}

.member-email[b-gpd67vezwl] {
    font-size: 0.8125rem;
    color: var(--fg-1);
}

.you-badge[b-gpd67vezwl] {
    font-size: 0.65rem;
    font-weight: 700;
    padding: 0.1rem 0.4rem;
    border-radius: 1rem;
    background: color-mix(in srgb, var(--info) 20%, transparent);
    color: var(--info);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

/* ---- Role badges ------------------------------------------ */

.role-badge[b-gpd67vezwl] {
    display: inline-block;
    font-size: 0.75rem;
    font-weight: 600;
    padding: 0.2rem 0.55rem;
    border-radius: 1rem;
    letter-spacing: 0.02em;
}

.role-owner[b-gpd67vezwl] {
    background-color: color-mix(in srgb, var(--signal) 15%, transparent);
    color: var(--signal);
    border: 1px solid color-mix(in srgb, var(--signal) 35%, transparent);
}

.role-member[b-gpd67vezwl] {
    background-color: color-mix(in srgb, var(--fg-1) 12%, transparent);
    color: var(--fg-1);
    border: 1px solid color-mix(in srgb, var(--fg-1) 20%, transparent);
}

/* ---- Role select + actions -------------------------------- */

.role-select[b-gpd67vezwl] {
    height: 32px;
    padding: 0 8px;
    background-color: var(--bg-0);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.875rem;
    cursor: pointer;
    margin-right: 0.35rem;
}

.role-select:focus-visible[b-gpd67vezwl],
.btn-ghost:focus-visible[b-gpd67vezwl] {
    outline: 2px solid var(--signal);
    outline-offset: 2px;
}

.role-cell[b-gpd67vezwl] {
    white-space: nowrap;
}

.joined-cell[b-gpd67vezwl] {
    color: var(--fg-1);
    font-family: var(--font-mono);
    font-size: 0.8rem;
    white-space: nowrap;
}

.actions-cell[b-gpd67vezwl] {
    white-space: nowrap;
}

.actions-row[b-gpd67vezwl] {
    display: flex;
    gap: 0.4rem;
    align-items: center;
}

.no-action[b-gpd67vezwl] {
    color: var(--fg-1);
}

/* ---- Ghost buttons ---------------------------------------- */

.btn-ghost[b-gpd67vezwl] {
    display: inline-flex;
    align-items: center;
    height: 30px;
    padding: 0 0.75rem;
    background: transparent;
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-1);
    font-size: 0.8125rem;
    font-weight: 500;
    cursor: pointer;
    transition: background-color 0.12s ease, color 0.12s ease;
}

.btn-ghost:hover[b-gpd67vezwl] {
    background-color: var(--surface-hover);
    color: var(--fg-0);
}

.btn-ghost.btn-danger[b-gpd67vezwl] {
    color: var(--err);
    border-color: color-mix(in srgb, var(--err) 30%, transparent);
}

.btn-ghost.btn-danger:hover[b-gpd67vezwl] {
    background-color: color-mix(in srgb, var(--err) 10%, transparent);
}

.btn-ghost.btn-danger:focus-visible[b-gpd67vezwl] {
    outline: 2px solid var(--err);
    outline-offset: 2px;
}

/* ---- Typed-confirm row (destructive actions) ------------- */

.confirm-row[b-gpd67vezwl] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

.confirm-input[b-gpd67vezwl] {
    height: 30px;
    padding: 0 8px;
    background-color: var(--bg-0);
    border: 1px solid color-mix(in srgb, var(--err) 35%, var(--border-input));
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.8125rem;
    width: 9rem;
}

.confirm-input:focus[b-gpd67vezwl] {
    border-color: var(--err);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--err) 18%, transparent);
    outline: none;
}

.btn-confirm-real[b-gpd67vezwl] {
    display: inline-flex;
    align-items: center;
    height: 30px;
    padding: 0 0.75rem;
    background-color: color-mix(in srgb, var(--err) 14%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 45%, transparent);
    border-radius: 6px;
    color: var(--err);
    font-size: 0.8125rem;
    font-weight: 600;
    cursor: pointer;
    transition: background-color 0.12s ease, opacity 0.12s ease;
}

.btn-confirm-real:hover:not(:disabled)[b-gpd67vezwl] {
    background-color: color-mix(in srgb, var(--err) 22%, transparent);
}

.btn-confirm-real:focus-visible[b-gpd67vezwl] {
    outline: 2px solid var(--err);
    outline-offset: 2px;
}

.btn-confirm-real:disabled[b-gpd67vezwl] {
    opacity: 0.45;
    cursor: not-allowed;
}

.btn-cancel-mini[b-gpd67vezwl] {
    display: inline-flex;
    align-items: center;
    height: 30px;
    padding: 0 0.6rem;
    background: transparent;
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-1);
    font-size: 0.8125rem;
    cursor: pointer;
    transition: background-color 0.12s ease, color 0.12s ease;
}

.btn-cancel-mini:hover[b-gpd67vezwl] {
    background-color: var(--surface-hover);
    color: var(--fg-0);
}

.btn-cancel-mini:focus-visible[b-gpd67vezwl] {
    outline: 2px solid var(--signal);
    outline-offset: 2px;
}

/* ---- Invite form ------------------------------------------ */

.field[b-gpd67vezwl] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 1rem;
}

.field-label[b-gpd67vezwl] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--fg-1);
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.field-input[b-gpd67vezwl] {
    height: 46px;
    padding: 0 14px;
    background-color: var(--bg-0);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.9375rem;
    width: 100%;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.field-input[b-gpd67vezwl]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.field-input:focus[b-gpd67vezwl] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

[b-gpd67vezwl] .validation-message {
    font-size: 0.8125rem;
    color: var(--err);
    margin-top: 2px;
}

.radio-group[b-gpd67vezwl] {
    display: flex;
    gap: 1.5rem;
}

.radio-label[b-gpd67vezwl] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-size: 0.9375rem;
    color: var(--fg-0);
    cursor: pointer;
}

.btn.primary.signal[b-gpd67vezwl] {
    display: inline-block;
    height: 42px;
    padding: 0 1.5rem;
    margin-top: 0.25rem;
    background-color: var(--signal);
    color: var(--on-signal);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    transition: opacity 0.15s ease, transform 0.1s ease;
}

.btn.primary.signal:hover[b-gpd67vezwl] { opacity: 0.88; }
.btn.primary.signal:active[b-gpd67vezwl] { transform: scale(0.985); }
.btn.primary.signal:focus-visible[b-gpd67vezwl] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--signal) 20%, transparent);
}

/* ---- Loading (denied panel is the shared AccessDenied component) --- */

.loading[b-gpd67vezwl] { color: var(--fg-1); }

.empty[b-gpd67vezwl] { color: var(--fg-1); margin: 0; }

.invite-nudge[b-gpd67vezwl] {
    color: var(--fg-2);
    font-size: 0.9rem;
    margin: 16px 0 8px 0;
    padding: 10px 14px;
    background: var(--bg-2);
    border-left: 3px solid var(--signal);
    border-radius: 4px;
}
/* _content/Dispatch.Web/Components/Pages/Workspace/NewTicketDialog.razor.rz.scp.css */
/* NewTicketDialog.razor.css — scoped <dialog> modal styles */

/* ---- <dialog> element + backdrop -------------------------- */

.ntd[b-1pypik4f12] {
    position: fixed;
    inset: 0;
    margin: auto;
    width: min(560px, calc(100vw - 2rem));
    max-height: calc(100vh - 4rem);
    overflow-y: auto;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 10px;
    background: var(--bg-1);
    color: var(--fg-0);
    box-shadow: 0 24px 72px rgba(0, 0, 0, 0.55);
    z-index: 800;
}

.ntd[b-1pypik4f12]::backdrop {
    background: rgba(0, 0, 0, 0.72);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
}

/* ---- Inner wrapper ---------------------------------------- */

.ntd-inner[b-1pypik4f12] {
    padding: 2rem;
}

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

.ntd-header[b-1pypik4f12] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1.5rem;
}

.ntd-title[b-1pypik4f12] {
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin: 0;
}

.ntd-close[b-1pypik4f12] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border-radius: 6px;
    font-size: 1rem;
    color: var(--fg-1);
    text-decoration: none;
    transition: background 0.12s ease, color 0.12s ease;
}

.ntd-close:hover[b-1pypik4f12] {
    background: var(--surface-hover);
    color: var(--fg-0);
}

/* ---- Form fields ------------------------------------------ */

.ntd-field[b-1pypik4f12] {
    display: flex;
    flex-direction: column;
    gap: 5px;
    margin-bottom: 1rem;
}

.ntd-label[b-1pypik4f12] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--fg-1);
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.ntd-input[b-1pypik4f12] {
    width: 100%;
    padding: 0 12px;
    height: 42px;
    background-color: var(--bg-0);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.ntd-input[b-1pypik4f12]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.ntd-input:focus[b-1pypik4f12] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

.ntd-textarea[b-1pypik4f12] {
    height: auto;
    min-height: 10rem;
    padding: 10px 12px;
    resize: vertical;
    line-height: 1.5;
}

.ntd-validation[b-1pypik4f12] {
    font-size: 0.8125rem;
    color: var(--err);
    margin-top: 2px;
}

/* ---- Error banner ----------------------------------------- */

.ntd-error[b-1pypik4f12] {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 40%, transparent);
    border-radius: 6px;
    color: var(--err);
    font-size: 0.875rem;
    padding: 10px 14px;
    margin-bottom: 1rem;
}

/* ---- Action row ------------------------------------------- */

.ntd-actions[b-1pypik4f12] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 0.75rem;
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--border);
}

/* ---- Buttons --------------------------------------------- */

.btn[b-1pypik4f12] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 40px;
    padding: 0 1.25rem;
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    cursor: pointer;
    text-decoration: none;
    transition: opacity 0.15s ease, background 0.15s ease;
    white-space: nowrap;
    border: none;
}

.btn.ghost[b-1pypik4f12] {
    background: transparent;
    color: var(--fg-1);
    border: 1px solid var(--border);
}

.btn.ghost:hover[b-1pypik4f12] {
    background: var(--surface-hover);
    color: var(--fg-0);
}

.btn.primary.signal[b-1pypik4f12] {
    background-color: var(--signal);
    color: var(--on-signal);
}

.btn.primary.signal:hover[b-1pypik4f12] {
    opacity: 0.88;
}

.btn.primary.signal:active[b-1pypik4f12] {
    transform: scale(0.985);
}

.btn.primary.signal:disabled[b-1pypik4f12] {
    opacity: 0.45;
    cursor: not-allowed;
}

.btn.primary.signal:focus-visible[b-1pypik4f12] {
    outline: 2px solid var(--fg-0);
    outline-offset: 3px;
}
/* _content/Dispatch.Web/Components/Pages/Workspace/Queue.razor.rz.scp.css */
/* Queue.razor.css — Dispatch queue page (mockup-locked) */

/* ---- Loading (denied panel is the shared AccessDenied component) --- */

.loading[b-ut8kffw6ho] { color: var(--fg-1); }

/* ---- Two-column layout ------------------------------------ */

.queue-layout[b-ut8kffw6ho] {
    display: grid;
    grid-template-columns: 1fr 320px;
    grid-template-areas: "main rail";
    align-items: start;
    min-height: 100%;
}

.queue-main[b-ut8kffw6ho] {
    grid-area: main;
    min-width: 0;
    padding: 8px 8px 80px 0;
}

.queue-rail[b-ut8kffw6ho] {
    grid-area: rail;
    border-left: 1px solid var(--rule);
    background: var(--bg-1);
    padding: 32px 24px;
    display: flex;
    flex-direction: column;
    gap: 28px;
    min-height: 100%;
}

@media (max-width: 1100px) {
    .queue-layout[b-ut8kffw6ho] {
        grid-template-columns: 1fr;
        grid-template-areas:
            "main"
            "rail";
    }
    .queue-rail[b-ut8kffw6ho] {
        border-left: none;
        border-top: 1px solid var(--rule);
        padding: 24px 0 0 0;
        background: transparent;
    }
}

/* ---- Hero header row -------------------------------------- */

.header-row[b-ut8kffw6ho] {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    gap: 24px;
    padding-bottom: 20px;
    border-bottom: 1px solid var(--rule);
    margin-bottom: 20px;
}

.eyebrow[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-2);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}

h1[b-ut8kffw6ho] {
    font-family: var(--font-display);
    font-weight: 500;
    font-variation-settings: "opsz" 64;
    font-size: clamp(28px, 3.5vw, 48px);
    line-height: 0.95;
    letter-spacing: -0.025em;
    color: var(--fg-0);
    margin: 0;
}

h1 em[b-ut8kffw6ho] {
    font-style: italic;
    color: var(--signal);
    font-weight: 400;
}

.meta-row[b-ut8kffw6ho] {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-1);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-top: 16px;
}

.meta-row span b[b-ut8kffw6ho] {
    color: var(--fg-0);
    font-weight: 500;
}

/* ---- + New ticket button ---------------------------------- */

.new-btn[b-ut8kffw6ho] {
    background: var(--fg-0);
    color: var(--bg-0);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    padding: 11px 18px;
    border-radius: var(--r-m);
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    transition: transform 0.12s var(--ease), background 0.2s var(--ease), color 0.2s var(--ease);
    white-space: nowrap;
}

.new-btn:hover[b-ut8kffw6ho] {
    transform: translateY(-1px);
    background: var(--signal);
    color: var(--on-signal);
}

.new-btn .plus[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-weight: 500;
    opacity: 0.8;
}

.new-btn:focus-visible[b-ut8kffw6ho] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
}

/* ---- Header actions cluster + Refresh + Snapshot note ----- */

.header-actions[b-ut8kffw6ho] {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

.refresh-btn[b-ut8kffw6ho] {
    background: transparent;
    color: var(--fg-1);
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    padding: 9px 12px;
    border-radius: var(--r-m);
    border: 1px solid var(--rule-strong);
    cursor: pointer;
    white-space: nowrap;
    transition: color 0.15s var(--ease), border-color 0.15s var(--ease), background 0.15s var(--ease);
}

.refresh-btn:hover[b-ut8kffw6ho] {
    color: var(--fg-0);
    border-color: var(--fg-0);
    background: var(--bg-1);
}

.refresh-btn:focus-visible[b-ut8kffw6ho] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
}

/* ---- Empty state ------------------------------------------ */

.queue-empty[b-ut8kffw6ho] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.25rem;
    padding: 3rem 0;
}

.empty-id[b-ut8kffw6ho] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 700;
    font-size: 64px;
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--fg-2);
    font-variant-numeric: tabular-nums;
}

.empty-id .prefix[b-ut8kffw6ho] {
    display: block;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.18em;
    color: var(--fg-2);
    margin-bottom: 4px;
}

.empty-tagline[b-ut8kffw6ho] {
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--fg-1);
    margin: 0;
}

/* ---- Queue (ticket list) ---------------------------------- */

.queue[b-ut8kffw6ho] {
    display: flex;
    flex-direction: column;
}

.ticket[b-ut8kffw6ho] {
    display: grid;
    grid-template-columns: 140px 1fr 200px;
    gap: 32px;
    padding: 32px 0;
    border-bottom: 1px solid var(--rule);
    align-items: center;
    position: relative;
    transition: background 0.2s var(--ease);
    text-decoration: none;
    color: inherit;

    /* fade-in stagger */
    opacity: 0;
    transform: translateY(8px);
    animation: ticket-rise-b-ut8kffw6ho 0.5s var(--ease) forwards;
}

.ticket:hover[b-ut8kffw6ho] {
    background: var(--bg-1);
}

.ticket:nth-child(1)[b-ut8kffw6ho]  { animation-delay: 0.05s; }
.ticket:nth-child(2)[b-ut8kffw6ho]  { animation-delay: 0.12s; }
.ticket:nth-child(3)[b-ut8kffw6ho]  { animation-delay: 0.19s; }
.ticket:nth-child(4)[b-ut8kffw6ho]  { animation-delay: 0.26s; }
.ticket:nth-child(5)[b-ut8kffw6ho]  { animation-delay: 0.33s; }
.ticket:nth-child(6)[b-ut8kffw6ho]  { animation-delay: 0.40s; }
.ticket:nth-child(7)[b-ut8kffw6ho]  { animation-delay: 0.47s; }
.ticket:nth-child(8)[b-ut8kffw6ho]  { animation-delay: 0.54s; }
.ticket:nth-child(n+9)[b-ut8kffw6ho] { animation-delay: 0.60s; }

@keyframes ticket-rise-b-ut8kffw6ho {
    to { opacity: 1; transform: none; }
}

@media (prefers-reduced-motion: reduce) {
    .ticket[b-ut8kffw6ho] { opacity: 1; transform: none; animation: none; }
}

/* ---- Ticket numeral (left column) ------------------------- */

.ticket .id[b-ut8kffw6ho] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 700;
    font-size: 64px;
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--fg-0);
    font-variant-numeric: tabular-nums;
}

.ticket.is-active .id[b-ut8kffw6ho] {
    color: var(--signal);
}

.ticket .id .prefix[b-ut8kffw6ho] {
    display: block;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.18em;
    color: var(--fg-2);
    margin-bottom: 4px;
}

/* ---- Ticket center column (body) -------------------------- */

.ticket .body[b-ut8kffw6ho] { min-width: 0; }

.ticket .body h3[b-ut8kffw6ho] {
    margin: 0 0 6px;
    font-family: var(--font-display);
    font-weight: 500;
    font-size: 22px;
    line-height: 1.25;
    letter-spacing: -0.012em;
    color: var(--fg-0);
}

.ticket .body .submeta[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-2);
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.ticket .body .submeta b[b-ut8kffw6ho] {
    color: var(--fg-1);
    font-weight: 500;
}

/* ---- Ticket right column ---------------------------------- */

.ticket .right[b-ut8kffw6ho] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 10px;
}

/* ---- Status (mono caps + colored blip) -------------------- */

.status[b-ut8kffw6ho] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--fg-1);
    white-space: nowrap;
}

.status .blip[b-ut8kffw6ho] {
    width: 8px;
    height: 8px;
    border-radius: 999px;
    background: var(--fg-3);
    flex-shrink: 0;
}

.status.run[b-ut8kffw6ho] { color: var(--signal); }
.status.run .blip[b-ut8kffw6ho] {
    background: var(--signal);
    box-shadow: 0 0 0 0 var(--signal);
    animation: status-live-b-ut8kffw6ho 1.5s var(--ease) infinite;
}

.status.idle[b-ut8kffw6ho]       { color: var(--text-muted, #888); }
.status.idle .blip[b-ut8kffw6ho] { background: var(--text-muted, #888); }

.status.done .blip[b-ut8kffw6ho] { background: var(--ok); }
.status.wait[b-ut8kffw6ho]       { color: var(--warn); }
.status.wait .blip[b-ut8kffw6ho] { background: var(--warn); }
.status.fail[b-ut8kffw6ho]       { color: var(--err); }
.status.fail .blip[b-ut8kffw6ho] { background: var(--err); }

@keyframes status-live-b-ut8kffw6ho {
    0%   { box-shadow: 0 0 0 0 rgba(255, 74, 61, 0.55); }
    100% { box-shadow: 0 0 0 8px rgba(255, 74, 61, 0); }
}

@media (prefers-reduced-motion: reduce) {
    .status.run .blip[b-ut8kffw6ho] { animation: none; }
}

/* ---- Right rail sections ---------------------------------- */

.side-section h4[b-ut8kffw6ho] {
    margin: 0 0 14px;
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--fg-2);
    font-weight: 500;
}

/* ---- 6a. Live transmission card --------------------------- */

.transmit[b-ut8kffw6ho] {
    border: 1px solid var(--signal);
    border-radius: var(--r-l);
    padding: 18px;
    background:
        linear-gradient(180deg, rgba(255, 74, 61, 0.10), transparent 80%),
        var(--bg-2);
    box-shadow: var(--shadow);
    position: relative;
    overflow: hidden;
}

.transmit[b-ut8kffw6ho]::before {
    content: "";
    position: absolute;
    inset: 0;
    background:
        repeating-linear-gradient(
            180deg,
            transparent 0 14px,
            rgba(255, 255, 255, 0.012) 14px 15px
        );
    pointer-events: none;
}

.transmit .label[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.2em;
    color: var(--signal);
    text-transform: uppercase;
    margin-bottom: 8px;
    position: relative;
}

.transmit .who[b-ut8kffw6ho] {
    font-family: var(--font-display);
    font-size: 17px;
    font-weight: 500;
    margin-bottom: 12px;
    line-height: 1.25;
    color: var(--fg-0);
    position: relative;
}

.transmit-cta[b-ut8kffw6ho] {
    display: inline-block;
    margin-top: 12px;
    font-family: var(--font-mono);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--signal);
    text-decoration: none;
    border-bottom: 1px solid color-mix(in srgb, var(--signal) 40%, transparent);
    padding-bottom: 1px;
    transition: color 0.15s var(--ease), border-color 0.15s var(--ease);
}
.transmit-cta:hover[b-ut8kffw6ho] {
    color: var(--fg-0);
    border-color: var(--fg-0);
}

.transmit-empty[b-ut8kffw6ho] {
    background: var(--bg-2);
    border-color: var(--rule-strong);
    box-shadow: none;
}

.transmit-empty .empty-hint[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-2);
    line-height: 1.5;
    position: relative;
}

/* ---- 6b. Stat grid ---------------------------------------- */

.stat-grid[b-ut8kffw6ho] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1px;
    background: var(--rule);
    border: 1px solid var(--rule);
    border-radius: var(--r-m);
    overflow: hidden;
}

.stat[b-ut8kffw6ho] {
    background: var(--bg-1);
    padding: 14px 14px 16px;
}

.stat .num[b-ut8kffw6ho] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 56;
    font-size: 32px;
    font-weight: 600;
    line-height: 1;
    letter-spacing: -0.02em;
    color: var(--fg-0);
}

.stat .num .unit[b-ut8kffw6ho] {
    font-size: 0.55em;
    color: var(--fg-2);
    margin-left: 1px;
}

.stat .lbl[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-size: 10px;
    letter-spacing: 0.16em;
    color: var(--fg-2);
    text-transform: uppercase;
    margin-top: 6px;
}

.stat.signal .num[b-ut8kffw6ho] { color: var(--signal); }

/* ---- 6c. Members ------------------------------------------ */

.members[b-ut8kffw6ho] {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.member[b-ut8kffw6ho] {
    display: grid;
    grid-template-columns: 28px 1fr auto;
    align-items: center;
    gap: 12px;
    padding: 6px 8px;
    border-radius: var(--r-s);
}

.member:hover[b-ut8kffw6ho] {
    background: var(--bg-2);
}

.member .av[b-ut8kffw6ho] {
    width: 28px;
    height: 28px;
    border-radius: 999px;
    display: grid;
    place-items: center;
    font-family: var(--font-display);
    font-weight: 600;
    font-size: 11px;
    color: var(--bg-0);
}

.member .av.a[b-ut8kffw6ho] { background: var(--av-grad-a); }
.member .av.b[b-ut8kffw6ho] { background: var(--av-grad-b); color: var(--on-accent); }
.member .av.c[b-ut8kffw6ho] { background: var(--av-grad-c); }
.member .av.d[b-ut8kffw6ho] { background: var(--av-grad-d); }

.member .name[b-ut8kffw6ho] {
    font-size: 13px;
    color: var(--fg-0);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.member .role[b-ut8kffw6ho] {
    font-family: var(--font-mono);
    font-size: 10px;
    color: var(--fg-2);
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* ---- Mobile ----------------------------------------------- */

@media (max-width: 720px) {
    .queue-main[b-ut8kffw6ho] { padding: 8px 16px 60px 16px; }
    .ticket[b-ut8kffw6ho] {
        grid-template-columns: 80px 1fr;
        gap: 16px;
    }
    .ticket .id[b-ut8kffw6ho] { font-size: 38px; }
    .ticket .body h3[b-ut8kffw6ho] { font-size: 17px; }
    .ticket .right[b-ut8kffw6ho] {
        grid-column: 2;
        align-items: flex-start;
        flex-direction: row;
        gap: 16px;
    }
}
/* _content/Dispatch.Web/Components/Pages/Workspace/Repos.razor.rz.scp.css */
/* Repos.razor.css — workspace repository connections (Plan C) */

/* ---- Loading (denied panel is the shared AccessDenied component) --- */

.loading[b-wnywrl8glu] { color: var(--fg-1); }

/* ---- Hero header row -------------------------------------- */

.header-row[b-wnywrl8glu] {
    display: grid;
    grid-template-columns: 1fr auto;
    align-items: end;
    gap: 24px;
    padding-bottom: 28px;
    border-bottom: 1px solid var(--rule);
    margin-bottom: 28px;
}

.eyebrow[b-wnywrl8glu] {
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-2);
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin-bottom: 10px;
}

h1[b-wnywrl8glu] {
    font-family: var(--font-display);
    font-weight: 500;
    font-variation-settings: "opsz" 64;
    font-size: clamp(40px, 6vw, 72px);
    line-height: 0.95;
    letter-spacing: -0.025em;
    color: var(--fg-0);
    margin: 0;
}

h1 em[b-wnywrl8glu] {
    font-style: italic;
    color: var(--signal);
    font-weight: 400;
}

.meta-row[b-wnywrl8glu] {
    display: flex;
    gap: 20px;
    flex-wrap: wrap;
    font-family: var(--font-mono);
    font-size: 11px;
    color: var(--fg-1);
    text-transform: uppercase;
    letter-spacing: 0.12em;
    margin-top: 16px;
}

.meta-row span b[b-wnywrl8glu] {
    color: var(--fg-0);
    font-weight: 500;
}

/* ---- Install button (signal CTA) -------------------------- */

.install-btn[b-wnywrl8glu] {
    background: var(--fg-0);
    color: var(--bg-0);
    font-family: var(--font-body);
    font-weight: 600;
    font-size: 13px;
    padding: 11px 18px;
    border-radius: var(--r-m);
    border: none;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    gap: 8px;
    text-decoration: none;
    transition: transform 0.12s var(--ease), background 0.2s var(--ease), color 0.2s var(--ease);
    white-space: nowrap;
}

.install-btn:hover[b-wnywrl8glu] {
    transform: translateY(-1px);
    background: var(--signal);
    color: var(--on-signal);
}

.install-btn .plus[b-wnywrl8glu] {
    font-family: var(--font-mono);
    font-weight: 500;
    opacity: 0.8;
}

.install-btn:focus-visible[b-wnywrl8glu] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
}

/* ---- Status banners (above the list) ---------------------- */

.status-row[b-wnywrl8glu] {
    font-family: var(--font-mono);
    font-size: 12px;
    letter-spacing: 0.04em;
    padding: 12px 14px;
    border-radius: var(--r-s);
    border: 1px solid var(--rule-strong);
    margin-bottom: 24px;
    color: var(--fg-1);
    background: var(--bg-1);
}

.status-row code[b-wnywrl8glu] {
    font-family: var(--font-mono);
    color: var(--fg-0);
    background: var(--bg-2);
    padding: 1px 6px;
    border-radius: var(--r-s);
}

.status-ok[b-wnywrl8glu]   { border-color: var(--ok);   color: var(--fg-0); }
.status-warn[b-wnywrl8glu] { border-color: var(--warn); color: var(--fg-0); }

/* ---- Empty state ------------------------------------------ */

.repo-empty[b-wnywrl8glu] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 1.25rem;
    padding: 3rem 0;
    max-width: 540px;
}

.empty-id[b-wnywrl8glu] {
    font-family: var(--font-display);
    font-variation-settings: "opsz" 96;
    font-weight: 700;
    font-size: 64px;
    line-height: 1;
    letter-spacing: -0.04em;
    color: var(--fg-2);
    font-variant-numeric: tabular-nums;
}

.empty-id .prefix[b-wnywrl8glu] {
    display: block;
    font-family: var(--font-mono);
    font-size: 10px;
    font-weight: 400;
    letter-spacing: 0.18em;
    color: var(--fg-2);
    margin-bottom: 4px;
}

.empty-tagline[b-wnywrl8glu] {
    font-family: var(--font-body);
    font-size: 1rem;
    color: var(--fg-1);
    margin: 0;
    line-height: 1.5;
}

/* ---- Repo list -------------------------------------------- */

.repos[b-wnywrl8glu] {
    display: flex;
    flex-direction: column;
}

.repo[b-wnywrl8glu] {
    display: grid;
    grid-template-columns: 1fr 180px auto 140px;
    gap: 32px;
    padding: 28px 0;
    border-bottom: 1px solid var(--rule);
    align-items: center;
    transition: background 0.2s var(--ease);
}

.repo:hover[b-wnywrl8glu] {
    background: var(--bg-1);
}

.repo .full[b-wnywrl8glu] {
    font-family: var(--font-display);
    font-weight: 500;
    font-variation-settings: "opsz" 56;
    font-size: 24px;
    line-height: 1.2;
    letter-spacing: -0.012em;
    color: var(--fg-0);
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
}

.repo .full .owner[b-wnywrl8glu] { color: var(--fg-1); }
.repo .full .slash[b-wnywrl8glu] { color: var(--fg-2); margin: 0 2px; }
.repo .full .name[b-wnywrl8glu]  { color: var(--fg-0); }

.repo .branch[b-wnywrl8glu] {
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--fg-1);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.repo .action[b-wnywrl8glu] {
    justify-self: end;
}

/* ---- Trusted toggle (SEC-02) ------------------------------- */

.trust-toggle[b-wnywrl8glu] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    color: var(--fg-1);
    cursor: pointer;
    user-select: none;
}

.trust-toggle input[b-wnywrl8glu] {
    accent-color: var(--signal);
    width: 15px;
    height: 15px;
    cursor: pointer;
}

.trust-toggle input:focus-visible[b-wnywrl8glu] {
    outline: 2px solid var(--signal);
    outline-offset: 2px;
}

/* ---- Disconnect button (ghost / danger) ------------------- */

.btn-disconnect[b-wnywrl8glu] {
    background: transparent;
    color: var(--fg-1);
    font-family: var(--font-mono);
    font-size: 11px;
    text-transform: uppercase;
    letter-spacing: 0.14em;
    padding: 8px 14px;
    border: 1px solid var(--rule-strong);
    border-radius: var(--r-s);
    cursor: pointer;
    transition: border-color 0.15s var(--ease), color 0.15s var(--ease), background 0.15s var(--ease);
}

.btn-disconnect:hover[b-wnywrl8glu] {
    border-color: var(--err);
    color: var(--err);
    background: var(--bg-1);
}

.btn-disconnect:focus-visible[b-wnywrl8glu] {
    outline: 2px solid var(--err);
    outline-offset: 2px;
}

/* ---- Footnote --------------------------------------------- */

.footnote[b-wnywrl8glu] {
    font-family: var(--font-body);
    font-size: 13px;
    color: var(--fg-2);
    margin-top: 28px;
    line-height: 1.5;
    max-width: 600px;
}

.footnote em[b-wnywrl8glu] {
    font-style: italic;
    color: var(--fg-1);
}

/* ---- Mobile ----------------------------------------------- */

@media (max-width: 720px) {
    .repo[b-wnywrl8glu] {
        grid-template-columns: 1fr;
        gap: 10px;
        padding: 20px 0;
    }
    .repo .action[b-wnywrl8glu] { justify-self: start; }
    .repo .trust[b-wnywrl8glu]  { justify-self: start; }
    .repo .full[b-wnywrl8glu] { font-size: 18px; }
}

/* ---- Installations block ---------------------------------- */

.installations-block[b-wnywrl8glu] { margin: 24px 0; }
.installations-heading[b-wnywrl8glu] {
    font-size: 1rem;
    font-weight: 600;
    margin: 0 0 8px 0;
    color: var(--fg-2);
}
.installations-list[b-wnywrl8glu] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.installations-item[b-wnywrl8glu] {
    display: grid;
    grid-template-columns: 1fr auto auto;
    align-items: center;
    gap: 12px;
    padding: 10px 14px;
    background: var(--bg-1);
    border: 1px solid var(--rule);
    border-radius: 8px;
}
.inst-account[b-wnywrl8glu] { font-weight: 500; }
.inst-meta[b-wnywrl8glu] { color: var(--fg-2); font-size: 0.85rem; }
/* _content/Dispatch.Web/Components/Pages/Workspace/Setup.razor.rz.scp.css */
.page-head[b-sxyhj89s17] { margin-bottom: 24px; }
.eyebrow[b-sxyhj89s17] {
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 11px;
    font-weight: 600;
    opacity: 0.55;
    margin: 0 0 6px;
}
.progress[b-sxyhj89s17] {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-top: 14px;
    max-width: 680px;
}
.progress-bar[b-sxyhj89s17] {
    flex: 1;
    height: 6px;
    background: rgba(255,255,255,0.06);
    border-radius: 999px;
    overflow: hidden;
}
.progress-fill[b-sxyhj89s17] {
    height: 100%;
    background: linear-gradient(90deg, #3fb950, #58c971);
    border-radius: 999px;
    transition: width 0.4s ease;
}
.progress-count[b-sxyhj89s17] {
    font-variant-numeric: tabular-nums;
    font-size: 13px;
    opacity: 0.7;
    white-space: nowrap;
}
.setup[b-sxyhj89s17] {
    border: 1px solid var(--border, rgba(255,255,255,0.08));
    border-radius: 14px;
    overflow: hidden;
    max-width: 760px;
}
/* denied panel is the shared AccessDenied component */
.loading[b-sxyhj89s17] { opacity: 0.6; }
/* _content/Dispatch.Web/Components/Pages/Workspace/SetupRow.razor.rz.scp.css */
.step[b-k0ykez3fgh] {
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 16px;
    padding: 18px 24px;
    border-top: 1px solid var(--border, rgba(255,255,255,0.06));
    transition: background 0.15s ease;
}
.step:first-child[b-k0ykez3fgh] { border-top: 0; }
.step:hover:not(.is-locked)[b-k0ykez3fgh] { background: rgba(255,255,255,0.02); }

.step-mark[b-k0ykez3fgh] {
    width: 28px; height: 28px;
    border-radius: 50%;
    display: grid; place-items: center;
    font-size: 12px; font-weight: 600;
    font-variant-numeric: tabular-nums;
}
.is-done .step-mark[b-k0ykez3fgh] {
    background: linear-gradient(180deg, #3fb950, #2ea043);
    color: white;
    box-shadow: 0 0 0 1px rgba(63,185,80,0.25);
}
.is-todo .step-mark[b-k0ykez3fgh] {
    background: rgba(255,255,255,0.04);
    color: rgba(255,255,255,0.5);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.1);
}
.is-locked .step-mark[b-k0ykez3fgh] {
    background: transparent;
    color: rgba(255,255,255,0.25);
    box-shadow: inset 0 0 0 1px rgba(255,255,255,0.06);
}

.step-title-row[b-k0ykez3fgh] { display: flex; align-items: center; gap: 10px; margin-bottom: 3px; }
.step-title[b-k0ykez3fgh] { font-weight: 600; font-size: 14.5px; }
.step-pill[b-k0ykez3fgh] {
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 9.5px;
    font-weight: 600;
    padding: 2px 7px;
    border-radius: 4px;
    background: rgba(255,255,255,0.06);
    color: rgba(255,255,255,0.6);
}
.step-pill.server-side[b-k0ykez3fgh] { background: rgba(88,166,255,0.1); color: #79b8ff; }
.step-pill.optional[b-k0ykez3fgh]    { background: transparent; box-shadow: inset 0 0 0 1px rgba(255,255,255,0.1); color: rgba(255,255,255,0.4); }
.step-meta[b-k0ykez3fgh] { font-size: 12.5px; opacity: 0.6; line-height: 1.45; }
.is-locked .step-title[b-k0ykez3fgh], .is-locked .step-meta[b-k0ykez3fgh] { opacity: 0.35; }

.btn-step[b-k0ykez3fgh] {
    font: inherit;
    font-size: 12.5px;
    font-weight: 500;
    padding: 7px 13px;
    border-radius: 7px;
    background: rgba(255,255,255,0.05);
    color: inherit;
    border: 1px solid rgba(255,255,255,0.08);
    cursor: pointer;
}
.btn-step:hover[b-k0ykez3fgh] { background: rgba(255,255,255,0.08); }
.btn-step.primary[b-k0ykez3fgh] {
    background: linear-gradient(180deg, #2563eb, #1d4ed8);
    color: white;
    border-color: rgba(255,255,255,0.1);
}
.btn-step.done[b-k0ykez3fgh] { background: transparent; border-color: transparent; color: rgba(63,185,80,0.85); cursor: default; }
.btn-step.locked-tag[b-k0ykez3fgh] { background: transparent; border-color: transparent; color: rgba(255,255,255,0.3); cursor: default; }
/* _content/Dispatch.Web/Components/Pages/Workspace/TicketDetail.razor.rz.scp.css */
/* TicketDetail.razor.css — mission-control ticket detail scoped styles */

/* ---- Loading (denied/not-found is the shared AccessDenied component) --- */

.loading[b-mrji7izxxc] { color: var(--fg-1); }

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

.td-header[b-mrji7izxxc] {
    margin-bottom: 1.5rem;
}

.td-back[b-mrji7izxxc] {
    display: inline-flex;
    align-items: center;
    gap: 0.3rem;
    font-family: var(--font-mono);
    font-size: 0.78rem;
    color: var(--fg-1);
    text-decoration: none;
    margin-bottom: 1.25rem;
    transition: color 0.12s ease;
}

.td-back:hover[b-mrji7izxxc] {
    color: var(--fg-0);
}

.td-back-arrow[b-mrji7izxxc] {
    font-size: 0.9rem;
}

.td-header-main[b-mrji7izxxc] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

/* ---- Numeral row (numeral + pill + sparkline) -------------- */

.td-numeral-row[b-mrji7izxxc] {
    display: flex;
    align-items: center;
    gap: 0.875rem;
    flex-wrap: wrap;
}

/* ---- Monumental numeral ----------------------------------- */

.td-numeral[b-mrji7izxxc] {
    font-family: var(--font-display);
    font-size: clamp(40px, 5vw, 64px);
    font-weight: 800;
    letter-spacing: -0.02em;
    line-height: 1;
    color: var(--fg-0);
    font-variant-numeric: tabular-nums;
}

.td-numeral.signal[b-mrji7izxxc] {
    color: var(--signal);
}

/* ---- Status pill ------------------------------------------ */

.td-status-pill[b-mrji7izxxc] {
    display: inline-block;
    font-family: var(--font-mono);
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.18rem 0.6rem;
    border-radius: 1rem;
    white-space: nowrap;
    border: 1px solid var(--border);
    background: var(--bg-1);
    color: var(--fg-1);
    align-self: center;
}

.status-pending.td-status-pill[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--info) 12%, transparent);
    color: var(--info);
    border-color: color-mix(in srgb, var(--info) 35%, transparent);
}

.status-running.td-status-pill[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--signal) 14%, transparent);
    color: var(--signal);
    border-color: color-mix(in srgb, var(--signal) 38%, transparent);
    animation: pill-pulse-b-mrji7izxxc 2s ease-in-out infinite;
}

.status-idle.td-status-pill[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--text-muted) 12%, transparent);
    color: var(--text-muted);
    border-color: color-mix(in srgb, var(--text-muted) 35%, transparent);
}

.status-awaitinguser.td-status-pill[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--warn) 14%, transparent);
    color: var(--warn);
    border-color: color-mix(in srgb, var(--warn) 38%, transparent);
}

.status-done.td-status-pill[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--ok) 12%, transparent);
    color: var(--ok);
    border-color: color-mix(in srgb, var(--ok) 35%, transparent);
}

.status-failed.td-status-pill[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--err) 12%, transparent);
    color: var(--err);
    border-color: color-mix(in srgb, var(--err) 35%, transparent);
}

@keyframes pill-pulse-b-mrji7izxxc {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0.6; }
}

@media (prefers-reduced-motion: reduce) {
    .status-running.td-status-pill[b-mrji7izxxc] { animation: none; }
}

/* ---- Title + meta ----------------------------------------- */

.td-title[b-mrji7izxxc] {
    font-family: var(--font-display);
    font-size: clamp(18px, 2.5vw, 26px);
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin: 0;
    line-height: 1.25;
}

.td-meta[b-mrji7izxxc] {
    font-family: var(--font-mono);
    font-size: 0.78rem;
    color: var(--fg-1);
    display: flex;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    margin: 0;
}

.td-requester[b-mrji7izxxc] { font-weight: 600; }
.td-dot[b-mrji7izxxc]       { opacity: 0.5; }
.td-time[b-mrji7izxxc]      { opacity: 0.8; }

/* ---- Action bar ------------------------------------------- */

.td-actions[b-mrji7izxxc] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-bottom: 1.75rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--border);
}

/* ---- Buttons ---------------------------------------------- */

.btn[b-mrji7izxxc] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 38px;
    padding: 0 1.1rem;
    font-family: var(--font-body);
    font-size: 0.875rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    cursor: pointer;
    text-decoration: none;
    border: none;
    transition: opacity 0.15s ease, background 0.15s ease;
    white-space: nowrap;
}

.btn.ghost[b-mrji7izxxc] {
    background: transparent;
    color: var(--fg-1);
    border: 1px solid var(--border);
}

.btn.ghost:hover:not(:disabled)[b-mrji7izxxc] {
    background: var(--surface-hover);
    color: var(--fg-0);
}

.btn.ghost:disabled[b-mrji7izxxc],
.btn.ghost[disabled][b-mrji7izxxc] {
    opacity: 0.4;
    cursor: not-allowed;
}

.btn.danger-ghost[b-mrji7izxxc] {
    background: transparent;
    color: var(--err);
    border: 1px solid color-mix(in srgb, var(--err) 35%, transparent);
}

.btn.danger-ghost:hover[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--err) 10%, transparent);
}

/* Plan C task 13 — ghost-danger Cancel for Hangfire-owned tickets. */
.btn.td-cancel[b-mrji7izxxc] {
    background: transparent;
    color: var(--err);
    border: 1px solid color-mix(in srgb, var(--err) 35%, transparent);
}

.btn.td-cancel:hover:not(:disabled)[b-mrji7izxxc] {
    background: color-mix(in srgb, var(--err) 10%, transparent);
}

.btn.td-cancel:disabled[b-mrji7izxxc] {
    opacity: 0.5;
    cursor: not-allowed;
}

.td-cancel-banner[b-mrji7izxxc] {
    font-family: var(--font-mono, monospace);
    font-size: 0.85rem;
    color: var(--err);
    opacity: 0.85;
}

.btn.primary.signal[b-mrji7izxxc] {
    background-color: var(--signal);
    color: var(--on-signal);
}

.btn.primary.signal:hover:not(:disabled)[b-mrji7izxxc] {
    opacity: 0.88;
}

.btn.primary.signal:active[b-mrji7izxxc] {
    transform: scale(0.985);
}

.btn.primary.signal:disabled[b-mrji7izxxc] {
    opacity: 0.4;
    cursor: not-allowed;
}

.btn.primary.signal:focus-visible[b-mrji7izxxc] {
    outline: 2px solid var(--fg-0);
    outline-offset: 3px;
}

.btn.sm[b-mrji7izxxc] {
    height: 32px;
    padding: 0 0.75rem;
    font-size: 0.8125rem;
}

/* ---- Section headings ------------------------------------- */

.td-section-heading[b-mrji7izxxc] {
    font-family: var(--font-mono);
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.07em;
    color: var(--fg-1);
    margin: 0 0 0.75rem 0;
}

/* ---- Ticket body (instructions) --------------------------- */

.td-body-section[b-mrji7izxxc] {
    margin-bottom: 2rem;
}

.td-body[b-mrji7izxxc] {
    background: var(--bg-1);
    padding: 0.85rem 1rem;
    border-left: 3px solid var(--border);
    border-radius: 0 6px 6px 0;
    white-space: pre-wrap;
    font-family: var(--font-mono);
    font-size: 0.875rem;
    color: var(--fg-0);
    margin: 0;
    line-height: 1.55;
    max-height: 24rem;
    overflow-y: auto;
}

/* ---- Transcript section ----------------------------------- */

.td-transcript-section[b-mrji7izxxc] {
    margin-bottom: 2rem;
}

/* ---- Question / permission prompts ----------------------- */

.td-prompt[b-mrji7izxxc] {
    margin-bottom: 1.5rem;
    padding: 1rem 1.25rem;
    border-radius: 8px;
    border: 2px solid var(--warn);
    background: color-mix(in srgb, var(--warn) 8%, transparent);
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
}

.td-prompt p[b-mrji7izxxc] {
    margin: 0;
    font-size: 0.9375rem;
    color: var(--fg-0);
}

.td-prompt p strong[b-mrji7izxxc] {
    font-weight: 600;
}

.td-prompt.td-permit[b-mrji7izxxc] {
    border-color: var(--err);
    background: color-mix(in srgb, var(--err) 8%, transparent);
}

.td-options[b-mrji7izxxc] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.td-prompt-actions[b-mrji7izxxc] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.td-code[b-mrji7izxxc] {
    font-family: var(--font-mono);
    font-size: 0.875rem;
    background: var(--bg-0);
    padding: 1px 6px;
    border-radius: 4px;
    border: 1px solid var(--border);
}

.td-pre[b-mrji7izxxc] {
    font-family: var(--font-mono);
    font-size: 0.8125rem;
    background: var(--bg-0);
    padding: 0.6rem 0.75rem;
    border-radius: 6px;
    border: 1px solid var(--border);
    white-space: pre-wrap;
    word-break: break-all;
    margin: 0;
    color: var(--fg-0);
}

/* ---- Compose area ---------------------------------------- */

.td-compose[b-mrji7izxxc] {
    margin-bottom: 1.5rem;
    padding: 0.875rem 1rem;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--bg-1);
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
}

.td-compose.compose-disabled[b-mrji7izxxc] {
    opacity: 0.55;
}

.td-textarea[b-mrji7izxxc] {
    width: 100%;
    min-height: 5rem;
    padding: 8px 12px;
    background: var(--bg-0);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    resize: vertical;
    transition: border-color 0.15s ease;
}

.td-textarea:focus[b-mrji7izxxc] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

.td-textarea:disabled[b-mrji7izxxc] {
    opacity: 0.5;
    cursor: not-allowed;
}

.td-textarea[b-mrji7izxxc]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.td-compose-textarea[b-mrji7izxxc] {
    width: 100%;
    background: transparent;
    border: 0;
    color: var(--fg-0);
    resize: vertical;
    outline: none;
    font: inherit;
    font-size: 0.95rem;
    min-height: 56px;
}

.td-compose-textarea:disabled[b-mrji7izxxc] {
    color: var(--fg-1);
    cursor: not-allowed;
}

.td-compose-row[b-mrji7izxxc] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-top: 10px;
}

.td-compose-hint[b-mrji7izxxc] {
    font-size: 0.8rem;
    color: var(--fg-1);
}

.td-compose-dot[b-mrji7izxxc] {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--info);
    margin-right: 6px;
    animation: td-compose-pulse-b-mrji7izxxc 1.2s infinite;
    vertical-align: middle;
}

.td-compose-actions[b-mrji7izxxc] {
    display: flex;
    gap: 0.5rem;
    justify-content: flex-end;
}

.td-finish-banner[b-mrji7izxxc] {
    margin-top: 10px;
    font-size: 0.85rem;
    color: var(--fg-1);
}

@keyframes td-compose-pulse-b-mrji7izxxc {
    0%, 100% { opacity: 0.3; }
    50% { opacity: 1; }
}

@media (prefers-reduced-motion: reduce) {
    .td-compose-dot[b-mrji7izxxc] { animation: none; }
}

/* ---- Patch section --------------------------------------- */

.td-patch-section[b-mrji7izxxc] {
    margin-top: 2rem;
}

.muted[b-mrji7izxxc] {
    font-size: 0.875rem;
    color: var(--fg-1);
    margin: 0;
}

/* UI-08: contain the transcript so the compose box stays reachable and new
   events stay in view (auto-follow pins to bottom via dispatchAutoScroll). */
.td-transcript-scroll[b-mrji7izxxc] {
    max-height: 60vh;
    overflow-y: auto;
    overscroll-behavior: contain;
}
/* _content/Dispatch.Web/Components/Pages/Workspace/TicketSparkline.razor.rz.scp.css */
/* TicketSparkline.razor.css — scoped sparkline (oscilloscope) styles */

.spark[b-hn2phsy7ql] {
    width: 180px;
    height: 28px;
    overflow: hidden;
    --spark-stroke: var(--fg-3);
}

.spark.running[b-hn2phsy7ql] {
    --spark-stroke: var(--signal);
}

.spark svg[b-hn2phsy7ql] {
    width: 100%;
    height: 100%;
    display: block;
}

.spark path[b-hn2phsy7ql] {
    fill: none;
    stroke: var(--spark-stroke);
    stroke-width: 1.5;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.spark.running path[b-hn2phsy7ql] {
    stroke-dasharray: 2 0;
    animation: spark-scroll-b-hn2phsy7ql 5s linear infinite;
}

@keyframes spark-scroll-b-hn2phsy7ql {
    from { transform: translateX(0); }
    to   { transform: translateX(-25%); }
}

@media (prefers-reduced-motion: reduce) {
    .spark.running path[b-hn2phsy7ql] { animation: none; }
}
/* _content/Dispatch.Web/Components/Pages/Workspace/TranscriptRenderer.razor.rz.scp.css */
/* TranscriptRenderer.razor.css — scoped transcript timeline styles */

/* ---- Empty state ------------------------------------------ */

.tr-empty[b-s1uhx8x2qb] {
    padding: 2.5rem 1.5rem;
    text-align: center;
    border: 1px dashed var(--border);
    border-radius: 8px;
}

.tr-empty-headline[b-s1uhx8x2qb] {
    font-family: var(--font-display);
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin-bottom: 0.4rem;
}

.tr-empty-sub[b-s1uhx8x2qb] {
    font-size: 0.9rem;
    color: var(--fg-1);
}

/* ---- Timeline list ---------------------------------------- */

.tr-timeline[b-s1uhx8x2qb] {
    list-style: none;
    padding: 0;
    margin: 0;
    display: flex;
    flex-direction: column;
    gap: 0;
}

/* ---- Entry ------------------------------------------------ */

.tr-entry[b-s1uhx8x2qb] {
    display: grid;
    grid-template-columns: 9rem 1fr;
    gap: 0.75rem;
    padding: 0.65rem 1rem 0.65rem 1rem;
    border-left: 3px solid var(--border);
    border-bottom: 1px solid var(--border);
    transition: background 0.1s ease;
}

.tr-entry:first-child[b-s1uhx8x2qb] {
    border-radius: 8px 8px 0 0;
}

.tr-entry:last-child[b-s1uhx8x2qb] {
    border-bottom: none;
    border-radius: 0 0 8px 8px;
}

.tr-entry:hover[b-s1uhx8x2qb] {
    background: var(--surface-hover);
}

/* kind accent: left border colour + meta colour */

.tr-kind-tool[b-s1uhx8x2qb] {
    border-left-color: var(--info);
}

.tr-kind-toolresult[b-s1uhx8x2qb] {
    border-left-color: var(--ok);
}

.tr-kind-question[b-s1uhx8x2qb] {
    border-left-color: var(--warn);
}

.tr-kind-permission[b-s1uhx8x2qb] {
    border-left-color: var(--warn);
}

.tr-kind-output[b-s1uhx8x2qb] {
    border-left-color: var(--fg-1);
}

.tr-kind-error[b-s1uhx8x2qb] {
    border-left-color: var(--err);
}

.tr-kind-user[b-s1uhx8x2qb] {
    border-left-color: var(--signal);
}

/* ---- Meta column ------------------------------------------ */

.tr-meta[b-s1uhx8x2qb] {
    display: flex;
    flex-direction: column;
    gap: 3px;
    padding-top: 1px;
}

.tr-time[b-s1uhx8x2qb] {
    font-family: var(--font-mono);
    font-size: 0.72rem;
    color: var(--fg-1);
    white-space: nowrap;
}

.tr-kind-label[b-s1uhx8x2qb] {
    font-family: var(--font-mono);
    font-size: 0.68rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    white-space: nowrap;
}

.tr-kind-tool     .tr-kind-label[b-s1uhx8x2qb] { color: var(--info); }
.tr-kind-toolresult .tr-kind-label[b-s1uhx8x2qb] { color: var(--ok); }
.tr-kind-question .tr-kind-label[b-s1uhx8x2qb] { color: var(--warn); }
.tr-kind-permission .tr-kind-label[b-s1uhx8x2qb] { color: var(--warn); }
.tr-kind-output   .tr-kind-label[b-s1uhx8x2qb] { color: var(--fg-1); }
.tr-kind-error    .tr-kind-label[b-s1uhx8x2qb] { color: var(--err); }
.tr-kind-user     .tr-kind-label[b-s1uhx8x2qb] { color: var(--signal); }

/* ---- Body column ------------------------------------------ */

.tr-body[b-s1uhx8x2qb] {
    font-family: var(--font-body);
    font-size: 0.9rem;
    color: var(--fg-0);
    line-height: 1.5;
    white-space: pre-wrap;
    word-break: break-word;
}

/* ---- Narrow screens: stack meta + body -------------------- */

@media (max-width: 600px) {
    .tr-entry[b-s1uhx8x2qb] {
        grid-template-columns: 1fr;
        gap: 0.3rem;
    }

    .tr-meta[b-s1uhx8x2qb] {
        flex-direction: row;
        align-items: center;
        gap: 0.6rem;
    }
}
/* _content/Dispatch.Web/Components/Pages/Workspace/WorkspaceSettings.razor.rz.scp.css */
/* WorkspaceSettings.razor.css — scoped styles */

/* ---- Page header ------------------------------------------ */

.page-head[b-eezkk8bzje] {
    margin-bottom: 1.75rem;
}

.page-title[b-eezkk8bzje] {
    font-family: var(--font-display);
    font-size: 1.75rem;
    font-weight: 700;
    letter-spacing: -0.02em;
    line-height: 1.15;
    color: var(--fg-0);
    margin-bottom: 0.25rem;
}

.page-subtitle[b-eezkk8bzje] {
    font-size: 0.9375rem;
    color: var(--fg-1);
    margin: 0;
}

/* ---- Card ------------------------------------------------- */

.card[b-eezkk8bzje] {
    background-color: var(--bg-1);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 1.5rem 1.75rem;
    margin-bottom: 1.25rem;
    max-width: 36rem;
}

.card-heading[b-eezkk8bzje] {
    font-family: var(--font-display);
    font-size: 1.0625rem;
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg-0);
    margin-bottom: 1.25rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--border);
}

/* ---- Danger zone ------------------------------------------ */

.card-danger[b-eezkk8bzje] {
    border-color: color-mix(in srgb, var(--signal) 35%, transparent);
    background-color: color-mix(in srgb, var(--signal) 4%, var(--bg-1));
}

.card-heading-danger[b-eezkk8bzje] {
    color: var(--signal);
    border-bottom-color: color-mix(in srgb, var(--signal) 25%, transparent);
}

.danger-body[b-eezkk8bzje] {
    font-size: 0.9rem;
    color: var(--fg-1);
    margin: 0 0 1rem 0;
}

.delete-details[b-eezkk8bzje] {
    border-radius: 6px;
    border: 1px solid color-mix(in srgb, var(--signal) 30%, transparent);
    overflow: hidden;
}

.delete-summary[b-eezkk8bzje] {
    padding: 0.6rem 1rem;
    font-size: 0.9rem;
    font-weight: 600;
    color: var(--signal);
    cursor: pointer;
    list-style: none;
    display: flex;
    align-items: center;
    gap: 0.4rem;
    background: color-mix(in srgb, var(--signal) 8%, transparent);
    transition: background-color 0.12s ease;
}

.delete-summary[b-eezkk8bzje]::-webkit-details-marker { display: none; }

.delete-summary:hover[b-eezkk8bzje] {
    background: color-mix(in srgb, var(--signal) 14%, transparent);
}

.delete-panel[b-eezkk8bzje] {
    padding: 1rem;
    border-top: 1px solid color-mix(in srgb, var(--signal) 25%, transparent);
    background: color-mix(in srgb, var(--bg-0) 60%, transparent);
}

.delete-panel p[b-eezkk8bzje] {
    font-size: 0.9rem;
    color: var(--fg-1);
    margin: 0 0 0.6rem 0;
    line-height: 1.5;
}

.delete-panel p:last-child[b-eezkk8bzje] { margin-bottom: 0; }

.delete-panel a[b-eezkk8bzje] {
    color: var(--signal);
    text-decoration: none;
}

.delete-panel a:hover[b-eezkk8bzje] { text-decoration: underline; }

.delete-panel code[b-eezkk8bzje] {
    font-family: var(--font-mono);
    font-size: 0.85rem;
    background: var(--bg-0);
    border: 1px solid var(--border);
    border-radius: 4px;
    padding: 0 4px;
}

/* ---- Status banners --------------------------------------- */

.status[b-eezkk8bzje] {
    border-radius: 6px;
    font-size: 0.875rem;
    padding: 10px 14px;
    margin-bottom: 1.25rem;
}

.status-ok[b-eezkk8bzje] {
    background-color: color-mix(in srgb, var(--ok) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--ok) 35%, transparent);
    color: var(--ok);
}

.status-err[b-eezkk8bzje] {
    background-color: color-mix(in srgb, var(--err) 12%, transparent);
    border: 1px solid color-mix(in srgb, var(--err) 40%, transparent);
    color: var(--err);
}

/* ---- Slug-change warning ---------------------------------- */

.warn-block[b-eezkk8bzje] {
    font-size: 0.8125rem;
    color: var(--warn);
    background-color: color-mix(in srgb, var(--warn) 10%, transparent);
    border: 1px solid color-mix(in srgb, var(--warn) 30%, transparent);
    border-radius: 6px;
    padding: 8px 12px;
    margin-bottom: 0.875rem;
    line-height: 1.4;
}

/* ---- Form fields ------------------------------------------ */

.field[b-eezkk8bzje] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 1rem;
}

.field-label[b-eezkk8bzje] {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--fg-1);
    letter-spacing: 0.02em;
    text-transform: uppercase;
}

.field-input[b-eezkk8bzje] {
    height: 46px;
    padding: 0 14px;
    background-color: var(--bg-0);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.9375rem;
    width: 100%;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.field-input[b-eezkk8bzje]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.field-input:focus[b-eezkk8bzje] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

.field-mono[b-eezkk8bzje] {
    font-family: var(--font-mono);
    font-size: 0.9rem;
}

[b-eezkk8bzje] .validation-message {
    font-size: 0.8125rem;
    color: var(--err);
    margin-top: 2px;
}

/* ---- Buttons ---------------------------------------------- */

.btn.primary.signal[b-eezkk8bzje] {
    display: inline-block;
    height: 42px;
    padding: 0 1.5rem;
    margin-top: 0.25rem;
    background-color: var(--signal);
    color: var(--on-signal);
    font-family: var(--font-body);
    font-size: 0.9375rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    border-radius: 6px;
    border: none;
    cursor: pointer;
    transition: opacity 0.15s ease, transform 0.1s ease;
}

.btn.primary.signal:hover[b-eezkk8bzje]  { opacity: 0.88; }
.btn.primary.signal:active[b-eezkk8bzje] { transform: scale(0.985); }
.btn.primary.signal:focus-visible[b-eezkk8bzje] {
    outline: 2px solid var(--signal);
    outline-offset: 3px;
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--signal) 20%, transparent);
}

/* ---- Loading (denied panel is the shared AccessDenied component) --- */

.loading[b-eezkk8bzje] { color: var(--fg-1); }

.field-pem[b-eezkk8bzje] {
    font-family: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
    font-size: 0.85rem;
    line-height: 1.4;
    min-height: 12rem;
    resize: vertical;
}

.card-blurb[b-eezkk8bzje] {
    color: var(--text-muted);
    margin: 0 0 1rem 0;
    font-size: 0.9rem;
    line-height: 1.5;
}

.btn.danger[b-eezkk8bzje] {
    background: var(--danger, #c33);
    color: var(--on-signal);
    border: none;
}
.btn.danger:hover:not(:disabled)[b-eezkk8bzje] {
    background: var(--danger-hover, #a22);
}
.btn.danger:disabled[b-eezkk8bzje] {
    opacity: 0.45;
    cursor: not-allowed;
}

.clear-field[b-eezkk8bzje] {
    margin-top: 16px;
    padding-top: 16px;
    border-top: 1px dashed var(--rule);
}

/* ---- GitHub App: manifest flow + manual fold --------------- */

.field-hint[b-eezkk8bzje] {
    display: block;
    font-size: 0.75rem;
    font-weight: 400;
    color: var(--fg-1);
    text-transform: none;
    letter-spacing: normal;
    margin-top: 2px;
}

.manifest-note[b-eezkk8bzje] {
    font-size: 0.8125rem;
    color: var(--fg-1);
    line-height: 1.5;
    margin: 0.75rem 0 0 0;
}

.manual-fold[b-eezkk8bzje] {
    margin-top: 1.25rem;
    border: 1px solid var(--border);
    border-radius: 6px;
    overflow: hidden;
}

.manual-summary[b-eezkk8bzje] {
    padding: 0.6rem 1rem;
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--fg-1);
    cursor: pointer;
    list-style: none;
    background: color-mix(in srgb, var(--bg-0) 55%, transparent);
    transition: background-color 0.12s ease, color 0.12s ease;
}

.manual-summary[b-eezkk8bzje]::-webkit-details-marker { display: none; }

.manual-summary:hover[b-eezkk8bzje] {
    background: var(--bg-0);
    color: var(--fg-0);
}

.manual-panel[b-eezkk8bzje] {
    padding: 1rem;
    border-top: 1px solid var(--border);
}
/* _content/Dispatch.Web/Components/Pages/Workspaces.razor.rz.scp.css */
.ws-overview[b-nwznxhihv7] { max-width: 1100px; margin: 0 auto; }

.ws-actions[b-nwznxhihv7] {
    display: flex;
    justify-content: flex-end;
    margin: 16px 0 24px;
}

.ws-empty[b-nwznxhihv7] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 64px 24px;
    background: var(--bg-1);
    border: 1px dashed var(--rule);
    border-radius: 12px;
    gap: 12px;
}
.ws-empty .empty-title[b-nwznxhihv7] { font-size: 1.5rem; font-weight: 600; margin: 0; }
.ws-empty .empty-tag[b-nwznxhihv7] { color: var(--fg-2); max-width: 480px; line-height: 1.5; margin: 0; }
.ws-empty .btn[b-nwznxhihv7] { margin-top: 12px; }

.ws-grid[b-nwznxhihv7] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: 16px;
    list-style: none;
    padding: 0;
    margin: 0;
}

.ws-card[b-nwznxhihv7] {
    border: 1px solid var(--rule);
    border-radius: 10px;
    background: var(--bg-1);
    transition: border-color 0.15s var(--ease), transform 0.15s var(--ease);
}
.ws-card:hover[b-nwznxhihv7] {
    border-color: var(--rule-strong);
    transform: translateY(-1px);
}

.ws-card-link[b-nwznxhihv7] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    padding: 16px;
    text-decoration: none;
    color: inherit;
}

.ws-card-head[b-nwznxhihv7] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 8px;
}
.ws-card-name[b-nwznxhihv7] { font-weight: 600; font-size: 1.05rem; }

.ws-card-role[b-nwznxhihv7] {
    font-size: 0.7rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid var(--rule);
}
.ws-role-owner[b-nwznxhihv7] { color: var(--signal); border-color: var(--signal); }
.ws-role-member[b-nwznxhihv7] { color: var(--fg-2); }

.ws-card-slug[b-nwznxhihv7] {
    font-family: var(--font-mono, ui-monospace, monospace);
    font-size: 0.8rem;
    color: var(--fg-2);
}

.ws-card-stats[b-nwznxhihv7] {
    display: flex;
    gap: 16px;
    color: var(--fg-2);
    font-size: 0.85rem;
}
.ws-card-stats b[b-nwznxhihv7] { color: var(--fg-0); }

.ws-card-flags[b-nwznxhihv7] {
    display: flex;
    gap: 8px;
    font-size: 0.78rem;
}
.ws-flag[b-nwznxhihv7] {
    padding: 2px 8px;
    border-radius: 999px;
    border: 1px solid var(--rule);
}
.ws-flag-ok[b-nwznxhihv7] { color: var(--ok, #2a8); border-color: var(--ok, #2a8); }
.ws-flag-missing[b-nwznxhihv7] { color: var(--fg-2); }

.ws-card-foot[b-nwznxhihv7] {
    margin-top: auto;
    color: var(--fg-2);
    font-size: 0.75rem;
}
/* _content/Dispatch.Web/Components/PasswordInput.razor.rz.scp.css */
/* PasswordInput.razor.css — scoped styles
   Show/hide eye toggle for password fields. Mirrors reminder-app's
   .password-wrap pattern: relative parent, the .field-input fills width
   with right padding, the eye is a small absolutely-positioned button
   vertically centred via translate.

   The InputText rendered here lives in this component's scope, so the
   .field-input base styles must be redeclared (the auth pages' own
   .field-input rules don't reach into this component's scope).
   ------------------------------------------------------------------ */

.password-wrap[b-a726tbmsnx] {
    position: relative;
    display: block;
    width: 100%;
}

/* ---- Field input (mirrors auth pages) --------------------- */

.password-wrap .field-input[b-a726tbmsnx] {
    height: 46px;
    padding: 0 40px 0 14px;
    background-color: var(--bg-1);
    border: 1px solid var(--border-input);
    border-radius: 6px;
    color: var(--fg-0);
    font-size: 0.9375rem;
    width: 100%;
    min-width: 0;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.password-wrap .field-input[b-a726tbmsnx]::placeholder {
    color: var(--fg-1);
    opacity: 0.5;
}

.password-wrap .field-input:focus[b-a726tbmsnx] {
    border-color: var(--signal);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--signal) 18%, transparent);
    outline: none;
}

/* ---- Eye toggle button ------------------------------------ */

.password-wrap .eye[b-a726tbmsnx] {
    position: absolute;
    right: 6px;
    top: 50%;
    transform: translateY(-50%);
    width: 28px;
    height: 28px;
    background: transparent;
    border: 0;
    color: var(--fg-2);
    border-radius: 4px;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color 0.12s var(--ease), background-color 0.12s var(--ease);
}

.password-wrap .eye:hover[b-a726tbmsnx] {
    color: var(--fg-0);
    background: var(--surface-hover);
}

.password-wrap .eye:focus-visible[b-a726tbmsnx] {
    outline: 2px solid var(--focus-ring);
    outline-offset: 1px;
}

.password-wrap .eye .eye-hide[b-a726tbmsnx],
.password-wrap .eye[aria-pressed="true"] .eye-show[b-a726tbmsnx] {
    display: none;
}

.password-wrap .eye[aria-pressed="true"] .eye-hide[b-a726tbmsnx] {
    display: inline-flex;
}
