/* /Components/Chat/SessionVoiceComposerButton.razor.rz.scp.css */
/* The voice button reuses the composer toggle footprint (global .aiva-agent-chat__composer-toggle)
   so its idle glyph sits identically to the Browser/Computer Control siblings. Everything below
   layers the voice-specific circular states on top, driven by data-voice-state and the
   --voice-in / --voice-out custom properties the JS module writes from live audio levels. */

.voice-button[b-9casnnsnzu] {
    /* mic-in reads cool (your voice going out), agent-out reads warm violet (assistant speaking). */
    --voice-mic-hue: #6bd5ff;
    --voice-agent-hue: #bd93ff;
    position: relative;
    isolation: isolate;
    width: 24px;
    padding: 0;
    overflow: visible;
}

[data-app-theme="light"] .voice-button[b-9casnnsnzu],
[data-app-theme="pure-light"] .voice-button[b-9casnnsnzu] {
    --voice-mic-hue: #0b7fb8;
    --voice-agent-hue: #7a3ff0;
}

@media (prefers-color-scheme: light) {
    [data-app-theme="system"] .voice-button[b-9casnnsnzu] {
        --voice-mic-hue: #0b7fb8;
        --voice-agent-hue: #7a3ff0;
    }
}

.voice-button__glyph[b-9casnnsnzu] {
    position: relative;
    z-index: 2;
    transition: transform 160ms ease;
}

/* Circular backdrop. Faint while connecting, an inverted fill while live. */
.voice-button[b-9casnnsnzu]::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    border-radius: 50%;
    opacity: 0;
    background: transparent;
    transition: opacity 180ms ease, background-color 180ms ease;
}

/* Activity glow ring: outer soft glow follows agent output, an inset ring follows the mic. */
.voice-button[b-9casnnsnzu]::after {
    content: "";
    position: absolute;
    inset: -2px;
    z-index: 1;
    border-radius: 50%;
    border: 1.5px solid transparent;
    opacity: 0;
    pointer-events: none;
    transition: opacity 160ms ease;
}

/* ---- Connecting: circular backdrop with a slow breathing pulse ---- */
.voice-button[data-voice-state="connecting"][b-9casnnsnzu]::before {
    opacity: 1;
    background: color-mix(in srgb, var(--voice-mic-hue) 22%, transparent);
    animation: voice-button-breathe-b-9casnnsnzu 1.8s ease-in-out infinite;
}

.voice-button[data-voice-state="connecting"] .voice-button__glyph[b-9casnnsnzu] {
    color: color-mix(in srgb, var(--voice-mic-hue) 78%, var(--assistant-panel-text));
}

