/* Motion adds personality without delaying navigation or order controls. */
@keyframes floaty{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-13px) rotate(2deg)}}
@keyframes sparkle{0%,100%{transform:rotate(0deg) scale(1);opacity:.8}50%{transform:rotate(30deg) scale(1.22);opacity:1}}
@keyframes popin{0%{transform:scale(.85)}55%{transform:scale(1.15)}100%{transform:scale(1)}}
@keyframes enter{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}
@keyframes march{to{transform:translateX(-50%)}}
@keyframes burst{to{transform:translate(var(--x),var(--y)) rotate(var(--r));opacity:0}}
@keyframes sway{0%,100%{transform:rotate(-3deg) translateY(0)}50%{transform:rotate(-1deg) translateY(-9px)}}
@media(prefers-reduced-motion:no-preference){
.hero-copy{animation:enter .8s ease both}.hero-art img{animation:floaty 6s ease-in-out infinite;transform-origin:50% 80%}.hero-art .star{animation:sparkle 4s ease-in-out infinite}.hero-art .s2{animation-delay:-2s}.stamp{animation:floaty 5s ease-in-out infinite}.package{animation:sway 6s ease-in-out infinite}.package:hover{animation-play-state:paused}
.product{transition:transform .3s ease,box-shadow .3s ease}.product:hover{transform:translateY(-7px) rotate(-.5deg);box-shadow:0 16px 35px #4913a81a}.product-img{transition:background-size .5s ease}.product:hover .product-img:not(.box){background-size:520% auto}.add{transition:transform .25s ease,background .25s ease}.add:hover{transform:rotate(90deg);background:#c034a1}.product{animation:enter .5s ease both;animation-delay:calc(var(--i,0)*65ms)}
.reveal-wait{opacity:0;transform:translateY(22px);transition:opacity .65s ease,transform .65s ease}.reveal-wait.revealed{opacity:1;transform:translateY(0)}.bag.bump{animation:popin .4s ease}.button{position:relative;overflow:hidden}.button:after{content:'';position:absolute;inset:0;background:linear-gradient(110deg,transparent 30%,#ffffff55 50%,transparent 70%);transform:translateX(-120%);transition:transform .65s ease;pointer-events:none}.button:hover:after{transform:translateX(120%)}
.ticker{display:block;padding:0;overflow:hidden}.ticker-track{display:flex;width:max-content;animation:march 35s linear infinite}.ticker-track span{padding:17px 32px}.ticker:hover .ticker-track{animation-play-state:paused}dialog[open]{animation:enter .25s ease both}
}
.confetti{position:fixed;z-index:9999;pointer-events:none;width:9px;height:9px;border-radius:2px;animation:burst .8s ease-out forwards}
@media(prefers-reduced-motion:reduce){.confetti{display:none}.reveal-wait{opacity:1;transform:none}.ticker-track{display:flex;gap:25px}.ticker-track [aria-hidden]{display:none}}
