/* Repeated taps count as clicks, without double-tap zoom or text selection.
   Panning and pinch zoom remain available. */
[data-cat-trigger]{touch-action:manipulation;-webkit-user-select:none;user-select:none}
.cat-colony{position:fixed;inset:0;overflow:hidden;z-index:50;pointer-events:none}
.pixel-cat{position:absolute;width:var(--cat-size);aspect-ratio:3/4;background:none;border:0;padding:0;cursor:pointer;pointer-events:auto;isolation:isolate;animation:cat-roam var(--duration) ease-in-out var(--delay) infinite alternate}
.cat-sprite{display:block;width:100%;height:auto;aspect-ratio:3/4;background-image:url('images/cat-sprites.png');background-repeat:no-repeat;background-size:400% 200%;image-rendering:pixelated;animation:cat-trot .42s steps(2,end) infinite;filter:drop-shadow(0 4px 2px #0006)}
.cat-stalk{animation-timing-function:linear}.cat-stalk .cat-sprite{animation-duration:.65s}
.cat-groom,.cat-sleep,.cat-stretch{animation:none}
.cat-groom .cat-sprite{animation:cat-groom 2.2s steps(3,end) infinite}
.cat-sleep .cat-sprite{animation:cat-breathe 3s ease-in-out infinite;transform-origin:center 80%}
.cat-stretch .cat-sprite{animation:cat-stretch 5s ease-in-out infinite;transform-origin:center 85%}
.cat-play .cat-sprite{animation:cat-pounce 2.7s ease-in-out infinite}
.cat-jump .cat-sprite{animation:cat-pounce 1.9s ease-in-out infinite}
.pixel-cat::after{content:attr(data-sound);position:absolute;left:50%;top:0;transform:translate(-50%,-20%);background:#eee8d5;color:#171914;border:2px solid #d5b574;padding:.2rem .5rem;font:700 .8rem monospace;white-space:nowrap;opacity:0;pointer-events:none}
.pixel-cat.cat-loved::after{animation:cat-speak 1.6s ease-out forwards}
.pixel-cat:hover .cat-sprite{filter:drop-shadow(0 0 5px #d5b574)}
.cat-controls{position:absolute;z-index:2;bottom:1.5rem;left:50%;transform:translateX(-50%);width:max-content;max-width:calc(100% - 2rem);display:flex;align-items:center;gap:1rem;padding:.7rem .9rem .7rem 1.1rem;background:#10110ff5;color:#efeee6;border:1px solid #d5b574;border-radius:8px;box-shadow:0 10px 40px #0008;pointer-events:auto;font-size:.8rem}
.cat-controls>span{color:#d5b574}.cat-controls button{border:1px solid #5b5d4f;background:#25281f;color:#efeee6;padding:.45rem .8rem;cursor:pointer;border-radius:4px;font-size:.8rem;min-height:40px}
.cat-controls button:hover{border-color:#d5b574}.cat-controls button:disabled{cursor:default;opacity:.65}.cat-controls .cat-close{background:#d5b574;color:#10110f;border-color:#d5b574}
@keyframes cat-roam{0%{transform:translateX(calc(var(--travel)*-28px))}45%{transform:translateX(calc(var(--travel)*45px))}70%{transform:translateX(calc(var(--travel)*35px))}100%{transform:translateX(calc(var(--travel)*-40px))}}
@keyframes cat-trot{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-3px) rotate(2deg)}}
@keyframes cat-groom{0%,60%,100%{transform:rotate(0)}20%,40%{transform:rotate(-5deg)}30%,50%{transform:rotate(3deg)}}
@keyframes cat-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.06)}}
@keyframes cat-stretch{0%,70%,100%{transform:scaleX(1)}35%{transform:scaleX(1.12) scaleY(.94)}}
@keyframes cat-pounce{0%,70%,100%{transform:translateY(0) rotate(0)}30%{transform:translateY(-44px) rotate(-8deg)}50%{transform:translateY(-22px) rotate(7deg)}}
@keyframes cat-speak{0%,80%{opacity:1;transform:translate(-50%,-20%)}100%{opacity:0;transform:translate(-50%,-70%)}}
@media(max-width:700px){.pixel-cat{width:calc(var(--cat-size)*.75)}.cat-controls{bottom:.75rem;gap:.5rem;flex-wrap:wrap;justify-content:center;padding:.65rem;max-width:calc(100% - 1.5rem)}.cat-controls>span{width:100%;text-align:center;font-size:.75rem}}
@media(prefers-reduced-motion:reduce){.pixel-cat,.cat-sprite{animation:none!important}.pixel-cat.cat-loved::after{animation:none;opacity:1}}