/* ---- Live: inverted filled circle (light circle, dark glyph in the dark theme) ---- */
.voice-button[data-voice-state="live"][b-9casnnsnzu] {
    color: var(--shell-bg-surface, #101215);
}

.voice-button[data-voice-state="live"][b-9casnnsnzu]::before {
    opacity: 1;
    background: var(--shell-text-primary, #f4f6f8);
}

/* Agent-out glow: outer halo whose spread and warmth follow --voice-out. */
.voice-button[data-voice-state="live"][b-9casnnsnzu]::before {
    box-shadow:
        0 0 calc(4px + var(--voice-out, 0) * 15px)
            calc(var(--voice-out, 0) * 3px)
            color-mix(in srgb, var(--voice-agent-hue) calc(35% + var(--voice-out, 0) * 55%), transparent);
}

/* Mic-in ring: an inset ring that brightens and swells with --voice-in. */
.voice-button[data-voice-state="live"][b-9casnnsnzu]::after {
    opacity: calc(0.25 + var(--voice-in, 0) * 0.75);
    border-color: color-mix(in srgb, var(--voice-mic-hue) calc(40% + var(--voice-in, 0) * 55%), transparent);
    transform: scale(calc(1 + var(--voice-in, 0) * 0.12));
}

@keyframes voice-button-breathe-b-9casnnsnzu {
    0%, 100% {
        opacity: 0.9;
        transform: scale(0.9);
    }

    50% {
        opacity: 0.4;
        transform: scale(1);
    }
}

/* Reduced motion: no breathing, no level-driven glow churn. The filled inverted circle is the
   static "live" indicator; connecting shows a steady faint circle. */
@media (prefers-reduced-motion: reduce) {
    .voice-button[data-voice-state="connecting"][b-9casnnsnzu]::before {
        animation: none;
        opacity: 0.75;
        transform: scale(0.94);
    }

    .voice-button__glyph[b-9casnnsnzu] {
        transition: none;
    }

    .voice-button[data-voice-state="live"][b-9casnnsnzu]::before,
    .voice-button[data-voice-state="live"][b-9casnnsnzu]::after {
        transition: none;
        transform: none;
        box-shadow: none;
    }

    .voice-button[data-voice-state="live"][b-9casnnsnzu]::after {
        opacity: 0.65;
        border-color: color-mix(in srgb, var(--voice-mic-hue) 60%, transparent);
    }
}
/* /Components/Chat/SessionVoiceComposerMode.razor.rz.scp.css */
/* Voice mode of the composer: the same footprint and chrome as the text composer
   (.assistant-composer — 7px radius, inset 0.5px border, raised background, matching padding and
   resting height) so switching into voice reads as the composer changing mode, not a new widget.
   The caption area sits where the text area would; the control row mirrors the action row. The
   waveform bars are driven by the --voice-in / --voice-out custom properties the JS module writes
   onto the root from live audio levels. */

.aiva-voice-composer[b-amtcp0w88m] {
    --voice-accent: var(--shell-accent, #5e6ad2);
    --voice-live: var(--shell-success-text, #4fb56f);
    --voice-muted: #d7a13c;
    --voice-danger: var(--shell-danger-text, #d05252);
    --voice-user-accent: var(--shell-accent, #5e6ad2);
    --voice-assistant-accent: var(--shell-text-secondary);

    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    width: 100%;
    max-width: 900px;
    /* Stable resting footprint: matches the text composer so the swap never makes the panel jump. */
    min-height: 92px;
    margin: 4px auto 0;
    padding: 8px 6px;
    border-radius: 7px;
    background: var(--assistant-composer-bg, var(--assistant-panel-raised-bg, var(--shell-bg-raised)));
    box-shadow:
        inset 0 0 0 0.5px var(--assistant-composer-border, var(--assistant-panel-border, var(--shell-border))),
        var(--assistant-user-message-shadow, 0 0 0 0 transparent);
    animation: aiva-voice-composer-in-b-amtcp0w88m 180ms ease-out;
}

/* ── captions (where the text area would be) ───────────────── */

.aiva-voice-composer__captions[b-amtcp0w88m] {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 6px;
    flex: 1 1 auto;
    min-height: 45px;
    padding: 4px 8px;
    overflow: hidden;
    transition: max-height 350ms cubic-bezier(0.32, 0.72, 0.28, 1), opacity 280ms ease;
}

/* Silence collapse: fold the caption lines away while the surface keeps its resting min-height, so
   a quiet spell never leaves stale text pinned but the composer footprint stays put. */
.aiva-voice-composer__captions.is-collapsed .aiva-voice-composer__line[b-amtcp0w88m] {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    transition: max-height 350ms cubic-bezier(0.32, 0.72, 0.28, 1), opacity 280ms ease;
}

.aiva-voice-composer__captions.is-collapsed .aiva-voice-composer__line:last-child[b-amtcp0w88m] {
    max-height: 1.25rem;
    opacity: 0.75;
}

.aiva-voice-composer__captions.is-collapsed .aiva-voice-composer__line:last-child .aiva-voice-composer__text[b-amtcp0w88m] {
    opacity: 0;
}

.aiva-voice-composer__line[b-amtcp0w88m] {
    display: grid;
    grid-template-columns: auto 1fr;
    align-items: baseline;
    gap: 8px;
    margin: 0;
    max-height: 6rem;
    font-size: 0.8125rem;
    line-height: 1.25rem;
    color: var(--shell-text-secondary);
    opacity: 0.72;
    transition: max-height 350ms cubic-bezier(0.32, 0.72, 0.28, 1), opacity 280ms ease;
}

.aiva-voice-composer__line.is-final[b-amtcp0w88m] {
    opacity: 1;
    color: var(--shell-text-primary);
}

.aiva-voice-composer__line.is-user[b-amtcp0w88m] {
    --voice-line-accent: var(--voice-user-accent);
}

.aiva-voice-composer__line.is-assistant[b-amtcp0w88m] {
    --voice-line-accent: var(--voice-assistant-accent);
}

.aiva-voice-composer__speaker[b-amtcp0w88m] {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
}

.aiva-voice-composer__role[b-amtcp0w88m] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    color: var(--voice-line-accent);
}

.aiva-voice-composer__text[b-amtcp0w88m] {
    min-width: 0;
    word-break: break-word;
}

.aiva-voice-composer__placeholder[b-amtcp0w88m] {
    margin: 0;
    font-size: 0.8125rem;
    line-height: 1.25rem;
    color: var(--shell-text-muted, var(--shell-text-secondary));
}

/* Per-line waveform: four bars that pulse while a segment is streaming and settle flat once it is
   finalized, giving each speaker a small "is talking" cue in their accent. */
.aiva-voice-composer__line-wave[b-amtcp0w88m] {
    display: inline-flex;
    align-items: center;
    align-self: center;
    gap: 2px;
    height: 12px;
    width: 16px;
    color: var(--voice-line-accent);
}

.aiva-voice-composer__line-wave span[b-amtcp0w88m] {
    width: 2px;
    height: 30%;
    border-radius: 1px;
    background: currentColor;
    opacity: 0.6;
}

.aiva-voice-composer__line.is-streaming .aiva-voice-composer__line-wave span[b-amtcp0w88m] {
    animation: aiva-voice-composer-line-wave-b-amtcp0w88m 900ms ease-in-out infinite;
}

.aiva-voice-composer__line-wave span:nth-child(1)[b-amtcp0w88m] { animation-delay: 0ms; }
.aiva-voice-composer__line-wave span:nth-child(2)[b-amtcp0w88m] { animation-delay: 150ms; }
.aiva-voice-composer__line-wave span:nth-child(3)[b-amtcp0w88m] { animation-delay: 300ms; }
.aiva-voice-composer__line-wave span:nth-child(4)[b-amtcp0w88m] { animation-delay: 450ms; }

.aiva-voice-composer__line.is-final .aiva-voice-composer__line-wave span[b-amtcp0w88m] {
    height: 28%;
    opacity: 0.32;
}

/* ── control row (mirrors the composer action row) ─────────── */

.aiva-voice-composer__row[b-amtcp0w88m] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 24px;
    margin-top: 9px;
    padding: 0 8px 0 4px;
}

.aiva-voice-composer__status[b-amtcp0w88m] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
}

.aiva-voice-composer__status-text[b-amtcp0w88m] {
    font-size: 0.75rem;
    color: var(--shell-text-secondary);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.aiva-voice-composer.is-muted .aiva-voice-composer__status-text[b-amtcp0w88m] {
    color: var(--voice-muted);
}

/* Overall level waveform: five bars whose height follows the louder of mic-in / agent-out. */
.aiva-voice-composer__wave[b-amtcp0w88m] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2.5px;
    height: 18px;
    width: 24px;
    flex: none;
}

.aiva-voice-composer__wave span[b-amtcp0w88m] {
    width: 2.5px;
    border-radius: 2px;
    background: var(--voice-accent);
    height: calc(4px + max(var(--voice-in, 0), var(--voice-out, 0)) * var(--bar-span, 12px));
    transition: height 90ms ease, background 200ms ease, opacity 200ms ease;
}

.aiva-voice-composer__wave span:nth-child(1)[b-amtcp0w88m] { --bar-span: 7px; }
.aiva-voice-composer__wave span:nth-child(2)[b-amtcp0w88m] { --bar-span: 12px; }
.aiva-voice-composer__wave span:nth-child(3)[b-amtcp0w88m] { --bar-span: 15px; }
.aiva-voice-composer__wave span:nth-child(4)[b-amtcp0w88m] { --bar-span: 10px; }
.aiva-voice-composer__wave span:nth-child(5)[b-amtcp0w88m] { --bar-span: 6px; }

.aiva-voice-composer[data-voice-state="live"] .aiva-voice-composer__wave span[b-amtcp0w88m] {
    background: var(--voice-live);
}

.aiva-voice-composer.is-muted .aiva-voice-composer__wave span[b-amtcp0w88m] {
    background: var(--voice-muted);
    opacity: 0.5;
}

/* Connecting: a shimmer that runs the moment voice mode appears, so starting feels instant. */
.aiva-voice-composer[data-voice-state="connecting"] .aiva-voice-composer__wave span[b-amtcp0w88m] {
    background: var(--shell-text-muted, var(--shell-text-secondary));
    animation: aiva-voice-composer-shimmer-b-amtcp0w88m 1.1s ease-in-out infinite;
}

.aiva-voice-composer[data-voice-state="connecting"] .aiva-voice-composer__wave span:nth-child(2)[b-amtcp0w88m] { animation-delay: 120ms; }
.aiva-voice-composer[data-voice-state="connecting"] .aiva-voice-composer__wave span:nth-child(3)[b-amtcp0w88m] { animation-delay: 240ms; }
.aiva-voice-composer[data-voice-state="connecting"] .aiva-voice-composer__wave span:nth-child(4)[b-amtcp0w88m] { animation-delay: 360ms; }
.aiva-voice-composer[data-voice-state="connecting"] .aiva-voice-composer__wave span:nth-child(5)[b-amtcp0w88m] { animation-delay: 480ms; }

/* ── controls (mute + stop, stop in the send position) ─────── */

.aiva-voice-composer__controls[b-amtcp0w88m] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex: none;
}

.aiva-voice-composer__control[b-amtcp0w88m] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 6px;
    background: transparent;
    color: var(--shell-text-secondary);
    cursor: pointer;
    padding: 0;
    transition: background 120ms ease, color 120ms ease;
}

.aiva-voice-composer__control:hover[b-amtcp0w88m],
.aiva-voice-composer__control:focus-visible[b-amtcp0w88m] {
    background: var(--shell-bg-hover, var(--shell-bg-active));
    color: var(--shell-text-primary);
    outline: none;
}

.aiva-voice-composer__control:disabled[b-amtcp0w88m] {
    cursor: not-allowed;
    opacity: 0.45;
}

.aiva-voice-composer__control:disabled:hover[b-amtcp0w88m] {
    background: transparent;
    color: var(--shell-text-secondary);
}

.aiva-voice-composer__control.is-muted[b-amtcp0w88m] {
    color: var(--voice-muted);
    background: color-mix(in srgb, var(--voice-muted) 14%, transparent);
    border-radius: 50%;
}

/* Stop takes the send button's slot with its prominence, red-tinted so ending the call reads clearly. */
.aiva-voice-composer__stop[b-amtcp0w88m] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border: 0.5px solid transparent;
    border-radius: 12px;
    background: var(--voice-danger);
    color: white;
    cursor: pointer;
    padding: 0;
    transition: filter 150ms ease;
}

