 :root{--voice-panel-width:240px;--voice-portrait-size:196px;--voice-gap:12px;--voice-radius:22px;--voice-control:44px}
.voice-panel{align-self:start;min-width:0;padding:16px;background:var(--surface);border:1px solid var(--line);border-radius:var(--voice-radius);box-shadow:var(--shadow);color:var(--ink);--voice-level:0}
.voice-panel-heading{display:flex;justify-content:space-between;align-items:center;gap:var(--voice-gap);font-family:var(--font-display)}
.voice-panel-heading>div{display:flex}.voice-panel .icon-button{min-width:var(--voice-control);min-height:var(--voice-control)}
.voice-portrait{display:grid;place-items:center;min-height:var(--voice-portrait-size);background:radial-gradient(ellipse,var(--cyan-soft),transparent 70%);border-radius:var(--voice-radius);margin-block:8px}
.voice-portrait img{width:var(--voice-portrait-size);height:var(--voice-portrait-size);object-fit:contain;transition:transform .18s ease}
.voice-panel[data-state=listening] .voice-portrait img{transform:translateY(-4px)}
.voice-panel[data-state=speaking] .voice-portrait img{animation:nico-breathe 1.1s ease-in-out infinite alternate}
.voice-state{font-weight:600;font-size:14px}.voice-hint{font-size:12px;line-height:1.5;color:var(--muted);margin:8px 0}
.voice-meter{height:4px;background:var(--line);border-radius:4px;overflow:hidden;margin-top:8px}.voice-meter i{display:block;width:100%;height:100%;background:var(--cyan);transform:scaleX(var(--voice-level));transform-origin:left;transition:transform .05s linear}
.voice-controls{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--voice-gap)}.voice-controls .button{flex:1;white-space:nowrap}
.voice-panel.floating{position:fixed;right:24px;bottom:24px;width:var(--voice-panel-width);z-index:20}
.voice-panel.compact .voice-portrait,.voice-panel.compact .voice-hint,.voice-panel.compact .voice-meter{display:none}
.voice-panel.compact .voice-controls{margin-top:8px}.voice-panel.compact .voice-presence{margin-top:8px}
@media(min-width:1200px){
 .chat-workspace.with-voice{grid-template-columns:180px minmax(220px,.9fr) minmax(320px,1.1fr)}
 .chat-workspace.with-voice .conversation-list-panel{grid-column:1;grid-row:1}
 .chat-workspace.with-voice .voice-panel{grid-column:2;grid-row:1;align-self:stretch;display:flex;flex-direction:column;justify-content:center}
 .chat-workspace.with-voice .chat-panel{grid-column:3;grid-row:1}
 .chat-workspace.with-voice .voice-panel-heading{margin-bottom:auto}
 .chat-workspace.with-voice .voice-portrait{height:clamp(196px,26vw,360px);min-height:196px}
 .chat-workspace.with-voice .voice-portrait img{width:100%;height:100%}
 .chat-workspace.with-voice .voice-presence{text-align:center}
 .chat-workspace.with-voice .voice-controls{margin-top:auto;padding-top:16px}
}
@media(max-width:1199px){
 .chat-workspace.with-voice .voice-panel{grid-column:1/-1;grid-row:1;display:flex;flex-direction:column;align-items:stretch;padding:16px}
 .chat-workspace.with-voice .voice-panel .voice-portrait{height:196px;min-height:196px;margin:8px 0}
 .chat-workspace.with-voice .voice-panel .voice-portrait img{width:196px;height:196px}
 .chat-workspace.with-voice .voice-presence{text-align:center}
 .voice-panel.floating .voice-portrait{min-height:120px}
 .voice-panel.floating .voice-portrait img{width:120px;height:120px}
}
@media(max-width:720px){.voice-panel.floating{right:12px;bottom:calc(76px + env(safe-area-inset-bottom));width:min(var(--voice-panel-width),calc(100vw - 24px))}.chat-workspace.with-voice{grid-template-rows:auto 190px minmax(489px,calc(100dvh - 120px))}.voice-controls .button{padding:8px;min-height:var(--voice-control);font-size:12px}.voice-panel.compact{display:block!important}}
@keyframes nico-breathe{to{transform:translateY(-3px)}}
@media(prefers-reduced-motion:reduce){.voice-portrait img{animation:none!important;transition:none}}

.voice-portrait{height:var(--voice-portrait-size)}.voice-portrait canvas{width:100%;height:100%;object-fit:contain}
@media(max-width:1199px){.chat-workspace .voice-portrait{height:80px}.voice-panel.floating .voice-portrait{height:120px}}

.voice-panel[hidden]{display:none!important}

