/* Optional scene atlas for the running theme mascot, never the chat assistant.
   The timeline owns route/frame selection; CSS only adds small local gestures. */
.minzhil-mascot[data-scene] {
  animation: none;
  will-change: transform;
  contain: layout style;
}
.minzhil-mascot[data-scene] .minzhil-mascot-facing { animation: none; }
.minzhil-mascot[data-scene] .minzhil-mascot-sprite {
  animation: none;
  transform-origin: 50% 91%;
}
.minzhil-mascot[data-scene]:not([data-scene="run"]) .minzhil-mascot-sprite {
  background-image: url("minzhilenok-scenes.png?v=minzhil-scenes-20260907-21");
  background-size: 400% 400%;
}
.minzhil-mascot[data-scene="stumble"][data-phase="lean"] .minzhil-mascot-sprite {
  animation: minzhil-trip .3s ease-in both;
}
.minzhil-mascot[data-scene="stumble"][data-phase="fall"] .minzhil-mascot-sprite {
  animation: minzhil-land .35s ease-out both;
}
.minzhil-mascot[data-scene="stumble"][data-phase="recover"] .minzhil-mascot-sprite,
.minzhil-mascot[data-scene="rest"][data-phase="rise"] .minzhil-mascot-sprite {
  animation: minzhil-rise .65s ease-out both;
}
.minzhil-mascot[data-phase="brush"] .minzhil-mascot-sprite {
  animation: minzhil-brush .25s ease-in-out 2;
}
.minzhil-mascot[data-phase="sit"] .minzhil-mascot-sprite,
.minzhil-mascot[data-phase="tired"] .minzhil-mascot-sprite {
  animation: minzhil-breathe 1.8s ease-in-out infinite;
}
.minzhil-mascot[data-phase="typing"] .minzhil-mascot-sprite {
  animation: minzhil-type .32s ease-in-out infinite;
}
.minzhil-mascot[data-phase="close"] .minzhil-mascot-sprite,
.minzhil-mascot[data-phase="depart"] .minzhil-mascot-sprite {
  animation: minzhil-rise .5s ease-out both;
}
.minzhil-mascot[data-phase="search"] .minzhil-mascot-sprite {
  animation: minzhil-look .5s ease-in-out 2;
}
.minzhil-mascot[data-phase="find"] .minzhil-mascot-sprite {
  animation: minzhil-happy-hop .7s ease-out both;
}
.minzhil-mascot[data-phase="offer"] .minzhil-mascot-sprite {
  animation: minzhil-offer 1.2s ease-in-out both;
}
.minzhil-mascot[data-phase="greet"] .minzhil-mascot-sprite {
  animation: minzhil-wave .3s ease-in-out 3;
}
.minzhil-mascot[data-phase="standing"] .minzhil-mascot-sprite,
.minzhil-mascot[data-phase="stretch"] .minzhil-mascot-sprite {
  animation: minzhil-stretch .9s ease-in-out both;
}
body:not([data-minzhil-motion="running"]) .minzhil-mascot[data-scene] .minzhil-mascot-sprite {
  animation-play-state: paused;
}
@keyframes minzhil-trip { from { transform: rotate(-5deg); } to { transform: translateX(3px) rotate(8deg); } }
@keyframes minzhil-land { 0% { transform: translateY(-3px); } 45% { transform: scaleY(.94); } 100% { transform: none; } }
@keyframes minzhil-rise { from { transform: scaleY(.96) translateY(2px); } to { transform: none; } }
@keyframes minzhil-brush { 50% { transform: rotate(2deg) translateX(1px); } }
@keyframes minzhil-breathe { 50% { transform: scale(1.012, 1.025); } }
@keyframes minzhil-type { 50% { transform: translateY(-.7px) rotate(.5deg); } }
@keyframes minzhil-look { 0%, 100% { transform: rotate(-2deg); } 50% { transform: rotate(3deg); } }
@keyframes minzhil-happy-hop { 0%, 100% { transform: none; } 45% { transform: translateY(-7px) rotate(-3deg); } }
@keyframes minzhil-offer { 25%, 70% { transform: translateX(3px) rotate(2deg); } }
@keyframes minzhil-wave { 50% { transform: rotate(-4deg); } }
@keyframes minzhil-stretch { 50% { transform: scale(1.02, 1.035); } }
@media (prefers-reduced-motion: reduce) {
  .minzhil-mascot[data-scene] { will-change: auto; }
  .minzhil-mascot[data-scene] .minzhil-mascot-sprite { animation: none !important; }
}
@media print { .minzhil-mascot[data-scene] { display: none !important; } }
