/* «Выбери своего персонажа» — подробные многослойные анимации персонажей */

/* ---------- Общие ---------- */
@keyframes char-pop{
  0%{transform:scale(.35) rotate(-8deg);opacity:0}
  65%{transform:scale(1.1) rotate(3deg);opacity:1}
  100%{transform:scale(1) rotate(0)}
}
.char-pop{animation:char-pop .55s cubic-bezier(.2,1.4,.4,1) both}

@keyframes idle-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}
.grid .card .char-svg{animation:idle-float 3.2s ease-in-out infinite;animation-delay:calc(var(--i,0) * .2s)}
.finale-item .char-svg{animation:idle-float 3s ease-in-out infinite;animation-delay:calc(var(--i,0) * .18s)}

@keyframes caption-pop{0%{transform:scale(.4);opacity:0}70%{transform:scale(1.12);opacity:1}100%{transform:scale(1);opacity:1}}
@keyframes btn-in{from{transform:translateY(22px) scale(.8);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}
@keyframes chip-in{0%{transform:translateY(18px) scale(.5);opacity:0}100%{transform:translateY(0) scale(1);opacity:1}}

/* ---------- Базовые движения частей тела (только на сцене) ---------- */
.stage-char .p-head{transform-box:fill-box;transform-origin:50% 90%}
.stage-char .p-body{transform-box:fill-box;transform-origin:50% 96%}
.stage-char .p-arm-l,.stage-char .p-arm-r{transform-box:fill-box;transform-origin:50% 12%}
.stage-char .p-wing-l{transform-box:fill-box;transform-origin:82% 6%}
.stage-char .p-wing-r{transform-box:fill-box;transform-origin:18% 6%}
.stage-char .p-ear{transform-box:fill-box;transform-origin:50% 98%}
.stage-char .p-eye{transform-box:fill-box;transform-origin:50% 50%;animation:blink 3.2s ease-in-out infinite}
.stage-char .p-brow{transform-box:fill-box;transform-origin:50% 50%}
.stage-char .p-cheek{transform-box:fill-box;transform-origin:50% 50%}
.stage-char .p-mouth{transform-box:fill-box;transform-origin:50% 15%}
.stage-char .p-muzzle{transform-box:fill-box;transform-origin:50% 50%}
.stage-char .p-whiskers{transform-box:fill-box;transform-origin:80% 50%}
.stage-char .p-foot,.stage-char .p-leg{transform-box:fill-box;transform-origin:50% 90%}
.stage-char .p-mane{transform-box:fill-box;transform-origin:50% 50%}
.stage-char .p-shell{transform-box:fill-box;transform-origin:50% 96%}

@keyframes blink{0%,90%,100%{transform:scaleY(1)}94%{transform:scaleY(.08)}98%{transform:scaleY(1)}}
@keyframes wave-r{0%,100%{transform:rotate(0)}20%{transform:rotate(-40deg)}45%{transform:rotate(-14deg)}70%{transform:rotate(-40deg)}85%{transform:rotate(-18deg)}}
@keyframes wave-l{0%,100%{transform:rotate(0)}20%{transform:rotate(40deg)}45%{transform:rotate(14deg)}70%{transform:rotate(40deg)}85%{transform:rotate(18deg)}}
@keyframes smile-pop{0%,100%{transform:scale(1)}45%{transform:scale(1.3)}70%{transform:scale(1.05)}}
@keyframes brow-dance{0%,100%{transform:translateY(0)}30%{transform:translateY(-4px)}60%{transform:translateY(-1px)}}
@keyframes brow-lift{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-5px) rotate(-6deg)}70%{transform:translateY(-2px) rotate(4deg)}}
@keyframes cheek-pop{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
@keyframes breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.04,.97)}}
@keyframes ear-twitch{0%,70%,100%{transform:rotate(0)}78%{transform:rotate(-14deg)}86%{transform:rotate(6deg)}94%{transform:rotate(-4deg)}}
@keyframes ear-flop{0%,100%{transform:rotate(0)}50%{transform:rotate(9deg)}}
@keyframes whisker-wiggle{0%,100%{transform:rotate(0) translateX(0)}50%{transform:rotate(-5deg) translateX(-3px)}}

