/* Approved Orbit identity. Local SVG/CSS; no animation service or frame loop. */
.nva-fab > svg.nva-orbit{width:36px;height:36px;overflow:visible;animation:none;pointer-events:none}
.nva-ava > svg.nva-orbit{width:27px;height:27px;overflow:visible;animation:none}
.nva-orbit-core{transform-box:fill-box;transform-origin:center;animation:nvaOrbitBreath 4.8s ease-in-out infinite}
.nva-orbit-waves{opacity:0;transition:opacity .25s}
.nva-orbit-waves rect{transform-box:fill-box;transform-origin:center;animation:nvaOrbitVoice .9s ease-in-out infinite;animation-play-state:paused}
.nva-orbit-waves rect:nth-child(2){animation-delay:-.3s}.nva-orbit-waves rect:nth-child(3){animation-delay:-.6s}
[data-orbi-state="ready"] .nva-orbit-core{animation-duration:3.2s}
[data-orbi-state="listening"] .nva-orbit-core{animation:nvaOrbitListen 1.4s ease-in-out infinite}
[data-orbi-state="thinking"] .nva-orbit-core{animation:nvaOrbitThink 2.4s linear infinite;transform-box:view-box;transform-origin:48px 48px}
[data-orbi-state="speaking"] .nva-orbit-waves{opacity:1}
[data-orbi-state="speaking"] .nva-orbit-waves rect{animation-play-state:running}
[data-orbi-state="speaking"] .nva-orbit-core{animation-duration:2s}
[data-orbi-state="error"] .nva-orbit-core,[data-orbi-state="locked"] .nva-orbit-core{animation:none;opacity:.7}
[data-orbi-paused="true"] .nva-orbit *{animation-play-state:paused!important}
@keyframes nvaOrbitBreath{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(.96);opacity:.82}}
@keyframes nvaOrbitListen{0%,100%{transform:scale(.96);opacity:.82}50%{transform:scale(1.05);opacity:1}}
@keyframes nvaOrbitThink{to{transform:rotate(360deg)}}
@keyframes nvaOrbitVoice{0%,100%{transform:scaleY(.45)}45%{transform:scaleY(1)}}
@media(max-width:600px){body:has(#bxComp) .nva-fab > svg.nva-orbit{width:29px;height:29px}}
@media(prefers-reduced-motion:reduce){.nva-orbit,.nva-orbit *{animation:none!important;transition:none!important}}