.aiva-voice-composer__stop:hover[b-amtcp0w88m],
.aiva-voice-composer__stop:focus-visible[b-amtcp0w88m] {
    filter: brightness(1.06);
    outline: none;
}

/* ── motion ────────────────────────────────────────────────── */

@keyframes aiva-voice-composer-in-b-amtcp0w88m {
    from { opacity: 0; transform: translateY(4px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes aiva-voice-composer-line-wave-b-amtcp0w88m {
    0%, 100% { height: 22%; }
    50% { height: 100%; }
}

@keyframes aiva-voice-composer-shimmer-b-amtcp0w88m {
    0%, 100% { height: 4px; opacity: 0.4; }
    50% { height: 13px; opacity: 0.9; }
}

@media (prefers-reduced-motion: reduce) {
    .aiva-voice-composer[b-amtcp0w88m] { animation: none; }

    .aiva-voice-composer__line.is-streaming .aiva-voice-composer__line-wave span[b-amtcp0w88m],
    .aiva-voice-composer__wave span[b-amtcp0w88m] {
        animation: none;
        transition: none;
    }

    .aiva-voice-composer[data-voice-state="connecting"] .aiva-voice-composer__wave span[b-amtcp0w88m] {
        animation: none;
        height: 8px;
        opacity: 0.6;
    }
}
/* /Components/Layout/AivaDesktopSidebarLeafItem.razor.rz.scp.css */
.aiva-sidebar-leaf-item[b-vlhdtt8ba4] {
    display: contents;
}

.aiva-sidebar-leaf-item--busy[b-vlhdtt8ba4] {
    display: block;
    position: relative;
    width: var(--shell-nav-row-width);
}

.aiva-sidebar-leaf-item__status[b-vlhdtt8ba4] {
    pointer-events: none;
    position: absolute;
    right: 0.75rem;
    top: 50%;
    transform: translateY(-50%);
}

.aiva-sidebar-leaf-item--busy[b-vlhdtt8ba4]  .shell-nav-link__inner {
    padding-right: 2.25rem;
}
/* /Components/Layout/SessionVoiceIsland.razor.rz.scp.css */
/* The roaming voice orb: a fixed 46px circle bottom-right, clear of the footer dock, shown while a
   voice call is live and the user is away from the owning session. Styling follows the shell menu
   recipe (menu bg + blur + 0.5px border) so it reads as native shell furniture. The waveform bars are
   driven by the --voice-in / --voice-out custom properties the JS module writes onto the orb root from
   live audio levels. A hover tray slides out to the left with the session name and the mute/stop
   controls; clicking the orb jumps back to the owning session. */

.aiva-voice-island[b-nbyytxn0jg] {
    --voice-island-accent: var(--shell-accent, #5e6ad2);
    --voice-island-live: var(--shell-success-text, #4fb56f);
    --voice-island-muted: #d7a13c;
    --voice-island-danger: #d05252;
    position: fixed;
    right: 16px;
    bottom: 56px;
    z-index: 70;
    width: 46px;
    height: 46px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    /* The hover tray sits outside the circle. */
    overflow: visible;
    border: 0.5px solid var(--shell-menu-border, var(--shell-border));
    background: color-mix(in srgb, var(--shell-menu-bg, var(--shell-bg-surface)) 94%, transparent);
    backdrop-filter: blur(12px);
    box-shadow: var(--shell-menu-shadow, 0 4px 4px -1px lch(0% 0 0 / 0.04), 0 1px 1px 0 lch(0% 0 0 / 0.08));
    color: var(--shell-text-primary);
    animation: aiva-voice-island-in-b-nbyytxn0jg 180ms ease-out;
}

.aiva-voice-island.is-muted[b-nbyytxn0jg] {
    border-color: color-mix(in srgb, var(--voice-island-muted) 55%, var(--shell-border));
}

.aiva-voice-island.is-ending[b-nbyytxn0jg] {
    animation: aiva-voice-island-end-b-nbyytxn0jg 700ms ease forwards;
}

/* ── orb face (click = jump to the owning session) ─────────── */

.aiva-voice-island__orb-face[b-nbyytxn0jg] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    border: none;
    border-radius: 50%;
    background: transparent;
    cursor: pointer;
    padding: 0;
    color: inherit;
}

.aiva-voice-island__orb-face:focus-visible[b-nbyytxn0jg] {
    outline: 2px solid var(--shell-focus-ring, var(--voice-island-accent));
    outline-offset: 2px;
}

/* ── waveform ──────────────────────────────────────────────── */

.aiva-voice-island__wave[b-nbyytxn0jg] {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 2.5px;
    height: 18px;
    width: 24px;
    flex: none;
}

.aiva-voice-island__wave span[b-nbyytxn0jg] {
    width: 2.5px;
    border-radius: 2px;
    background: var(--voice-island-accent);
    /* Mic in and agent out both feed the bars; per-bar factors keep the cluster organic. */
    height: calc(4px + max(var(--voice-in, 0), var(--voice-out, 0)) * var(--bar-span, 14px));
    transition: height 90ms ease, background 200ms ease, opacity 200ms ease;
}

.aiva-voice-island__wave span:nth-child(1)[b-nbyytxn0jg] { --bar-span: 8px; }
.aiva-voice-island__wave span:nth-child(2)[b-nbyytxn0jg] { --bar-span: 13px; }
.aiva-voice-island__wave span:nth-child(3)[b-nbyytxn0jg] { --bar-span: 16px; }
.aiva-voice-island__wave span:nth-child(4)[b-nbyytxn0jg] { --bar-span: 11px; }
.aiva-voice-island__wave span:nth-child(5)[b-nbyytxn0jg] { --bar-span: 7px; }

.aiva-voice-island[data-voice-state="live"] .aiva-voice-island__wave span[b-nbyytxn0jg] {
    background: var(--voice-island-live);
}

.aiva-voice-island.is-muted .aiva-voice-island__wave span[b-nbyytxn0jg] {
    background: var(--voice-island-muted);
    opacity: 0.5;
}

.aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__wave span[b-nbyytxn0jg] {
    background: var(--shell-text-muted, var(--shell-text-secondary));
    animation: aiva-voice-island-shimmer-b-nbyytxn0jg 1.1s ease-in-out infinite;
}

.aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__wave span:nth-child(2)[b-nbyytxn0jg] { animation-delay: 120ms; }
.aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__wave span:nth-child(3)[b-nbyytxn0jg] { animation-delay: 240ms; }
.aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__wave span:nth-child(4)[b-nbyytxn0jg] { animation-delay: 360ms; }
.aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__wave span:nth-child(5)[b-nbyytxn0jg] { animation-delay: 480ms; }

/* ── status badge ──────────────────────────────────────────── */

.aiva-voice-island__badge[b-nbyytxn0jg] {
    position: absolute;
    top: -1px;
    right: -1px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--voice-island-live);
    border: 2px solid var(--shell-bg-surface);
}

.aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__badge[b-nbyytxn0jg] {
    background: var(--shell-text-muted, var(--shell-text-secondary));
}

.aiva-voice-island.is-muted .aiva-voice-island__badge[b-nbyytxn0jg] {
    background: var(--voice-island-muted);
}

/* ── hover tray ────────────────────────────────────────────── */

.aiva-voice-island__tray[b-nbyytxn0jg] {
    position: absolute;
    right: 54px;
    top: 50%;
    transform: translateY(-50%) translateX(6px);
    display: flex;
    align-items: center;
    gap: 3px;
    padding: 4px;
    border: 0.5px solid var(--shell-menu-border, var(--shell-border));
    border-radius: 9px;
    background: color-mix(in srgb, var(--shell-menu-bg, var(--shell-bg-surface)) 96%, transparent);
    backdrop-filter: blur(12px);
    box-shadow: var(--shell-menu-shadow, 0 4px 4px -1px lch(0% 0 0 / 0.04), 0 1px 1px 0 lch(0% 0 0 / 0.08));
    opacity: 0;
    pointer-events: none;
    /* Linger briefly before hiding so a slower mouse can travel from the orb to the buttons without
       the tray vanishing; it opens instantly (delay reset on hover below). */
    transition: opacity 160ms ease 220ms, transform 160ms ease 220ms;
}

/* Invisible bridge spanning the gap between the tray and the orb, so the pointer never leaves the
   hover region while crossing from one to the other. Sized taller than the tray to forgive
   diagonal movement. */
.aiva-voice-island__tray[b-nbyytxn0jg]::after {
    content: "";
    position: absolute;
    top: -10px;
    bottom: -10px;
    right: -22px;
    width: 26px;
}

.aiva-voice-island:hover .aiva-voice-island__tray[b-nbyytxn0jg],
.aiva-voice-island:focus-within .aiva-voice-island__tray[b-nbyytxn0jg] {
    opacity: 1;
    pointer-events: auto;
    transform: translateY(-50%) translateX(0);
    transition-delay: 0ms;
}

.aiva-voice-island__chip[b-nbyytxn0jg] {
    font-size: 0.6875rem;
    color: var(--shell-text-secondary);
    padding: 0 7px;
    white-space: nowrap;
    max-width: 130px;
    overflow: hidden;
    text-overflow: ellipsis;
}

.aiva-voice-island__control[b-nbyytxn0jg] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 6px;
    border: none;
    background: transparent;
    color: var(--shell-text-secondary);
    cursor: pointer;
    padding: 0;
    transition: background 120ms ease, color 120ms ease;
}

.aiva-voice-island__control:hover[b-nbyytxn0jg] {
    background: var(--shell-bg-hover, var(--shell-bg-active));
    color: var(--shell-text-primary);
}

.aiva-voice-island__control.is-muted[b-nbyytxn0jg] {
    color: var(--voice-island-muted);
    background: color-mix(in srgb, var(--voice-island-muted) 13%, transparent);
}

.aiva-voice-island__control--stop:hover[b-nbyytxn0jg] {
    background: color-mix(in srgb, var(--voice-island-danger) 16%, transparent);
    color: var(--voice-island-danger);
}

/* ── motion ────────────────────────────────────────────────── */

@keyframes aiva-voice-island-in-b-nbyytxn0jg {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes aiva-voice-island-end-b-nbyytxn0jg {
    0% {
        border-color: var(--voice-island-danger);
        box-shadow: 0 0 0 0 color-mix(in srgb, var(--voice-island-danger) 40%, transparent);
        opacity: 1;
    }

    45% {
        box-shadow: 0 0 0 10px transparent;
    }

    100% {
        border-color: var(--voice-island-danger);
        opacity: 0;
        transform: translateY(8px) scale(0.94);
    }
}

@keyframes aiva-voice-island-shimmer-b-nbyytxn0jg {
    0%, 100% { height: 4px; opacity: 0.4; }
    50% { height: 13px; opacity: 0.9; }
}

@media (prefers-reduced-motion: reduce) {
    .aiva-voice-island[b-nbyytxn0jg] {
        animation: none;
    }

    .aiva-voice-island.is-ending[b-nbyytxn0jg] {
        animation: none;
        opacity: 0;
    }

    .aiva-voice-island__wave span[b-nbyytxn0jg] {
        transition: none;
    }

    .aiva-voice-island[data-voice-state="connecting"] .aiva-voice-island__wave span[b-nbyytxn0jg] {
        animation: none;
        height: 8px;
        opacity: 0.6;
    }
}
/* /Components/Pages/Home/AdminProjectionQueuesPage.razor.rz.scp.css */
.projection-queue-summary[b-c2x9g6dq8f] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
    gap: 1rem;
    margin: 0;
}

.projection-queue-summary div[b-c2x9g6dq8f] {
    display: grid;
    gap: 0.25rem;
}

.projection-queue-summary dt[b-c2x9g6dq8f] {
    color: var(--color-text-secondary);
    font-size: 0.8rem;
}

.projection-queue-summary dd[b-c2x9g6dq8f] {
    font-size: 1.35rem;
    font-weight: 600;
    margin: 0;
}

.projection-queue-table-wrap[b-c2x9g6dq8f] {
    overflow-x: auto;
}

.projection-queue-table[b-c2x9g6dq8f] {
    border-collapse: collapse;
    min-width: 68rem;
    width: 100%;
}

.projection-queue-table th[b-c2x9g6dq8f],
.projection-queue-table td[b-c2x9g6dq8f] {
    border-bottom: 1px solid var(--color-border-subtle);
    padding: 0.65rem 0.5rem;
    text-align: left;
    white-space: nowrap;
}

.projection-queue-table td:last-child[b-c2x9g6dq8f] {
    display: flex;
    gap: 0.4rem;
}

.projection-queue-confirmation[b-c2x9g6dq8f] {
    background: var(--color-surface-default);
    border: 1px solid var(--color-border-default);
    border-radius: 0.35rem;
    color: inherit;
    max-width: 32rem;
    padding: 0.6rem 0.7rem;
    width: 100%;
}
/* /Components/Pages/Inbox/InboxMailAttachments.razor.rz.scp.css */
.inbox-mail-attachments[b-5pmi50je92] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    padding: 0.5rem 1rem 0.75rem;
    border-top: 1px solid var(--qui-border-subtle, rgba(255, 255, 255, 0.08));
}

.inbox-mail-attachment[b-5pmi50je92] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    max-width: 22rem;
    padding: 0.35rem 0.6rem;
    border: 1px solid var(--qui-border-subtle, rgba(255, 255, 255, 0.12));
    border-radius: 0.5rem;
    background: var(--qui-surface-raised, rgba(255, 255, 255, 0.04));
    color: var(--qui-text, inherit);
    font-size: 0.8125rem;
    line-height: 1.2;
    text-decoration: none;
    transition: background 0.12s ease, border-color 0.12s ease;
}

