/* ═════ motion: transform/opacity only; everything respects reduced-motion ═════ */
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes bob{from{transform:translateY(0) rotate(-6deg)}to{transform:translateY(-16px) rotate(9deg)}}
@keyframes marquee{to{transform:translateX(50%)}}
@keyframes bump{0%{transform:scale(1)}35%{transform:scale(1.12) rotate(-2deg)}100%{transform:scale(1)}}
@keyframes ruler-in{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0 0 0 0)}}
.hero .ruler{animation:ruler-in 1.3s var(--ease) .15s both}
.cart-bar.bump,.cart-btn.bump{animation:bump .5s var(--ease)}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .8s var(--ease);transition-delay:var(--d,0ms)}
.reveal.is-in{opacity:1;transform:none}
.no-js .reveal{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .reveal{opacity:1;transform:none}
  .strip-track{animation:none!important;flex-wrap:wrap;width:auto;justify-content:center}.strip-item.dup{display:none}
  .hero-line{transition:none}
}
