.ovs-voice{--voice-accent:#a78bfa;--voice-level:0;box-sizing:border-box;position:fixed;inset:0;margin:auto;width:min(640px,94vw);height:fit-content;max-height:94dvh;padding:28px;border:1px solid color-mix(in srgb,var(--voice-accent) 45%,transparent);border-radius:28px;background:radial-gradient(ellipse at 50% 12%,#222538,#0a0c14 70%);color:#f4f4fa;text-align:center;overflow:auto;box-shadow:0 30px 120px #0009;font-family:inherit}.ovs-voice::backdrop{background:#03050dc9;backdrop-filter:blur(12px)}.voice-top{display:flex;align-items:center;justify-content:space-between;font-size:11px;letter-spacing:2px;color:#b8bdcc}.voice-top button{font-size:28px}.ovs-voice button{font:inherit;color:inherit;cursor:pointer;background:#ffffff0c;border:1px solid #ffffff28;border-radius:30px;padding:12px 20px}.ovs-voice button:focus-visible{outline:3px solid var(--voice-accent);outline-offset:3px}.ovs-voice button[hidden]{display:none}.voice-orb{position:relative;width:132px;height:132px;margin:30px auto;border-radius:50%;background:radial-gradient(circle at 33% 26%,#fff9,var(--voice-accent) 9%,#12212c 62%,#02030b 80%);box-shadow:0 0 calc(25px + var(--voice-level)*70px) color-mix(in srgb,var(--voice-accent) 40%,transparent);transform:scale(calc(1 + var(--voice-level)*.15));transition:transform .12s}.voice-orb i,.voice-orb b{position:absolute;inset:-12px;border:1px solid var(--voice-accent);border-radius:48% 52% 39% 61%;opacity:.55;animation:voice-orbit 9s linear infinite}.voice-orb b{inset:-20px;animation-direction:reverse;animation-duration:13s;opacity:.2}.ovs-voice[data-state=available] .voice-orb i,.ovs-voice[data-state=available] .voice-orb b{animation-play-state:paused}.ovs-voice h2{font-size:30px;margin:12px 0}.ovs-voice [data-clock]{font-size:12px;color:#b5bccc}.voice-captions{max-height:210px;overflow:auto;text-align:left;line-height:1.6;font-size:14px}.voice-captions strong{color:var(--voice-accent)}.voice-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin:24px 0}.voice-actions [data-start]{background:var(--voice-accent);color:#0c0c16;font-weight:700}.voice-actions [data-end]{color:#ffb7b7;border-color:#fe727255}.voice-notice{font-size:12px;line-height:1.6;color:#aeb3c2}.ovs-voice [data-error]{color:#ffc2a0;font-size:14px}@keyframes voice-orbit{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.voice-orb i,.voice-orb b{animation:none!important}.voice-orb{transition:none;transform:none}}

.voice-tools{font-size:12px;text-align:left;color:#c6e8dc;max-height:110px;overflow:auto}.voice-tools a{color:var(--voice-accent);text-decoration:underline}.voice-captions{margin-top:16px}.ovs-voice.voice-following{inset:auto 18px 18px auto;margin:0;width:min(430px,94vw);max-height:70dvh;padding:20px;box-shadow:0 20px 80px #000a}.voice-following .voice-orb{width:64px;height:64px;margin:14px auto}.voice-following .voice-captions{max-height:130px}.voice-following .voice-notice{font-size:10px}.voice-following h2{font-size:22px}.voice-following .voice-actions{gap:6px;margin:12px 0}.voice-following button{padding:9px 13px}@media(max-width:600px){.ovs-voice.voice-following{right:3vw;bottom:12px;max-height:65dvh}}

.conversation-tools{font-size:12px;line-height:1.6;border-left:2px solid var(--conversation-accent,#a7cbff);padding-left:12px;margin-top:12px;color:#b7cfcd}.conversation-tools a{color:inherit;text-decoration:underline}

/* Keep microphone controls above legacy nonmodal notices. */
.ovs-voice.voice-following{z-index:2147483000}

.ovs-voice{max-height:calc(100dvh - 32px);padding-top:20px}.ovs-voice .voice-top{position:sticky;top:-20px;z-index:2;background:#10121e;padding:8px 0}.ovs-voice .voice-orb{width:110px;height:110px;margin:12px auto}.ovs-voice .voice-actions{position:sticky;bottom:-28px;padding:14px 0;background:#0a0c14;z-index:2}.ovs-voice [data-text]{border-color:var(--voice-accent);color:var(--voice-accent)}

.voice-protection{display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;margin-top:12px}.voice-protection-note{font-size:12px;opacity:.8;margin:8px 0}.voice-protection input{accent-color:var(--voice-accent)}
