/* A short stroll, a real lying pose, and a quiet eighteen-second nap.
   The generated keyframes share one route clock and existing pause controls. */
.desktop-walkway .object-cat { animation-name:cat-calm-route; }
.cat-facing { animation-name:cat-calm-facing;animation-timing-function:steps(1,end); }
.cat-walk { animation-name:cat-calm-walk;animation-timing-function:linear; }
.cat-turn { animation-name:cat-calm-turn;animation-timing-function:steps(1,end); }
.cat-turn > img { animation-name:cat-calm-pivot;animation-timing-function:steps(1,end); }
.cat-nap { position:absolute;inset:0;opacity:0;transform:translateY(-4.5px);animation:cat-calm-nap var(--cat-route-duration,60s) linear var(--cat-route-delay,0s) infinite; }
.cat-sprite .cat-nap > img { display:block;width:100%;height:100%;object-fit:contain;object-position:50% 100%;animation:cat-sleep-breath 4.8s ease-in-out infinite;transform-origin:50% 90%; }
@keyframes cat-sleep-breath { 0%,100% { transform:translateY(0); } 50% { transform:translateY(-.45px); } }
/* If the sleeping cutout has not loaded, keep a still walking pose visible
   during the rest instead of making the character disappear. */
.cat-rig:not([data-sleep-ready="true"]) .cat-nap { opacity:0!important; }
.cat-rig:not([data-sleep-ready="true"]).is-lying .cat-walk { opacity:1!important; }
/* Speech is deliberately brief. A collided phrase stays dismissed until its
   next scheduled window; hiding it immediately avoids covering another tool. */
.cat-asides > span,.cat-asides > span:nth-child(n) { animation:none;opacity:0;transform:none; }
.cat-asides[data-phrase="0"] > span:nth-child(1),
.cat-asides[data-phrase="1"] > span:nth-child(2),
.cat-asides[data-phrase="2"] > span:nth-child(3) { opacity:1; }
@media(prefers-reduced-motion:reduce) {
 .desktop-walkway .object-cat { transform:translateX(calc(-1 * var(--cat-route-distance,0px))); }
 .cat-facing { transform:none; }
 .cat-walk,.cat-turn { opacity:0; }
 .cat-nap { animation:none!important;opacity:1; }
 .cat-rig:not([data-sleep-ready="true"]) .cat-walk { opacity:1!important; }
 .cat-sprite .cat-nap > img { animation:none!important; }
 .cat-asides { display:none; }
}
