.studio-buddy{position:fixed;bottom:16px;left:18px;z-index:12;width:140px;pointer-events:none;--buddy-bob:0px}.buddy-scene{height:94px;position:relative;transform:translateY(var(--buddy-bob));transition:transform .35s cubic-bezier(.2,.8,.2,1)}.buddy-companion{width:82px;height:88px;position:absolute;left:0;bottom:0;background:none;padding:4px;pointer-events:auto;border-radius:50%;z-index:2;filter:drop-shadow(0 5px 4px #30261b22)}.buddy-character{width:75px;height:75px;object-fit:contain;transform-origin:center 75%;transition:transform .2s}.buddy-companion:hover .buddy-character{transform:rotate(-10deg) translateY(-5px)}.buddy-companion:active .buddy-character{transform:scale(.91)}.buddy-toilet{position:absolute;right:-12px;bottom:-1px;width:90px;height:90px;display:grid;place-items:center}.buddy-toilet-image{width:90px;height:90px;object-fit:contain;position:relative;z-index:1;filter:drop-shadow(0 3px 2px #30261b16)}.buddy-water{position:absolute;width:25px;height:12px;border:3px solid var(--blue);border-left-color:transparent;border-radius:50%;bottom:28px;left:19px;opacity:0;z-index:3}.buddy-speech{position:absolute;left:0;bottom:100px;background:var(--cream);border:1px solid var(--ink);box-shadow:3px 3px 0 var(--ochre);font-size:9px;line-height:1.5;padding:9px 11px;max-width:152px;opacity:0;transform:translateY(4px);transition:opacity .18s,transform .18s}.studio-buddy:hover .buddy-speech,.studio-buddy:focus-within .buddy-speech,.buddy-flushing .buddy-speech,.buddy-taking-break .buddy-speech{opacity:1;transform:none}.buddy-hide{position:absolute;right:0;top:-12px;width:26px;height:26px;display:grid;place-items:center;background:var(--cream);border:1px solid var(--line);border-radius:50%;font-size:16px;pointer-events:auto;opacity:0;transition:opacity .18s;z-index:4}.studio-buddy:hover .buddy-hide,.studio-buddy:focus-within .buddy-hide{opacity:1}.buddy-flushing .buddy-character{animation:buddy-flush 1.5s ease-in-out both}.buddy-flushing .buddy-water{animation:buddy-water 1.1s .55s ease both}.buddy-flushing .buddy-toilet-image{animation:buddy-rattle .35s .75s ease 2}.buddy-taking-break .buddy-character{opacity:0}.modal-open .studio-buddy{display:none}@keyframes buddy-flush{0%{transform:translate(0,0) rotate(0) scale(1);opacity:1}25%{transform:translate(35px,-63px) rotate(10deg) scale(.7);opacity:1}46%{transform:translate(56px,-16px) rotate(15deg) scale(.34);opacity:1}66%,100%{transform:translate(56px,-4px) rotate(170deg) scale(0);opacity:0}}@keyframes buddy-water{0%{opacity:0;transform:rotate(0) scale(.5)}30%{opacity:1}100%{opacity:0;transform:rotate(650deg) scale(1.3)}}@keyframes buddy-rattle{0%,100%{transform:rotate(0)}30%{transform:rotate(5deg)}70%{transform:rotate(-5deg)}}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.product-image-wrap{transition:box-shadow .2s,transform .2s}.product-card:hover .product-image-wrap{box-shadow:5px 5px 0 var(--blue);transform:rotate(-.6deg)}.hero-object:hover{transform:rotate(3deg) translateY(-4px)}.save-product[aria-pressed=true] svg{animation:good-taste-pop .3s ease}@keyframes good-taste-pop{50%{transform:scale(1.25)}}}
@media(max-width:600px){.studio-buddy{left:9px;bottom:9px;transform:scale(.75);transform-origin:left bottom}.buddy-hide{opacity:1}.buddy-speech{font-size:11px;max-width:170px}.buddy-hide{width:32px;height:32px;top:-17px}.buddy-companion{width:88px;height:92px}.buddy-character{margin-left:3px}.buddy-toilet{right:-12px}}
@media(prefers-reduced-motion:reduce){.buddy-scene,.buddy-character,.buddy-speech,.buddy-hide{transition:none}.buddy-character,.buddy-water,.buddy-toilet-image{animation:none!important}}

/* The toilet pops in for the interaction; Buddy stays compact while browsing. */
.buddy-toilet{opacity:0;transform:translateY(12px) scale(.75);transition:opacity .18s,transform .18s}.studio-buddy:hover .buddy-toilet,.studio-buddy:focus-within .buddy-toilet,.buddy-flushing .buddy-toilet,.buddy-taking-break .buddy-toilet{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){.buddy-toilet{transition:none}}
