/* Pixel overlays leave surrounding home controls accessible. */
.home-cat .cat-actor{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.home-cat .cat-actor{cursor:grab}
.home-cat .cat-actor{z-index:150}
.home-cat .cat-actor.is-carried{cursor:grabbing;z-index:301}
.cat-fixtures{position:fixed;inset:0;z-index:9;overflow:hidden;pointer-events:none;contain:strict;direction:ltr}
.cat-fixtures[hidden]{display:none!important}
.cat-world{position:fixed;inset:0;z-index:8;overflow:hidden;pointer-events:none;contain:strict;direction:ltr}
.cat-world>.home-cat,.cat-world>.cat-fixtures{position:absolute;inset:0;z-index:auto;contain:none;overflow:visible}
.cat-litter-front{position:absolute;left:0;top:0;width:116px;height:56px;background:url("assets/cat/litter-box.png") 0 0/100% 100% no-repeat;clip-path:inset(61% 0 0 0);image-rendering:pixelated;pointer-events:none;transform-origin:50% 50%}
.cat-litter-front[hidden]{display:none!important}
.cat-trash,.cat-litter{position:absolute;left:0;top:0;background-size:100% 100%;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none;transform-origin:50% 100%}
.cat-fixtures .cat-trash,.cat-fixtures .cat-litter{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;outline:none}
.cat-fixtures .is-dragging{cursor:grabbing;z-index:302}
.cat-fixtures .is-falling{will-change:transform}
.cat-fixtures .is-dragging,.cat-fixtures .is-falling{transform-origin:50% 50%}
.cat-fixtures [role=button]:focus-visible{outline:2px dashed var(--forest);outline-offset:-4px;border-radius:4px}
.cat-trash{width:70px;height:126px;background-image:url("assets/cat/trash-lid.png");background-size:280px 126px;z-index:200}
.cat-litter{width:116px;height:56px;background-image:url("assets/cat/litter-box.png");z-index:1}
.cat-sand-grain{position:absolute;left:0;top:0;width:3px;height:3px;image-rendering:pixelated;pointer-events:none;z-index:303}
.cat-carry-legs,.cat-carry-body,.cat-carry-leg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;image-rendering:pixelated}
.cat-carry-legs[hidden]{display:none!important}
.cat-carry-legs:not([data-ready=true]){visibility:hidden}
.cat-carry-leg{background:url("assets/cat/carried-original.png") 0 0/100% 100% no-repeat}
.cat-carry-leg:nth-of-type(1){clip-path:inset(66.1458% 47.3958% 6.25% 31.25%)}
.cat-carry-leg:nth-of-type(2){clip-path:inset(56.25% 28.6458% 19.7917% 52.6042%)}
.cat-trash[hidden],.cat-litter[hidden]{display:none!important}
.cat-trash.cat-bin-hit{animation:cat-bin-bump .3s ease-out}
@keyframes cat-bin-bump{0%,100%{scale:1}35%{scale:1.04 .95}65%{scale:.98 1.02}}
.cat-ground-patch.in-litter{z-index:2;background:#cdbb95}
.cat-ground-patch.in-litter:before{background:#a5906d}
.cat-food-sprite{transition:scale .14s ease-out}
.cat-ground-patch{position:absolute;left:0;top:0;width:34px;height:7px;pointer-events:none;z-index:0;background:#827055;clip-path:polygon(0 35%,12% 35%,12% 0,85% 0,85% 35%,100% 35%,100% 75%,85% 75%,85% 100%,12% 100%,12% 75%,0 75%);transform-origin:center;image-rendering:pixelated}
.cat-ground-patch[hidden]{display:none!important}
.cat-ground-patch:before{content:"";position:absolute;inset:2px 5px 1px;background:#514938;opacity:.72}
.cat-ground-patch:after{content:"";position:absolute;left:14px;top:0;width:5px;height:3px;background:#826143;box-shadow:3px -2px #826143;opacity:0}
.cat-ground-patch[data-phase=toileting]:after{opacity:var(--patch-progress)}
.cat-ground-patch[data-phase=returning]:after{opacity:1}
.cat-ground-patch[data-phase=burying]{background:#a38e6d}
.cat-ground-patch[data-phase=burying]:before{opacity:calc(1 - var(--patch-progress))}
.cat-ground-patch[data-phase=burying]:after{opacity:calc(1 - var(--patch-progress))}
.cat-ground-patch[data-phase=sniffing],.cat-ground-patch[data-phase=checking]{background:#b29d7b;height:4px}
.cat-ground-patch[data-phase=sniffing]:before,.cat-ground-patch[data-phase=sniffing]:after,.cat-ground-patch[data-phase=checking]:before,.cat-ground-patch[data-phase=checking]:after{opacity:0}
.cat-ground-patch i{position:absolute;width:3px;height:3px;background:#b29d7b;opacity:0}
.cat-ground-patch[data-phase=digging] i,.cat-ground-patch[data-phase=burying] i{animation:cat-dirt .65s steps(5) infinite}
.cat-ground-patch i:nth-child(1){left:0;animation-delay:-.13s!important}.cat-ground-patch i:nth-child(2){left:7px;animation-delay:-.36s!important}.cat-ground-patch i:nth-child(3){left:19px;animation-delay:-.51s!important}.cat-ground-patch i:nth-child(4){left:30px;animation-delay:-.23s!important}.cat-ground-patch i:nth-child(5){left:37px;animation-delay:-.43s!important}
@keyframes cat-dirt{0%{opacity:0;transform:translate(0,0)}20%{opacity:.8;transform:translate(2px,-5px)}70%{opacity:.6;transform:translate(5px,-1px)}100%{opacity:0;transform:translate(7px,2px)}}
:root[data-theme=dark] .cat-ground-patch{filter:brightness(.84)}
.cat-grave{position:absolute;left:0;top:0;background:url("assets/cat/grave.png") 0 0/100% 100% no-repeat;image-rendering:pixelated;pointer-events:none;transform-origin:50% 93.75%}
.cat-grave[hidden],.cat-food[hidden],.cat-actor[hidden],.cat-food-impact[hidden]{display:none!important}
.cat-food{position:absolute;left:0;top:0;width:44px;height:44px;padding:0;border:0;background:none;pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;outline:none;will-change:transform;z-index:3}
.cat-food.is-dragging{cursor:grabbing;z-index:20000!important}
.cat-food-sprite{position:absolute;inset:0;background-position:50%;background-size:100% 100%;background-repeat:no-repeat;image-rendering:pixelated;transform-origin:50% 50%;will-change:transform}
.cat-food-impact{position:absolute;left:0;top:0;width:0;height:0;pointer-events:none;z-index:2;contain:layout style}
.cat-food-impact i{position:absolute;left:-2px;top:0;width:4px;height:3px;background:#a28c69;image-rendering:pixelated;opacity:0;pointer-events:none}
.cat-food-impact i:nth-child(2n){width:3px;height:3px;background:#c3ac84}
:root[data-theme=dark] .cat-food-impact i{background:#c1b09a}
:root[data-theme=dark] .cat-food-impact i:nth-child(2n){background:#908778}
.cat-food:focus-visible:after{content:"";position:absolute;inset:2px;border:2px dashed var(--accent,#00896f);border-radius:8px}
.cat-actor.cat-alert:after{content:"؟";position:absolute;right:16%;top:4%;font-family:inherit;font-size:18px;line-height:1;color:#ae8cdb;text-shadow:0 1px 0 rgba(0,0,0,.12);pointer-events:none}
.cat-actor.cat-purring:before{content:"♥";position:absolute;left:48%;top:0;font-family:Arial,sans-serif;font-size:12px;color:#cf7a98;line-height:1;pointer-events:none;animation:cat-purr-heart 1.8s ease-in-out infinite}
@keyframes cat-purr-heart{0%,100%{opacity:.5;transform:translateY(2px) scale(.9)}50%{opacity:.9;transform:translateY(-3px) scale(1)}}
@media(prefers-reduced-motion:reduce){.cat-actor.cat-purring:before{animation:none}.cat-food,.cat-food-sprite{will-change:auto;transition:none}.cat-food-impact{display:none}.cat-ground-patch i{animation:none!important}}
@media(prefers-reduced-motion:reduce){.cat-trash.cat-bin-hit{animation:none}}
@media print{.cat-world,.cat-fixtures{display:none!important}}

/* Permanent pixel toys share the existing scene and pointer ownership. */
.cat-yarn,.cat-box,.cat-box-front{position:absolute;left:0;top:0;background-repeat:no-repeat;background-position:0 0;background-size:100% 100%;image-rendering:pixelated;transform-origin:50% 50%}
.cat-yarn{width:36px;height:36px;background-image:url("assets/cat/yarn-ball.png")}
.cat-box,.cat-box-front{width:128px;height:88px;background-image:url("assets/cat/cardboard-box.png")}
.cat-box-front{background-image:url("assets/cat/cardboard-box-front.png");pointer-events:none}
.cat-fixtures .cat-yarn,.cat-fixtures .cat-box{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;cursor:grab;outline:none}
.cat-yarn[hidden],.cat-box[hidden],.cat-box-front[hidden]{display:none!important}
.cat-box[data-cat=sleeping]:after{content:"z";position:absolute;left:58%;top:-13px;font:14px/1 monospace;color:#ac91cb;pointer-events:none;animation:cat-box-sleep 3s steps(6) infinite}
@keyframes cat-box-sleep{0%{transform:translate(0,0);opacity:0}25%{opacity:.8}100%{transform:translate(8px,-14px);opacity:0}}
@media(prefers-reduced-motion:reduce){.cat-box[data-cat=sleeping]:after{animation:none}}

.cat-scratch-mark{position:absolute;width:28px;height:26px;pointer-events:none;z-index:19000;opacity:.7;image-rendering:pixelated}
.cat-scratch-mark svg{width:100%;height:100%;fill:none;stroke:var(--ink,#304a50);stroke-width:1.1;stroke-linecap:square}
.cat-world:has(>.home-cat[hidden]) .cat-scratch-mark{display:none}

.study-cat-scene{position:fixed;inset:0;z-index:8;overflow:hidden;pointer-events:none;direction:ltr}
.study-cat-scene[hidden]{display:none!important}
.study-cat-actor{position:absolute;left:0;top:0;padding:0;border:0;background:none;pointer-events:auto;cursor:pointer;touch-action:manipulation}
.study-cat-sprite{display:block;width:100%;height:100%;transform-origin:50% 93.75%;background-repeat:no-repeat;image-rendering:pixelated;pointer-events:none}
.study-cat-yarn{position:absolute;left:0;top:0;width:22px;height:22px;background:url("assets/cat/yarn-ball.png") center/100% 100% no-repeat;image-rendering:pixelated;pointer-events:none}
.study-cat-topic{position:absolute;left:0;top:0;display:block;white-space:nowrap;text-align:center;font-weight:800;pointer-events:none;will-change:transform}
#current-topic-label{display:inline-block;transform-origin:50% 100%}

.study-cat-actor:focus{outline:none}
.study-cat-actor:focus-visible:not([data-pointer-focus]):after{content:"";position:absolute;bottom:5%;left:25%;width:50%;height:5px;border:1px dashed var(--forest);border-radius:50%;pointer-events:none}
.study-cat-burst{position:absolute;left:0;top:0;pointer-events:none}
.study-cat-burst>i{position:absolute;left:0;top:0;width:3px;height:3px;background:var(--purple,#9a7bd0);image-rendering:pixelated}
.study-cat-burst[data-kind="land"]>i{width:2px;height:2px;background:var(--muted,#9b9385)}
