/* Auntea rig — state rules + keyframes. Inline the rig SVG, set data-av on it or any ancestor, and include this file (or keep the SVG’s internal <style> when your pipeline preserves it). */
.au-steam, .au-cup, .au-mouth, #halo, #glow-xp { transform-box: fill-box; }
.au-steam { transform-origin: 50% 100%; }
.au-cup   { transform-origin: 50% 80%; }
.au-mouth { transform-origin: 50% 18%; }
@keyframes au-steam-sway { 0%,100% { transform: translateY(0) skewX(0deg); opacity: .85; } 50% { transform: translateY(-7px) skewX(-3deg); opacity: 1; } }
@keyframes au-steam-pulse { 0%,100% { opacity: .5; transform: translateY(0); } 50% { opacity: 1; transform: translateY(-5px); } }
@keyframes au-steam-bloom { 0% { transform: translateY(0) scale(1); } 100% { transform: translateY(-14px) scale(1.18); } }
@keyframes au-breath { 0%,100% { transform: scale(1); } 50% { transform: scale(1.012); } }
@keyframes au-lift { 0% { transform: translateY(0); } 30% { transform: translateY(-12px); } 60% { transform: translateY(-8px); } 100% { transform: translateY(0); } }
@keyframes au-halo { 0%,100% { opacity: .55; transform: scale(.96); } 50% { opacity: .15; transform: scale(1.06); } }
@keyframes au-glow-xp-k { 0%,100% { opacity: 0; } 35% { opacity: .55; } }
@keyframes au-pose-closed { 0%,24% { opacity: 1; } 25%,84% { opacity: 0; } 85%,100% { opacity: 1; } }
@keyframes au-pose-open   { 0%,24% { opacity: 0; } 25%,57% { opacity: 1; } 58%,100% { opacity: 0; } }
@keyframes au-pose-medium { 0%,57% { opacity: 0; } 58%,84% { opacity: 1; } 85%,100% { opacity: 0; } }
[data-av="idle"] .au-steam, [data-av="listening"] .au-steam, [data-av="speaking"] .au-steam { animation: au-steam-sway 3.8s ease-in-out infinite; }
[data-av] #steam-2 { animation-delay: .5s; }
[data-av] #steam-3 { animation-delay: 1s; }
[data-av="idle"] .au-cup, [data-av="listening"] .au-cup, [data-av="speaking"] .au-cup { animation: au-breath 5s ease-in-out infinite; }
[data-av="listening"] #halo { opacity: 1; animation: au-halo 2.2s ease-in-out infinite; }
[data-av="thinking"] .au-steam { animation: au-steam-pulse 1.15s ease-in-out infinite; }
[data-av="speaking"] #mouth-closed { animation: au-pose-closed .48s linear infinite; }
[data-av="speaking"] #mouth-open   { animation: au-pose-open   .48s linear infinite; }
[data-av="speaking"] #mouth-medium { animation: au-pose-medium .48s linear infinite; }
[data-av="celebrating"] .au-cup { animation: au-lift 1s ease-in-out; }
[data-av="celebrating"] .au-steam { animation: au-steam-bloom .9s ease-out infinite alternate; }
[data-av="celebrating"] #glow-xp { animation: au-glow-xp-k 1.4s ease-in-out infinite; }
[data-av="reconnecting"] * { animation-play-state: paused; }
[data-av="error"] * { animation: none; }
[data-av="error"] .au-steam { opacity: .45; }
@media (prefers-reduced-motion: reduce) {
  [data-av] * { animation: none; }
  #halo, #glow-xp, #mouth-closed, #mouth-medium, #mouth-open, .au-steam { transition: opacity .4s ease; }
  [data-av="listening"] #halo { opacity: .4; }
  [data-av="speaking"] #mouth-medium { opacity: 1; }
  [data-av="speaking"] #mouth-closed { opacity: 0; }
}
