/* Hammy: smooth travel around discrete poses, no blending/ghosting between cells. */
.site-mascot{--mascot-width:112px;--frame-x:0%;--frame-y:0%;position:fixed;right:max(14px,env(safe-area-inset-right));bottom:max(28px,env(safe-area-inset-bottom));z-index:15;width:var(--mascot-width);aspect-ratio:3/4;pointer-events:none;user-select:none}
.mascot-motion{height:100%;transition:transform .38s cubic-bezier(.2,.7,.25,1);transform:translateY(0)}
.mascot-character{display:block;width:100%;height:100%;padding:0;background:none;border:0;cursor:pointer;pointer-events:auto;touch-action:manipulation;border-radius:35%;color:inherit}
.mascot-character:focus-visible{outline:2px solid var(--amber);outline-offset:3px}
.site-mascot__sprite{display:block;width:100%;height:100%;background-image:url('/assets/img/brand/hammy/hammy-reactions-alpha.png');background-repeat:no-repeat;background-size:400% 200%;background-position:var(--frame-x) var(--frame-y)}
.js .site-mascot[data-state="waiting"]{visibility:hidden;transform:translateX(calc(100% + 40px))}
.site-mascot[data-state="entering"]{animation:hammy-enter 1.92s cubic-bezier(.22,.5,.3,1) both}
.site-mascot[data-state="entering"] .mascot-character{animation:hammy-stride .24s ease-in-out 8}
.site-mascot[data-state="entering"] .site-mascot__sprite{background-image:url('/assets/img/brand/hammy/hammy-walk-alpha.png');transform:scaleX(-1);animation:hammy-walk .96s step-end infinite}
.site-mascot[data-state="falling"] .mascot-motion{transform:translateY(21px) rotate(11deg)}
.site-mascot[data-state="boosting"] .mascot-motion{transform:translateY(-65px) rotate(-9deg)}
.site-mascot[data-state="boosting"] .mascot-character{animation:hammy-thrust .18s ease-in-out infinite alternate}
.site-mascot[data-state="hovering"] .mascot-motion{transform:translateY(-14px) rotate(-5deg)}
.site-mascot[data-state="hovering"] .site-mascot__sprite{animation:hammy-hello .8s ease-in-out 2}
.mascot-greeting{position:absolute;right:4px;bottom:calc(100% + 10px);width:max-content;max-width:190px;padding:10px 14px;background:var(--ink);color:var(--bg);border:1px solid var(--tan);border-radius:12px 12px 3px 12px;font:700 14px/1.4 var(--sans);box-shadow:0 5px 18px #0003;pointer-events:none}
.mascot-greeting[hidden]{display:none}
@keyframes hammy-enter{from{transform:translateX(calc(100% + 40px))}to{transform:translateX(0)}}
@keyframes hammy-stride{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-3px) rotate(1deg)}}
@keyframes hammy-walk{0%{background-position:0% 0%}12.5%{background-position:33.333333% 0%}25%{background-position:66.666667% 0%}37.5%{background-position:100% 0%}50%{background-position:0% 100%}62.5%{background-position:33.333333% 100%}75%{background-position:66.666667% 100%}87.5%,100%{background-position:100% 100%}}
@keyframes hammy-thrust{from{transform:translateY(0)}to{transform:translateY(-2px)}}
@keyframes hammy-hello{0%,100%{transform:rotate(0)}35%{transform:rotate(-7deg)}70%{transform:rotate(4deg)}}
@media(max-width:720px){.site-mascot{--mascot-width:78px;right:max(8px,env(safe-area-inset-right));bottom:max(22px,env(safe-area-inset-bottom))}.site-mascot[data-state="boosting"] .mascot-motion{transform:translateY(-42px) rotate(-7deg)}.mascot-greeting{font-size:12px}}
@media(prefers-reduced-motion:reduce){.site-mascot,.mascot-motion,.mascot-character,.site-mascot__sprite{animation:none!important;transition:none!important;transform:none!important}}

/* Dedicated fall loop and one-shot takeoff; hold flight until scrolling stops. */
.site-mascot[data-state="falling"] .site-mascot__sprite{background-image:url('/assets/img/brand/hammy/hammy-fall-alpha.png');animation:hammy-sequence .96s step-end infinite}
.site-mascot[data-state="boosting"] .site-mascot__sprite{background-image:url('/assets/img/brand/hammy/hammy-takeoff-alpha.png');animation:hammy-sequence .96s step-end both}
.site-mascot[data-state="boosting"] .mascot-motion{animation:hammy-liftoff .96s ease-in both}
@keyframes hammy-sequence{0%{background-position:0% 0%}12.5%{background-position:33.333333% 0%}25%{background-position:66.666667% 0%}37.5%{background-position:100% 0%}50%{background-position:0% 100%}62.5%{background-position:33.333333% 100%}75%{background-position:66.666667% 100%}87.5%,100%{background-position:100% 100%}}
@keyframes hammy-liftoff{0%,30%{transform:translateY(0)}55%{transform:translateY(-15px)}100%{transform:translateY(-65px)}}
@media(max-width:720px){@keyframes hammy-liftoff{0%,30%{transform:translateY(0)}55%{transform:translateY(-10px)}100%{transform:translateY(-42px)}}}
