/* === Scroll Animation Styles === */

/* Fade up: slide up 30px + fade in */
.anim-fade-up {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.anim-fade-up.anim-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Fade in: simple opacity */
.anim-fade-in {
  opacity: 0;
  transition: opacity 0.8s ease-out;
}
.anim-fade-in.anim-visible {
  opacity: 1;
}

/* Slide from left */
.anim-slide-left {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.anim-slide-left.anim-visible {
  opacity: 1;
  transform: translateX(0);
}

/* Slide from right */
.anim-slide-right {
  opacity: 0;
  transform: translateX(40px);
  transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}
.anim-slide-right.anim-visible {
  opacity: 1;
  transform: translateX(0);
}

/* Scale in: zoom from 0.9 */
.anim-scale-in {
  opacity: 0;
  transform: scale(0.92);
  transition: opacity 0.7s ease-out, transform 0.7s ease-out;
}
.anim-scale-in.anim-visible {
  opacity: 1;
  transform: scale(1);
}

/* Parallax container: needs overflow hidden parent */
.anim-parallax {
  will-change: transform;
  transition: none;
}

/* Line grow animation (for section dividers) */
.anim-line {
  transform: scaleX(0);
  transition: transform 0.8s ease-out;
}
.anim-line.anim-visible {
  transform: scaleX(1);
}

/* Respect reduced motion preferences */
@media (prefers-reduced-motion: reduce) {
  .anim-fade-up,
  .anim-fade-in,
  .anim-slide-left,
  .anim-slide-right,
  .anim-scale-in {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .anim-line {
    transform: scaleX(1);
    transition: none;
  }
}
