/* =========================================================
   Персонажи магазина: общие мелочи всех уровней.
   Файл маленький и грузится всегда; сами рисунки уровней —
   отдельными файлами по требованию (shared/shop/<уровень>.js).
   ========================================================= */

/* обычные */
.ch--shop .sh-ring{stroke:var(--cl)}
.ch--shop .sh-handle{stroke:var(--c)}
@keyframes sh-spin{to{transform:rotate(360deg)}}
.ch--shop .sh-spin{transform-origin:center;animation:sh-spin 1.1s linear infinite}
@keyframes sh-steam{0%,100%{transform:translateY(0);opacity:.55}50%{transform:translateY(-3px);opacity:.25}}
.ch--shop .sh-steam{animation:sh-steam 2.6s ease-in-out infinite}

.lite .ch--shop .sh-spin,.lite .ch--shop .sh-steam{animation:none}
@media (prefers-reduced-motion: reduce){ .ch--shop *{animation:none !important} }

/* ---------- редкие и выше: детали из shop/kit.js ---------- */
@keyframes sh-bob{0%,100%{transform:translateY(0) rotate(-3deg)}50%{transform:translateY(-4px) rotate(3deg)}}
.ch--shop .sh-bob{transform-box:fill-box;transform-origin:center bottom;animation:sh-bob 2.8s ease-in-out infinite}
@keyframes sh-twinkle{0%,100%{transform:scale(1) rotate(0)}50%{transform:scale(1.18) rotate(12deg)}}
.ch--shop .sh-twinkle{transform-box:fill-box;transform-origin:center;animation:sh-twinkle 1.6s ease-in-out infinite}
@keyframes sh-spark{0%,100%{opacity:0;transform:scale(.3)}40%,60%{opacity:1;transform:scale(1)}}
.ch--shop .sh-spark{transform-box:fill-box;transform-origin:center;animation:sh-spark 2.4s ease-in-out infinite}
.ch--shop .sh-spark--2{animation-delay:.8s}
.ch--shop .sh-spark--3{animation-delay:1.6s}
@keyframes sh-wave{0%,100%{transform:skewY(0)}50%{transform:skewY(-6deg)}}
.ch--shop .sh-wave{transform-box:fill-box;transform-origin:left center;animation:sh-wave 1.4s ease-in-out infinite}
@keyframes sh-notes{0%{transform:translateY(0);opacity:0}30%{opacity:1}100%{transform:translateY(-12px);opacity:0}}
.ch--shop .sh-notes{animation:sh-notes 2s ease-out infinite}
@keyframes sh-yoyo{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
.ch--shop .sh-yoyo{animation:sh-yoyo 1.2s ease-in-out infinite}
@keyframes sh-wing{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.82)}}
.ch--shop .sh-wing{transform-box:fill-box;transform-origin:right center;animation:sh-wing .5s ease-in-out infinite}
.ch--shop .sh-wing--r{transform-origin:left center}
@keyframes sh-blink{0%,100%{opacity:1}50%{opacity:.35}}
.ch--shop .sh-blink{animation:sh-blink 1.2s steps(2,end) infinite}
.ch--shop .sh-lights circle{animation:sh-blink 1s steps(2,end) infinite}
.ch--shop .sh-lights circle:nth-child(2n){animation-delay:.5s}
@keyframes sh-glow{0%,100%{opacity:.35}50%{opacity:.9}}
.ch--shop .sh-glow{animation:sh-glow 2.2s ease-in-out infinite}
@keyframes sh-aura{0%,100%{transform:scale(.94);opacity:.12}50%{transform:scale(1.04);opacity:.24}}
.ch--shop .sh-aura{transform-box:fill-box;transform-origin:center;animation:sh-aura 3s ease-in-out infinite}
@keyframes sh-beam{0%,100%{opacity:.12}50%{opacity:.32}}
.ch--shop .sh-beam{animation:sh-beam 1.8s ease-in-out infinite}
@keyframes sh-screen{0%,100%{opacity:.16}50%{opacity:.3}}
.ch--shop .sh-screen{animation:sh-screen 2.6s ease-in-out infinite}
@keyframes sh-fin{0%,100%{transform:rotate(0)}50%{transform:rotate(-12deg)}}
.ch--shop .sh-fin{transform-box:fill-box;transform-origin:right center;animation:sh-fin 1.1s ease-in-out infinite}
.ch--shop .sh-fin--r{transform-origin:left center;animation-direction:reverse}
@keyframes sh-bubbles{0%{transform:translateY(4px);opacity:0}30%{opacity:.9}100%{transform:translateY(-10px);opacity:0}}
.ch--shop .sh-bubbles{animation:sh-bubbles 3s ease-out infinite}
.ch--shop .sh-ghost{opacity:.85}

