/* Generated animation frames, with movement kept separate from care state. */
.motion-enabled{cursor:crosshair}
.motion-enabled:focus-visible{outline:3px solid #c99738;outline-offset:-4px}
#scene .character.motion-ready{left:0;top:0;display:block;padding:0;transition:none;will-change:transform;cursor:pointer;filter:drop-shadow(0 4px 3px #4c352425)}
#scene .character.motion-ready.fairy{filter:drop-shadow(0 0 12px #fff0aa80)}
.character-visual{display:block;position:absolute;inset:0;transform-origin:50% 85%;opacity:.88;will-change:transform;pointer-events:none}
.fairy .character-visual{opacity:.91}
#scene .character.motion-ready .character-visual>img{width:100%;height:100%;object-fit:contain;animation:none!important;transform:none;opacity:1}
.sprite-frames{position:absolute;inset:0;display:none;width:100%;height:100%;background-repeat:no-repeat;pointer-events:none}
.has-sprites .sprite-frames{display:block}
.has-sprites .character-visual>img{visibility:hidden}
#scene .character.motion-ready .character-label{bottom:-2px;left:50%;transform:translateX(-50%);white-space:nowrap}
.motion-enabled .speech{transform:translateX(-50%) rotate(-2deg);pointer-events:none;transition:opacity .25s;z-index:6}
.motion-enabled .speech:after{left:50%}

.motion-enabled .scene-caption,.motion-enabled .world-note,.motion-enabled .place-tag{pointer-events:none}
.motion-enabled .scene-background{animation:room-breath 26s ease-in-out infinite alternate;transform-origin:50% 70%}
.sun-dust{position:absolute;inset:0;z-index:2;pointer-events:none;overflow:hidden}
.sun-dust span{position:absolute;width:3px;height:3px;border-radius:50%;background:#fff7c9;box-shadow:0 0 7px #fff5b4;opacity:0;animation:dust-drift var(--duration,14s) linear var(--delay,0s) infinite}
.sun-dust span:nth-child(3n){width:2px;height:2px}
.motion-enabled.sleeping .sun-dust{opacity:.25}
.floor-ripple{position:absolute;z-index:2;pointer-events:none;width:45px;height:16px;border:1.5px solid #fff5c3;border-radius:50%;animation:floor-ring 1.1s ease-out forwards}



@keyframes room-breath{from{transform:scale(1.015) translateX(-.25%)}to{transform:scale(1.04) translateX(.35%)}}
@keyframes dust-drift{0%{transform:translate(-10px,22px);opacity:0}20%{opacity:.7}80%{opacity:.45}100%{transform:translate(32px,-72px);opacity:0}}
@keyframes floor-ring{0%{transform:translate(-50%,-50%) scale(.4);opacity:.9}100%{transform:translate(-50%,-50%) scale(1.8);opacity:0}}

@media(prefers-reduced-motion:reduce){.motion-enabled{cursor:default}.motion-enabled .scene-background{animation:none}.sun-dust,.floor-ripple{display:none}.character-visual{will-change:auto}}
