/* Original cats, soft colors and a scroll-driven playmate. All art is SVG. */
.cat-logo{display:block;width:46px;height:46px;flex-shrink:0;transition:transform .25s}.identity:hover .cat-logo{transform:rotate(-7deg)}
.cat-scene{overflow:clip;position:relative;isolation:isolate;aspect-ratio:1.13;width:100%;max-width:600px;margin:auto}.cat-illustration{display:block;width:100%;height:auto;overflow:visible}.cat-hero{position:absolute;inset:4% 0 auto;z-index:1}.cat-scene::before{content:"";position:absolute;inset:10% -2% 5%;background:radial-gradient(ellipse,#91b6a115,transparent 65%);z-index:-1}.cat-orbit{position:absolute;inset:14% 7% 10%;border:1px solid #abc49517;border-radius:50%;transform:rotate(-18deg)}.cat-orbit::before{content:"";position:absolute;inset:17px -22px;border:1px dashed #abc49514;border-radius:50%;transform:rotate(30deg)}
.cat-scene-caption{position:absolute;left:7%;right:4%;top:0;display:flex;justify-content:space-between;gap:10px;font:7px var(--mono);letter-spacing:1.3px;color:var(--muted)}.cat-scene-caption>span:first-child{display:flex;align-items:center;gap:8px}.cat-scene-caption .live-dot{width:4px;height:4px}.cat-code-sticker{position:absolute;right:2%;top:18%;font:9px/1.9 var(--mono);color:#d0d5c8;border:1px solid #b5c99a33;border-radius:8px;background:#151d1b;padding:11px 16px;transform:rotate(6deg);z-index:2;box-shadow:0 10px 20px #0002}.cat-code-sticker>span{color:#a7bd8a}.cat-scene-note{position:absolute;left:9%;right:4%;bottom:0;display:flex;gap:9px;align-items:center;font:7px var(--mono);letter-spacing:1px;color:#a7b6a9}.cat-scene-note>span:last-child{margin-left:auto;color:#d8fa78;font-size:14px}.paw-mark{width:15px;height:15px;flex-shrink:0}.cat-scene-note .paw-mark{color:#d8fa78;opacity:.7}.capability-strip i{display:flex}.capability-strip .paw-mark{width:16px;height:16px;opacity:.65}
.cat-eyes{transform-box:fill-box;transform-origin:center;animation:cat-blink 7s infinite}.cat-tail{transform-box:fill-box;transform-origin:0% 90%}.cat-play-paw{transform-box:fill-box;transform-origin:10% 5%;transform:rotate(var(--cat-paw,0deg));transition:transform .12s ease-out}.cat-yarn{transform:translateX(var(--cat-yarn-shift,0px));transition:transform .14s ease-out}.yarn-spin{transform-box:fill-box;transform-origin:center;transform:rotate(var(--cat-yarn-roll,0deg));transition:transform .14s ease-out}.cat-mouse{transform-box:fill-box;transform-origin:center}.cat-body{transform:translateY(var(--cat-bob,0px));transition:transform .16s ease-out}
[data-cat-state="playing"] .cat-tail{animation:cat-tail-flick .65s ease-in-out infinite alternate}[data-cat-state="playing"] .cat-mouse{animation:cat-mouse-hop .55s ease-in-out infinite}.sleeping-cat{display:block;width:190px;max-width:70%;height:auto;margin-top:24px;opacity:1}.expertise-code+.sleeping-cat{margin-top:12px}.signature .paw-mark{display:inline-block;vertical-align:middle;margin-left:10px;color:var(--accent);width:13px;height:13px}.contact-section::before{border-color:#d8fa780b}.contact-round .paw-mark{width:40px;height:40px}
.scroll-pet{position:fixed;right:18px;bottom:11px;width:172px;height:143px;z-index:25;pointer-events:none;opacity:0;transform:translateY(14px);transition:opacity .25s,transform .25s;contain:layout style}.scroll-pet[hidden]{display:none}[data-cat-visible="true"] .scroll-pet{opacity:1;transform:translateY(0)}.scroll-pet-art{width:100%;height:100%;filter:drop-shadow(0 7px 7px #0005)}.scroll-pet .cat-illustration{width:100%;height:100%}.cat-motion-toggle{pointer-events:auto;display:grid;place-items:center;position:absolute;right:0;bottom:3px;width:30px;height:30px;padding:7px;color:#b7c6b5;background:#172019e8;border:1px solid #7a94654a;border-radius:50%;cursor:pointer;visibility:hidden}.cat-motion-toggle:hover{color:var(--accent);border-color:#a0b887}.cat-motion-toggle:focus-visible{outline:2px solid var(--accent);outline-offset:4px}[data-cat-visible="true"] .cat-motion-toggle{visibility:visible}.cat-motion-toggle svg{width:14px;height:14px}.cat-resume-icon{display:none}.cat-motion-toggle[aria-pressed="true"] .cat-pause-icon{display:none}.cat-motion-toggle[aria-pressed="true"] .cat-resume-icon{display:block}[data-cat-state="resting"] .cat-illustration *{animation:none!important;transition:none!important}
@keyframes cat-blink{0%,43%,47%,100%{transform:scaleY(1)}45%{transform:scaleY(.08)}}@keyframes cat-tail-flick{from{transform:rotate(-2deg)}to{transform:rotate(3deg)}}@keyframes cat-mouse-hop{50%{transform:translate(3px,-3px) rotate(-8deg)}}
@media(min-width:1600px){.cat-logo{width:52px;height:52px}.cat-scene-caption{font-size:8px}.cat-code-sticker{font-size:10px}.cat-scene-note{font-size:8px}}
@media(max-width:1190px){.cat-code-sticker{font-size:8px;padding:8px 12px}.cat-scene-caption{font-size:6px;letter-spacing:.8px}.cat-scene-note{font-size:6px;letter-spacing:.6px}}
@media(max-width:950px){.cat-logo{width:42px;height:42px}.cat-code-sticker{font-size:7px;right:0;padding:7px 10px}.cat-scene-caption{font-size:5px}.cat-scene-note{font-size:5px}.scroll-pet{width:146px;height:122px;right:12px}}
@media(max-width:700px){.cat-logo{width:37px;height:37px}.cat-scene{max-width:430px}.cat-code-sticker{font-size:8px;padding:8px 12px;right:2%}.cat-scene-caption{font-size:6px}.cat-scene-note{font-size:6px}.hero-visual{max-width:430px}.sleeping-cat{width:148px}.scroll-pet{width:115px;height:96px;right:9px;bottom:8px}.cat-motion-toggle{width:27px;height:27px;padding:6px;right:0;bottom:0}.scroll-pet .cat-hero{position:static}}
@media(max-width:374px){.cat-logo{width:33px;height:33px}.cat-scene-caption{font-size:5px}.cat-code-sticker{font-size:6px;padding:6px 9px}.cat-scene-note{font-size:5px}.scroll-pet{width:103px;height:87px}}
@media(prefers-reduced-motion:reduce){.cat-illustration *,.cat-logo,.scroll-pet{animation:none!important;transition:none!important}.cat-body,.cat-play-paw,.cat-yarn,.yarn-spin{transform:none!important}.cat-motion-toggle{display:none}}
@media print{.scroll-pet,.sleeping-cat{display:none!important}.cat-logo{width:34px;height:34px}}

/* Only painted parts of the little cat receive pointer hits; toys and empty
   overlay space keep passing through to the page. Pause is a separate button. */
.scroll-pet-art{display:block;pointer-events:none;visibility:hidden;border-radius:18px}
[data-cat-visible="true"] .scroll-pet-art{visibility:visible}
.scroll-pet-art .cat-body{pointer-events:visiblePainted;cursor:pointer}
.scroll-pet-art:hover .cat-body{filter:drop-shadow(0 0 8px #f0c49640)}
.scroll-pet-art:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* The hero's shoulder is a fixed SVG transform; motion controls only the arm. */
.cat-illustration .cat-play-paw{transform-box:view-box;transform-origin:0 0}
.cat-paw-reach{transform-box:view-box;transform-origin:0 0;transform:scaleX(var(--hero-paw-reach,1));transition:transform .1s ease-out}
.cat-paw-strike{transform-box:view-box;transform-origin:0 0}
.cat-swipe-lines{opacity:0;pointer-events:none}
.cat-scene[data-hunting="true"] .cat-play-paw{transform:rotate(var(--hero-paw-angle,0deg));transition:transform .055s ease-out}
.cat-scene[data-hunting="true"] .cat-paw-strike{animation:cat-cursor-swat .28s cubic-bezier(.2,.7,.2,1) 1}
.cat-scene[data-hunting="true"] .cat-swipe-lines{animation:cat-swat-lines .28s ease-out 1}
@keyframes cat-cursor-swat{0%,100%{transform:translateX(0) rotate(-4deg)}35%{transform:translateX(14px) rotate(3deg)}65%{transform:translateX(0) rotate(-2deg)}}
@keyframes cat-swat-lines{0%,20%,70%,100%{opacity:0}35%,45%{opacity:.8}}
@media(prefers-reduced-motion:reduce){.cat-paw-reach{transform:scaleX(1)!important}.cat-paw-strike{transform:none!important}.cat-swipe-lines{display:none}}

/* Toy play is the hero's default; cursor strikes briefly interrupt it. */
.cat-toy-arm{transform-box:view-box;transform-origin:0 0;animation:cat-toy-bat 3.8s ease-in-out infinite;animation-play-state:paused}
.cat-scene .cat-yarn{animation:cat-toy-roll 3.8s ease-in-out infinite;animation-play-state:paused}
.cat-scene .yarn-spin{animation:cat-toy-spin 3.8s ease-in-out infinite;animation-play-state:paused}
.cat-scene .cat-tail{animation:cat-tail-swish 3.1s ease-in-out infinite alternate;animation-play-state:paused}
.cat-scene[data-cat-in-view="true"] .cat-toy-arm,.cat-scene[data-cat-in-view="true"] .cat-yarn,.cat-scene[data-cat-in-view="true"] .yarn-spin,.cat-scene[data-cat-in-view="true"] .cat-tail{animation-play-state:running}
.cat-scene[data-hunting="true"] .cat-toy-arm{transform:none!important;animation-play-state:paused}
.cat-scene[data-hunting="true"] .cat-yarn,.cat-scene[data-hunting="true"] .yarn-spin{animation-play-state:paused}
.cat-scene[data-hunting="true"] .cat-tail{animation-duration:.55s}
.cat-hero .cat-gaze{transform:translate(var(--hero-look-x,3px),var(--hero-look-y,2px));transition:transform .055s ease-out}
@keyframes cat-toy-bat{0%,18%,30%,100%{transform:rotate(0)}23%{transform:rotate(-64deg)}27%{transform:rotate(-25deg)}}
@keyframes cat-toy-roll{0%,100%{transform:translateX(0)}23%{transform:translateX(-43px)}38%{transform:translateX(13px)}62%{transform:translateX(-6px)}78%{transform:translateX(3px)}}
@keyframes cat-toy-spin{0%,100%{transform:rotate(0)}23%{transform:rotate(-67deg)}38%{transform:rotate(20deg)}62%{transform:rotate(-9deg)}78%{transform:rotate(5deg)}}
@keyframes cat-tail-swish{0%{transform:rotate(-2deg)}50%{transform:rotate(0deg)}100%{transform:rotate(3deg)}}
@media(prefers-reduced-motion:reduce){.cat-toy-arm,.cat-gaze{transform:none!important}}

.cat-scene .yarn-string{animation:cat-toy-roll 3.8s ease-in-out infinite;animation-play-state:paused}
.cat-scene[data-cat-in-view="true"] .yarn-string{animation-play-state:running}
.cat-scene[data-hunting="true"] .yarn-string{animation-play-state:paused}

/* Resting paws face forward; cursor swats still use the shoulder pivot. */
.cat-hero .cat-paw-tip{transform-box:fill-box;transform-origin:center}
