@property --gradient-angle{syntax:"<angle>";initial-value:0deg;inherits:false}@keyframes gradient-angle{to{--gradient-angle:360deg}}
/* !important + compound intent: this must beat Tailwind's single-class
   `border-border` and `glass-panel`'s background regardless of stylesheet load
   order (globals.css vs this component-imported file). --composer-fill carries
   the box's own (glass) tint so the fill stays readable and only the ring spins. */.composer-focus-glow{border-color:transparent!important;background:var(--composer-fill,linear-gradient(#fff,#fff)) padding-box,conic-gradient(from var(--gradient-angle),transparent 0,#95298f 5%,#eccdf7 10%,#c95dc4 15%,transparent 22%) border-box!important;animation:gradient-angle 3.6s linear infinite}.vo-root{--vo-amp:0;position:relative;display:grid;place-items:center;isolation:isolate}.vo-root>*{grid-area:1/1}.vo--flat .vo-bloom,.vo--flat .vo-wave{display:none}.vo-bloom{width:118%;height:118%;border-radius:9999px;background:radial-gradient(circle at 50% 50%,color-mix(in oklch,#95298f 62%,transparent) 0,color-mix(in oklch,#5d2e8c 40%,transparent) 38%,transparent 70%);filter:blur(calc(var(--vo-size, 140px) * .11));opacity:.55;transform:translate(var(--vo-bloom-x,0),var(--vo-bloom-y,0));transition:opacity .5s ease}.vo-reactive{width:100%;height:100%;display:grid;place-items:center;transform:scale(calc(1 + var(--vo-amp) * .16));transition:transform .08s linear}.vo-sphere{position:relative;width:78%;height:78%;border-radius:9999px;background:radial-gradient(circle at 50% 38%,#8a4bc9 0,#5b2d9e 46%,#2c1468 100%);box-shadow:0 calc(var(--vo-size, 140px) * .05) calc(var(--vo-size, 140px) * .18) color-mix(in oklch,#2a1358 55%,transparent),0 0 calc(var(--vo-size, 140px) * .09) color-mix(in oklch,#95298f 40%,transparent);overflow:hidden;transform:translateZ(0)}.vo-fluid{position:absolute;inset:0;border-radius:9999px;animation:voFluidSpin 26s linear infinite}.vo-blob{position:absolute;mix-blend-mode:screen;filter:blur(calc(var(--vo-size, 140px) * .055));will-change:transform,border-radius}.vo-blob-1{width:74%;height:68%;left:-8%;top:26%;border-radius:58% 42% 55% 45%/52% 60% 40% 48%;background:radial-gradient(circle at 42% 40%,#c95dc4 0,color-mix(in oklch,#95298f 80%,transparent) 52%,transparent 78%);opacity:.95;animation:voBlobDrift1 13s ease-in-out infinite alternate}.vo-blob-2{width:70%;height:64%;right:-10%;top:-6%;border-radius:45% 55% 48% 52%/55% 45% 58% 42%;background:radial-gradient(circle at 58% 45%,#7a63f0 0,color-mix(in oklch,#4a3dbd 78%,transparent) 55%,transparent 80%);opacity:.9;animation:voBlobDrift2 17s ease-in-out infinite alternate}.vo-blob-3{width:56%;height:52%;left:20%;bottom:-6%;border-radius:52% 48% 60% 40%/48% 55% 45% 60%;background:radial-gradient(circle at 50% 45%,color-mix(in oklch,#eccdf7 85%,transparent) 0,color-mix(in oklch,#c95dc4 45%,transparent) 55%,transparent 80%);opacity:.75;animation:voBlobDrift3 11s ease-in-out infinite alternate}.vo-core{inset:31%;background:radial-gradient(circle at 50% 50%,#fff 0,#fff 14%,color-mix(in oklch,#eccdf7 80%,transparent) 34%,color-mix(in oklch,#c95dc4 40%,transparent) 58%,transparent 78%);filter:blur(calc(var(--vo-size, 140px) * .01));mix-blend-mode:screen;opacity:calc(.5 + var(--vo-amp) * .5);transform:scale(calc(.92 + var(--vo-amp) * .38));transition:opacity .09s linear,transform .09s linear}.vo-core,.vo-rim{position:absolute;border-radius:9999px}.vo-rim{inset:0;background:radial-gradient(circle at 50% 50%,transparent 52%,color-mix(in oklch,#331670 45%,transparent) 80%,color-mix(in oklch,#23104e 78%,transparent) 100%);box-shadow:inset 0 0 calc(var(--vo-size, 140px) * .02) color-mix(in oklch,#eccdf7 30%,transparent),inset 0 calc(var(--vo-size, 140px) * .014) calc(var(--vo-size, 140px) * .03) color-mix(in oklch,#eccdf7 45%,transparent),inset 0 calc(var(--vo-size, 140px) * -.016) calc(var(--vo-size, 140px) * .05) color-mix(in oklch,#95298f 40%,transparent)}.vo-sheen{position:absolute;inset:-6%;border-radius:9999px;background:conic-gradient(from 0deg,transparent 0deg,color-mix(in oklch,#eccdf7 45%,transparent) 40deg,transparent 120deg,transparent 1turn);mix-blend-mode:screen;opacity:.35;animation:voSheenSpin 14s linear infinite}.vo-ripple{width:82%;height:82%;border-radius:9999px;border:1.5px solid color-mix(in oklch,#c95dc4 55%,transparent);opacity:0}.vo-ripple-2{animation-delay:1.1s}.vo-wave{width:100%;height:100%;overflow:visible;opacity:0;transform-box:fill-box;transform-origin:center;transition:opacity .35s ease}.vo--idle .vo-sphere{animation:voBreath 6.5s ease-in-out infinite}.vo--idle .vo-bloom{opacity:.42;animation:voBloomBreath 6.5s ease-in-out infinite}.vo--idle .vo-core{opacity:.42}.vo--idle .vo-sheen{animation-duration:20s}.vo--listening .vo-bloom{opacity:.72}.vo--listening .vo-sphere{animation:voBreath 4s ease-in-out infinite}.vo--listening .vo-fluid{animation-duration:14s}.vo--listening .vo-blob-1{animation-duration:7s}.vo--listening .vo-blob-2{animation-duration:9s}.vo--listening .vo-blob-3{animation-duration:6s}.vo--listening .vo-core{opacity:calc(.6 + var(--vo-amp) * .4)}.vo--listening .vo-ripple{animation:voRipple 2.2s cubic-bezier(.22,.61,.36,1) infinite}.vo--thinking .vo-fluid{animation-duration:8s}.vo--thinking .vo-blob-1{animation-duration:4.5s}.vo--thinking .vo-blob-2{animation-duration:6s}.vo--thinking .vo-blob-3{animation-duration:3.8s}.vo--thinking .vo-sphere{animation:voHueShimmer 3.4s ease-in-out infinite}.vo--thinking .vo-core{opacity:.68}.vo--thinking .vo-sheen{animation-duration:6s;opacity:.5}.vo--thinking .vo-bloom{opacity:.6}.vo--speaking .vo-fluid{animation-duration:16s}.vo--speaking .vo-blob-1{animation-duration:8s}.vo--speaking .vo-blob-2{animation-duration:11s}.vo--speaking .vo-blob-3{animation-duration:7s}.vo--speaking .vo-wave{opacity:calc(.35 + var(--vo-amp) * .5);animation:voSheenSpin 9s linear infinite}.vo--speaking .vo-bloom{opacity:calc(.55 + var(--vo-amp) * .4)}.vo--error .vo-sphere{background:radial-gradient(circle at 34% 28%,color-mix(in oklch,#ffd9d9 60%,transparent) 0,transparent 32%),radial-gradient(circle at 50% 50%,#b0364a 0,#6f2233 60%,#2c1420 100%);animation:none}.vo--error .vo-bloom{opacity:.4;background:radial-gradient(circle at 50% 50%,color-mix(in oklch,#d34f5f 55%,transparent) 0,transparent 68%)}.vo--error .vo-blob,.vo--error .vo-fluid{animation:none}.vo--error .vo-blob{opacity:0}.vo--error .vo-core{opacity:.18}.vo--error .vo-sheen,.vo--error .vo-wave{opacity:0;animation:none}@keyframes voSheenSpin{to{transform:rotate(1turn)}}@keyframes voFluidSpin{to{transform:rotate(1turn)}}@keyframes voBlobDrift1{0%{transform:translate(0) rotate(0deg);border-radius:58% 42% 55% 45%/52% 60% 40% 48%}50%{transform:translate(16%,-14%) rotate(28deg);border-radius:45% 55% 42% 58%/60% 44% 56% 40%}to{transform:translate(6%,-26%) rotate(-18deg);border-radius:55% 45% 60% 40%/45% 58% 42% 55%}}@keyframes voBlobDrift2{0%{transform:translate(0) rotate(0deg);border-radius:45% 55% 48% 52%/55% 45% 58% 42%}50%{transform:translate(-18%,16%) rotate(-24deg);border-radius:58% 42% 52% 48%/44% 60% 40% 56%}to{transform:translate(-8%,30%) rotate(16deg);border-radius:48% 52% 44% 56%/58% 42% 55% 45%}}@keyframes voBlobDrift3{0%{transform:translate(0) rotate(0deg);border-radius:52% 48% 60% 40%/48% 55% 45% 60%}50%{transform:translate(-14%,-20%) rotate(32deg);border-radius:60% 40% 48% 52%/55% 45% 60% 40%}to{transform:translate(12%,-8%) rotate(-22deg);border-radius:44% 56% 55% 45%/60% 42% 52% 48%}}@keyframes voBreath{0%,to{transform:scale(1)}50%{transform:scale(1.045)}}@keyframes voBloomBreath{0%,to{transform:scale(1);opacity:.4}50%{transform:scale(1.08);opacity:.6}}@keyframes voRipple{0%{opacity:0;transform:scale(.62)}18%{opacity:calc(.45 + var(--vo-amp) * .35)}to{opacity:0;transform:scale(calc(1.55 + var(--vo-amp) * .5))}}@keyframes voHueShimmer{0%,to{filter:hue-rotate(0deg) saturate(1)}50%{filter:hue-rotate(-14deg) saturate(1.15)}}@media (prefers-reduced-motion:reduce){.composer-focus-glow{animation-duration:.01ms!important;animation-iteration-count:1!important}.vo-blob,.vo-bloom,.vo-fluid,.vo-ripple,.vo-sheen,.vo-sphere{animation:none!important}.vo-ripple,.vo-wave{opacity:0!important}.vo-sheen{opacity:.25!important}.vo-core{opacity:.45!important;transform:none!important}}