/* Motion transforms whole, intact artwork. No bitmap body-part separation is implied. */
.pet-coach .pet-portrait{animation:none;transform:none;filter:none;overflow:visible;align-self:flex-start;margin-top:14px}
.pet-stage{position:relative;display:block;isolation:isolate;background:#fff;border-radius:18px;flex-shrink:0;transform-origin:50% 86%}
.pet-stage .pet-frame{position:absolute;inset:0;display:block;overflow:hidden;border-radius:inherit;transition:opacity 160ms ease;pointer-events:none}
.pet-stage .pet-frame img{display:block;width:100%;height:100%;object-fit:contain;max-width:none}
.pet-stage .pet-frame-react{opacity:0}
.teacher-stage .pet-frame img{position:absolute;top:50%;width:200%;height:auto;transform:translateY(-50%)}
.teacher-stage .pet-frame-react img{transform:translate(-50%,-50%)}
.teacher-stage:after{content:'✦';position:absolute;left:43%;top:27%;z-index:2;color:#fff5a8;text-shadow:0 0 4px #b26d32;opacity:0;pointer-events:none}
.companion-vector{display:grid;place-items:center;background:linear-gradient(145deg,#fff,#f5fbf8);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--companion-accent) 22%,transparent)}
.companion-otter{--companion-accent:#55a9bd}.companion-owl{--companion-accent:#8774b8}.companion-fox{--companion-accent:#dc7b51}
.companion-svg{display:block;width:100%;height:100%;overflow:visible}
.companion-svg .companion-body,.companion-svg .companion-face,.companion-svg .companion-accent,.companion-svg .companion-prop{transform-box:fill-box;transform-origin:center}
.pet-coach[data-motion=react] .pet-frame-rest{opacity:0}
.pet-coach[data-motion=react] .pet-frame-react{opacity:1}
.pet-correct .pet-frame-rest{opacity:0}.pet-correct .pet-frame-react{opacity:1}
.pet-coach .pet-bubble{transition:background-color 220ms ease,border-color 220ms ease;border-radius:14px}
.pet-coach[data-motion=react] .pet-bubble{background-color:#fff3d966;background-color:color-mix(in srgb,var(--companion-accent,#e3b35d) 13%,transparent)}
.teacher-coach[data-motion=react] .pet-bubble{background-color:#ffe9e266}
.pet-coach .pet-touch{transition:background-color 140ms ease,border-color 140ms ease;transform:none!important}
.pet-coach[data-motion=anticipate] .pet-touch{background:#ffe6b8;border-color:#c99544}
.teacher-coach[data-motion=anticipate] .pet-touch{background:#ffe2d9;border-color:#ca9c8d}
.pet-stage:before{content:none}
@media(prefers-reduced-motion:no-preference){
  [data-companion-host]:not([data-motion]) .pet-stage{animation:companion-breathe 3.8s ease-in-out infinite}
  [data-companion-host]:not([data-motion]) .companion-accent{animation:companion-glimmer 2.7s ease-in-out infinite}
  .pet-coach[data-motion-action=pet][data-motion=anticipate] .pet-stage{animation:companion-crouch 90ms ease-out both}
  .pet-coach[data-motion-action=pet][data-motion=react] .pet-stage{animation:companion-nod 620ms cubic-bezier(.2,.8,.25,1) both}
  .pet-coach[data-motion-action=pet][data-motion=react] .companion-face{animation:companion-blink 620ms ease both}
  .teacher-coach[data-motion-action=pet][data-motion=react] .teacher-stage:after{animation:teacher-glasses-glint 620ms ease-out both}
  .pet-coach[data-motion-action=celebrate][data-motion=anticipate] .pet-stage{animation:companion-crouch 100ms ease-out both}
  .pet-coach[data-motion-action=celebrate][data-motion=react] .pet-stage{animation:companion-cheer 900ms cubic-bezier(.22,.8,.24,1) both}
  .pet-coach[data-motion-action=celebrate][data-motion=react] .companion-accent{animation:companion-spark 900ms ease-out both}
  .pet-coach[data-motion-action=stretch][data-motion=react] .pet-stage{animation:companion-stretch 900ms ease-in-out both}
  .pet-coach[data-motion=settle] .pet-stage{animation:companion-settle 260ms ease-out both}
  [data-companion-host][data-auto-celebrate]:not([data-motion]) .pet-stage{animation:companion-cheer 820ms cubic-bezier(.22,.8,.24,1) 1 both}
  [data-companion-host][data-auto-celebrate]:not([data-motion]) .companion-accent{animation:companion-spark 820ms ease-out 1 both}
}
@keyframes companion-breathe{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-2px) scale(1.012,.988)}}
@keyframes companion-glimmer{0%,100%{transform:translateY(0) rotate(0);opacity:.88}50%{transform:translateY(-3px) rotate(5deg);opacity:1}}
@keyframes companion-crouch{to{transform:translateY(3px) scale(1.04,.94)}}
@keyframes companion-nod{0%{transform:translateY(3px) scale(1.04,.94)}30%{transform:translateY(-8px) rotate(-4deg) scale(.98,1.04)}58%{transform:translateY(1px) rotate(3deg)}82%{transform:translateY(-3px) rotate(-1deg)}100%{transform:none}}
@keyframes companion-blink{0%,24%,100%{transform:scaleY(1)}40%,54%{transform:scaleY(.22)}}
@keyframes companion-cheer{0%{transform:translateY(3px) scale(1.04,.94)}24%{transform:translateY(-15px) rotate(-6deg) scale(.96,1.06)}48%{transform:translateY(0) rotate(5deg)}70%{transform:translateY(-9px) rotate(-3deg)}100%{transform:none}}
@keyframes companion-spark{0%{transform:scale(.7);opacity:.35}35%{transform:translateY(-8px) rotate(18deg) scale(1.18);opacity:1}100%{transform:none;opacity:.9}}
@keyframes companion-stretch{0%{transform:none}28%{transform:translateY(5px) scale(1.12,.86)}60%{transform:translateY(-5px) scale(.91,1.12)}100%{transform:none}}
@keyframes companion-settle{0%{transform:translateY(-2px) scale(.98,1.03)}70%{transform:translateY(1px) scale(1.015,.985)}100%{transform:none}}
@keyframes teacher-glasses-glint{0%,100%{opacity:0;transform:translate(-5px,4px) scale(.6)}35%,55%{opacity:1;transform:translate(4px,-3px) scale(1.25)}}
[data-auto-celebrate] .pet-frame-rest{opacity:0}[data-auto-celebrate] .pet-frame-react{opacity:1}
@media(prefers-reduced-motion:reduce){.pet-stage,.pet-stage *,.pet-coach .pet-bubble,.pet-coach .pet-touch{animation:none!important;transition:none!important}}