.inbox-mail-attachment:hover[b-5pmi50je92] {
    background: var(--qui-surface-hover, rgba(255, 255, 255, 0.08));
    border-color: var(--qui-border, rgba(255, 255, 255, 0.2));
}

.inbox-mail-attachment__icon[b-5pmi50je92] {
    flex: 0 0 auto;
    opacity: 0.75;
}

.inbox-mail-attachment__name[b-5pmi50je92] {
    flex: 1 1 auto;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-attachment__size[b-5pmi50je92] {
    flex: 0 0 auto;
    opacity: 0.6;
    font-variant-numeric: tabular-nums;
}

/* Previewable (image) attachment: the label opens the lightbox, a trailing button downloads. */
.inbox-mail-attachment--previewable[b-5pmi50je92] {
    padding: 0;
    overflow: hidden;
}

.inbox-mail-attachment__open[b-5pmi50je92] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    max-width: 19rem;
    padding: 0.35rem 0.5rem 0.35rem 0.6rem;
    background: none;
    border: none;
    color: inherit;
    font: inherit;
    cursor: pointer;
}

.inbox-mail-attachment__download[b-5pmi50je92] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 0.55rem;
    align-self: stretch;
    border-left: 1px solid var(--qui-border-subtle, rgba(255, 255, 255, 0.12));
    color: inherit;
    text-decoration: none;
    opacity: 0.75;
}

