.grumbly-visitor{position:fixed;right:clamp(10px,3vw,42px);bottom:0;width:180px;height:230px;z-index:50;pointer-events:none;overflow:visible;contain:layout style}
.grumbly-visitor button{position:absolute;inset:0;padding:0;border:0;background:none;cursor:pointer;pointer-events:auto;transform:translateY(245px);transform-origin:50% 95%;animation:grumbly-peek 12s cubic-bezier(.45,0,.2,1) both;will-change:transform;-webkit-tap-highlight-color:transparent}
.grumbly-visitor.top-left{right:auto;bottom:auto;left:0;top:clamp(70px,10vh,110px)}
.grumbly-visitor.top-left button{transform-origin:50% 50%;transform:translateX(-260px) rotate(90deg);animation-name:grumbly-side-peek}
.grumbly-visitor.top-left.startled button{animation-name:grumbly-side-startle}
 .grumbly-greeting{display:none;position:absolute;left:-20px;top:-32px;width:220px;height:220px;pointer-events:none}
.grumbly-visitor.top-left button>img{visibility:hidden}
.grumbly-visitor.top-left .grumbly-greeting{display:block}
.grumbly-visitor .grumbly-greeting img{left:0;top:0;filter:none}
.grumbly-greeting .greeting-body{clip-path:polygon(0 0,70% 0,70% 59%,64% 76%,74% 76%,74% 100%,0 100%)}
.grumbly-greeting .greeting-arm{clip-path:polygon(68% 55%,75% 48%,75% 30%,100% 30%,100% 75%,68% 82%);transform-origin:68% 72%}
.grumbly-visitor.top-left .greeting-arm{animation:grumbly-wave 12s ease-in-out both}
.grumbly-visitor.startled .greeting-arm{animation:none}
.grumbly-visitor.top-left .grumbly-eyelid{left:47px;top:65px;width:22px;height:22px}
.grumbly-visitor.top-left .grumbly-eyelid.right{left:80px;top:62px}
@keyframes grumbly-wave{0%,20%{transform:rotate(0)}25%{transform:rotate(-9deg)}29%{transform:rotate(7deg)}33%{transform:rotate(-9deg)}37%{transform:rotate(7deg)}41%{transform:rotate(-9deg)}45%,100%{transform:rotate(0)}}
.grumbly-visitor img{position:absolute;width:220px;height:220px;max-width:none;left:-20px;top:0;object-fit:contain;user-select:none;pointer-events:none;filter:drop-shadow(0 6px 2px #3e604020)}
.grumbly-eyelid{position:absolute;left:62px;top:62px;width:21px;height:21px;border-radius:50%;background:#82ab68;border:1px solid #f8f8eb;pointer-events:none;transform:scaleY(0);animation:grumbly-blink 5.3s linear infinite}
.grumbly-eyelid.right{left:92px}
.grumbly-eyelid::after{content:'';position:absolute;left:3px;right:3px;top:8px;height:3px;border-bottom:2px solid #182319;border-radius:50%}
@keyframes grumbly-blink{0%,35%,39%,42%,100%{transform:scaleY(0)}36.5%,37.5%,40.5%,41%{transform:scaleY(1)}}
.grumbly-visitor button:focus-visible{outline:2px dashed #648f7c;outline-offset:-24px;border-radius:45%}
.grumbly-visitor button::before,.grumbly-visitor button::after{content:'';position:absolute;width:4px;height:22px;background:#648f7c;border-radius:4px;opacity:0;top:33px;left:15px;transform:rotate(-26deg)}
.grumbly-visitor button::after{left:auto;right:12px;transform:rotate(26deg)}
.grumbly-visitor.startled button{animation:grumbly-startle 1.15s ease-in both}
.grumbly-visitor.startled button::before,.grumbly-visitor.startled button::after{animation:grumbly-gasp .35s ease-out both}
@keyframes grumbly-peek{0%,8%{transform:translateY(245px) rotate(0)}18%,25%{transform:translateY(113px) rotate(0)}31%{transform:translateY(103px) rotate(-9deg)}38%{transform:translateY(110px) rotate(8deg)}44%{transform:translateY(110px) rotate(0)}50%{transform:translateY(70px) scale(.98,1.03)}54%{transform:translateY(76px) scale(1.02,.98)}61%{transform:translateY(76px) rotate(-4deg)}67%,78%{transform:translateY(245px)}86%,91%{transform:translateY(123px) rotate(10deg)}100%{transform:translateY(245px) rotate(0)}}
@keyframes grumbly-startle{0%{transform:translateY(100px)}12%{transform:translateY(25px) rotate(-11deg) scale(.95,1.08)}24%{transform:translateY(30px) rotate(9deg)}36%{transform:translateY(46px) rotate(-7deg) scale(1.06,.94)}65%,100%{transform:translateY(250px) rotate(0) scale(1)}}
@keyframes grumbly-side-peek{0%,8%{transform:translateX(-260px) rotate(90deg)}18%,26%{transform:translateX(-77px) rotate(90deg)}32%{transform:translateX(-69px) rotate(81deg)}40%{transform:translateX(-75px) rotate(99deg)}47%{transform:translateX(-73px) rotate(90deg)}54%{transform:translateX(-33px) rotate(90deg) scale(.97,1.04)}61%{transform:translateX(-75px) rotate(90deg)}69%,78%{transform:translateX(-260px) rotate(90deg)}86%,91%{transform:translateX(-86px) rotate(82deg)}100%{transform:translateX(-260px) rotate(90deg)}}
@keyframes grumbly-side-startle{0%{transform:translateX(-75px) rotate(90deg)}12%{transform:translateX(-28px) rotate(78deg) scale(.95,1.08)}25%{transform:translateX(-36px) rotate(100deg)}36%{transform:translateX(-50px) rotate(85deg) scale(1.06,.94)}65%,100%{transform:translateX(-260px) rotate(90deg)}}
@keyframes grumbly-gasp{0%{opacity:0;scale:.5}45%{opacity:1;scale:1.1}100%{opacity:0;scale:1.2}}
@media(max-width:600px){.grumbly-visitor{right:12px;transform:scale(.72);transform-origin:bottom right}.grumbly-visitor.top-left{right:auto;transform-origin:top left}}
@media(prefers-reduced-motion:reduce){.grumbly-eyelid{animation:none}.grumbly-visitor button{animation:none;transform:translateY(125px)}.grumbly-visitor.top-left button{animation:none;transform:translateX(-80px) rotate(90deg)}.grumbly-visitor.startled button{animation:none;transform:translateY(245px)}.grumbly-visitor.top-left.startled button{transform:translateX(-260px) rotate(90deg)}.grumbly-visitor.startled button::before,.grumbly-visitor.startled button::after{animation:none}}
@media(prefers-reduced-motion:reduce){.grumbly-visitor.top-left .greeting-arm{animation:none}}
