/* =========================================================
   AstraVoyage · animations.css
   Slow, intentional, premium motion
   ========================================================= */

/* Fade up on scroll */
.fade-up {
  opacity: 0;
  transform: translateY(32px);
  transition: opacity 1s var(--ease), transform 1s var(--ease);
  will-change: opacity, transform;
}
.fade-up.in-view { opacity: 1; transform: translateY(0); }
.fade-up.delay-1 { transition-delay: 0.12s; }
.fade-up.delay-2 { transition-delay: 0.24s; }
.fade-up.delay-3 { transition-delay: 0.36s; }
.fade-up.delay-4 { transition-delay: 0.48s; }

/* Subtle pulse for logo mark */
@keyframes softPulse {
  0%, 100% { box-shadow: 0 0 20px rgba(167,139,250,0.4), inset 0 0 12px rgba(255,255,255,0.25); }
  50% { box-shadow: 0 0 30px rgba(167,139,250,0.65), inset 0 0 16px rgba(255,255,255,0.35); }
}
.logo-mark { animation: softPulse 4s ease-in-out infinite; }

/* Gentle gradient shift on CTA */
@keyframes gradientShift {
  0%, 100% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
}
.btn-primary {
  background-size: 200% 200%;
  animation: gradientShift 8s ease infinite;
}

/* Floating animation utility */
@keyframes floatSlow {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

/* Menu toggle open state */
.mobile-overlay.open ~ .site-header .menu-toggle span:nth-child(1),
.menu-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(6.5px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-6.5px) rotate(-45deg); }

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .stars-1, .stars-2, .orb-planet, .orb-moon, .orb-ring { animation: none !important; }
}

/* Journey card image subtle parallax */
@keyframes slowZoom {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.03); }
}

/* Section enter stagger already handled by .delay-n utilities */