.animate-on-scroll {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.8s ease, transform 0.8s ease;
  will-change: opacity, transform;
}

.animate-on-scroll.in-view {
  opacity: 1;
  transform: translateY(0);
}

.fade-left {
  transform: translateX(-24px);
}

.fade-left.in-view {
  transform: translateX(0);
}

.fade-right {
  transform: translateX(24px);
}

.fade-right.in-view {
  transform: translateX(0);
}

.scale-up {
  transform: scale(0.96);
}

.scale-up.in-view {
  transform: scale(1);
}

.animate-on-scroll {
  opacity: 0;
  transform: translateY(40px);
  transition: all 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

.animate-on-scroll.in-view {
  opacity: 1;
  transform: translateY(0);
}

/* Directions */
.fade-left {
  transform: translateX(-50px);
}
.fade-left.in-view {
  transform: translateX(0);
}

.fade-right {
  transform: translateX(50px);
}
.fade-right.in-view {
  transform: translateX(0);
}

/* Scale */
.scale-up {
  transform: scale(0.9);
}
.scale-up.in-view {
  transform: scale(1);
}

/* Blur (premium feel) */
.blur-in {
  filter: blur(8px);
}
.blur-in.in-view {
  filter: blur(0);
}