/* Animations */

/* Initial state for revealing elements */
.reveal-up {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 1s cubic-bezier(0.25, 1, 0.5, 1), 
              transform 1s cubic-bezier(0.25, 1, 0.5, 1);
}

.reveal-left {
  opacity: 0;
  transform: translateX(-40px);
  transition: opacity 1s cubic-bezier(0.25, 1, 0.5, 1), 
              transform 1s cubic-bezier(0.25, 1, 0.5, 1);
}

.reveal-right {
  opacity: 0;
  transform: translateX(40px);
  transition: opacity 1s cubic-bezier(0.25, 1, 0.5, 1), 
              transform 1s cubic-bezier(0.25, 1, 0.5, 1);
}

.reveal-scale {
  opacity: 0;
  transform: scale(0.95);
  transition: opacity 1s cubic-bezier(0.25, 1, 0.5, 1), 
              transform 1s cubic-bezier(0.25, 1, 0.5, 1);
}

/* Active state */
.reveal-up.is-revealed,
.reveal-left.is-revealed,
.reveal-right.is-revealed,
.reveal-scale.is-revealed {
  opacity: 1;
  transform: translate(0) scale(1);
}

/* Delays for staggered animations */
.delay-100 { transition-delay: 100ms; }
.delay-200 { transition-delay: 200ms; }
.delay-300 { transition-delay: 300ms; }
.delay-400 { transition-delay: 400ms; }
.delay-500 { transition-delay: 500ms; }

/* Cinematic Hero Animation */
@keyframes heroZoom {
  0% { transform: scale(1.1); }
  100% { transform: scale(1); }
}

@keyframes fadeUp {
  0% {
    opacity: 0;
    transform: translateY(30px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes slideDown {
  0% {
    transform: translateY(-100%);
  }
  100% {
    transform: translateY(0);
  }
}

.animate-hero-bg {
  animation: heroZoom 10s ease-out forwards;
}

.animate-fade-up {
  animation: fadeUp 1.2s cubic-bezier(0.25, 1, 0.5, 1) forwards;
  opacity: 0;
}

.animate-slide-down {
  animation: slideDown 0.8s cubic-bezier(0.25, 1, 0.5, 1) forwards;
}

/* Hover Lift */
.hover-lift {
  transition: transform 0.3s cubic-bezier(0.25, 1, 0.5, 1);
}

.hover-lift:hover {
  transform: translateY(-5px);
}
