/* HAHUMI creature life layer (v7). Pairs with src/home59-avatar.js.
 * Keyed by family: the SVG itself carries data-family, and the wrapper may also set it:
 *   .hero-art[data-family="tik"]  or  .hero-art svg[data-family="tik"]
 * Groups: .hh-poke (whole figure, tap reaction) > .hh-breathe (everything above the feet).
 * All motion is opt-in via prefers-reduced-motion:no-preference and is off under .hero-art.rest.
 * Durations are deliberately co-prime so the five never pulse in lockstep.
 */

/* Pivots that don't depend on motion preference (also fix home60 blink/wave origins for v7 faces). */
.hero-art svg g#face_eyes_l,.hero-art svg g#face_eyes_r,
.hero-art.blink svg g#face_eyes_l,.hero-art.blink svg g#face_eyes_r{transform-box:fill-box;transform-origin:50% 50%}
.hero-art svg .hh-breathe,.hero-art svg .hh-poke{transform-box:fill-box;transform-origin:50% 100%}
/* wave pivots = shoulders (viewBox units) */
.hero-art.wave svg[data-family="mimicup"] g#arm_r{transform-box:view-box;transform-origin:252px 200px}
.hero-art.wave svg[data-family="gloomy"] g#arm_r{transform-box:view-box;transform-origin:244px 214px}
.hero-art.wave svg[data-family="peakaboo"] g#arm_r{transform-box:view-box;transform-origin:262px 200px}
.hero-art.wave svg[data-family="tik"] g#arm_r{transform-box:view-box;transform-origin:274px 210px}
.hero-art.wave svg[data-family="lamp"] g#arm_r{transform-box:view-box;transform-origin:260px 222px}
/* Тик's brows are clock hands: they turn around the dial centre */
/* Тик's brows are clock hands: they turn around the dial centre */
.hero-art svg[data-family="tik"] g#face_brow_l,.hero-art svg[data-family="tik"] g#face_brow_r{transform-box:view-box;transform-origin:180px 190px}
.hero-art svg .hh-crown{transform-box:view-box;transform-origin:180px 90px}
.hero-art svg .hh-note{transform-box:fill-box;transform-origin:20% 0%}
.hero-art svg .hh-umbrella{transform-box:view-box;transform-origin:278px 266px}
.hero-art svg .hh-stalk{transform-box:view-box;transform-origin:206px 92px}
.hero-art svg .hh-stalkeye{transform-box:fill-box;transform-origin:50% 50%}
.hero-art svg .hh-cloud{transform-box:fill-box;transform-origin:50% 50%}
.hero-art svg .hh-glow,.hero-art svg .hh-halo{transform-box:fill-box;transform-origin:50% 50%}
.hero-art svg .hh-shade{transform-box:view-box;transform-origin:180px 136px}
.hero-art svg .hh-chain{transform-box:view-box;transform-origin:240px 142px}
.hero-art svg .hh-pencil{transform-box:view-box;transform-origin:214px 96px}

