#voice-panel{position:fixed;left:var(--command-left,50%);bottom:calc(var(--command-bottom,70px) + 64px);transform:translateX(-50%);z-index:var(--layer-stack-90);width:min(620px,var(--command-width,calc(100vw - 24px)));max-height:min(50vh,460px);overflow:auto;overscroll-behavior:contain;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:14px;padding:14px;box-sizing:border-box;box-shadow:0 8px 24px #0002;font:14px/1.5 Inter,"PingFang SC",sans-serif}
#voice-panel[hidden],#voice-panel [hidden]{display:none!important}
#voice-panel header{display:flex;gap:var(--space-3);align-items:center}#voice-panel header button{margin-left:auto}
#voice-ring{display:inline-block;width:18px;height:18px;border:3px solid var(--muted);border-radius:50%;transition:transform 80ms linear}
#voice-panel button{padding:7px var(--space-3);border:1px solid var(--line);border-radius:8px;background:var(--surface);color:inherit;cursor:pointer;margin:var(--space-1) 6px 0 0;min-height:36px;white-space:nowrap}
#voice-panel button:disabled{opacity:.5;cursor:default}#voice-panel button:focus-visible,#voice-toolbar-mic:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}
#voice-time{font-variant-numeric:tabular-nums}#voice-guide,#voice-message{margin:var(--space-2) 0;color:var(--muted)}#voice-message:empty{display:none}
#voice-panel textarea{width:100%;box-sizing:border-box;resize:vertical;max-height:110px;min-height:62px;font:inherit;border:1px solid var(--line);border-radius:8px;padding:var(--space-2);background:var(--surface);color:inherit}#voice-panel textarea.draft{color:var(--muted)}
#voice-panel details{margin-top:10px}#voice-panel summary{cursor:pointer}#voice-panel details label{display:flex;align-items:center;gap:var(--space-2);padding-top:var(--space-2)}
.voice-result{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.voice-result p{margin:0 0 var(--space-1);overflow-wrap:anywhere}.voice-outcome{font-size:12px;color:var(--muted)}
html body #leftSidebar #voice-toolbar-mic{min-width:44px!important;min-height:44px!important;flex-basis:44px!important}
#voice-toolbar-mic{color:inherit;background:transparent;border:0;border-radius:12px;cursor:pointer;touch-action:none}#voice-toolbar-mic[aria-pressed=true],#ai-assistant-mic[aria-pressed=true]{color:var(--ink)!important;background:var(--line)!important}
#ai-assistant-mic{min-width:44px;min-height:44px;touch-action:none;user-select:none;-webkit-user-select:none}
@media(max-width:640px){#voice-panel{max-height:42vh;padding:var(--space-3)}#voice-panel button{min-height:44px}#voice-panel textarea{font-size:16px}}

/* Execution and its latest outcome use the same reserved strip above the input. */
#voice-expand{display:none}
#voice-panel[data-compact="true"]{top:auto;bottom:calc(var(--command-bottom,70px) + 64px);height:54px;max-height:54px;padding:var(--space-1) var(--space-2);display:flex;align-items:center;gap:var(--space-2);width:min(620px,var(--command-width,calc(100vw - 24px)));overflow:hidden}
#voice-panel[data-compact="true"] > :not(#voice-expand):not(#voice-results){display:none}
#voice-panel[data-compact="true"] #voice-results{flex:1;min-width:0;order:-1}
#voice-panel[data-compact="true"] .voice-result{display:none;margin:0;padding:0;border:0}
/* 收成一行时最新一条仍保留「撤销 / 追问选项 / 重说」：每句话执行后都能一键撤销或改选（语音画板硬要求） */
#voice-panel[data-compact="true"] .voice-result:last-child{display:flex;align-items:center;gap:6px;overflow-x:auto;scrollbar-width:none}
#voice-panel[data-compact="true"] .voice-result > p:not(.voice-outcome){display:none}
#voice-panel[data-compact="true"] .voice-result button,#voice-panel[data-compact="true"] .voice-options{flex:none;margin:0}
#voice-panel[data-compact="true"] .voice-options{display:flex;gap:6px}
#voice-panel[data-compact="true"] .voice-outcome{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}
#voice-panel:has(.voice-result) #voice-expand{display:block;flex:none;margin:0;min-height:44px}
#voice-panel[data-compact="false"][data-state="idle"] #voice-guide{display:none}

/* The mobile timeline hides the writing dock; keep its voice entry available
   above the canvas without covering the playback or scene controls. */
@media(max-width:640px){html[data-timeline-open] body > #voice-toolbar-mic{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:0;font:12px/1 sans-serif;visibility:visible;pointer-events:auto;position:fixed;top:calc(var(--s1-vv-top,0px) + var(--workspace-nav-height,44px) + 72px + env(safe-area-inset-top));right:12px;left:auto;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;background:var(--surface);border:1px solid var(--line);z-index:var(--layer-stack-71)}}

/* 追问选项：可点的小胶囊（触控至少 36px） */
#voice-panel .voice-options{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
#voice-panel .voice-option{min-height:36px;padding:var(--space-1) var(--space-3);border-radius:999px;border:1px solid var(--line);background:transparent;color:inherit;font-size:13px;cursor:pointer}
#voice-panel .voice-option:hover{background:var(--surface-hover)}
#voice-panel[data-compact="true"][data-state="speaking"] #voice-message{display:block;flex:1;min-width:0;margin:0;font-size:13px}
#voice-panel[data-compact="true"][data-state="speaking"] #voice-results{display:none}

/* Waiting for a command is thinking; speaking is reserved for actual audio. */
#voice-panel[data-compact="true"][data-state="thinking"] #voice-message{display:block;flex:1;min-width:0;margin:0;font-size:13px}
#voice-panel[data-compact="true"][data-state="thinking"] #voice-results{display:none}