.voice-panel.floating.compact #voiceMute,.voice-panel.floating.compact:not([data-state="speaking"]) #voiceStopAudio{display:none}
/* Microphone button: a microphone, crossed out while muted. */
.voice-controls .voice-mute{flex:0 0 auto;min-width:var(--voice-control);padding-inline:12px;display:inline-flex;align-items:center;justify-content:center}
.voice-mute svg{width:20px;height:20px}.voice-mute .mic-off,.voice-mute[aria-pressed=true] .mic-on{display:none}.voice-mute[aria-pressed=true] .mic-off{display:block}
.voice-mute[aria-pressed=true]{color:#b42318;border-color:#f3c2bd;background:#fdf1f0}
[data-theme=dark] .voice-mute[aria-pressed=true]{color:#ff9b91;border-color:#5c2a26;background:#2d1b1a}

/* The bottom nav was removed: the ☰ (top bar) and the conversation's ← lead to the menu. */

.voice-hint{color:var(--ink)}

@media(max-width:720px){.chat-workspace.with-voice .chat-panel{height:100%;min-height:489px;max-height:max(489px,calc(100dvh - 120px))}}

@media(max-width:720px){.conversation-page:has(.chat-workspace.with-voice){padding-bottom:calc(98px + env(safe-area-inset-bottom))}}

.wake-toggle{min-height:42px;padding:9px 15px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--muted);font-size:11px;white-space:nowrap}
.wake-toggle[aria-pressed=true]{background:#e3f6ed;border-color:#c1ead8;color:#12774f}.wake-toggle[data-mode=listening]{background:var(--cyan-soft);border-color:var(--cyan);color:var(--cyan)}
.wake-toggle[data-mode=thinking]{background:#fff0dc;color:#975d13;border-color:#f0dab4}
[data-theme=dark] .wake-toggle[aria-pressed=true]{background:#14372d;color:#89e3bd;border-color:#245742}
@media(max-width:600px){.topbar-actions:has(.wake-toggle) .focus-toggle{display:none}.wake-toggle{font-size:10px;padding:8px 11px;min-height:40px;max-width:165px;overflow:hidden;text-overflow:ellipsis}}

.voice-source-context{font-size:10px;color:var(--muted);line-height:1.6;margin:8px 0 0;overflow-wrap:anywhere}.voice-source-context:empty{display:none}
/* The call goes on in another chat: where it is, and the way back. */
.voice-call-origin{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;margin:8px 0 0;padding:8px 10px;border-radius:12px;background:var(--mint-soft);color:var(--mint);font-size:12px;line-height:1.4;overflow-wrap:anywhere}
.voice-call-origin[hidden]{display:none}.voice-call-origin span{flex:1 1 140px;font-weight:600}.voice-call-origin .button{min-height:32px;padding:6px 10px;font-size:12px}
.voice-caption{font-size:13px;line-height:1.45;color:var(--ink);margin:4px 0 0;max-height:4.4em;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}.voice-caption:empty{display:none}.voice-panel.compact .voice-caption{display:none}

/* A call inside the chat: lines said are messages marked with a microphone, tasks are cards. */
#page-conversation .msg.user.voice-line .who{display:block;margin-bottom:4px;font-size:10.5px;letter-spacing:.08em;color:inherit;opacity:.85}
.voice-line .who::before{content:"";display:inline-block;width:10px;height:10px;margin-right:4px;vertical-align:-1px;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 15a3 3 0 0 0 3-3V5a3 3 0 0 0-6 0v7a3 3 0 0 0 3 3zm5-3a5 5 0 0 1-10 0H5a7 7 0 0 0 6 6.9V21h2v-2.1A7 7 0 0 0 19 12z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 15a3 3 0 0 0 3-3V5a3 3 0 0 0-6 0v7a3 3 0 0 0 3 3zm5-3a5 5 0 0 1-10 0H5a7 7 0 0 0 6 6.9V21h2v-2.1A7 7 0 0 0 19 12z'/%3E%3C/svg%3E") center/contain no-repeat}
.voice-task{width:min(100%,640px);margin:8px 0 32px;padding:12px 14px;border:1px solid var(--line);border-left:3px solid var(--cyan);border-radius:16px;background:var(--surface);color:var(--ink)}
.voice-task header{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px}.voice-task header strong{font-size:14px}
.voice-task-badge{font-size:10.5px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--cyan)}
.voice-task-status{margin-left:auto;padding:2px 9px;border-radius:999px;font-size:12px;background:var(--cyan-soft);color:var(--cyan)}
.voice-task-stop{min-height:26px;padding:2px 9px;border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:600;color:var(--ink)}.voice-task-stop:hover{border-color:var(--amber);color:var(--amber)}.voice-task-stop[hidden]{display:none}
.voice-task[data-status=completed]{border-left-color:var(--mint)}.voice-task[data-status=completed] .voice-task-status{background:var(--mint-soft);color:var(--mint)}
.voice-task:is([data-status=failed],[data-status=interrupted],[data-status=cancelled],[data-status=waiting_for_approval]){border-left-color:var(--amber)}
.voice-task:is([data-status=failed],[data-status=interrupted],[data-status=cancelled],[data-status=waiting_for_approval]) .voice-task-status{background:var(--amber-soft);color:var(--amber)}
.voice-task-request{margin:6px 0 0;font-size:13px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.voice-task-step{margin:6px 0 0;font-size:12.5px;font-style:italic;color:var(--muted)}.voice-task-step:empty{display:none}
.voice-task-result{margin-top:8px;font-size:14.5px}.voice-task-result:empty{display:none}
.voice-task time{display:block;margin-top:6px;font-size:11px;color:var(--muted)}
