/* ==========================================================================
   PERFORMANCE-OPTIMIZED SCROLL & REVEAL ANIMATIONS
   ========================================================================== */

/* Base hidden state for elements awaiting scroll reveal */
.reveal-on-scroll {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

/* Revealed state triggered by IntersectionObserver in JS */
.reveal-on-scroll.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Directional reveal modifiers */
.reveal-left {
  opacity: 0;
  transform: translateX(-30px);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-left.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.reveal-right {
  opacity: 0;
  transform: translateX(30px);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-right.is-visible {
  opacity: 1;
  transform: translateX(0);
}

.reveal-scale {
  opacity: 0;
  transform: scale(0.94);
  transition: opacity 0.6s cubic-bezier(0.16, 1, 0.3, 1),
              transform 0.6s cubic-bezier(0.16, 1, 0.3, 1);
  will-change: opacity, transform;
}

.reveal-scale.is-visible {
  opacity: 1;
  transform: scale(1);
}

/* Stagger delays for grid items (cards, dignitaries, etc.) */
.stagger-1 { transition-delay: 60ms; }
.stagger-2 { transition-delay: 120ms; }
.stagger-3 { transition-delay: 180ms; }
.stagger-4 { transition-delay: 240ms; }
.stagger-5 { transition-delay: 300ms; }
.stagger-6 { transition-delay: 360ms; }

/* Subtle hero text entrance animation */
@keyframes heroFadeUp {
  0% {
    opacity: 0;
    transform: translateY(18px);
  }
  100% {
    opacity: 1;
    transform: translateY(0);
  }
}

.hero-slide.active .hero-tag {
  animation: heroFadeUp 0.6s ease-out 0.1s both;
}

.hero-slide.active .hero-title {
  animation: heroFadeUp 0.7s ease-out 0.2s both;
}

.hero-slide.active .hero-lead {
  animation: heroFadeUp 0.8s ease-out 0.3s both;
}

.hero-slide.active .hero-action-buttons {
  animation: heroFadeUp 0.8s ease-out 0.4s both;
}

.hero-slide.active .hero-feature-card {
  animation: heroFadeUp 0.9s ease-out 0.3s both;
}

/* Smooth sticky header transition */
.main-navbar {
  transition: transform 0.3s ease, background 0.3s ease, box-shadow 0.3s ease;
}

/* Accessibility: respect user preference for reduced motion */
@media (prefers-reduced-motion: reduce) {
  .reveal-on-scroll,
  .reveal-left,
  .reveal-right,
  .reveal-scale {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .ticker-track {
    animation: none !important;
  }
}