/* ---------- ☀️ Солнышко: подпрыгивает, вращается, выпускает лучики ---------- */
.stage-char[data-id="sun"]{animation:sun-jump 1.3s ease-in-out infinite}
.stage-char[data-id="sun"] .char-svg{transform-origin:50% 50%;animation:sun-spin 6s linear infinite}
.stage-char[data-id="sun"] .p-rays{transform-box:fill-box;transform-origin:50% 50%;animation:rays-glow 1.1s ease-in-out infinite}
.stage-char[data-id="sun"] .p-brow{animation:brow-dance 1.3s ease-in-out infinite}
.stage-char[data-id="sun"] .p-cheek{animation:cheek-pop 2.6s ease-in-out infinite}
.stage-char[data-id="sun"] .p-mouth{animation:smile-pop 1.3s ease-in-out infinite}
@keyframes sun-jump{0%,100%{transform:translateY(0) rotate(0)}40%{transform:translateY(-36px) rotate(-4deg)}58%{transform:translateY(7px) scaleY(.93) rotate(2deg)}}
@keyframes sun-spin{to{transform:rotate(360deg)}}
@keyframes rays-glow{0%,100%{opacity:.7;transform:scale(.88) rotate(0deg)}50%{transform:scale(1.14) rotate(12deg);opacity:1}}

/* ---------- 🦊 Лисёнок: оглядывается, улыбается, машет лапкой ---------- */
.stage-char[data-id="fox"] .p-head{animation:fox-look 3s ease-in-out infinite}
.stage-char[data-id="fox"] .p-ear{animation:ear-twitch 3s ease-in-out infinite}
.stage-char[data-id="fox"] .p-tail{transform-box:fill-box;transform-origin:14% 96%;animation:tail-sway 1.4s ease-in-out infinite}
.stage-char[data-id="fox"] .p-body{animation:breathe 2.2s ease-in-out infinite}
.stage-char[data-id="fox"] .p-arm-r{animation:wave-r .72s ease-in-out infinite}
.stage-char[data-id="fox"] .p-brow{animation:brow-lift 3s ease-in-out infinite}
.stage-char[data-id="fox"] .p-mouth{animation:smile-pop 2s ease-in-out infinite}
.stage-char[data-id="fox"] .p-whiskers{animation:whisker-wiggle 1.4s ease-in-out infinite}
@keyframes fox-look{0%,100%{transform:rotate(0) translateX(0)}22%{transform:rotate(-15deg) translateX(-4px)}52%{transform:rotate(14deg) translateX(4px)}78%{transform:rotate(-5deg) translateX(-1px)}}
@keyframes tail-sway{0%,100%{transform:rotate(-10deg)}50%{transform:rotate(20deg)}}

/* ---------- 🐼 Панда: потягивается, улыбается, машет лапкой ---------- */
.stage-char[data-id="panda"] .p-body{animation:panda-stretch 2.4s ease-in-out infinite}
.stage-char[data-id="panda"] .p-head{animation:panda-tilt 2.4s ease-in-out infinite}
.stage-char[data-id="panda"] .p-ear{animation:ear-flop 2.4s ease-in-out infinite}
.stage-char[data-id="panda"] .p-arm-r{animation:wave-r .78s ease-in-out infinite}
.stage-char[data-id="panda"] .p-arm-l{animation:wave-l 1.6s ease-in-out infinite}
.stage-char[data-id="panda"] .p-cheek{animation:cheek-pop 2.4s ease-in-out infinite}
.stage-char[data-id="panda"] .p-mouth{animation:smile-pop 2s ease-in-out infinite}
@keyframes panda-stretch{0%,100%{transform:scale(1,1)}28%{transform:scale(1.09,.9)}58%{transform:scale(.94,1.1)}80%{transform:scale(1.03,.98)}}
@keyframes panda-tilt{0%,100%{transform:rotate(0)}50%{transform:rotate(7deg) translateY(-3px)}}

