/* Title first, a delayed entrance, then an automatic character performance loop. */
.home .poster{isolation:isolate}.home .logo{transform:none;isolation:auto;animation:none;transform-origin:50% 65%}
.home .logo h1,.home .logo-ribbon{position:relative;z-index:6}
.home .logo:before,.home .logo:after{animation:burst-breathe 5.8s ease-in-out infinite;transform-origin:center}
.home .logo h1{animation:title-wiggle 4.8s ease-in-out .6s infinite;transform-origin:50% 80%}
.home .logo-ribbon{animation:ribbon-arrive .9s cubic-bezier(.2,.8,.2,1.2) both}
.home .doodle.plus{animation:doodle-turn 7s ease-in-out infinite}.home .doodle.star{animation:doodle-star 4.8s ease-in-out .7s infinite}.home .doodle.dot{animation:doodle-float 5s ease-in-out 1.2s infinite}
.home .home-panel{animation:panel-arrive .65s ease-out .95s both}.home .poster>.bubble{margin-top:0;max-width:100%;min-height:38px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:11px;transition:background .2s;animation:panel-arrive .35s ease-out 1.2s both}.home .poster-note{animation:panel-arrive .35s ease-out 1.2s both}
.home .poster>.bubble:after{left:calc(50% - 5px);bottom:auto;top:-7px;transform:rotate(135deg)}
.cat-stage{position:relative;width:280px;height:278px;margin:0 auto;isolation:auto;flex-shrink:0}
.cat-pet{display:block;position:absolute;inset:0;z-index:3;padding:0;border:0;background:none;box-shadow:none;touch-action:manipulation;border-radius:40%;cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.cat-pet:hover:not(:disabled){filter:none}.cat-pet:active:not(:disabled){transform:none;box-shadow:none}.cat-pet:focus-visible{outline:3px dashed var(--blue);outline-offset:0}
.live-cat{width:100%;height:100%;overflow:visible;pointer-events:none}
.cat-head,.cat-foot,.cat-torso,.prone-head,.prone-body,.prone-feet{pointer-events:visiblePainted}.cat-arm,.prone-paws{pointer-events:none}
.cat-prone{opacity:0;pointer-events:none;transform-origin:160px 299px}.cat-stage:not([data-act="belly"]):not([data-act="belly-up"]) .cat-prone *{pointer-events:none!important}
.cat-stage[data-act="belly"] .cat-breathe *,.cat-stage[data-act="belly-up"] .cat-breathe *{pointer-events:none!important}
.cat-breathe{transform-origin:160px 285px;animation:cat-breathe 3.8s ease-in-out infinite}
.cat-tail{transform-origin:207px 253px;animation:cat-tail 3s ease-in-out infinite}
.cat-head{transform-origin:160px 202px;animation:cat-look 8s ease-in-out infinite}
.ear-left{transform-origin:103px 84px}.ear-right{transform-origin:220px 84px;animation:ear-twitch 9s ease-in-out 2s infinite}
.arm-left{transform-origin:122px 220px}.arm-right{transform-origin:198px 220px}.foot-left{transform-origin:140px 276px}.foot-right{transform-origin:182px 276px}
.cat-open-eyes{transform-box:fill-box;transform-origin:center;transition:transform 70ms ease-out}
.cat-closed-eyes,.mouth-happy,.mouth-oh,.mouth-worried,.cat-sweat{display:none}
.cat-stage.is-blinking .cat-open-eyes{transform:scaleY(.05)}.cat-stage.is-blinking .cat-closed-eyes{display:block}
.cat-stage[data-expression="happy"] .cat-open-eyes,.cat-stage[data-expression="shy"] .cat-open-eyes,.cat-stage[data-expression="sleep"] .cat-open-eyes{display:none}
.cat-stage[data-expression="happy"] .cat-closed-eyes,.cat-stage[data-expression="shy"] .cat-closed-eyes,.cat-stage[data-expression="sleep"] .cat-closed-eyes{display:block}
.cat-stage[data-expression="happy"] .mouth-smile,.cat-stage[data-expression="surprised"] .mouth-smile{display:none}
.cat-stage[data-expression="happy"] .mouth-happy,.cat-stage[data-expression="surprised"] .mouth-oh{display:block}
.cat-stage[data-expression="shy"] .cat-cheeks{fill:#ff5c9e}.cat-stage[data-expression="sleep"] .cat-closed-eyes{transform:translateY(280px) scaleY(-1)}
.cat-spark,.cat-heart{position:absolute;pointer-events:none;opacity:0;z-index:2;font-weight:900}.cat-spark{color:#ffe46a;-webkit-text-stroke:1.5px var(--ink);font-size:36px}.spark-one{left:14px;top:65px}.spark-two{right:4px;top:110px;color:#bda2fb;font-size:30px}.cat-heart{right:36px;top:38px;color:#f36da8;font-size:30px;-webkit-text-stroke:1.5px var(--ink)}
.pet-caption{position:absolute;right:-30px;bottom:12px;font-size:9px;letter-spacing:1px;transform:rotate(-8deg);color:#82748c;pointer-events:none;transition:opacity .4s}.pet-caption span{display:inline-block;color:#e568a0;font-size:18px;margin-left:2px}.pet-caption.has-petted{opacity:0}
.cat-stage[data-act="greet"] .cat-jump{animation:cat-enter 1.15s cubic-bezier(.2,.7,.3,1) both;transform-origin:160px 291px}
.cat-stage[data-act="greet"] .cat-shadow{animation:shadow-enter 1.15s ease-out both;transform-origin:160px 299px}
.cat-stage[data-act="greet"] .arm-right,.cat-stage[data-act="wave"] .arm-right{animation:cat-wave 1.5s ease-in-out}
.cat-stage[data-mode="intro"] .cat-jump,.cat-stage[data-mode="intro"] .cat-shadow,.cat-stage[data-mode="intro"] .cat-spark,.cat-stage[data-mode="intro"] .arm-right{animation-delay:.5s}
.cat-stage[data-mode="intro"] .pet-caption{opacity:0}.cat-stage[data-mode="intro"] .cat-pet{pointer-events:none}
.cat-stage[data-act="hop"] .cat-jump{animation:cat-hop 1.15s ease-in-out;transform-origin:160px 290px}
.cat-stage[data-act="hop"] .cat-shadow{animation:shadow-hop 1.15s ease-in-out;transform-origin:160px 299px}
.cat-stage[data-act="hop"] .arm-left{animation:arm-cheer-left 1.15s ease-in-out}.cat-stage[data-act="hop"] .arm-right{animation:arm-cheer-right 1.15s ease-in-out}
.cat-stage[data-act="hop"] .cat-spark,.cat-stage[data-act="greet"] .cat-spark{animation:cat-spark 1.15s ease-out both}.cat-stage[data-act="hop"] .spark-two{animation-delay:.15s}
.cat-stage[data-act="wave"] .cat-head{animation:cat-tilt 1.7s ease-in-out}.cat-stage[data-act="wave"] .ear-left{animation:left-ear-twitch .8s ease-in-out}
.cat-stage[data-act="shy"] .cat-head{animation:cat-shy 1.8s ease-in-out}.cat-stage[data-act="shy"] .arm-left{animation:shy-left 1.8s ease-in-out}.cat-stage[data-act="shy"] .arm-right{animation:shy-right 1.8s ease-in-out}.cat-stage[data-act="shy"] .cat-heart{animation:heart-up 1.8s ease-out}
.cat-stage[data-act="nuzzle"] .cat-head{animation:cat-nuzzle 1.8s ease-in-out}.cat-stage[data-act="nuzzle"] .arm-left{animation:shy-left 1.8s ease-in-out}.cat-stage[data-act="nuzzle"] .arm-right{animation:shy-right 1.8s ease-in-out}.cat-stage[data-act="nuzzle"] .cat-heart{animation:heart-up 1.8s ease-out}.cat-stage[data-act="nuzzle"] .cat-tail{animation:tail-love 1.8s ease-in-out}
.cat-stage[data-act="stretch"] .cat-breathe{animation:cat-stretch 2.1s ease-in-out}.cat-stage[data-act="stretch"] .arm-left{animation:stretch-left 2.1s ease-in-out}.cat-stage[data-act="stretch"] .arm-right{animation:stretch-right 2.1s ease-in-out}
.cat-stage[data-act="curious"] .cat-head{animation:cat-tilt 1.8s ease-in-out}.cat-stage[data-act="curious"] .cat-pupils{animation:cat-gaze 1.8s ease-in-out}
.cat-stage[data-act="depart"] .cat-jump{animation:cat-depart .52s ease-in both;transform-origin:160px 290px}.cat-stage[data-act="depart"] .arm-right{transform:rotate(-135deg)}
.is-departing .home-panel{pointer-events:none}.is-departing .big-button{transform:translateY(4px);box-shadow:0 2px 0 var(--ink)}
.cat-stage[data-act="sleep"] .cat-tail{animation-duration:6s}
/* Feet and paws render after the torso and head, so lifted limbs stay visible. */
.cat-stage[data-act="foot-left"] .foot-left{animation:foot-dodge-left 1s ease-out both}.cat-stage[data-act="foot-right"] .foot-right{animation:foot-dodge-right 1s ease-out both}
.cat-stage[data-act="foot-down-left"] .foot-left{animation:foot-dodge-left .45s ease-in-out reverse both}.cat-stage[data-act="foot-down-right"] .foot-right{animation:foot-dodge-right .45s ease-in-out reverse both}
.cat-stage[data-act="foot-left"] .cat-breathe{animation:weight-right 1s ease-out both}.cat-stage[data-act="foot-right"] .cat-breathe{animation:weight-left 1s ease-out both}
.cat-stage[data-act="foot-down-left"] .cat-breathe{animation:weight-right .45s ease-in-out reverse both}.cat-stage[data-act="foot-down-right"] .cat-breathe{animation:weight-left .45s ease-in-out reverse both}
.cat-stage[data-act="belly"] .cat-breathe{animation:stand-to-prone 1.1s ease-in-out both}.cat-stage[data-act="belly"] .cat-prone{animation:prone-settle 1.1s ease-in-out both}
.cat-stage[data-act="belly-up"] .cat-breathe{animation:stand-to-prone .65s ease-in-out reverse both}.cat-stage[data-act="belly-up"] .cat-prone{animation:prone-settle .65s ease-in-out reverse both}
.cat-stage[data-act="belly"] .prone-body,.cat-stage[data-act="belly-up"] .prone-body{animation:prone-purr 2.2s ease-in-out infinite;transform-origin:195px 286px}
.cat-stage[data-act="belly"] .prone-tail,.cat-stage[data-act="belly-up"] .prone-tail{animation:cat-tail 2.6s ease-in-out infinite;transform-origin:239px 261px}
.cat-stage[data-act="belly"] .cat-head,.cat-stage[data-act="belly-up"] .cat-head{animation:none}
.cat-stage[data-act="belly"] .cat-heart{animation:heart-up 2s ease-out infinite}.cat-stage[data-act="belly"] .cat-shadow,.cat-stage[data-act="belly-up"] .cat-shadow{transform:scaleX(1.2);transform-origin:160px 299px}
.cat-stage[data-act="head-jump"] .cat-jump{animation:head-flight 2.4s ease-in-out both;transform-origin:160px 285px}
.cat-stage[data-act="head-jump"] .cat-shadow{animation:head-flight-shadow 2.4s ease-in-out both;transform-origin:160px 299px}
.cat-stage[data-act="head-jump"] .cat-tumble{animation:cat-somersault 2.4s ease-in-out both;transform-origin:160px 160px}
.cat-stage[data-act="head-jump"] .cat-breathe{animation:none}
.cat-stage[data-act="head-jump"] .arm-left{animation:flip-arm-left 2.4s ease-in-out both}.cat-stage[data-act="head-jump"] .arm-right{animation:flip-arm-right 2.4s ease-in-out both}
.cat-stage[data-act="head-jump"] .foot-left{animation:flip-leg-left 2.4s ease-in-out both}.cat-stage[data-act="head-jump"] .foot-right{animation:flip-leg-right 2.4s ease-in-out both}
.cat-stage[data-act="head-jump"] .cat-head{animation:none}
body:has(dialog[open]) .cat-stage *,body:has(dialog[open]) .home .logo *{animation-play-state:paused}
.home.is-sleeping *,.home.is-sleeping *:before,.home.is-sleeping *:after,body:has(dialog[open]) .home .logo:before,body:has(dialog[open]) .home .logo:after{animation-play-state:paused}
@keyframes logo-arrive{from{opacity:0;transform:translateY(-18px) rotate(-8deg) scale(.9)}to{opacity:1;transform:rotate(-5deg)}}
@keyframes burst-breathe{0%,100%{transform:rotate(-2deg) scale(.98)}50%{transform:rotate(3deg) scale(1.025)}}
@keyframes title-wiggle{0%,72%,100%{transform:rotate(2deg)}78%{transform:translateY(-3px) rotate(-2deg)}84%{transform:rotate(4deg)}90%{transform:rotate(1deg)}}
@keyframes ribbon-arrive{from{opacity:0;transform:translateY(12px) rotate(7deg) scale(.85)}to{opacity:1;transform:rotate(3deg)}}
@keyframes doodle-turn{0%,65%,100%{transform:rotate(-15deg)}78%{transform:rotate(80deg)}90%{transform:rotate(75deg)}}
@keyframes doodle-star{0%,100%{transform:rotate(0) scale(1)}50%{transform:rotate(20deg) scale(1.15)}}
@keyframes doodle-float{0%,100%{transform:translateY(0) rotate(-12deg)}50%{transform:translateY(-6px) rotate(8deg)}}
@keyframes panel-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes cat-breathe{0%,100%{transform:scale(1,1)}50%{transform:scale(1.012,.985)}}
@keyframes cat-tail{0%,100%{transform:rotate(-7deg)}50%{transform:rotate(12deg)}}
@keyframes cat-look{0%,35%,65%,100%{transform:rotate(0)}45%,55%{transform:rotate(-3deg)}}
@keyframes ear-twitch{0%,68%,84%,100%{transform:rotate(0)}72%,79%{transform:rotate(10deg)}75%{transform:rotate(-3deg)}}
@keyframes left-ear-twitch{0%,100%{transform:rotate(0)}35%{transform:rotate(-9deg)}65%{transform:rotate(3deg)}}
@keyframes cat-enter{0%{opacity:0;transform:translateY(-45px) rotate(-9deg) scale(.8)}40%{opacity:1;transform:translateY(0) scale(1.1,.84)}62%{transform:translateY(-17px) rotate(4deg) scale(.97,1.04)}80%{transform:translateY(0) scale(1.04,.95)}100%{opacity:1;transform:none}}
@keyframes shadow-enter{0%{opacity:0;transform:scale(.5)}40%{opacity:.18;transform:scale(1.12)}62%{opacity:.08;transform:scale(.78)}100%{opacity:.13;transform:scale(1)}}
@keyframes cat-hop{0%,100%{transform:none}17%{transform:scale(1.09,.85)}39%{transform:translateY(-40px) rotate(-5deg) scale(.95,1.06)}58%{transform:translateY(-30px) rotate(4deg)}78%{transform:scale(1.12,.84)}90%{transform:scale(.99,1.03)}}
@keyframes shadow-hop{0%,100%{transform:scale(1);opacity:.13}17%,78%{transform:scale(1.12);opacity:.18}39%,58%{transform:scale(.65);opacity:.07}}
@keyframes cat-wave{0%,100%{transform:rotate(0)}20%,48%,76%{transform:rotate(-145deg)}34%,62%{transform:rotate(-112deg)}88%{transform:rotate(-120deg)}}
@keyframes arm-cheer-left{0%,100%{transform:rotate(0)}30%,65%{transform:rotate(130deg)}}
@keyframes arm-cheer-right{0%,100%{transform:rotate(0)}30%,65%{transform:rotate(-130deg)}}
@keyframes cat-spark{0%,100%{opacity:0;transform:translateY(10px) scale(.3) rotate(-20deg)}35%{opacity:1;transform:translateY(-7px) scale(1.1) rotate(12deg)}75%{opacity:.7;transform:translateY(-18px) scale(.8)}}
@keyframes cat-tilt{0%,100%{transform:rotate(0)}30%,65%{transform:rotate(-9deg)}}
@keyframes cat-shy{0%,100%{transform:none}30%,75%{transform:translateY(7px) rotate(7deg)}}
@keyframes cat-nuzzle{0%,100%{transform:none}25%{transform:translate(-5px,3px) rotate(-8deg)}55%{transform:translate(5px,4px) rotate(8deg)}80%{transform:translate(-2px,3px) rotate(-4deg)}}
@keyframes tail-love{0%,100%{transform:rotate(0)}25%,75%{transform:rotate(18deg)}50%{transform:rotate(-8deg)}}
@keyframes shy-left{0%,100%{transform:none}30%,75%{transform:translate(13px,-17px) rotate(20deg)}}
@keyframes shy-right{0%,100%{transform:none}30%,75%{transform:translate(-13px,-17px) rotate(-20deg)}}
@keyframes heart-up{0%,100%{opacity:0;transform:translateY(15px) scale(.5)}30%{opacity:1;transform:translateY(0) scale(1)}85%{opacity:0;transform:translateY(-30px) rotate(15deg)}}
@keyframes cat-stretch{0%,100%{transform:scale(1)}35%,65%{transform:scale(.96,1.07)}}
@keyframes stretch-left{0%,100%{transform:rotate(0)}35%,65%{transform:rotate(155deg)}}
@keyframes stretch-right{0%,100%{transform:rotate(0)}35%,65%{transform:rotate(-155deg)}}
@keyframes cat-gaze{0%,100%{transform:translateX(0)}30%,65%{transform:translateX(-4px)}}
@keyframes cat-depart{0%{transform:none}28%{transform:scale(1.08,.88)}100%{transform:translateY(-25px) rotate(9deg) scale(.95,1.03);opacity:0}}
@keyframes foot-dodge-left{0%{transform:none}35%,100%{transform:translate(-12px,-40px) rotate(-26deg)}}
@keyframes foot-dodge-right{0%{transform:none}35%,100%{transform:translate(12px,-40px) rotate(26deg)}}
@keyframes weight-right{0%{transform:none}35%,100%{transform:translateX(5px) rotate(3deg)}}
@keyframes weight-left{0%{transform:none}35%,100%{transform:translateX(-5px) rotate(-3deg)}}
@keyframes stand-to-prone{0%{opacity:1;transform:scale(1)}22%,100%{opacity:0;transform:translateY(20px) scale(1.05,.8)}}
@keyframes prone-settle{0%{opacity:0;transform:translateY(-24px) scale(.95,1.04)}25%{opacity:1;transform:scale(1.035,.96)}60%,100%{opacity:1;transform:none}}
@keyframes prone-purr{0%,100%{transform:scale(1)}50%{transform:scale(1.02,1.035)}}
@keyframes head-flight{0%,100%{transform:none}12%{transform:scale(1.1,.84)}26%{transform:translate(calc(var(--leap-x)*.18),calc(var(--leap-y)*.12)) scale(.82)}32%{transform:translate(calc(var(--leap-x)*.35),calc(var(--leap-y)*.28)) scale(.6)}42%,52%{transform:translate(var(--leap-x),var(--leap-y)) scale(var(--leap-scale))}64%{transform:translate(calc(var(--leap-x)*.3),calc(var(--leap-y)*.25)) scale(.6)}74%{transform:translate(calc(var(--leap-x)*.14),calc(var(--leap-y)*.08)) scale(.87)}88%{transform:scale(1.1,.84)}}
@keyframes head-flight-shadow{0%,100%{transform:scale(1);opacity:.13}12%,88%{transform:scale(1.13);opacity:.18}38%,52%{transform:scale(.3);opacity:.04}}
/* Tuck for the forward somersault up, open out for the reverse somersault down. */
@keyframes cat-somersault{0%,12%{transform:rotate(0) scale(1)}22%{transform:rotate(180deg) scale(.88)}32%,52%,64%{transform:rotate(360deg) scale(1)}74%{transform:rotate(180deg) scale(1.04,.96)}86%,100%{transform:rotate(0) scale(1)}}
@keyframes flip-arm-left{0%,12%,100%{transform:none}24%,35%{transform:rotate(105deg)}42%,52%{transform:rotate(135deg)}63%,76%{transform:rotate(165deg)}88%{transform:rotate(35deg)}}
@keyframes flip-arm-right{0%,12%,100%{transform:none}24%,35%{transform:rotate(-105deg)}42%,52%{transform:rotate(-135deg)}63%,76%{transform:rotate(-165deg)}88%{transform:rotate(-35deg)}}
@keyframes flip-leg-left{0%,12%,46%,100%{transform:none}24%,35%{transform:translate(8px,-25px) rotate(-30deg)}65%,74%{transform:translate(-6px,-8px) rotate(-20deg)}88%{transform:none}}
@keyframes flip-leg-right{0%,12%,46%,100%{transform:none}24%,35%{transform:translate(-8px,-25px) rotate(30deg)}65%,74%{transform:translate(6px,-8px) rotate(20deg)}88%{transform:none}}
@media(min-width:1300px){.cat-stage{width:300px;height:300px}}
@media(max-width:800px){.cat-stage{width:252px;height:250px}}
@media(max-width:600px){.home{gap:20px;padding-top:18px}.home .logo{height:174px;margin-top:14px}.cat-stage{width:224px;height:220px;margin:0 auto}.home .poster>.bubble{min-height:33px;font-size:10px;padding:7px 12px;margin-top:-2px}.pet-caption{font-size:8px;right:-26px;bottom:9px}.cat-spark{font-size:28px}.spark-one{left:3px;top:48px}.spark-two{right:-1px;top:80px}.cat-heart{right:20px;top:24px}}
@media(prefers-reduced-motion:reduce){html:not([data-home-motion="on"]) .home *,html:not([data-home-motion="on"]) .home *:before,html:not([data-home-motion="on"]) .home *:after{animation:none!important;transition:none!important}html:not([data-home-motion="on"]) .cat-stage[data-act="depart"] .cat-jump{opacity:1}html:not([data-home-motion="on"]) .cat-stage .cat-spark,html:not([data-home-motion="on"]) .cat-stage .cat-heart{display:none}}
