/* ==========================================================================
   Delicious Milk - Animation Stylesheet
   ========================================================================== */

/* --------------------------------------------------------------------------
   Fade In Animation
   - Elements start invisible and slightly below their final position
   - When .visible class is added, they fade in and move up
   -------------------------------------------------------------------------- */

.fade-in {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity var(--transition-slower), transform var(--transition-slower);
}

.fade-in.visible {
  opacity: 1;
  transform: translateY(0);
}

/* --------------------------------------------------------------------------
   Slide In Left Animation
   - Elements start off-screen to the left
   - When .visible class is added, they slide in from the left
   -------------------------------------------------------------------------- */

.slide-in-left {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity var(--transition-slower), transform var(--transition-slower);
}

.slide-in-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* --------------------------------------------------------------------------
   Slide In Right Animation
   - Elements start off-screen to the right
   - When .visible class is added, they slide in from the right
   -------------------------------------------------------------------------- */

.slide-in-right {
  opacity: 0;
  transform: translateX(40px);
  transition: opacity var(--transition-slower), transform var(--transition-slower);
}

.slide-in-right.visible {
  opacity: 1;
  transform: translateX(0);
}

/* --------------------------------------------------------------------------
   Scale In Animation
   - Elements start smaller and invisible
   - When .visible class is added, they scale up to full size
   -------------------------------------------------------------------------- */

.scale-in {
  opacity: 0;
  transform: scale(0.9);
  transition: opacity var(--transition-slower), transform var(--transition-slower);
}

.scale-in.visible {
  opacity: 1;
  transform: scale(1);
}

/* --------------------------------------------------------------------------
   Delay Utilities
   - Add these classes to stagger animations for multiple elements
   -------------------------------------------------------------------------- */

.delay-100 {
  transition-delay: 100ms;
}

.delay-200 {
  transition-delay: 200ms;
}

.delay-300 {
  transition-delay: 300ms;
}

.delay-400 {
  transition-delay: 400ms;
}

.delay-500 {
  transition-delay: 500ms;
}

.delay-600 {
  transition-delay: 600ms;
}

.delay-700 {
  transition-delay: 700ms;
}

.delay-800 {
  transition-delay: 800ms;
}

/* --------------------------------------------------------------------------
   Duration Utilities
   - Override default animation duration
   -------------------------------------------------------------------------- */

.duration-fast {
  transition-duration: 150ms;
}

.duration-base {
  transition-duration: 250ms;
}

.duration-slow {
  transition-duration: 350ms;
}

.duration-slower {
  transition-duration: 500ms;
}

.duration-slowest {
  transition-duration: 700ms;
}

/* --------------------------------------------------------------------------
   Reduced Motion
   - Respect user preferences for reduced motion
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce) {
  .fade-in,
  .slide-in-left,
  .slide-in-right,
  .scale-in {
    transition: none;
    opacity: 1;
    transform: none;
  }

  .delay-100,
  .delay-200,
  .delay-300,
  .delay-400,
  .delay-500,
  .delay-600,
  .delay-700,
  .delay-800 {
    transition-delay: 0ms;
  }
}