/* ---------- 🐸 Лягушонок: два весёлых прыжка ---------- */
.stage-char[data-id="frog"]{animation:frog-jump 1.8s ease-in-out infinite}
.stage-char[data-id="frog"] .p-eye{animation:frog-eye 1.8s ease-in-out infinite}
.stage-char[data-id="frog"] .p-arm-l{transform-origin:50% 12%;animation:frog-tuck 1.8s ease-in-out infinite}
.stage-char[data-id="frog"] .p-arm-r{transform-origin:50% 12%;animation:frog-tuck 1.8s ease-in-out .12s infinite}
.stage-char[data-id="frog"] .p-leg{animation:frog-leg 1.8s ease-in-out infinite}
.stage-char[data-id="frog"] .p-mouth{animation:smile-pop 1.8s ease-in-out infinite}
@keyframes frog-jump{
  0%{transform:translateY(0) scale(1,1)}
  9%{transform:translateY(6px) scale(1.1,.88)}
  26%{transform:translateY(-50px) scale(.92,1.1)}
  42%{transform:translateY(0) scale(1.14,.86)}
  54%{transform:translateY(6px) scale(1.06,.92)}
  72%{transform:translateY(-40px) scale(.94,1.08)}
  88%{transform:translateY(0) scale(1.12,.88)}
  100%{transform:translateY(0) scale(1,1)}
}
@keyframes frog-eye{0%,40%,100%{transform:translateY(0) scale(1)}46%{transform:translateY(-3px) scale(1.12)}60%{transform:translateY(1px) scale(.96)}}
@keyframes frog-tuck{0%,100%{transform:rotate(0)}30%{transform:rotate(24deg) translateY(-8px)}65%{transform:rotate(-8deg)}}
@keyframes frog-leg{0%,100%{transform:scale(1,1)}12%{transform:scale(1.14,.82)}45%{transform:scale(.9,1.1)}90%{transform:scale(1.1,.88)}}

/* ---------- 🐱 Котик: потягивается, машет хвостом и лапкой ---------- */
.stage-char[data-id="cat"] .p-body{animation:cat-stretch 2.8s ease-in-out infinite}
.stage-char[data-id="cat"] .p-tail{transform-box:fill-box;transform-origin:2% 96%;animation:tail-sway 1.25s ease-in-out infinite}
.stage-char[data-id="cat"] .p-arm-r{animation:wave-r .7s ease-in-out infinite}
.stage-char[data-id="cat"] .p-arm-l{animation:wave-l 2.1s ease-in-out infinite}
.stage-char[data-id="cat"] .p-ear{animation:ear-twitch 2.8s ease-in-out infinite}
.stage-char[data-id="cat"] .p-whiskers{animation:whisker-wiggle 1.2s ease-in-out infinite}
.stage-char[data-id="cat"] .p-brow{animation:brow-dance 2.8s ease-in-out infinite}
.stage-char[data-id="cat"] .p-mouth{animation:smile-pop 2s ease-in-out infinite}
.stage-char[data-id="cat"] .p-cheek{animation:cheek-pop 2.8s ease-in-out infinite}
@keyframes cat-stretch{0%,100%{transform:scale(1,1)}42%{transform:scale(1.1,.9)}70%{transform:scale(.97,1.05)}88%{transform:scale(1.03,.98)}}

/* ---------- 🦉 Совёнок: моргает, поворачивает голову, машет крылом ---------- */
.stage-char[data-id="owl"] .p-eye{animation:owl-blink 2.6s ease-in-out infinite}
.stage-char[data-id="owl"] .p-head{animation:owl-turn 3.2s ease-in-out infinite}
.stage-char[data-id="owl"] .p-wing-r{animation:wave-r .7s ease-in-out infinite}
.stage-char[data-id="owl"] .p-wing-l{animation:wave-l .7s ease-in-out .35s infinite}
.stage-char[data-id="owl"] .p-body{animation:owl-bob 2.4s ease-in-out infinite}
.stage-char[data-id="owl"] .p-brow{animation:brow-lift 3.2s ease-in-out infinite}
.stage-char[data-id="owl"] .p-foot{animation:foot-tap 1.6s ease-in-out infinite}
@keyframes owl-blink{0%,84%,100%{transform:scaleY(1)}88%{transform:scaleY(.06)}92%{transform:scaleY(1)}95%{transform:scaleY(.06)}98%{transform:scaleY(1)}}
@keyframes owl-turn{0%,100%{transform:rotate(0) translateX(0)}28%{transform:rotate(-11deg) translateX(-7px)}60%{transform:rotate(11deg) translateX(7px)}82%{transform:rotate(-3deg) translateX(-2px)}}
@keyframes owl-bob{0%,100%{transform:scale(1,1) translateY(0)}50%{transform:scale(1.05,.95) translateY(-5px)}}
@keyframes foot-tap{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px) rotate(-6deg)}}

