/* ==========================================================================
   GAIA CONCEPT — ANIMATIONS
   Keyframes + classes d'apparition au scroll (pilotées par animations.js
   via IntersectionObserver). Uniquement transform/opacity pour la perf.
   Toutes les animations sont désactivées si prefers-reduced-motion,
   voir global.css.
   ========================================================================== */

@keyframes flow-dash {
  to {
    stroke-dashoffset: -320;
  }
}

@keyframes soft-float {
  0%,
  100% {
    transform: translateY(0);
  }
  50% {
    transform: translateY(-10px);
  }
}

@keyframes pulse-ring {
  0% {
    box-shadow: 0 0 0 0 rgba(45, 109, 180, 0.32);
  }
  100% {
    box-shadow: 0 0 0 14px rgba(45, 109, 180, 0);
  }
}

@keyframes glass-sheen {
  0% {
    transform: translateX(-120%) skewX(-12deg);
  }
  100% {
    transform: translateX(220%) skewX(-12deg);
  }
}

@keyframes fade-in-up {
  from {
    opacity: 0;
    transform: translateY(28px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* --- Apparition au scroll ------------------------------------------------- */
[data-animate] {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity var(--duration-slow) var(--ease-out),
    transform var(--duration-slow) var(--ease-out);
  will-change: opacity, transform;
}

[data-animate].is-visible {
  opacity: 1;
  transform: translateY(0);
}

[data-animate="fade"] {
  transform: none;
}

[data-animate="scale"] {
  transform: scale(0.94);
}

[data-animate="scale"].is-visible {
  transform: scale(1);
}

/* Délais échelonnés pour les groupes de cartes */
[data-animate-group] > * {
  transition-delay: calc(var(--stagger, 0) * 90ms);
}

/* Éléments décoratifs en flottement doux */
.zone__hub-dot {
  animation: pulse-ring 2.8s ease-out infinite;
}

.hero__halo {
  animation: soft-float 10s ease-in-out infinite;
}

.hero__halo--aqua {
  animation-delay: -3s;
  animation-duration: 12s;
}

.hero__halo--indigo {
  animation-delay: -6s;
  animation-duration: 9s;
}

/* Reflet discret sur les panneaux de verre au survol (Vision Pro) */
.hero-link,
.glass-panel {
  position: relative;
}

.hero-link::before,
.glass-panel::before {
  content: "";
  position: absolute;
  inset: 0;
  overflow: hidden;
  border-radius: inherit;
  pointer-events: none;
}

.hero-link:hover::before {
  background: linear-gradient(100deg, transparent 40%, rgba(255, 255, 255, 0.45) 50%, transparent 60%);
  animation: glass-sheen 1.1s var(--ease-out);
}

@media (prefers-reduced-motion: reduce) {
  [data-animate] {
    opacity: 1;
    transform: none;
  }

  .hero__flow path,
  .hero__halo,
  .zone__hub-dot,
  .hero-link::before {
    animation: none;
  }

  /* La vidéo de fond est une animation à part entière : on la coupe */
  .hero__video-bg {
    display: none;
  }
}
