/* ═══ SCROLL REVEAL ANIMATIONS ═══ */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .6s ease, transform .6s ease;
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* Staggered children */
.reveal-stagger > * {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity .5s ease, transform .5s ease;
}
.reveal-stagger.visible > *:nth-child(1) { transition-delay: .05s; }
.reveal-stagger.visible > *:nth-child(2) { transition-delay: .1s; }
.reveal-stagger.visible > *:nth-child(3) { transition-delay: .15s; }
.reveal-stagger.visible > *:nth-child(4) { transition-delay: .2s; }
.reveal-stagger.visible > *:nth-child(5) { transition-delay: .25s; }
.reveal-stagger.visible > *:nth-child(6) { transition-delay: .3s; }
.reveal-stagger.visible > *:nth-child(7) { transition-delay: .35s; }
.reveal-stagger.visible > *:nth-child(8) { transition-delay: .4s; }
.reveal-stagger.visible > *:nth-child(9) { transition-delay: .45s; }
.reveal-stagger.visible > *:nth-child(10) { transition-delay: .5s; }
.reveal-stagger.visible > * {
  opacity: 1;
  transform: translateY(0);
}

/* Fade in from left */
.reveal-left {
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity .6s ease, transform .6s ease;
}
.reveal-left.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Fade in from right */
.reveal-right {
  opacity: 0;
  transform: translateX(30px);
  transition: opacity .6s ease, transform .6s ease;
}
.reveal-right.visible {
  opacity: 1;
  transform: translateX(0);
}

/* Scale up */
.reveal-scale {
  opacity: 0;
  transform: scale(.9);
  transition: opacity .6s ease, transform .6s ease;
}
.reveal-scale.visible {
  opacity: 1;
  transform: scale(1);
}

/* Pulse animation for CTA */
@keyframes pulse-glow {
  0%, 100% { box-shadow: 0 4px 20px #ff2d2d59; }
  50% { box-shadow: 0 4px 40px #ff2d2d99; }
}
.pulse { animation: pulse-glow 2s infinite; }

/* Float animation */
@keyframes float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
.float { animation: float 3s ease-in-out infinite; }