/* ---------- 🐰 Кролик: подпрыгивает, двигает ушами, машет лапкой ---------- */
.stage-char[data-id="rabbit"]{animation:rabbit-hop 1.5s ease-in-out infinite}
.stage-char[data-id="rabbit"] .p-ear-l{animation:ear-wiggle .9s ease-in-out infinite}
.stage-char[data-id="rabbit"] .p-ear-r{animation:ear-wiggle-r .9s ease-in-out .45s infinite}
.stage-char[data-id="rabbit"] .p-arm-r{animation:wave-r .68s ease-in-out infinite}
.stage-char[data-id="rabbit"] .p-leg{animation:rabbit-feet 1.5s ease-in-out infinite}
.stage-char[data-id="rabbit"] .p-body{animation:rabbit-squash 1.5s ease-in-out infinite}
.stage-char[data-id="rabbit"] .p-mouth{animation:smile-pop 1.8s ease-in-out infinite}
.stage-char[data-id="rabbit"] .p-cheek{animation:cheek-pop 3s ease-in-out infinite}
@keyframes rabbit-hop{0%,100%{transform:translateY(0)}32%{transform:translateY(-34px)}50%{transform:translateY(0)}66%{transform:translateY(-18px)}88%{transform:translateY(0)}}
@keyframes ear-wiggle{0%,100%{transform:rotate(-8deg)}50%{transform:rotate(8deg)}}
@keyframes ear-wiggle-r{0%,100%{transform:rotate(8deg)}50%{transform:rotate(-8deg)}}
@keyframes rabbit-feet{0%,100%{transform:scale(1,1) translateY(0)}35%{transform:scale(1.15,.8) translateY(2px)}55%{transform:scale(.92,1.12) translateY(-3px)}}
@keyframes rabbit-squash{0%,100%{transform:scale(1,1)}36%{transform:scale(.9,1.14)}52%{transform:scale(1.1,.9)}68%{transform:scale(.96,1.05)}}

/* ---------- 🐧 Пингвин: смешно идёт, делает поклон, машет крылом ---------- */
.stage-char[data-id="penguin"]{animation:penguin-waddle 1.2s ease-in-out infinite}
.stage-char[data-id="penguin"] .p-head{animation:penguin-bow 3.2s ease-in-out infinite}
.stage-char[data-id="penguin"] .p-wing-r{animation:wave-r .65s ease-in-out infinite}
.stage-char[data-id="penguin"] .p-wing-l{animation:wave-l .65s ease-in-out .32s infinite}
.stage-char[data-id="penguin"] .p-foot-l{animation:step-l 1.2s ease-in-out infinite}
.stage-char[data-id="penguin"] .p-foot-r{animation:step-r 1.2s ease-in-out infinite}
.stage-char[data-id="penguin"] .p-brow{animation:brow-dance 3.2s ease-in-out infinite}
.stage-char[data-id="penguin"] .p-cheek{animation:cheek-pop 3.2s ease-in-out infinite}
@keyframes penguin-waddle{0%,100%{transform:rotate(-8deg) translateX(-8px)}50%{transform:rotate(8deg) translateX(8px)}}
@keyframes penguin-bow{0%,52%,100%{transform:rotate(0) translateY(0)}66%{transform:rotate(28deg) translateY(8px)}82%{transform:rotate(5deg) translateY(0)}90%{transform:rotate(9deg) translateY(1px)}}
@keyframes step-l{0%,100%{transform:rotate(0) translateY(0)}30%{transform:rotate(-14deg) translateY(-7px)}60%{transform:rotate(6deg)}}
@keyframes step-r{0%,100%{transform:rotate(0) translateY(0)}30%{transform:rotate(6deg)}60%{transform:rotate(-14deg) translateY(-7px)}}