.inbox-mail-attachment__download:hover[b-5pmi50je92] {
    opacity: 1;
    background: var(--qui-surface-hover, rgba(255, 255, 255, 0.08));
}
/* /Components/Pages/Inbox/InboxMailCompose.razor.rz.scp.css */
.aiva-mail-compose-attachments[b-b5hf9khnib] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.4rem;
    width: 100%;
}

.aiva-mail-compose-attach[b-b5hf9khnib] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    cursor: pointer;
    padding: 0.25rem 0.6rem;
    border: 1px solid var(--qui-border, rgba(255, 255, 255, 0.16));
    border-radius: 0.4rem;
    font-size: 0.8125rem;
    opacity: 0.9;
}

.aiva-mail-compose-attach:hover[b-b5hf9khnib] {
    opacity: 1;
    background: var(--qui-surface-muted, rgba(255, 255, 255, 0.06));
}

/* InputFile renders its own <input> as a child component, so the scope attribute is not
   applied to it; reach it with ::deep to hide the native file control behind our label. */
.aiva-mail-compose-attach[b-b5hf9khnib]  input[type="file"] {
    display: none;
}

.aiva-mail-compose-chip[b-b5hf9khnib] {
    display: inline-flex;
    align-items: center;
    gap: 0.35rem;
    max-width: 100%;
    padding: 0.2rem 0.5rem;
    border-radius: 999px;
    background: var(--qui-surface-muted, rgba(255, 255, 255, 0.08));
    font-size: 0.8125rem;
}

.aiva-mail-compose-chip__name[b-b5hf9khnib] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    max-width: 14rem;
}

.aiva-mail-compose-chip__size[b-b5hf9khnib] {
    opacity: 0.6;
    font-size: 0.75rem;
}

.aiva-mail-compose-chip__remove[b-b5hf9khnib] {
    background: none;
    border: none;
    color: inherit;
    cursor: pointer;
    opacity: 0.7;
    padding: 0;
    line-height: 1;
}

.aiva-mail-compose-chip__remove:hover[b-b5hf9khnib] {
    opacity: 1;
}
/* /Components/Pages/Inbox/InboxMailDetail.razor.rz.scp.css */
/* The mail reading pane fills its area like a proper email client — no outer margins,
   an Apple Mail-style thread avatar, and the subject at the top of the header. */
.inbox-mail-detail[b-a8ebx37661] {
    display: flex;
    min-height: 100%;
    flex-direction: column;
    padding: 0;
    color: var(--shell-text-primary);
}

.inbox-mail-detail__header[b-a8ebx37661] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 18px 24px;
    border-bottom: 0.5px solid var(--shell-border);
}

.inbox-mail-detail__avatar[b-a8ebx37661] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--shell-accent, var(--shell-text-primary)) 22%, transparent);
    color: var(--shell-text-primary);
    font-size: 1rem;
    font-weight: 600;
    text-transform: uppercase;
}

.inbox-mail-detail__headings[b-a8ebx37661] {
    display: flex;
    min-width: 0;
    flex: 1;
    flex-direction: column;
    gap: 2px;
}

.inbox-mail-detail__subject[b-a8ebx37661] {
    margin: 0;
    overflow: hidden;
    color: var(--shell-text-primary);
    font-size: 1.25rem;
    font-weight: 600;
    line-height: 1.6rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-detail__submeta[b-a8ebx37661] {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 8px;
    color: var(--shell-text-secondary);
    font-size: 0.8125rem;
}

.inbox-mail-detail__correspondent[b-a8ebx37661] {
    overflow: hidden;
    color: var(--shell-text-primary);
    font-weight: 500;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-detail__account[b-a8ebx37661] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-detail__account[b-a8ebx37661]::before {
    content: "";
    display: inline-block;
    width: 3px;
    height: 3px;
    margin-right: 8px;
    border-radius: 50%;
    background: currentColor;
    vertical-align: middle;
}

.inbox-mail-detail__actions[b-a8ebx37661] {
    flex: 0 0 auto;
}

.inbox-mail-thread[b-a8ebx37661] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    gap: 0;
    width: 100%;
    padding: 0;
    /* Long threads scroll; without this the column flex squeezes every collapsed card into
       the visible height and the rows overlap. */
    overflow-y: auto;
}

/* A single-message reading view fills the pane like a proper mail client: the thread
   goes edge-to-edge and the sanitized frame stretches to fill the height instead of
   capping and leaving empty space below. Multi-message threads keep the inset cards. */
.inbox-mail-thread:has(> .inbox-mail-card:only-child)[b-a8ebx37661] {
    padding: 0;
    gap: 0;
}

.inbox-mail-card:only-child[b-a8ebx37661] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    border-right: none;
    border-left: none;
    border-radius: 0;
}

.inbox-mail-card:only-child .inbox-mail-card__body[b-a8ebx37661] {
    display: flex;
    flex: 1 1 auto;
    min-height: 0;
    flex-direction: column;
    padding: 0;
}

.inbox-mail-card:only-child[b-a8ebx37661]  .mail-frame {
    flex: 1 1 auto;
    min-height: 0;
}

.inbox-mail-card:only-child[b-a8ebx37661]  .mail-frame__frame {
    flex: 1 1 auto;
    height: auto;
    max-height: none;
}

.inbox-mail-thread__status[b-a8ebx37661] {
    margin: 0;
    color: var(--shell-text-secondary);
    font-size: 0.875rem;
}

.inbox-mail-card[b-a8ebx37661] {
    flex: 0 0 auto;
    overflow: hidden;
    border: none;
    border-bottom: 0.5px solid var(--shell-border);
    border-radius: 0;
    background: transparent;
}

.inbox-mail-card--collapsed:hover[b-a8ebx37661] {
    background: color-mix(in srgb, var(--shell-bg-active) 78%, transparent);
}

.inbox-mail-card__header[b-a8ebx37661] {
    display: flex;
    width: 100%;
    align-items: center;
    gap: 12px;
    padding: 12px 15px;
    border: none;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}

.inbox-mail-card__header--static[b-a8ebx37661] {
    cursor: default;
}

.inbox-mail-card__avatar[b-a8ebx37661] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--shell-accent, var(--shell-text-primary)) 22%, transparent);
    color: var(--shell-text-primary);
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
}

.inbox-mail-card__identity[b-a8ebx37661] {
    display: flex;
    min-width: 0;
    flex: 1;
    flex-direction: column;
    gap: 3px;
}

.inbox-mail-card__from[b-a8ebx37661] {
    display: flex;
    min-width: 0;
    align-items: baseline;
    gap: 6px;
}