@media (prefers-reduced-motion: no-preference){
 /* ── idle life ── */
 /* Хват: slow heavy breathing, slow judgemental blink, pencil settles */
 .hero-art:not(.rest) svg[data-family="mimicup"] .hh-breathe{animation:hh-breathe-heavy 4.7s ease-in-out infinite}
 .hero-art:not(.rest):not(.blink):not([data-alive="1"]) svg[data-family="mimicup"] g#face_eyes_l,
 .hero-art:not(.rest):not(.blink):not([data-alive="1"]) svg[data-family="mimicup"] g#face_eyes_r{animation:hh-slowblink 7.3s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="mimicup"] g#face_brow_l{animation:hh-judge 11.1s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="mimicup"] .hh-pencil{animation:hh-pencil 9.7s ease-in-out infinite}

 /* Морось: buoyant float, cloud drifts, drizzle falls in staggered drops */
 .hero-art:not(.rest) svg[data-family="gloomy"] .hh-breathe{animation:hh-float 5.3s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="gloomy"] .hh-cloud{animation:hh-cloud 6.7s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="gloomy"] .hh-drop{animation:hh-drizzle 2.3s ease-in infinite}
 .hero-art:not(.rest) svg[data-family="gloomy"] .hh-d2{animation-delay:-.8s;animation-duration:2.6s}
 .hero-art:not(.rest) svg[data-family="gloomy"] .hh-d3{animation-delay:-1.5s;animation-duration:2.1s}
 .hero-art:not(.rest):not(.blink):not([data-alive="1"]) svg[data-family="gloomy"] g#face_eyes_l,
 .hero-art:not(.rest):not(.blink):not([data-alive="1"]) svg[data-family="gloomy"] g#face_eyes_r{animation:hh-softblink 8.9s ease-in-out infinite}

 /* Пикабу: quick restless bounce, stalk wobble, third eye looks around, rapid double blinks */
 .hero-art:not(.rest) svg[data-family="peakaboo"] .hh-breathe{animation:hh-breathe-quick 2.9s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="peakaboo"] .hh-stalk{animation:hh-wobble 3.7s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="peakaboo"] .hh-stalkeye{animation:hh-peek 5.9s ease-in-out infinite}
 .hero-art:not(.rest):not(.blink):not([data-alive="1"]) svg[data-family="peakaboo"] g#face_eyes_l,
 .hero-art:not(.rest):not(.blink):not([data-alive="1"]) svg[data-family="peakaboo"] g#face_eyes_r{animation:hh-doubleblink 4.3s linear infinite}

 /* Тик: stepped micro-tick of the whole body, minute-hand brow jumps once a second */
 /* Тик: stepped micro-tick of the whole body, minute-hand brow jumps once a second */
 .hero-art:not(.rest) svg[data-family="tik"] .hh-breathe{animation:hh-tick 2s steps(1,end) infinite}
 .hero-art:not(.rest) svg[data-family="tik"] g#face_brow_r{animation:hh-minute 6s steps(1,end) infinite}
 .hero-art:not(.rest) svg[data-family="tik"] .hh-crown{animation:hh-crown 6s steps(1,end) infinite}

 /* Лампа: warm breathing, belly glow + halo pulse, chain sway */
 .hero-art:not(.rest) svg[data-family="lamp"] .hh-breathe{animation:hh-breathe 3.7s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="lamp"] .hh-glow{animation:hh-glow 3.1s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="lamp"] .hh-halo{animation:hh-halo 4.1s ease-in-out infinite}
 .hero-art:not(.rest) svg[data-family="lamp"] .hh-chain{animation:hh-sway 2.7s ease-in-out infinite}

 /* ── tap reaction: :is(.hero-art,.hero-art-mini).poke (~700ms) ── */
 :is(.hero-art,.hero-art-mini).poke svg[data-family="mimicup"] .hh-poke{animation:hh-poke-squash .7s cubic-bezier(.3,1.6,.5,1)}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="mimicup"] g#face_brow_l,:is(.hero-art,.hero-art-mini).poke svg[data-family="mimicup"] g#face_brow_r{animation:hh-brow-up .7s ease-out}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="gloomy"] .hh-poke{animation:hh-poke-jelly .7s ease-out}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="gloomy"] .hh-cloud{animation:hh-cloud-puff .7s ease-out}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="peakaboo"] .hh-poke{animation:hh-poke-jump .7s cubic-bezier(.2,.8,.3,1)}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="peakaboo"] .hh-stalk{animation:hh-stalk-boing .7s ease-out}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="tik"] g#face_brow_l{animation:hh-spin 0.7s cubic-bezier(.5,0,.3,1)}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="tik"] g#face_brow_r{animation:hh-spin 0.7s cubic-bezier(.4,0,.2,1) reverse}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="tik"] .hh-poke{animation:hh-poke-rattle .7s linear}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="lamp"] .hh-glow{animation:hh-flare .7s ease-out}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="lamp"] .hh-halo{animation:hh-flare-halo .7s ease-out}
 :is(.hero-art,.hero-art-mini).poke svg[data-family="lamp"] .hh-poke{animation:hh-poke-hop .7s cubic-bezier(.3,1.5,.5,1)}
 /* ── 6.7 life engine: signature bits (data-bit), petting (data-pet) ── */
 .hero-art[data-bit="protocol"] svg .hh-pencil{animation:hh-scribble 2.6s ease-in-out}
 .hero-art[data-bit="tie"] svg .hh-tie{animation:hh-tie 2s ease-in-out}
 .hero-art[data-bit="catch"] svg g#arm_r{transform-box:view-box;transform-origin:244px 214px;animation:hh-reach 2.6s ease-in-out}
 .hero-art[data-bit="drizzle"] svg .hh-drop{animation-duration:1.05s}
 .hero-art[data-bit="drizzle"] svg .hh-cloud{animation:hh-cloud-heavy 3s ease-in-out}
 .hero-art:is([data-bit="rainbow"],[data-pet="1"]) svg[data-family="gloomy"] .hh-rainbow{animation:hh-rainbow 3.2s ease-in-out}
 .hero-art[data-pet="1"] svg[data-family="gloomy"] .hh-drop{animation-play-state:paused;opacity:0}
 .hero-art[data-bit="periscope"] svg .hh-stalk{animation:hh-periscope 3.2s ease-in-out}
 .hero-art[data-bit="whatsthat"] svg .hh-poke{animation:hh-poke-jump .7s cubic-bezier(.2,.8,.3,1) .1s}
 .hero-art[data-bit="hide"] svg .hh-poke{animation:hh-hide 2.6s cubic-bezier(.4,0,.2,1)}
 .hero-art[data-pet="1"] svg[data-family="peakaboo"] .hh-stalk{animation:hh-propeller .5s linear infinite}
 .hero-art[data-bit="ticktock"] svg[data-family="tik"] .hh-breathe{animation:hh-tick .5s steps(1,end) infinite}
 .hero-art[data-bit="wind"] svg .hh-crown{animation:hh-wind 2.4s steps(8,end)}
 .hero-art:is([data-bit="time"],[data-pet="1"]) svg[data-family="tik"] g#face_brow_r{animation:none}
 .hero-art[data-bit="grab"] svg[data-family="mimicup"] g#arm_r{transform-box:view-box;transform-origin:252px 200px;animation:hh-grab 1.6s cubic-bezier(.2,1.4,.4,1)}
 .hero-art[data-bit="umbrella"] svg .hh-umbrella{animation:hh-umbrella 3.4s cubic-bezier(.3,1.4,.5,1)}
 .hero-art[data-bit="flicker"] svg :is(.hh-glow,.hh-halo){animation:hh-flicker 2s linear}
 .hero-art[data-bit="chain"] svg .hh-chain{animation:hh-pull 2.2s cubic-bezier(.3,1.4,.5,1)}
 .hero-art:is([data-bit="chain"],[data-bit="fireflies"],[data-pet="1"]) svg[data-family="lamp"] .hh-glow{animation:hh-warm 2.4s ease-in-out infinite}
 .hero-art[data-pet="1"] svg[data-family="lamp"] .hh-shade{animation:hh-shade-slide 2.4s ease-in-out infinite}
 .hero-art[data-pet="1"] svg .hh-breathe{animation-duration:1.6s}

 .hero-art[data-bit="hide"]:not(.rest) svg[data-family="peakaboo"] .hh-stalk{animation:hh-periscope-up 2.6s cubic-bezier(.4,0,.2,1)}
 .hero-art[data-bit="hide"]:not(.rest) svg[data-family="peakaboo"] .hh-stalkeye{animation:hh-periscope-eye 2.6s cubic-bezier(.4,0,.2,1)}
 .hero-art[data-bit="blind"]:not(.rest) svg[data-family="lamp"] .hh-shade{animation:hh-blind 3s cubic-bezier(.5,1.4,.5,1)}
 .hero-art[data-bit="panic"] svg[data-family="tik"] .hh-poke{animation:hh-poke-rattle .45s linear 4}
 .hero-art[data-bit="panic"] svg[data-family="tik"] :is(g#face_brow_l,g#face_brow_r){animation:none}
 /* 6.13.8 new bits: every gag has a body move, not only a line */
 .hero-art[data-bit="stamp"] svg .hh-poke{animation:hh613-stamp 2.2s cubic-bezier(.3,1.5,.5,1)}
 .hero-art[data-bit="yawn"] svg .hh-poke{animation:hh613-yawn 2.6s ease-in-out}
 .hero-art[data-bit="puddle"] svg .hh-poke{animation:hh613-peer 2.6s ease-in-out}
 .hero-art[data-bit="sigh"] svg .hh-poke{animation:hh613-sigh 2.6s ease-in-out}
 .hero-art[data-bit="boing"] svg .hh-poke{animation:hh613-boing 1.8s cubic-bezier(.3,1.6,.5,1)}
 .hero-art[data-bit="stare"] svg .hh-poke{animation:hh613-stare 3s ease-in-out}
 .hero-art[data-bit="alarm"] svg .hh-poke{animation:hh-poke-rattle .3s linear 5}
 .hero-art[data-bit="schedule"] svg .hh-poke{animation:hh613-nod 2.8s ease-in-out}
 .hero-art[data-bit="disco"] svg .hh-poke{animation:hh613-disco 2.6s ease-in-out}
 .hero-art[data-bit="moth"] svg .hh-poke{animation:hh613-sway 2.8s ease-in-out}
 /* 6.17 Флип и Грум */
 .hero-art[data-bit="fold"] svg .hh-poke{animation:hh613-yawn 2.4s ease-in-out}
 .hero-art[data-bit="literal"] svg .hh-poke{animation:hh613-stare 2.8s ease-in-out}
 .hero-art[data-bit="crane"] svg .hh-poke{animation:hh613-boing 1.8s cubic-bezier(.3,1.6,.5,1)}
 .hero-art[data-bit="unfold"] svg .hh-poke{animation:hh617-unfold 2.2s cubic-bezier(.3,1.5,.5,1)}
 .hero-art[data-bit="starshine"] svg .hh-star{transform-box:fill-box;transform-origin:50% 50%;animation:hh617-star 2.4s ease-in-out}
 .hero-art[data-bit="grumble"] svg .hh-poke{animation:hh-poke-rattle .35s linear 4}
 .hero-art:is([data-bit="sprout"],[data-pet="1"]) svg[data-family="grum"] .hh-sprout{transform-box:fill-box;transform-origin:50% 100%;animation:hh617-sprout 2.4s cubic-bezier(.3,1.6,.5,1)}
 .hero-art[data-bit="mossy"] svg .hh-poke{animation:hh613-sigh 2.8s ease-in-out}
 .hero-art[data-bit="rockabye"] svg .hh-poke{animation:hh613-sway 3s ease-in-out}
 .hero-art[data-bit="harrumph"] svg .hh-poke{animation:hh613-stamp 2.2s cubic-bezier(.3,1.5,.5,1)}
 .hero-art[data-pet="1"] svg[data-family="flip"] :is(.hh-ear-l,.hh-ear-r){transform-box:fill-box;transform-origin:50% 100%;animation:hh617-ear 1.2s ease-in-out infinite alternate}
 .hero-art[data-pet="1"] svg .hh-note{animation:hh-note-flap .5s ease-in-out infinite}
 .hero-art[data-sleep="1"]:not(.rest) svg .hh-breathe{animation-duration:6.4s}
 .hero-art[data-sleep="1"]:not(.rest) svg[data-family="gloomy"] .hh-drop{animation-play-state:paused;opacity:0}
}

