/* /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.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/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/InboxMailDetail.razor.rz.scp.css */
.inbox-mail-detail__body[b-a8ebx37661] {
    border-top: 1px solid var(--border-subtle);
    line-height: 1.55;
    padding: 1.25rem;
}

.inbox-mail-detail__body :deep(img)[b-a8ebx37661] {
    height: auto;
    max-width: 100%;
}

.inbox-mail-detail__text[b-a8ebx37661] {
    white-space: pre-wrap;
}
/* /Components/Pages/Inbox/InboxMailList.razor.rz.scp.css */
.inbox-mail-list[b-yoy8h2q013] {
    min-height: 100%;
}

.inbox-mail-list__subtitle[b-yoy8h2q013],
.inbox-mail-list__account[b-yoy8h2q013],
.inbox-mail-list__preview[b-yoy8h2q013],
.inbox-mail-list__reason[b-yoy8h2q013] {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.inbox-mail-list__subtitle[b-yoy8h2q013] {
    min-width: 0;
}

.inbox-mail-list__account[b-yoy8h2q013] {
    color: var(--text-muted);
    margin-left: 0.35rem;
}

.inbox-mail-list__account[b-yoy8h2q013]::before {
    content: "·";
    margin-right: 0.35rem;
}

.inbox-mail-list__preview[b-yoy8h2q013] {
    flex: 1;
    min-width: 0;
}

.inbox-mail-list__reason[b-yoy8h2q013] {
    color: var(--text-muted);
    flex: none;
    font-size: 0.72rem;
    margin-left: 0.4rem;
}
/* /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/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);
}
