/* ==========================================================================
   HAPPY BEAR GROUP — ANIMATION UTILITIES
   Global reduced-motion guard lives in base.css. These are additive
   presentational keyframes used sparingly (1–2 accents per view).
   ========================================================================== */

@keyframes float-slow {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-10px); }
}
.float-slow { animation: float-slow 6s var(--ease-standard) infinite; }

@keyframes pulse-dot {
  0%, 100% { box-shadow: 0 0 0 0 rgba(184,137,61,0.45); }
  50% { box-shadow: 0 0 0 8px rgba(184,137,61,0); }
}
.pulse-dot { animation: pulse-dot 2.2s ease-out infinite; }

@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

/* Category carousel auto-play — each new slide enters from the right and
   settles into place, echoing the right-to-left auto-advance direction. */
@keyframes carousel-slide-in {
  from { opacity: 0; transform: translateX(56px); }
  to { opacity: 1; transform: translateX(0); }
}
.drink-carousel-slide.is-active { animation: carousel-slide-in 0.4s var(--ease-standard); }

/* Gallery marquee — continuous right-to-left scroll. The track renders
   its photo set twice back-to-back; scrolling exactly -50% of the
   track's total width brings the second copy into the first copy's
   starting position, so the loop point is invisible. */
@keyframes gallery-marquee-scroll {
  from { transform: translateX(0); }
  to { transform: translateX(-50%); }
}

@media (prefers-reduced-motion: reduce) {
  .float-slow, .pulse-dot, .drink-carousel-slide.is-active, .gallery-marquee-track { animation: none; }
}