.inbox-mail-card__name[b-a8ebx37661] {
    overflow: hidden;
    color: var(--shell-text-primary);
    font-size: 0.875rem;
    font-weight: 560;
    line-height: 1.125rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-card__address[b-a8ebx37661] {
    overflow: hidden;
    color: var(--shell-text-secondary);
    font-size: 0.75rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-card__snippet[b-a8ebx37661] {
    overflow: hidden;
    color: var(--shell-text-secondary);
    font-size: 0.8125rem;
    line-height: 1.0625rem;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-card__recipients[b-a8ebx37661] {
    display: flex;
    flex-wrap: wrap;
    gap: 4px 12px;
    color: var(--shell-text-secondary);
    font-size: 0.75rem;
    line-height: 1rem;
}

.inbox-mail-card__meta[b-a8ebx37661] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 10px;
}

.inbox-mail-card__chip[b-a8ebx37661] {
    padding: 2px 8px;
    border-radius: 999px;
    font-size: 0.6875rem;
    font-weight: 560;
    line-height: 0.9375rem;
    text-transform: uppercase;
    letter-spacing: 0.02em;
}

.inbox-mail-card__chip--sent[b-a8ebx37661] {
    background: color-mix(in srgb, var(--shell-accent, #2563eb) 22%, transparent);
    color: var(--shell-text-primary);
}

.inbox-mail-card__chip--received[b-a8ebx37661] {
    background: color-mix(in srgb, var(--shell-bg-active) 90%, transparent);
    color: var(--shell-text-secondary);
}

.inbox-mail-card__date[b-a8ebx37661] {
    color: var(--shell-text-secondary);
    font-size: 0.75rem;
    white-space: nowrap;
}

.inbox-mail-card__body[b-a8ebx37661] {
    padding: 0;
    border-top: 0.5px solid var(--shell-border);
}
/* /Components/Pages/Inbox/InboxMailList.razor.rz.scp.css */
.inbox-mail-list[b-yoy8h2q013] {
    min-height: 100%;
}

.inbox-mail-list__search[b-yoy8h2q013] {
    position: sticky;
    top: 0;
    z-index: 1;
    /* 8px sides = the list rows' chrome inset, so the field and rows share one gutter. */
    padding: 0.5rem;
    background: var(--shell-bg-primary, transparent);
}

/* Sender avatar: a brand glyph when the domain is recognised, otherwise centred initials. */
.inbox-mail-list__avatar[b-yoy8h2q013] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--shell-bg-active) 85%, transparent);
    color: var(--shell-text-primary);
    font-size: 0.75rem;
    line-height: 1;
}

.inbox-mail-list__avatar-initials[b-yoy8h2q013] {
    display: block;
    font-weight: 600;
    line-height: 1;
}

/* Apple Mail-style type hierarchy, two lines only: bold sender, medium subject. */
.inbox-mail-list[b-yoy8h2q013]  .activity-list-item__title {
    color: var(--shell-text-primary);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.2rem;
}

.inbox-mail-list[b-yoy8h2q013]  .activity-list-item--selected .activity-list-item__title,
.inbox-mail-list[b-yoy8h2q013]  .activity-list-item__title--strong {
    color: var(--shell-text-primary);
}

/* Selected row: a clear surface highlight with an accent rail. The base component only
   re-colours text, which is invisible here since the title is already the primary colour. */
.inbox-mail-list[b-yoy8h2q013]  .activity-list-item--selected {
    background: var(--shell-bg-active);
    box-shadow: inset 2px 0 0 0 var(--shell-accent, #6aa3ff);
}

.inbox-mail-list[b-yoy8h2q013]  .activity-list-item__subtitle-row {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
}

.inbox-mail-list__subject[b-yoy8h2q013] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    color: var(--shell-text-primary);
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.05rem;
}
/* /Components/Pages/Inbox/InboxSenderAvatar.razor.rz.scp.css */
.inbox-sender-avatar[b-a36w8gv6aw] {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: var(--avatar-size, 32px);
    height: var(--avatar-size, 32px);
    border-radius: 50%;
    overflow: hidden;
}

/* A hairline ring keeps light brand tiles (e.g. Microsoft) legible on a light UI. */
.inbox-sender-avatar--brand[b-a36w8gv6aw] {
    box-shadow: inset 0 0 0 0.5px rgba(0, 0, 0, 0.08);
}

.inbox-sender-avatar__logo[b-a36w8gv6aw] {
    display: block;
    width: 64%;
    height: 64%;
    object-fit: contain;
}

/* Favicon tile: the icon sits on a neutral chip; if it fails to load the initials fill takes over. */
.inbox-sender-avatar--favicon[b-a36w8gv6aw] {
    background: #f1f3f5;
    box-shadow: inset 0 0 0 0.5px rgba(0, 0, 0, 0.08);
}

/* Human senders: the photo fills the circle; initials fill in when there is no photo. */
.inbox-sender-avatar__photo[b-a36w8gv6aw] {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.inbox-sender-avatar__favicon[b-a36w8gv6aw] {
    display: block;
    width: 66%;
    height: 66%;
    object-fit: contain;
}

.inbox-sender-avatar__initials-fill[b-a36w8gv6aw] {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    color: #ffffff;
    font-weight: 600;
    text-transform: uppercase;
}

.inbox-sender-avatar--initials[b-a36w8gv6aw] {
    color: #ffffff;
    font-weight: 600;
    text-transform: uppercase;
}

.inbox-sender-avatar__initials[b-a36w8gv6aw] {
    font-size: calc(var(--avatar-size, 32px) * 0.4);
    line-height: 1;
}
/* /Components/Pages/Inbox/MailFrame.razor.rz.scp.css */
.mail-frame[b-gobm6fi9at] {
    display: flex;
    min-width: 0;
    min-height: 0;
    flex-direction: column;
}

.mail-frame__remote[b-gobm6fi9at] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 14px;
    border-top: 0.5px solid var(--shell-border);
    border-bottom: 0.5px solid var(--shell-border);
    background: color-mix(in srgb, var(--shell-bg-active) 72%, transparent);
    color: var(--shell-text-secondary);
    font-size: 0.8125rem;
    line-height: 1.125rem;
}

/* The frame's own height-reporter (see MailFrame.WrapDocument + mail-frame.js) resizes this to
   the email's content, so a short message is short. The height below is only the pre-script
   fallback until the reporter posts the real height. */
.mail-frame__frame[b-gobm6fi9at] {
    display: block;
    width: 100%;
    height: 200px;
    border: none;
    background: #ffffff;
}

/* Gmail-style trimmed-content toggle: a subtle pill that reveals the quoted reply history. */
.mail-frame__quote-toggle[b-gobm6fi9at] {
    align-self: flex-start;
    margin: 2px 12px 8px;
    padding: 1px 10px;
    border: 1px solid var(--shell-border);
    border-radius: 999px;
    background: color-mix(in srgb, var(--shell-bg-active) 60%, transparent);
    color: var(--shell-text-secondary);
    font-size: 0.75rem;
    line-height: 1.25rem;
    letter-spacing: 0.02em;
    cursor: pointer;
}

.mail-frame__quote-toggle:hover[b-gobm6fi9at] {
    background: var(--shell-bg-active);
    color: var(--shell-text-primary);
}

.mail-frame--text[b-gobm6fi9at] {
    padding: 20px 24px;
    color: var(--shell-text-primary);
    font-size: 0.9375rem;
    line-height: 1.5rem;
    white-space: pre-wrap;
    word-break: break-word;
}
/* /Components/Pages/Instances/InstanceStatusPanel.razor.rz.scp.css */
.aiva-instance-status[b-iwgf1fy6uh] {
    display: flex;
    width: 100%;
    min-width: 0;
    flex-direction: column;
    gap: 16px;
}
/* /Components/Pages/Orchestration/OrchestrationManualOutcomeModal.razor.rz.scp.css */
.orchestration-outcome-modal__select[b-1a7at5iek1],
.orchestration-outcome-modal__summary[b-1a7at5iek1] {
    width: 100%;
    border: 1px solid var(--color-border, #31343b);
    border-radius: .35rem;
    background: var(--color-surface, #17191d);
    color: inherit;
    font: inherit;
}

.orchestration-outcome-modal__select[b-1a7at5iek1] {
    padding: .5rem .65rem;
}

.orchestration-outcome-modal__summary[b-1a7at5iek1] {
    min-height: 6rem;
    padding: .65rem;
    resize: vertical;
}
/* /Components/Pages/Session/Files/SessionFileUploadAction.razor.rz.scp.css */
.session-file-upload-action[b-wx4zph29ws] {
    display: inline-flex;
    position: relative;
}

.session-file-upload-action__input[b-wx4zph29ws] {
    display: none;
}
/* /Components/Pages/Session/SessionChatsModal.razor.rz.scp.css */
/* Email section header, matching the sectioned messaging list's group header weight. */
.aiva-session-comms-email__header[b-rzvjcry46g] {
    display: flex;
    align-items: baseline;
    gap: 0.4rem;
    padding: 0.5rem 0.5rem 0.25rem;
}

.aiva-session-comms-email__header-title[b-rzvjcry46g] {
    color: var(--shell-text-secondary, var(--shell-text-primary));
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.aiva-session-comms-email__header-meta[b-rzvjcry46g] {
    color: var(--shell-text-tertiary, var(--shell-text-secondary));
    font-size: 0.6875rem;
    font-weight: 500;
}

/* The row markup mirrors the Inbox sidebar, but CSS isolation scopes InboxMailList's rules to
   that component, so the shared row styling is replicated here for the modal. */
.inbox-mail-list[b-rzvjcry46g]  .activity-list-item__title {
    color: var(--shell-text-primary);
    font-size: 0.875rem;
    font-weight: 600;
    line-height: 1.2rem;
}

.inbox-mail-list[b-rzvjcry46g]  .activity-list-item--selected .activity-list-item__title,
.inbox-mail-list[b-rzvjcry46g]  .activity-list-item__title--strong {
    color: var(--shell-text-primary);
}

/* Selected row: surface highlight with an accent rail (the base component only re-colours text,
   which is invisible when the title is already the primary colour). */
.inbox-mail-list[b-rzvjcry46g]  .activity-list-item--selected {
    background: var(--shell-bg-active);
    box-shadow: inset 2px 0 0 0 var(--shell-accent, #6aa3ff);
}

.inbox-mail-list[b-rzvjcry46g]  .activity-list-item__subtitle-row {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    min-width: 0;
}

.inbox-mail-list__subject[b-rzvjcry46g] {
    flex: 1;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    min-width: 0;
    color: var(--shell-text-primary);
    font-size: 0.75rem;
    font-weight: 500;
    line-height: 1.05rem;
}
/* /Components/Pages/Session/SessionSettingsModal.razor.rz.scp.css */
.session-settings-assistant-destructive[b-rb1bgqasp1] {
    border: 1px solid color-mix(in srgb, var(--shell-danger-text, #dc2626) 30%, var(--shell-border));
    border-radius: 8px;
    background: color-mix(in srgb, var(--shell-danger-text, #dc2626) 4%, transparent);
}

.session-settings-assistant-destructive[b-rb1bgqasp1]  .ui-form__label,
.session-settings-assistant-destructive[b-rb1bgqasp1]  .ui-field-section__title {
    color: var(--shell-danger-text, #dc2626);
}
/* /Components/Pages/Settings/LabelSelectField.razor.rz.scp.css */
.label-select-field__unknown[b-4gc86036gd] {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.label-select-field__unknown-text[b-4gc86036gd] {
    font-weight: 500;
}
/* /Components/Pages/Settings/SettingsConnectedAccountActionsMenu.razor.rz.scp.css */
.connected-account-actions[b-iugcgffxrk] {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.connected-account-actions__backdrop[b-iugcgffxrk] {
    position: fixed;
    inset: 0;
    z-index: 19;
    border: 0;
    background: transparent;
    cursor: default;
}

.connected-account-actions__menu[b-iugcgffxrk] {
    position: absolute;
    right: 0;
    top: calc(100% + 6px);
    z-index: 20;
    min-width: 220px;
    padding: 4px;
    border: 0.5px solid var(--shell-menu-border);
    border-radius: 8px;
    background: var(--shell-menu-bg);
    box-shadow: var(--shell-menu-shadow);
}

.connected-account-actions__menu[hidden][b-iugcgffxrk] {
    display: none;
}

.connected-account-actions__item[b-iugcgffxrk] {
    display: flex;
    width: 100%;
    min-height: 32px;
    align-items: center;
    border: 0;
    border-radius: 6px;
    background: transparent;
    color: var(--shell-menu-text);
    cursor: pointer;
    font: inherit;
    line-height: 1.2;
    padding: 7px 10px;
    text-align: left;
}

.connected-account-actions__item:hover:not(:disabled)[b-iugcgffxrk],
.connected-account-actions__item:focus-visible:not(:disabled)[b-iugcgffxrk] {
    background: var(--shell-menu-item-hover);
    outline: none;
}

.connected-account-actions__item--danger[b-iugcgffxrk] {
    color: var(--shell-menu-text-danger);
}

.connected-account-actions__item:disabled[b-iugcgffxrk] {
    color: var(--shell-text-muted);
    cursor: not-allowed;
}

.connected-account-actions__disabled-reason[b-iugcgffxrk] {
    display: block;
    color: var(--shell-text-muted);
    font-size: 0.78rem;
    line-height: 1.25;
    padding: 0 10px 7px;
}
/* /Components/Pages/Settings/SettingsInstanceInferenceProviderSection.razor.rz.scp.css */
.settings-inference-provider-section__title[b-0husylipvw] {
    display: inline-flex;
    min-width: 0;
    align-items: center;
    gap: 7px;
}

.settings-inference-provider-section__starting[b-0husylipvw] {
    color: var(--shell-text-secondary);
    font-size: 0.75rem;
    font-weight: 450;
    line-height: 1rem;
    white-space: nowrap;
}

.settings-inference-provider-section__warning[b-0husylipvw] {
    display: inline-flex;
    width: 18px;
    height: 18px;
    align-items: center;
    justify-content: center;
    color: var(--shell-danger-text, #dc2626);
}

.settings-inference-provider-section > .field-section__header[b-0husylipvw] {
    padding-right: 12px;
}
/* /Components/Pages/Settings/SettingsInstanceVersionSection.razor.rz.scp.css */
.version-status[b-h72qf4f8og] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

.version-progress[b-h72qf4f8og] {
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    min-width: 220px;
}

/* The design system ProgressBar has no indeterminate mode, so overlay a sliding
   indicator on the (empty, Value=0) track for checking / installing / relaunching. */
.version-progress[b-h72qf4f8og]  .version-progress__bar--indeterminate {
    position: relative;
    overflow: hidden;
}

.version-progress[b-h72qf4f8og]  .version-progress__bar--indeterminate::after {
    content: "";
    position: absolute;
    inset: 0;
    width: 40%;
    border-radius: inherit;
    background: currentColor;
    opacity: 0.55;
    animation: version-progress-slide-b-h72qf4f8og 1.15s ease-in-out infinite;
}

@keyframes version-progress-slide-b-h72qf4f8og {
    0% {
        transform: translateX(-60%);
    }

    100% {
        transform: translateX(260%);
    }
}
/* /Components/Pages/Settings/SettingsOrchestrationProjectRow.razor.rz.scp.css */
.orchestration-project-row__status[b-b5w12ddj66] {
    align-items: center;
    color: var(--text-secondary);
    display: flex;
    flex-wrap: wrap;
    font-size: 0.75rem;
    gap: 8px;
    justify-content: flex-end;
}

.orchestration-project-row__pill[b-b5w12ddj66] {
    background: var(--surface-secondary);
    border: 1px solid var(--border-subtle);
    border-radius: 999px;
    padding: 2px 8px;
}

.orchestration-project-row__pill--enabled[b-b5w12ddj66] {
    background: color-mix(in srgb, var(--color-success, #16a34a) 10%, transparent);
    border-color: color-mix(in srgb, var(--color-success, #16a34a) 30%, transparent);
    color: var(--color-success, #16a34a);
}
/* /Components/Pages/Settings/SettingsProjectOrchestrationOutcomeList.razor.rz.scp.css */
.project-orchestration-outcome-list__pill[b-q9e76iipo3] {
    background: var(--surface-secondary);
    border: 1px solid var(--border-subtle);
    border-radius: 999px;
    padding: 2px 8px;
    text-transform: capitalize;
}

.project-orchestration-outcome-list__state[b-q9e76iipo3] {
    color: var(--text-secondary);
    font-size: 0.75rem;
}
/* /Components/Pages/Settings/SettingsProjectOrchestrationPage.razor.rz.scp.css */
/* /Components/Pages/Settings/SettingsProjectOrchestrationWorkflowEditor.razor.rz.scp.css */
.project-orchestration-workflow-editor[b-8ii2xespd5] {
    display: contents;
}
/* /Components/Pages/Settings/SettingsProjectOrchestrationWorkflowList.razor.rz.scp.css */
.project-orchestration-workflow-list__status[b-wc1a7etn7x] {
    align-items: center;
    color: var(--text-secondary);
    display: flex;
    flex-wrap: wrap;
    font-size: 0.75rem;
    gap: 8px;
    justify-content: flex-end;
}

.project-orchestration-workflow-list__pill[b-wc1a7etn7x] {
    background: var(--surface-secondary);
    border: 1px solid var(--border-subtle);
    border-radius: 999px;
    padding: 2px 8px;
}

.project-orchestration-workflow-list__pill--enabled[b-wc1a7etn7x] {
    background: color-mix(in srgb, var(--color-success, #16a34a) 10%, transparent);
    border-color: color-mix(in srgb, var(--color-success, #16a34a) 30%, transparent);
    color: var(--color-success, #16a34a);
}
/* /Components/Shared/CommitDetailsModal.razor.rz.scp.css */
.aiva-commit-modal__pane[b-no20zunm84] {
    display: flex;
    min-width: 0;
    min-height: 0;
    height: 100%;
    flex-direction: column;
}

.aiva-commit-modal__summary[b-no20zunm84] {
    display: flex;
    flex: 0 0 auto;
    flex-direction: column;
    gap: 8px;
    max-height: 33%;
    padding: 16px 24px;
    overflow: auto;
    border-bottom: 0.5px solid var(--shell-border);
}

.aiva-commit-modal__summary-body[b-no20zunm84] {
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    font-size: 0.8125rem;
    line-height: 1.5rem;
    color: var(--shell-text);
}

.aiva-commit-modal__message[b-no20zunm84] {
    display: flex;
    min-height: 0;
    height: 100%;
    flex-direction: column;
    gap: 12px;
    padding: 20px 24px;
    overflow: auto;
}

.aiva-commit-modal__message-head[b-no20zunm84] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    gap: 10px;
    padding-bottom: 12px;
    border-bottom: 0.5px solid var(--shell-border);
}

.aiva-commit-modal__message-sha[b-no20zunm84] {
    font-family: var(--shell-font-mono, ui-monospace, monospace);
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--shell-text);
}

.aiva-commit-modal__message-stats[b-no20zunm84] {
    font-size: 0.75rem;
    font-weight: 450;
    color: var(--shell-text-muted, #8a8f98);
}

.aiva-commit-modal__message-body[b-no20zunm84] {
    min-height: 0;
    flex: 1 1 auto;
    white-space: pre-wrap;
    overflow-wrap: anywhere;
    font-size: 0.8125rem;
    line-height: 1.5rem;
    color: var(--shell-text);
}
/* /Components/Shared/CommitDiffExplorer.razor.rz.scp.css */
.aiva-commit-explorer[b-8d63eoz9zc] {
    display: flex;
    min-width: 0;
    min-height: 0;
    height: 100%;
    flex: 1 1 auto;
}

.aiva-commit-explorer__pane[b-8d63eoz9zc] {
    display: flex;
    min-width: 0;
    min-height: 0;
    flex-direction: column;
}

.aiva-commit-explorer__pane--nav[b-8d63eoz9zc] {
    flex: 0 0 300px;
    padding: 8px;
    border-right: 0.5px solid var(--shell-border);
}

.aiva-commit-explorer__pane--detail[b-8d63eoz9zc] {
    flex: 1 1 auto;
}
/* /Components/Shared/CommitDiffExplorerDetail.razor.rz.scp.css */
.aiva-commit-explorer__detail[b-czqr98ntfe] {
    display: flex;
    min-width: 0;
    min-height: 0;
    height: 100%;
    flex: 1 1 auto;
    flex-direction: column;
}

.aiva-commit-explorer__diff[b-czqr98ntfe] {
    min-height: 0;
    flex: 1 1 auto;
}
/* /Components/Shared/CommitDiffExplorerNav.razor.rz.scp.css */
.aiva-commit-explorer__nav[b-wd1ws833i1] {
    display: flex;
    min-width: 0;
    min-height: 0;
    height: 100%;
    flex: 1 1 auto;
    flex-direction: column;
    gap: 8px;
}

.aiva-commit-explorer__search[b-wd1ws833i1] {
    flex: 0 0 auto;
    margin: 0;
}

.aiva-commit-explorer__tree[b-wd1ws833i1] {
    display: flex;
    min-height: 0;
    flex: 1 1 auto;
    flex-direction: column;
    overflow: auto;
    scrollbar-width: none;
}

.aiva-commit-explorer__tree[b-wd1ws833i1]::-webkit-scrollbar {
    display: none;
}

.aiva-commit-explorer__tree[b-wd1ws833i1]  .file-tree {
    min-height: 0;
    flex: 1 1 auto;
}

.aiva-commit-explorer__footer[b-wd1ws833i1] {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-start;
    gap: 6px;
    margin-inline: -8px;
    padding: 8px 8px 0;
    border-top: 0.5px solid var(--shell-border);
}