/* ---------- 🦁 Львенок: расправляет гриву, шаг вперёд, машет лапкой ---------- */
.stage-char[data-id="lion"]{animation:lion-step 2.6s ease-in-out infinite}
.stage-char[data-id="lion"] .p-mane{animation:mane-flare 2.6s ease-in-out infinite}
.stage-char[data-id="lion"] .p-arm-r{animation:wave-r .72s ease-in-out infinite}
.stage-char[data-id="lion"] .p-arm-l{animation:wave-l 2.6s ease-in-out infinite}
.stage-char[data-id="lion"] .p-tail{transform-box:fill-box;transform-origin:2% 100%;animation:tail-flick 1.6s ease-in-out infinite}
.stage-char[data-id="lion"] .p-ear{animation:ear-twitch 2.6s ease-in-out infinite}
.stage-char[data-id="lion"] .p-brow{animation:brow-dance 1.3s ease-in-out infinite}
.stage-char[data-id="lion"] .p-body{animation:breathe 2.6s ease-in-out infinite}
.stage-char[data-id="lion"] .p-mouth{animation:smile-pop 2s ease-in-out infinite}
.stage-char[data-id="lion"] .p-cheek{animation:cheek-pop 2.6s ease-in-out infinite}
@keyframes lion-step{0%,100%{transform:translateX(-8px) scale(.99)}45%{transform:translateX(15px) scale(1.05) rotate(2deg)}62%{transform:translateX(13px) scale(1.04) rotate(1deg)}}
@keyframes mane-flare{0%,100%{transform:scale(1) rotate(0)}42%{transform:scale(1.18) rotate(10deg)}68%{transform:scale(1.1) rotate(-5deg)}86%{transform:scale(1.14) rotate(3deg)}}
@keyframes tail-flick{0%,100%{transform:rotate(0)}35%{transform:rotate(-18deg)}60%{transform:rotate(10deg)}}

/* ---------- 🐢 Черепашка: выглядывает из панциря, улыбается, машет лапкой ---------- */
.stage-char[data-id="turtle"] .p-head{animation:turtle-peek 3.6s ease-in-out infinite}
.stage-char[data-id="turtle"] .p-shell{animation:shell-lift 3.6s ease-in-out infinite}
.stage-char[data-id="turtle"] .p-arm-r{animation:wave-r .7s ease-in-out infinite}
.stage-char[data-id="turtle"] .p-arm-l{animation:wave-l .7s ease-in-out .35s infinite}
.stage-char[data-id="turtle"] .p-leg{animation:turtle-step 1.8s ease-in-out infinite}
.stage-char[data-id="turtle"] .p-brow{animation:brow-dance 3.6s ease-in-out infinite}
.stage-char[data-id="turtle"] .p-mouth{animation:smile-pop 1.8s ease-in-out infinite}
.stage-char[data-id="turtle"] .p-cheek{animation:cheek-pop 3.6s ease-in-out infinite}
@keyframes turtle-peek{
  0%,100%{transform:translate(-38px,8px) scale(.88)}
  16%{transform:translate(6px,-5px) scale(1.06)}
  28%,64%{transform:translate(0,0) scale(1)}
  80%{transform:translate(-14px,4px) scale(.95)}
}
@keyframes shell-lift{0%,100%{transform:translateY(0) scale(1)}16%{transform:translateY(-7px) scale(1.03)}30%{transform:translateY(0) scale(1)}}
@keyframes turtle-step{0%,100%{transform:translateX(0) rotate(0)}50%{transform:translateX(6px) rotate(-8deg)}}

/* ---------- 🎨 Художник: водит кистью, качает палитрой, кивает головой ---------- */
.stage-char[data-id="artist"] .p-brush{transform-box:fill-box;transform-origin:14% 94%;animation:brush-stroke 1.5s ease-in-out infinite}
.stage-char[data-id="artist"] .p-palette{transform-box:fill-box;transform-origin:78% 30%;animation:palette-tilt 2.4s ease-in-out infinite}
.stage-char[data-id="artist"] .p-head{animation:artist-look 3s ease-in-out infinite}
.stage-char[data-id="artist"] .p-hat{transform-box:fill-box;transform-origin:50% 90%;animation:hat-bob 3s ease-in-out infinite}
.stage-char[data-id="artist"] .p-body{animation:breathe 2.4s ease-in-out infinite}
.stage-char[data-id="artist"] .p-leg{animation:foot-tap 1.5s ease-in-out infinite}
.stage-char[data-id="artist"] .p-brow{animation:brow-dance 1.5s ease-in-out infinite}
.stage-char[data-id="artist"] .p-mouth{animation:smile-pop 2s ease-in-out infinite}
.stage-char[data-id="artist"] .p-cheek{animation:cheek-pop 3s ease-in-out infinite}
@keyframes brush-stroke{0%,100%{transform:rotate(-10deg)}30%{transform:rotate(26deg)}60%{transform:rotate(-4deg)}80%{transform:rotate(18deg)}}
@keyframes palette-tilt{0%,100%{transform:rotate(-5deg) translateY(0)}50%{transform:rotate(7deg) translateY(-5px)}}
@keyframes artist-look{0%,100%{transform:rotate(0)}32%{transform:rotate(-8deg) translateY(-2px)}66%{transform:rotate(9deg) translateY(-2px)}}
@keyframes hat-bob{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-4px) rotate(-4deg)}}

