.voice-bubble{--vb-inset-top: env(safe-area-inset-top, 0px);--vb-inset-right: env(safe-area-inset-right, 0px);--vb-inset-bottom: env(safe-area-inset-bottom, 0px);--vb-inset-left: env(safe-area-inset-left, 0px);--vb-size: 64px;--vb-dock-gap: var(--sa-tabbar-gap, 8px);position:fixed;top:auto;left:50%;right:auto;margin-left:calc(var(--vb-size) / -2);bottom:calc(12px + env(safe-area-inset-bottom,0px));z-index:3500;width:var(--vb-size);height:var(--vb-size);padding:0;border-radius:50%;border:1px solid var(--chipBorder);background:var(--card);color:var(--fg);box-shadow:0 6px 24px #00000038;display:none;align-items:center;justify-content:center;cursor:grab;transform-origin:center center;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.voice-bubble.vb-visible{display:flex}.voice-bubble svg{width:26px;height:26px;pointer-events:none}.vb-dot{position:absolute;top:7px;right:7px;width:10px;height:10px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px var(--successBg, #16813e);pointer-events:none}.voice-bubble.vb-has-new{color:#fff;background:var(--successBg, #16813e);border-color:color-mix(in srgb,var(--successBg, #16813e) 70%,var(--chipBorder))}.voice-bubble.vb-has-new:after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;animation:vb-glow 2.2s ease-in-out infinite}@keyframes vb-glow{0%,to{box-shadow:0 0 color-mix(in srgb,var(--successBg, #16813e) 55%,transparent)}50%{box-shadow:0 0 0 12px color-mix(in srgb,var(--successBg, #16813e) 0%,transparent),0 0 18px 4px color-mix(in srgb,var(--successBg, #16813e) 45%,transparent)}}.voice-bubble.vb-recording{color:#fff;background:var(--dangerBg, #ef4444);border-color:color-mix(in srgb,var(--dangerBg, #ef4444) 70%,var(--chipBorder));cursor:grabbing}.voice-bubble.vb-recording:after{content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;animation:vb-rec-pulse 1.1s ease-in-out infinite}@keyframes vb-rec-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--dangerBg, #ef4444) 55%,transparent)}50%{box-shadow:0 0 0 14px color-mix(in srgb,var(--dangerBg, #ef4444) 0%,transparent)}}.voice-bubble.vb-cancel-armed{background:var(--chipBg);color:var(--fg);border-color:var(--chipBorder);animation:none;opacity:.85}.voice-bubble.vb-uploading{opacity:.7}.voice-bubble.vb-dragging{cursor:grabbing;box-shadow:0 12px 36px #0000004d}@media(prefers-reduced-motion:reduce){.voice-bubble.vb-has-new:after,.voice-bubble.vb-recording:after{animation:none}}