/* ---------- эпические ---------- */
@keyframes ep-aura{0%,100%{transform:scale(.92);opacity:.7}50%{transform:scale(1.04);opacity:1}}
.ch--epic .ep-aura{transform-box:fill-box;transform-origin:center;animation:ep-aura 3.2s ease-in-out infinite}
@keyframes ep-plume{0%,100%{transform:rotate(-6deg)}50%{transform:rotate(8deg)}}
.ch--epic .ep-plume{transform-box:fill-box;transform-origin:left bottom;animation:ep-plume 2.2s ease-in-out infinite}
@keyframes ep-orb{0%,100%{transform:scale(1);filter:brightness(1)}50%{transform:scale(1.12);filter:brightness(1.35)}}
.ch--epic .ep-orb{transform-box:fill-box;transform-origin:center;animation:ep-orb 1.8s ease-in-out infinite}
@keyframes ep-spin{to{transform:rotate(360deg)}}
.ch--epic .ep-spin{transform-box:fill-box;transform-origin:center;animation:ep-spin 1.6s linear infinite}
@keyframes ep-swing{0%,100%{transform:rotate(-10deg)}50%{transform:rotate(10deg)}}
.ch--epic .ep-swing{transform-box:fill-box;transform-origin:left bottom;animation:ep-swing 1.4s ease-in-out infinite}
@keyframes ep-tails{0%,100%{transform:skewY(0) rotate(0)}50%{transform:skewY(-8deg) rotate(6deg)}}
.ch--epic .ep-tails{transform-box:fill-box;transform-origin:left center;animation:ep-tails 1.1s ease-in-out infinite}
@keyframes ep-flame{0%,100%{transform:scaleY(1);opacity:1}50%{transform:scaleY(.7);opacity:.75}}
.ch--epic .ep-flame{transform-box:fill-box;transform-origin:center top;animation:ep-flame .25s ease-in-out infinite}
@keyframes ep-cape{0%,100%{transform:skewX(0) scaleX(1)}50%{transform:skewX(-4deg) scaleX(1.04)}}
.ch--epic .ep-cape{transform-box:fill-box;transform-origin:center top;animation:ep-cape 2.4s ease-in-out infinite}
@keyframes ep-bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.ch--epic .ep-bob{animation:ep-bob 1.3s ease-in-out infinite}
@keyframes ep-eq{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.5)}}
.ch--epic .ep-eq rect{transform-box:fill-box;transform-origin:center bottom;animation:ep-eq .45s ease-in-out infinite}
.ch--epic .ep-eq rect:nth-child(2){animation-delay:.12s}
.ch--epic .ep-eq rect:nth-child(3){animation-delay:.24s}
.ch--epic .ep-eq rect:nth-child(4){animation-delay:.36s}
@keyframes ep-speed{0%{transform:translateX(4px);opacity:0}40%{opacity:.8}100%{transform:translateX(-6px);opacity:0}}
.ch--epic .ep-speed{animation:ep-speed .9s linear infinite}
@keyframes ep-bat{0%,100%{transform:translate(0,0) scaleX(1)}25%{transform:translate(-4px,-3px) scaleX(.7)}50%{transform:translate(-8px,0) scaleX(1)}75%{transform:translate(-4px,3px) scaleX(.7)}}
.ch--epic .ep-bat{transform-box:fill-box;transform-origin:center;animation:ep-bat 1.6s ease-in-out infinite}
@keyframes ep-bubble{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
.ch--epic .ep-bubble circle{animation:sh-bubbles 2.2s ease-out infinite}
@keyframes ep-roll{to{transform:rotate(360deg)}}
.ch--epic .ep-roll{transform-box:fill-box;transform-origin:center;animation:ep-roll 3s linear infinite}
@keyframes ep-spray{0%,100%{opacity:.4;transform:translateY(0)}50%{opacity:1;transform:translateY(-2px)}}
.ch--epic .ep-spray{animation:ep-spray .5s ease-in-out infinite}
.ch--epic.ep-ghostly .ch-body,.ch--epic.ep-ghostly .ch-legs,.ch--epic.ep-ghostly .ch-arms{opacity:.72}
.lite .ch--shop [class*="ep-"]{animation:none !important}
/* ---------- премиум ---------- */
@keyframes pr-rays{to{transform:rotate(360deg)}}
.ch--premium .pr-rays{transform-box:view-box;transform-origin:50px 60px;animation:pr-rays 24s linear infinite}
@keyframes pr-aura{0%,100%{opacity:.75;transform:scale(.95)}50%{opacity:1;transform:scale(1.05)}}
.ch--premium .pr-aura{transform-box:fill-box;transform-origin:center;animation:pr-aura 3.4s ease-in-out infinite}
@keyframes pr-ring{0%,100%{opacity:.55;stroke-width:2.2}50%{opacity:1;stroke-width:3.4}}
.ch--premium .pr-ring{animation:pr-ring 2.2s ease-in-out infinite}
@keyframes pr-wing{0%,100%{transform:rotate(0) scaleY(1)}50%{transform:rotate(-8deg) scaleY(1.04)}}
.ch--premium .pr-wing{transform-box:view-box;transform-origin:40px 60px;animation:pr-wing 1.6s ease-in-out infinite}
.ch--premium .pr-wing--r{transform-origin:60px 60px;animation-name:pr-wing-r}
@keyframes pr-wing-r{0%,100%{transform:rotate(0) scaleY(1)}50%{transform:rotate(8deg) scaleY(1.04)}}
@keyframes pr-sway{0%,100%{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}
.ch--premium .pr-sway{transform-box:view-box;transform-origin:50px 40px;animation:pr-sway 3s ease-in-out infinite}
@keyframes pr-flame{0%,100%{transform:scale(1,1)}33%{transform:scale(.94,1.08)}66%{transform:scale(1.05,.95)}}
.ch--premium .pr-flame{transform-box:fill-box;transform-origin:center bottom;animation:pr-flame .9s ease-in-out infinite}
@keyframes pr-tent{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}
.ch--premium .pr-tent{transform-box:fill-box;transform-origin:center top;animation:pr-tent 2s ease-in-out infinite}
.ch--premium .pr-tent--1{animation-delay:-.6s}
.ch--premium .pr-tent--2{animation-delay:-1.2s}
@keyframes pr-core{0%,100%{opacity:.75;filter:brightness(1)}50%{opacity:1;filter:brightness(1.5)}}
.ch--premium .pr-core{animation:pr-core 1.6s ease-in-out infinite}
.ch--premium .pr-runes{animation:pr-core 2.6s ease-in-out infinite}
@keyframes pr-smoke{0%,100%{transform:skewX(0) translateX(0)}50%{transform:skewX(6deg) translateX(-2px)}}
.ch--premium .pr-smoke{transform-box:fill-box;transform-origin:center top;animation:pr-smoke 2.4s ease-in-out infinite}
@keyframes pr-fan{0%,100%{transform:rotate(-1.5deg)}50%{transform:rotate(1.5deg)}}
.ch--premium .pr-fan{transform-box:view-box;transform-origin:50px 86px;animation:pr-fan 3.6s ease-in-out infinite}
@keyframes pr-wisp{0%,100%{transform:translateY(0);opacity:.6}50%{transform:translateY(-6px);opacity:1}}
.ch--premium .pr-wisp circle{animation:pr-wisp 2.4s ease-in-out infinite}
.ch--premium .pr-wisp circle:nth-child(2){animation-delay:-1.2s}
@keyframes pr-orbit{to{transform:rotate(360deg)}}
.ch--premium .pr-orbit{transform-box:view-box;transform-origin:50px 62px;animation:pr-orbit 9s linear infinite}
@keyframes pr-orbit2{0%,100%{transform:translate(0,0)}50%{transform:translate(-4px,4px)}}
.ch--premium .pr-orbit2{animation:pr-orbit2 4s ease-in-out infinite}
@keyframes pr-jet{0%,100%{transform:scaleY(1)}50%{transform:scaleY(.7)}}
.ch--premium .pr-jet{transform-box:fill-box;transform-origin:center top;animation:pr-jet .22s linear infinite}
@keyframes pr-halo{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}
.ch--premium .pr-halo{animation:pr-halo 2.2s ease-in-out infinite}
@keyframes pr-tail{0%,100%{transform:rotate(-3deg)}50%{transform:rotate(4deg)}}
.ch--premium .pr-tail{transform-box:view-box;transform-origin:50px 90px;animation:pr-tail 2.4s ease-in-out infinite}
.ch--premium .pr-coil{transform-box:view-box;transform-origin:50px 96px;animation:pr-tail 3s ease-in-out infinite}
@keyframes pr-rise{0%{transform:translateY(6px);opacity:0}25%{opacity:1}100%{transform:translateY(-22px);opacity:0}}
@keyframes pr-fall{0%{transform:translate(0,-8px) rotate(0);opacity:0}25%{opacity:1}100%{transform:translate(4px,18px) rotate(120deg);opacity:0}}
@keyframes pr-glint{0%,100%{transform:scale(.2);opacity:0}45%,55%{transform:scale(1);opacity:1}}
.ch--premium .pr-rise .pr-p{animation:pr-rise 2.8s ease-out infinite}
.ch--premium .pr-fall .pr-p{transform-box:fill-box;transform-origin:center;animation:pr-fall 3.4s ease-in infinite}
.ch--premium .pr-glint .pr-p{transform-box:fill-box;transform-origin:center;animation:pr-glint 2.2s ease-in-out infinite}
.ch--premium .pr-p--1{animation-delay:-.5s !important}
.ch--premium .pr-p--2{animation-delay:-1s !important}
.ch--premium .pr-p--3{animation-delay:-1.5s !important}
.ch--premium .pr-p--4{animation-delay:-2s !important}
.ch--premium .pr-p--5{animation-delay:-2.5s !important}
.ch--premium.pr-ghostly .ch-body{opacity:.82}
/* в маленьком виде (полоса игроков, списки) лучи только мешают */
.av-s .ch--premium .pr-rays,.pchip .ch--premium .pr-rays{display:none}
.lite .ch--shop [class*="pr-"]{animation:none !important}
.lite .ch--shop [class*="sh-"]{animation:none !important}