/* ---------- 🎤 Певец: поёт в микрофон, качается, летят ноты ---------- */
.stage-char[data-id="singer"] .p-mouth{animation:sing-mouth .9s ease-in-out infinite}
.stage-char[data-id="singer"] .p-head{animation:singer-sway 2.4s ease-in-out infinite}
.stage-char[data-id="singer"] .p-arm-l{animation:wave-l 1.3s ease-in-out infinite}
.stage-char[data-id="singer"] .p-notes{transform-box:fill-box;transform-origin:50% 50%;animation:notes-float 2.8s ease-out infinite}
.stage-char[data-id="singer"] .p-body{animation:breathe 2.4s ease-in-out infinite}
.stage-char[data-id="singer"] .p-leg{animation:foot-tap 1.2s ease-in-out infinite}
.stage-char[data-id="singer"] .p-brow{animation:brow-lift 2.4s ease-in-out infinite}
.stage-char[data-id="singer"] .p-cheek{animation:cheek-pop 2.4s ease-in-out infinite}
@keyframes sing-mouth{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1.18)}}
@keyframes singer-sway{0%,100%{transform:rotate(0)}30%{transform:rotate(-8deg) translateY(-3px)}65%{transform:rotate(8deg) translateY(-3px)}}
@keyframes notes-float{0%{transform:translateY(6px) scale(.9);opacity:.35}40%{opacity:1}100%{transform:translateY(-16px) scale(1.05);opacity:0}}

/* ---------- 🏃 Спортсмен: бежит на месте, качает руками, болтается медаль ---------- */
.stage-char[data-id="athlete"]{animation:run-bounce .5s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-arm-l{animation:pump-l .5s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-arm-r{animation:pump-r .5s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-leg-l{animation:stride-l .5s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-leg-r{animation:stride-r .5s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-medal{transform-box:fill-box;transform-origin:50% 4%;animation:medal-swing .55s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-sweat{animation:sweat-fly 1.6s ease-in infinite}
.stage-char[data-id="athlete"] .p-brow{animation:brow-dance 1s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-mouth{animation:smile-pop 1.6s ease-in-out infinite}
.stage-char[data-id="athlete"] .p-cheek{animation:cheek-pop 2s ease-in-out infinite}
@keyframes run-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px) scale(1.02,.98)}}
@keyframes pump-l{0%,100%{transform:rotate(0)}50%{transform:rotate(-26deg)}}
@keyframes pump-r{0%,100%{transform:rotate(0)}50%{transform:rotate(26deg)}}
@keyframes stride-l{0%,100%{transform:rotate(0)}50%{transform:rotate(20deg)}}
@keyframes stride-r{0%,100%{transform:rotate(0)}50%{transform:rotate(-20deg)}}
@keyframes medal-swing{0%,100%{transform:rotate(-11deg)}50%{transform:rotate(11deg)}}
@keyframes sweat-fly{0%{opacity:0;transform:translate(0,0)}35%{opacity:1}100%{opacity:0;transform:translate(10px,-18px)}}

/* ---------- Уважение к системной настройке «уменьшить движение» ---------- */
@media (prefers-reduced-motion: reduce){
  .stage-char,.stage-char *,.char-pop,.grid .card .char-svg,.finale-item .char-svg,
  .stage-caption,.stage-actions .btn,.btn-back,.btn-finish,.chip,.conf,
  [data-id]{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
  }
}