/* rest = calm: nothing moves, even if motion is allowed */
.hero-art.rest svg .hh-breathe,.hero-art.rest svg .hh-poke,.hero-art.rest svg .hh-glow,.hero-art.rest svg .hh-halo,
.hero-art.rest svg .hh-drop,.hero-art.rest svg .hh-cloud,.hero-art.rest svg .hh-stalk,.hero-art.rest svg .hh-stalkeye,
.hero-art.rest svg .hh-chain,.hero-art.rest svg .hh-crown,.hero-art.rest svg .hh-pencil{animation:none}

/* ── 6.7 faces: the life engine sets data-mood / data-talk on the wrapper; alternates crossfade ── */
.hero-art svg :is(.hh-x,.hh-m,.hh-eye),.hero-art svg #mouth_line{transition:opacity .12s ease}
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-mood="proud"]) svg:not([data-family="lamp"]) .hh-eye{opacity:0}
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-mood="proud"]) svg .hh-x-happy{opacity:1}
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="care"]) svg #mouth_line{opacity:0}
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="care"]) svg .hh-m-smile{opacity:1}
:is(.hero-art,.hero-art-mini):is([data-mood="laugh"],[data-mood="proud"]) svg #mouth_open{display:inline}
:is(.hero-art,.hero-art-mini):is([data-mood="laugh"],[data-mood="proud"]) svg #mouth_line{opacity:0}
:is(.hero-art,.hero-art-mini)[data-mood="wonder"] svg #mouth_line{opacity:0}
:is(.hero-art,.hero-art-mini)[data-mood="wonder"] svg .hh-m-o{opacity:1}
:is(.hero-art,.hero-art-mini)[data-mood="wonder"] svg[data-family="lamp"] .hh-eye{opacity:0}
:is(.hero-art,.hero-art-mini)[data-mood="wonder"] svg[data-family="lamp"] .hh-x-wide{opacity:1}
:is(.hero-art,.hero-art-mini)[data-talk="1"]:not([data-mood="laugh"]):not([data-mood="proud"]) svg :is(#mouth_line,.hh-m-smile){opacity:0}
:is(.hero-art,.hero-art-mini)[data-talk="1"]:not([data-mood="laugh"]):not([data-mood="proud"]) svg .hh-m-o{opacity:1}
/* 6.7.2 comedy pass: everyone is happy in their own way */
/* Хват never fully smiles: eyes stay heavy, only one corner gives up. He melts only while petted. */
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-mood="proud"]) svg[data-family="mimicup"] .hh-eye{opacity:1}
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-mood="proud"]) svg[data-family="mimicup"] .hh-x-happy{opacity:0}
:is(.hero-art,.hero-art-mini)[data-pet="1"] svg[data-family="mimicup"] .hh-eye{opacity:0}
:is(.hero-art,.hero-art-mini)[data-pet="1"] svg[data-family="mimicup"] .hh-x-happy{opacity:1}
:is(.hero-art,.hero-art-mini)[data-mood="smirk"] svg #mouth_line{opacity:0}
:is(.hero-art,.hero-art-mini)[data-mood="smirk"] svg .hh-m-smile{opacity:1}
/* Морось cries from joy */
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-pet="1"]) svg[data-family="gloomy"] .hh-x-tears{opacity:1}
:is(.hero-art,.hero-art-mini):is([data-bit="rainbow"],[data-pet="1"]) svg .hh-cloudsmile{opacity:1}
:is(.hero-art,.hero-art-mini):is([data-bit="rainbow"],[data-pet="1"]) svg .hh-cloudflat{opacity:0}
/* Пикабу: the big eye refuses to close — manic joy, one eye squeezed, grin stays */
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-mood="proud"]) svg[data-family="peakaboo"] #face_eyes_r .hh-eye{opacity:1}
:is(.hero-art,.hero-art-mini):is([data-mood="happy"],[data-mood="laugh"],[data-mood="proud"]) svg[data-family="peakaboo"] #face_eyes_r .hh-x-happy{opacity:0}
:is(.hero-art,.hero-art-mini)[data-mood="happy"] svg[data-family="peakaboo"] #mouth_line{opacity:1}
:is(.hero-art,.hero-art-mini)[data-mood="happy"] svg[data-family="peakaboo"] .hh-m-smile{opacity:0}
.hero-art svg :is(.hh-cloudsmile,.hh-cloudflat){transition:opacity .12s ease}
:is(.hero-art,.hero-art-mini)[data-sleep="1"] svg :is(#mouth_line,.hh-m-smile){opacity:0}
:is(.hero-art,.hero-art-mini)[data-sleep="1"] svg .hh-m-o{opacity:1}
.hero-art[data-alive="1"]{touch-action:pan-y}
.sound-toggle{margin-left:8px;min-height:32px;padding:0 12px;border:0;border-radius:999px;font:inherit;font-size:13px;font-weight:600;color:var(--ink-2,#444);background:color-mix(in oklab,var(--surface,#fff) 70%,transparent);cursor:pointer}
.sound-toggle[aria-pressed="false"]{opacity:.6;text-decoration:line-through}
.sound-toggle:focus-visible{outline:2px solid var(--act,#3344ff);outline-offset:2px}
.hh-fx{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}

@keyframes hh-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.015,1.03)}}
@keyframes hh-breathe-heavy{0%,100%{transform:scale(1,1)}45%{transform:scale(1.02,1.025)}}
@keyframes hh-breathe-quick{0%,100%{transform:scale(1,1) rotate(0)}30%{transform:scale(.99,1.035) rotate(.8deg)}60%{transform:scale(1.01,.99) rotate(-.4deg)}}
@keyframes hh-float{0%,100%{transform:translateY(0) scale(1,1)}50%{transform:translateY(-6px) scale(.99,1.02)}}
@keyframes hh-slowblink{0%,90%,100%{transform:scaleY(1)}94%,96%{transform:scaleY(.08)}}
@keyframes hh-softblink{0%,86%,100%{transform:scaleY(1)}90%,93%{transform:scaleY(.15)}}
@keyframes hh-doubleblink{0%,70%,74%,78%,100%{transform:scaleY(1)}72%,76%{transform:scaleY(.1)}}
@keyframes hh-judge{0%,40%,60%,100%{transform:translateY(0)}46%,54%{transform:translateY(-4px)}}
@keyframes hh-pencil{0%,100%{transform:rotate(0)}50%{transform:rotate(3deg)}}
@keyframes hh-cloud{0%,100%{transform:translate(0,0)}35%{transform:translate(-5px,-3px)}70%{transform:translate(4px,2px)}}
@keyframes hh-drizzle{0%{transform:translateY(-6px);opacity:0}20%{opacity:1}100%{transform:translateY(26px);opacity:0}}
@keyframes hh-wobble{0%,100%{transform:rotate(0)}25%{transform:rotate(-6deg)}60%{transform:rotate(5deg)}}
@keyframes hh-peek{0%,30%,100%{transform:rotate(0)}40%,55%{transform:rotate(-25deg)}65%,85%{transform:rotate(20deg)}}
@keyframes hh-tick{0%{transform:rotate(0)}50%{transform:rotate(.9deg)}}
@keyframes hh-minute{0%{transform:rotate(0)}16.6%{transform:rotate(6deg)}33.3%{transform:rotate(12deg)}50%{transform:rotate(18deg)}66.6%{transform:rotate(12deg)}83.3%{transform:rotate(6deg)}}
@keyframes hh-crown{0%,100%{transform:translateY(0)}50%{transform:translateY(-1.5px)}}
@keyframes hh-spin{0%{transform:rotate(0)}100%{transform:rotate(360deg)}}
@keyframes hh-poke-rattle{0%,100%{transform:rotate(0)}10%,30%,50%,70%{transform:rotate(-2.5deg)}20%,40%,60%,80%{transform:rotate(2.5deg)}}
@keyframes hh-wind{0%{transform:scaleX(1)}100%{transform:scaleX(-1)}}
@keyframes hh-glow{0%,100%{opacity:.7;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
@keyframes hh-halo{0%,100%{opacity:.75;transform:scale(1)}50%{opacity:1;transform:scale(1.05)}}
@keyframes hh-sway{0%,100%{transform:rotate(-4deg)}50%{transform:rotate(5deg)}}
@keyframes hh-poke-squash{0%{transform:scale(1,1)}20%{transform:scale(1.1,.86)}45%{transform:scale(.96,1.06)}70%{transform:scale(1.02,.98)}100%{transform:scale(1,1)}}
@keyframes hh-brow-up{0%,100%{transform:translateY(0)}25%,60%{transform:translateY(-7px)}}
@keyframes hh-poke-jelly{0%,100%{transform:skewX(0) scale(1,1)}15%{transform:skewX(-6deg) scale(1.05,.95)}35%{transform:skewX(5deg) scale(.97,1.03)}55%{transform:skewX(-3deg)}75%{transform:skewX(1.5deg)}}
@keyframes hh-cloud-puff{0%,100%{transform:scale(1)}30%{transform:scale(1.18) translateY(-4px)}}
@keyframes hh-poke-jump{0%{transform:translateY(0) scale(1,1)}15%{transform:translateY(0) scale(1.08,.9)}40%{transform:translateY(-26px) scale(.94,1.08) rotate(-4deg)}70%{transform:translateY(0) scale(1.05,.95)}100%{transform:translateY(0) scale(1,1)}}
@keyframes hh-stalk-boing{0%,100%{transform:rotate(0)}20%{transform:rotate(-22deg)}45%{transform:rotate(16deg)}70%{transform:rotate(-7deg)}}
@keyframes hh-flare{0%,100%{opacity:.8;transform:scale(1)}30%{opacity:1;transform:scale(1.3)}}
@keyframes hh-flare-halo{0%,100%{opacity:.8;transform:scale(1)}30%{opacity:1;transform:scale(1.12)}}
@keyframes hh-poke-hop{0%,100%{transform:translateY(0) scale(1,1)}25%{transform:translateY(-14px) scale(.96,1.05)}55%{transform:translateY(0) scale(1.05,.95)}}
@keyframes hh-scribble{0%,100%{transform:rotate(0)}15%{transform:rotate(-38deg)}22%,34%,46%,58%{transform:rotate(-44deg) translate(-3px,0)}28%,40%,52%,64%{transform:rotate(-34deg) translate(3px,1px)}80%{transform:rotate(4deg)}}
@keyframes hh-tie{0%,100%{transform:rotate(0)}20%{transform:rotate(-7deg)}40%{transform:rotate(5deg)}60%{transform:rotate(-2deg)}}
@keyframes hh-reach{0%,100%{transform:rotate(0)}30%,60%{transform:rotate(-58deg)}70%{transform:rotate(-40deg)}}
@keyframes hh-cloud-heavy{0%,100%{transform:translate(0,0) scale(1)}30%,70%{transform:translate(-3px,2px) scale(1.12)}}
@keyframes hh-rainbow{0%,100%{opacity:0}20%,75%{opacity:.95}}
@keyframes hh-periscope{0%,100%{transform:rotate(0)}20%{transform:rotate(-28deg)}50%{transform:rotate(26deg)}75%{transform:rotate(-12deg)}}
@keyframes hh-hide{0%,100%{transform:translateY(0) scale(1,1)}15%{transform:translateY(0) scale(1.08,.9)}30%,62%{transform:translateY(46px) scale(1,.82)}72%{transform:translateY(30px) scale(1,.88) rotate(-4deg)}86%{transform:translateY(-8px) scale(.96,1.05)}}
@keyframes hh-propeller{0%{transform:rotate(-18deg)}50%{transform:rotate(18deg)}100%{transform:rotate(-18deg)}}
@keyframes hh-flicker{0%,100%{opacity:1}12%{opacity:.55}20%{opacity:.9}34%{opacity:.5}48%{opacity:1}}
@keyframes hh-pull{0%,100%{transform:translateY(0)}20%{transform:translateY(9px)}40%{transform:translateY(-2px)}}
@keyframes hh-warm{0%,100%{opacity:1;transform:scale(1.1)}50%{opacity:1;transform:scale(1.22)}}
@keyframes hh-shade-slide{0%,100%{transform:rotate(-13deg)}50%{transform:rotate(-21deg) translate(-4px,2px)}}
@keyframes hh-grab{0%,100%{transform:rotate(0)}25%{transform:rotate(-70deg)}45%{transform:rotate(-64deg)}70%{transform:rotate(8deg)}}
@keyframes hh-umbrella{0%,100%{opacity:0;transform:scale(.4)}14%,82%{opacity:1;transform:scale(1)}}
@keyframes hh-periscope-up{0%,100%{transform:scaleY(1)}30%,62%{transform:scaleY(2.4)}72%{transform:scaleY(2.1) rotate(-6deg)}}
@keyframes hh-periscope-eye{0%,100%{transform:scaleY(1)}30%,62%{transform:scaleY(.42) rotate(18deg)}72%{transform:scaleY(.48) rotate(-22deg)}}
@keyframes hh-blind{0%,100%{transform:rotate(-13deg)}22%,62%{transform:translate(4px,24px) rotate(-4deg)}42%{transform:translate(-2px,27px) rotate(-8deg)}}
@keyframes hh-note-flap{0%,100%{transform:rotate(0)}50%{transform:rotate(-7deg) scaleY(.94)}}

/* 6.13.8 comedy of touch: dizzy after a poke spree, a giggle fit when tickled */
@media (prefers-reduced-motion:no-preference){
 .hero-art[data-dizzy]:not(.rest) svg #actor{animation:hh613-dizzy 2.2s cubic-bezier(.3,.6,.4,1)}
 .hero-art[data-tickle]:not(.rest) svg #actor{animation:hh613-tickle .11s linear 12 alternate}
}
@keyframes hh613-dizzy{0%{transform:rotate(0)}12%{transform:rotate(-14deg) translateX(-6px)}26%{transform:rotate(12deg) translateX(6px)}40%{transform:rotate(-10deg)}54%{transform:rotate(8deg)}68%{transform:rotate(-5deg)}82%{transform:rotate(3deg) scaleY(.96)}100%{transform:rotate(0)}}
@keyframes hh613-tickle{from{transform:translateX(-3px) rotate(-2deg) scaleY(.98)}to{transform:translateX(3px) rotate(2deg) scaleY(1.02)}}
.hero-art[data-dizzy] .hh-gaze{animation:hh613-spin-eyes .5s linear 4}
@keyframes hh613-spin-eyes{to{rotate:360deg}}

@keyframes hh613-stamp{0%,100%{transform:none}22%{transform:translateY(-14px) scaleY(1.05)}34%{transform:translateY(4px) scale(1.06,.9)}46%{transform:none}}
@keyframes hh613-yawn{0%,100%{transform:none}35%,60%{transform:scale(1.03,1.06) translateY(-4px)}75%{transform:scale(1,.98)}}
@keyframes hh613-peer{0%,100%{transform:none}30%,70%{transform:rotate(4deg) translateY(4px)}}
@keyframes hh613-sigh{0%,100%{transform:none}30%{transform:scale(1.03,1.05)}60%{transform:scale(1,.95) translateY(3px)}}
@keyframes hh613-boing{0%,100%{transform:none}18%{transform:scale(1.08,.86)}40%{transform:translateY(-34px) scale(.94,1.08)}62%{transform:translateY(0) scale(1.1,.88)}78%{transform:translateY(-8px)}}
@keyframes hh613-stare{0%,100%{transform:none}20%,80%{transform:scale(1.04) translateY(-3px)}}
@keyframes hh613-nod{0%,100%{transform:none}25%,55%{transform:rotate(-3deg)}40%,70%{transform:rotate(3deg)}}
@keyframes hh613-disco{0%,100%{transform:none}20%{transform:rotate(-8deg) translateX(-6px)}40%{transform:rotate(8deg) translateX(6px) translateY(-6px)}60%{transform:rotate(-8deg) translateX(-6px)}80%{transform:rotate(6deg) translateX(4px) translateY(-4px)}}
@keyframes hh613-sway{0%,100%{transform:none}30%{transform:rotate(-5deg)}70%{transform:rotate(5deg)}}

/* 6.17 — Флип and Грум */
@keyframes hh617-unfold{0%,100%{transform:none}30%{transform:scale(1.12,.9)}60%{transform:scale(.94,1.08)}}
@keyframes hh617-star{0%,100%{transform:none}40%{transform:rotate(-18deg) scale(1.25)}70%{transform:rotate(10deg) scale(1.1)}}
@keyframes hh617-sprout{0%,100%{transform:none}30%{transform:scaleY(1.35) rotate(-8deg)}60%{transform:scaleY(1.15) rotate(6deg)}}
@keyframes hh617-ear{from{transform:rotate(-4deg)}to{transform:rotate(5deg)}}
@media (prefers-reduced-motion:reduce){.hero-art svg :is(.hh-star,.hh-sprout,.hh-ear-l,.hh-ear-r){animation:none!important}}
