.voice-assistant [hidden]{display:none!important}.voice-assistant{position:fixed;left:1.25rem;bottom:1.25rem;z-index:970;animation:.5s cubic-bezier(.2,.8,.2,1) both voiceAssistantEnter}@keyframes voiceAssistantEnter{from{opacity:0;transform:translateY(14px) scale(.94)}to{opacity:1;transform:none}}.voice-fab{position:relative;display:flex;align-items:center;gap:9px;background:var(--ink);color:var(--bg);border:none;border-radius:999px;padding:13px 18px 13px 14px;font-weight:600;font-size:14px;cursor:pointer;box-shadow:0 6px 20px var(--shadow-md);transition:transform .25s cubic-bezier(.2,.8,.2,1),box-shadow .25s}.voice-fab:focus-visible,.voice-fab:hover{transform:translateY(-2px);box-shadow:0 10px 26px var(--shadow-lg)}.voice-fab:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.voice-fab-icon{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--accent-yellow);color:var(--accent-ink);flex-shrink:0}.voice-fab-icon .mi{width:17px;height:17px}.voice-fab-label{white-space:nowrap}.voice-fab-live-dot{position:absolute;top:6px;right:8px;width:9px;height:9px;border-radius:50%;background:#ef5350;box-shadow:0 0 0 2px var(--ink);animation:1.6s ease-in-out infinite voiceLivePulse}@keyframes voiceLivePulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(1.25)}}.voice-panel{position:absolute;bottom:calc(100% + 12px);left:0;width:min(340px,calc(100vw - 2.5rem));background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-lift);padding:16px;display:flex;flex-direction:column;gap:10px;opacity:0;visibility:hidden;pointer-events:none;transform:translateY(10px) scale(.96);transform-origin:bottom left;transition:opacity .2s,transform .2s cubic-bezier(.2,.8,.2,1),visibility 0s linear .2s}.voice-panel.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:none;transition:opacity .22s,transform .22s cubic-bezier(.2,.8,.2,1),visibility linear}.voice-panel.is-open.is-yielding{opacity:.25;pointer-events:none}.voice-panel-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.voice-panel-title{display:flex;align-items:center;gap:7px;font-weight:700;font-size:15px;margin:0}.voice-panel-title .mi{color:currentColor}.voice-panel-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:0 0;color:var(--ink-soft);cursor:pointer;flex-shrink:0}.voice-panel-close:hover{background:var(--bg);color:var(--ink)}.voice-panel-close:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.voice-panel-tagline{margin:0;font-size:13.5px;color:var(--ink-soft);line-height:1.45}.voice-orb-zone{display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 0}.voice-orb[data-speaker=none]{display:none}.voice-orb{display:flex;align-items:flex-end;gap:4px;height:22px}.voice-orb-bar{width:4px;height:8px;border-radius:2px;background:var(--ink-soft);opacity:.5;transition:background-color .2s;animation:1.8s ease-in-out infinite voiceOrbIdle}.voice-orb-bar:first-child{animation-delay:-1.2s}.voice-orb-bar:nth-child(2){animation-delay:-.9s}.voice-orb-bar:nth-child(3){animation-delay:-.6s}.voice-orb-bar:nth-child(4){animation-delay:-.3s}.voice-orb-bar:nth-child(5){animation-delay:0s}@keyframes voiceOrbIdle{0%,100%{height:6px}50%{height:10px}}.voice-orb[data-speaker=connecting] .voice-orb-bar{background:var(--ink-soft);opacity:.7;animation-name:voiceOrbConnecting;animation-duration:1s}@keyframes voiceOrbConnecting{0%,100%{height:5px}50%{height:18px}}.voice-orb[data-speaker=assistant] .voice-orb-bar{background:var(--accent-yellow-dk);opacity:1;animation-name:voiceOrbTalk;animation-duration:.75s}.voice-orb[data-speaker=user] .voice-orb-bar{background:var(--ink);opacity:1;animation-name:voiceOrbTalk;animation-duration:.6s}@keyframes voiceOrbTalk{0%,100%{height:6px}50%{height:22px}}.voice-orb[data-speaker=listening] .voice-orb-bar{background:var(--ink-soft);opacity:.55;animation-name:voiceOrbIdle;animation-duration:2.4s}.voice-orb-label{margin:0;font-size:11.5px;text-align:center;color:var(--ink-soft);min-height:1.3em}.voice-orb[data-speaker=none]+.voice-orb-label{display:none}.voice-transcript{max-height:160px;overflow-y:auto;display:flex;flex-direction:column;gap:8px;padding:2px 2px 2px 0}.voice-transcript-turn{max-width:86%;display:flex;flex-direction:column;gap:2px}.voice-transcript-turn--assistant{align-self:flex-start;align-items:flex-start}.voice-transcript-turn--user{align-self:flex-end;align-items:flex-end}.voice-transcript-speaker{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft);padding:0 4px}.voice-transcript-turn--assistant .voice-transcript-speaker{color:var(--accent-yellow-dk)}.voice-transcript-text{margin:0;font-size:12.5px;line-height:1.45;border-radius:12px;padding:7px 11px}.voice-transcript-turn--assistant .voice-transcript-text{background:var(--bg);color:var(--ink);border-bottom-left-radius:3px}.voice-transcript-turn--user .voice-transcript-text{background:var(--ink);color:var(--bg);border-bottom-right-radius:3px}.voice-transcript-turn.is-typing .voice-transcript-text::after{content:'';display:inline-block;width:2px;height:1em;vertical-align:text-bottom;margin-left:3px;background:currentColor;animation:.8s steps(1) infinite voiceTypingCursor}@keyframes voiceTypingCursor{0%,49%{opacity:1}100%,50%{opacity:0}}.voice-text-pulse{animation:.25s voiceTextPulse}@keyframes voiceTextPulse{from{opacity:.55}to{opacity:1}}.voice-transcript-divider{display:flex;align-items:center;gap:8px;margin:4px 0;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-soft);opacity:.7}.voice-transcript-divider::after,.voice-transcript-divider::before{content:'';flex:1;height:1px;background:var(--line)}.voice-panel-status{margin:0;font-size:12.5px;color:var(--ink-soft);min-height:1.2em}.voice-panel-status.is-error{color:#d32f2f}.voice-live-note{margin:0;font-size:13px;font-weight:700;font-family:var(--mono, monospace);background:color-mix(in srgb,var(--accent-yellow) 18%,transparent);border-radius:8px;padding:6px 10px}.voice-panel-actions{display:flex;align-items:center;justify-content:center;gap:12px}.voice-call-btn,.voice-mute-btn{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;flex-shrink:0;cursor:pointer;transition:transform .2s cubic-bezier(.2,.8,.2,1),box-shadow .2s,background-color .2s,border-color .2s}.voice-call-btn .mi,.voice-mute-btn .mi{width:22px;height:22px}.voice-call-btn{border:none;background:var(--ink);color:var(--bg);box-shadow:0 4px 14px var(--shadow-md)}.voice-call-btn:focus-visible,.voice-call-btn:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 8px 20px var(--shadow-lg)}.voice-call-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:3px}.voice-call-btn:disabled{opacity:.6;cursor:wait}.voice-call-btn[data-state=in-call]{background:#d32f2f}.voice-call-btn[data-state=in-call] .mi{transform:rotate(135deg)}.voice-call-btn[data-state=connecting] .mi,.voice-call-btn[data-state=loading] .mi{opacity:.6}.voice-mute-btn{background:0 0;border:1px solid var(--line);color:var(--ink)}.voice-mute-btn:focus-visible:not(:disabled),.voice-mute-btn:hover:not(:disabled){background:var(--surface-alt);border-color:var(--accent-yellow-dk);transform:translateY(-2px)}.voice-mute-btn:focus-visible{outline:3px solid var(--focus-ring);outline-offset:2px}.voice-mute-btn:disabled{opacity:.4;cursor:not-allowed}.voice-mute-btn.is-muted{background:color-mix(in srgb,#d32f2f 12%,transparent);border-color:#d32f2f;color:#d32f2f}.voice-panel-hint{margin:0;font-size:11.5px;color:var(--ink-soft);opacity:.8;text-align:center}@media (max-width:720px){.voice-fab-label{display:none}.voice-fab{padding:13px}.voice-panel{width:min(320px,calc(100vw - 2rem))}}@media (prefers-reduced-motion:reduce){.voice-assistant{animation:none}.voice-panel,.voice-panel.is-open{transition:opacity .01s linear;transform:none}.voice-call-btn,.voice-fab,.voice-fab-live-dot,.voice-mute-btn,.voice-orb-bar{animation:none;transition:none}.voice-transcript-turn.is-typing .voice-transcript-text::after{animation:none;opacity:1}.voice-text-pulse{animation:none}}