.voice-wave-visual { --voice-wave-blue: #7fbcff; --voice-wave-green: #7fd8a0; --voice-wave-teal: #5dd3bf; overflow: visible; color: var(--ink, var(--lp-text, #45505f)); }
.voice-wave-visual stop:nth-child(1) { stop-color: var(--voice-wave-blue); }
.voice-wave-visual stop:nth-child(2) { stop-color: var(--voice-wave-green); }
.voice-wave-visual stop:nth-child(3) { stop-color: var(--voice-wave-teal); }
:root[data-theme=light] .voice-wave-visual { --voice-wave-blue: #286ca6; --voice-wave-green: #238049; --voice-wave-teal: #08705f; }
@media (prefers-color-scheme: light) { :root:not([data-theme]) .voice-wave-visual { --voice-wave-blue: #286ca6; --voice-wave-green: #238049; --voice-wave-teal: #08705f; } }
.voice-wave-visual .voice-wave-orbit { fill: none; stroke: currentColor; stroke-width: 1; stroke-dasharray: 2 9; opacity: .3; }
.voice-wave-visual .voice-wave-inner { stroke-dasharray: none; opacity: .2; }
.voice-wave-visual .voice-wave-paths path { fill: none; stroke: inherit; stroke-width: 2; stroke-linecap: round; }
.voice-wave-visual .voice-wave-paths path:nth-child(2) { opacity: .35; stroke-width: 4; }
.voice-wave-visual .voice-wave-paths path:nth-child(3) { opacity: .15; stroke-width: 7; }
.voice-wave-visual .voice-wave-spokes { stroke: var(--voice-wave-green); stroke-width: 2; stroke-linecap: round; opacity: .65; }
.voice-wave-visual .voice-wave-mic { fill: none; stroke: currentColor; stroke-width: 2.5; stroke-linecap: round; }
.voice-wave-visual .voice-wave-halo { fill: var(--terminal, var(--lp-control, transparent)); stroke: var(--edge, var(--lp-edge, currentColor)); stroke-width: 1.5; }
.voice-wave-visual .voice-wave-pad { fill: var(--panel, var(--lp-panel, transparent)); stroke: var(--edge, var(--lp-edge, currentColor)); stroke-width: 1.5; }
.voice-wave-visual:is([data-phase=recording], [data-phase=busy], [data-phase=starting]) :is(.voice-wave-halo, .voice-wave-pad) { opacity: 0; }
.voice-wave-visual[data-phase=idle] :is(.voice-wave-spokes, .voice-wave-orbit) { opacity: 0; }
.voice-wave-visual[data-phase=busy] .voice-wave-paths { transform-origin: 180px 108px; animation: voice-wave-think 1.1s ease-in-out infinite; }
.voice-wave-visual:is([data-phase=busy], [data-phase=starting]) .voice-wave-spokes { animation: voice-wave-ring 1.1s ease-in-out infinite; }
.voice-wave-compact { width: 24px; height: 20px; }
.voice-wave-compact :is(.voice-wave-halo, .voice-wave-pad) { display: none; }
.voice-wave-compact .voice-wave-mic { transform: translate(144px, 66px) scale(2); stroke-width: 4; }
.voice-wave-compact .voice-wave-paths path { stroke-width: 8; }
.voice-wave-compact .voice-wave-paths path:nth-child(2) { stroke-width: 10; }
.voice-wave-compact .voice-wave-paths path:nth-child(3) { stroke-width: 12; }
.voice-wave-compact .voice-wave-spokes { stroke-width: 8; }
.voice-wave-compact .voice-wave-orbit { stroke-width: 4; }
@keyframes voice-wave-think { 0%, 100% { transform: scale(.96) rotate(-8deg); opacity: .65; } 50% { transform: scale(1.04) rotate(8deg); opacity: 1; } }
@keyframes voice-wave-ring { 0%, 100% { opacity: .3; } 50% { opacity: .75; } }
@media (prefers-reduced-motion: reduce) { .voice-wave-visual .voice-wave-paths, .voice-wave-visual .voice-wave-spokes { animation: none !important; } }
html[data-voice-hidden=true] .voice-wave-visual * { animation-play-state: paused !important; }
