.syvo-orb{--syvo-orb-size:clamp(164px,26vw,228px);position:relative;display:inline-grid;place-items:center;width:var(--syvo-orb-size);height:var(--syvo-orb-size);isolation:isolate;flex:none;border:0;border-radius:50%;padding:0;background:transparent;color:inherit;overflow:visible;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
button.syvo-orb{cursor:pointer;touch-action:none;min-width:0;min-height:44px;max-width:var(--syvo-orb-size);aspect-ratio:1}
button.syvo-orb[data-orb-pressed=true]{transform:scale(.97)}
.syvo-orb:focus-visible{outline:3px solid #88eaff;outline-offset:7px}
.syvo-orb::before{content:"";position:absolute;inset:9%;z-index:-1;border-radius:50%;background:radial-gradient(ellipse at 28% 19%,#e5f7ff 0%,#8594ff 8%,transparent 21%),radial-gradient(ellipse at 68% 78%,#32dbff77,transparent 47%),radial-gradient(circle at 50% 45%,#091530 36%,#365bbc 73%,#80eaff 91%,#a7b2ff);box-shadow:inset 0 0 12px #a4eaff88,0 0 30px #3d75ed33}
.syvo-orb::after{content:"";position:absolute;z-index:-2;bottom:0;left:12%;width:76%;height:6%;border-radius:50%;background:radial-gradient(ellipse,#367aff66,transparent 68%);filter:blur(5px)}
.syvo-orb__canvas{display:block;position:relative;z-index:1;width:100%;height:100%;border-radius:50%;pointer-events:none}
.syvo-orb__canvas[hidden]{display:none}
.syvo-orb[data-orb-paused=true]::before{animation-play-state:paused}
.syvo-orb[data-orb-renderer=webgl]::before{opacity:0}
.syvo-orb[data-orb-renderer=css]::before{animation:syvo-orb-fallback-flow 12s ease-in-out infinite alternate}
.syvo-orb[data-orb-state=listening]{filter:drop-shadow(0 0 9px #35d9ff3b)}
.syvo-orb[data-orb-state=thinking]{filter:drop-shadow(0 0 10px #8160ff40)}
.syvo-orb[data-orb-state=speaking]{filter:drop-shadow(0 0 12px #4b9cff40)}
.syvo-orb[data-orb-state=error]::before{background:radial-gradient(circle at 30% 25%,#ffd3c1,#612d67 43%,#1c102d 73%,#fc8e7f)}
.syvo-orb[data-orb-state=error]{filter:drop-shadow(0 0 10px #ff8e6940)}
.syvo-orb[data-orb-state=error] .syvo-orb__canvas{outline:1px solid #ffad8a66;outline-offset:-17px}
.syvo-orb__hint{font-size:.8rem;color:var(--muted,#9daabd);margin:4px auto 12px;line-height:1.4}
.syvo-voice-first__hero>.syvo-orb{margin:12px auto 0}
.syvo-voice-dock>.syvo-voice-dock__toggle.syvo-orb{--syvo-orb-size:76px;width:76px;max-width:76px;min-width:44px;min-height:44px;padding:0;pointer-events:auto;background:transparent;border:0;box-shadow:none}
.syvo-voice-dock:not([data-home=true])[data-open=false]{width:76px;max-width:76px}
@media(max-height:480px){.syvo-voice-dock>.syvo-voice-dock__toggle.syvo-orb{--syvo-orb-size:60px;width:60px;max-width:60px}}
@media(prefers-reduced-motion:reduce){.syvo-orb,.syvo-orb::before,.syvo-orb::after{animation:none!important;transition:none!important}button.syvo-orb[data-orb-pressed=true]{transform:none}}
@media(forced-colors:active){.syvo-orb{border:2px solid ButtonText}.syvo-orb::before,.syvo-orb::after,.syvo-orb__canvas{visibility:hidden}.syvo-orb::before{visibility:visible;background:ButtonFace;box-shadow:none;opacity:1!important;border:2px solid Highlight}}
@keyframes syvo-orb-fallback-flow{from{transform:rotate(-14deg);filter:hue-rotate(-12deg)}to{transform:rotate(25deg);filter:hue-rotate(20deg)}}
.syvo-voice-dock[data-unified=true]:not([hidden])>.syvo-voice-dock__toggle{position:fixed!important;display:inline-grid!important;right:auto!important;bottom:auto!important;z-index:85;width:96px!important;height:96px!important;max-width:96px!important;min-width:44px;min-height:44px;margin:0!important;padding:0;border:0;border-radius:50%;background:transparent!important;touch-action:none;cursor:grab;user-select:none;-webkit-user-select:none;box-shadow:none;pointer-events:auto;--syvo-orb-size:96px}
.syvo-voice-dock[data-unified=true]>.syvo-voice-dock__toggle[data-dragging=true]{cursor:grabbing;transform:none}
.syvo-voice-dock[data-unified=true]>.syvo-voice-dock__toggle:focus-visible{outline:3px solid #88eaff;outline-offset:4px}
.syvo-voice-dock[data-unified=true]>.syvo-voice-dock__toggle>.companion-avatar{width:100%;height:100%;border:0;background:transparent;box-shadow:none;pointer-events:none}
.syvo-voice-dock[data-unified=true]>.syvo-voice-dock__toggle :is(img,canvas,svg){pointer-events:none;-webkit-user-drag:none;user-select:none}
.syvo-voice-dock[data-unified=true]>.syvo-voice-dock__toggle img{object-fit:contain}
.syvo-voice-dock[data-unified=true][hidden]>.syvo-voice-dock__toggle{display:none!important}
.companion-avatar[data-syvo-orb-avatar]{--syvo-orb-size:100%;background:transparent!important;box-shadow:none!important;border:0!important;overflow:visible!important}
.companion-avatar.syvo-orb[data-syvo-orb-avatar]{display:inline-grid!important;padding:0!important}
.companion-avatar[data-syvo-orb-avatar]>.syvo-orb__canvas{width:100%;height:100%;object-fit:contain}
@media(max-width:760px){.syvo-voice-dock[data-unified=true]:not([hidden])>.syvo-voice-dock__toggle{--syvo-orb-size:80px;width:80px!important;height:80px!important;max-width:80px!important}}
/* The Home surface contains the shared fixed orb. A filter on this ancestor
   changes its coordinate system from the viewport to the scrolled dashboard. */
.dashboard-view:has(.syvo-voice-dock[data-unified=true][data-home=true]){filter:none}
/* Home and Syvo reuse the same controller-owned button in their hero. */
.syvo-voice-dock__toggle[data-presentation=inline]:not([hidden]){position:relative!important;display:inline-grid!important;place-items:center;left:auto!important;top:auto!important;right:auto!important;bottom:auto!important;width:clamp(164px,26vw,228px)!important;height:clamp(164px,26vw,228px)!important;max-width:228px!important;min-width:44px;min-height:44px;margin:12px auto 0!important;padding:0;border:0;background:transparent!important;box-shadow:none;cursor:pointer;touch-action:manipulation;--syvo-orb-size:clamp(164px,26vw,228px)}
.syvo-voice-dock__toggle[data-presentation=inline]>.companion-avatar{width:100%;height:100%;pointer-events:none}
.syvo-voice-dock__toggle[data-presentation=inline] :is(img,canvas,svg){pointer-events:none}
.syvo-voice-dock__toggle[hidden]{display:none!important}
.syvo-voice-first__hero[data-unified-orb-host=true]>[data-syvo-microphone]{display:none!important}
body:has(.syvo-voice-dock[data-unified=true]) [data-view-panel=companions] .syvo-voice-first__hero>[data-syvo-microphone]{display:none!important}
