/* Scroll Reveal Utilities */
.reveal-on-scroll {
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.8s cubic-bezier(0.25, 1, 0.5, 1), 
              transform 0.8s cubic-bezier(0.25, 1, 0.5, 1);
  will-change: opacity, transform, visibility;
}

.reveal-on-scroll.visible {
  opacity: 1;
  visibility: visible;
  transform: translateY(0) translateX(0) scale(1);
}

/* Animation Types */
.fade-up {
  transform: translateY(40px);
}

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

.fade-left {
  transform: translateX(-40px);
}

.fade-right {
  transform: translateX(40px);
}

.zoom-in {
  transform: scale(0.95);
}

/* Staggered Delays */
.delay-100 { transition-delay: 100ms; }
.delay-200 { transition-delay: 200ms; }
.delay-300 { transition-delay: 300ms; }
.delay-400 { transition-delay: 400ms; }

/* Subtle Parallax Background Utility */
.bg-parallax {
  background-attachment: fixed;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}