/* Scroll Animations (Awwwards Choreography)
   Elements with data-animate attribute fade in on scroll
   Respects prefers-reduced-motion via JS guard */

[data-animate]:not(.is-visible) {
  opacity: 0;
}

/* Base staggered fade-up */
.fade-in-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 800ms var(--ease-out-expo),
              transform 1000ms var(--ease-spring);
}

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

/* Base scale-in (for images) */
.fade-in-scale {
  opacity: 0;
  transform: scale(0.95);
  filter: blur(10px);
  transition: opacity 800ms var(--ease-out-expo),
              transform 1200ms var(--ease-out-expo),
              filter 800ms var(--ease-out-expo);
}

.fade-in-scale.is-visible {
  opacity: 1;
  transform: scale(1);
  filter: blur(0);
}

/* Legacy .will-animate fallback (if still used somewhere) */
.will-animate {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 800ms var(--ease-out-expo),
              transform 1000ms var(--ease-spring);
}

.will-animate.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Staggering applied via JS inline styles based on index,
   or optionally via these nth-child rules for pure CSS staggering */
.will-animate:nth-child(2) { transition-delay: 100ms; }
.will-animate:nth-child(3) { transition-delay: 200ms; }
.will-animate:nth-child(4) { transition-delay: 300ms; }
.will-animate:nth-child(5) { transition-delay: 400ms; }
.will-animate:nth-child(6) { transition-delay: 500ms; }
