/* Only the selected Don is animated; adjacent cards and hidden pages stay paused. */
#app #life.active #person.nativeDeck .living-cat .heroPortrait{overflow:visible!important}
.living-depth{position:absolute;inset:0;pointer-events:none;display:none;transform:translate3d(var(--look-x,0px),var(--look-y,0px),0) rotate(var(--turn,0deg));transition:transform .35s ease-out;transform-origin:50% 90%}
#app #life.active #person.nativeDeck .living-on .living-depth{display:block}
#app #life.active #person.nativeDeck .living-on .heroPortrait>img.personArt{visibility:hidden!important}
.living-art{width:100%;height:100%;overflow:visible;display:block}
#app #life.active #person.nativeDeck .heroCard .living-toggle{position:absolute;bottom:0;right:2px;z-index:15;pointer-events:auto;min-height:28px;height:28px;width:auto;margin:0;padding:4px 8px;border-radius:20px;border:1px solid #dac58c65;background:#101522dc;color:#edd9a8;font:600 8px/14px system-ui;letter-spacing:.6px;transform:none;touch-action:manipulation;cursor:pointer}
.don-breath{transform-origin:650px 1200px;animation:don-breathe 4.8s ease-in-out infinite}
.don-ear{transform-origin:525px 200px;animation:don-ear-flick 10.5s ease-in-out infinite}
.don-tail{transform-origin:275px 755px;animation:don-tail-sway 5.6s ease-in-out infinite}
.don-smoke{transform-origin:990px 520px;animation:don-smoke-rise 4.4s ease-in-out infinite}
.don-wisp{transform-origin:990px 520px;animation:don-wisp-rise 4.4s ease-out infinite}
.don-ember{animation:don-ember-glow 4.4s ease-in-out infinite}
.don-blink{transform-origin:590px 297px;animation:don-blink 7.8s linear infinite;transform:scaleY(0)}
.don-blink-right{transform-origin:795px 373px;animation:don-blink 7.8s linear infinite;transform:scaleY(0)}
.living-art g,.living-art ellipse{animation-play-state:paused}
#life.active .living-on.active:not(.living-paused) .living-art g,#life.active .living-on.active:not(.living-paused) .living-art ellipse{animation-play-state:running}
#life.active .living-on.active.living-react .don-breath{animation:don-greeting .85s ease-in-out 1}
@keyframes don-breathe{0%,100%{transform:scale(1,1) rotate(-.15deg)}50%{transform:scale(1.008,1.014) rotate(.2deg)}}
@keyframes don-tail-sway{0%,100%{transform:rotate(-.6deg)}50%{transform:rotate(1.1deg)}}
@keyframes don-ear-flick{0%,61%,70%,100%{transform:rotate(0)}64%{transform:rotate(-2deg)}67%{transform:rotate(.7deg)}}
@keyframes don-smoke-rise{0%,100%{transform:skewX(-1deg) scale(1,.99);opacity:.65}50%{transform:skewX(2deg) scale(1.025,1.025);opacity:.9}}
@keyframes don-wisp-rise{0%{transform:translate(0,0) scale(.9);opacity:0}25%{opacity:.4}100%{transform:translate(10px,-70px) scale(1.08);opacity:0}}
@keyframes don-ember-glow{0%,100%{opacity:.1}50%{opacity:.55}}
@keyframes don-blink{0%,44%,48%,100%{transform:scaleY(0);opacity:0}45.5%,46.5%{transform:scaleY(1);opacity:1}}
@keyframes don-greeting{0%,100%{transform:scale(1)}35%{transform:translateY(-7px) scale(1.018,1.012) rotate(-.65deg)}65%{transform:translateY(-2px) scale(1.006) rotate(.2deg)}}
@media(prefers-reduced-motion:reduce){.living-depth{transition:none!important;transform:none!important}.living-art g,.living-art ellipse{animation:none!important}.don-blink,.don-blink-right{opacity:0!important}.don-wisp{opacity:0!important}}

/* v513: the normalized SVG is retained in static mode, so toggling never changes size. */
#app #life.active #person.nativeDeck .living-cat .living-depth{display:block}
#app #life.active #person.nativeDeck .living-cat .heroPortrait>img.personArt{visibility:hidden!important}
#app #life.active #person.nativeDeck .living-cat>.living-toggle{bottom:86px!important;right:20px!important;z-index:15}
.living-cat .don-breath{animation-duration:var(--breathe-time,4.8s);animation-delay:var(--idle-delay,0s)}
.living-cat:not(.living-on) .living-depth{transform:none!important}
.living-cat:not(.living-on) .living-art g,.living-cat:not(.living-on) .living-art ellipse{animation:none!important;transform:none!important}
.living-cat:not(.living-on) .don-blink,.living-cat:not(.living-on) .don-blink-right,.living-cat:not(.living-on) .don-wisp{opacity:0!important}
/* Individually traced eyelids; both eyes share one timing per character. */
.cat-eyelid{transform:scaleY(0);opacity:0;animation:cat-natural-blink var(--blink-period,6.5s) linear infinite;animation-delay:var(--blink-delay,0s)}
@keyframes cat-natural-blink{0%,39%,44%,100%{transform:scaleY(0);opacity:0}41%,42%{transform:scaleY(1);opacity:1}}
.living-cat:not(.living-on) .cat-eyelid{opacity:0!important;transform:scaleY(0)!important;animation:none!important}
@media(prefers-reduced-motion:reduce){.cat-eyelid{opacity:0!important;transform:scaleY(0)!important;animation:none!important}}
