/* V2 — motions propres (sans calque V1) */
.fx-line {
  opacity: 0;
  transform: translateY(1.1em);
  animation: fxRise 0.9s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
.fx-line:nth-child(1) { animation-delay: 0.15s; }
.fx-line:nth-child(2) { animation-delay: 0.28s; }
.fx-line:nth-child(3) { animation-delay: 0.4s; }

@keyframes fxRise {
  to { opacity: 1; transform: none; }
}

.fx-hero__copy .fx-kicker,
.fx-hero__text,
.fx-motto,
.fx-actions {
  opacity: 0;
  animation: fxFade 0.8s ease forwards;
}
.fx-hero__copy .fx-kicker { animation-delay: 0.05s; }
.fx-hero__text { animation-delay: 0.55s; }
.fx-motto { animation-delay: 0.65s; }
.fx-actions { animation-delay: 0.75s; }

@keyframes fxFade {
  to { opacity: 1; }
}

.fx-hero__stage {
  clip-path: inset(0 100% 0 0);
  animation: fxRevealStage 1.2s cubic-bezier(0.16, 1, 0.3, 1) 0.2s forwards;
}
@keyframes fxRevealStage {
  to { clip-path: inset(0 0 0 0); }
}

@media (prefers-reduced-motion: reduce) {
  .fx-line,
  .fx-hero__copy .fx-kicker,
  .fx-hero__text,
  .fx-motto,
  .fx-actions,
  .fx-hero__stage {
    animation: none !important;
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
  }
}
