/* ═══════════════════════════════════════════════════════════════
   ANIMATIONS.CSS — Motion discret
═══════════════════════════════════════════════════════════════ */

@keyframes rule-draw{to{transform:scaleX(1)}}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes rise{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes rise-line{from{transform:translateY(102%)}to{transform:translateY(0)}}
@keyframes trace{to{stroke-dashoffset:0}}
@keyframes fade-in{from{opacity:0}to{opacity:1}}

/* ── Révélation au scroll (piloté par main.js : .visible) ── */
.reveal{
  opacity:0;
  transform:translateY(20px);
  transition:opacity var(--t-reveal) var(--ease),transform var(--t-reveal) var(--ease);
}
.reveal.visible{opacity:1;transform:none}

.reveal-fade{opacity:0;transition:opacity var(--t-reveal) var(--ease)}
.reveal-fade.visible{opacity:1}

.d1{transition-delay:.07s}
.d2{transition-delay:.14s}
.d3{transition-delay:.21s}
.d4{transition-delay:.28s}
.d5{transition-delay:.35s}

/* ── Séquence d'ouverture du hero ── */
.hero__title .ln>span{animation:rise-line .95s var(--ease) both}
.hero__title .ln:nth-child(1)>span{animation-delay:.12s}
.hero__title .ln:nth-child(2)>span{animation-delay:.20s}
.hero__title .ln:nth-child(3)>span{animation-delay:.28s}
.hero__lede   {animation:rise .8s var(--ease) .40s both}
.hero__ctas   {animation:rise .8s var(--ease) .48s both}
.hero__stats  {animation:rise .8s var(--ease) .56s both}
.hero__visual {animation:rise 1s var(--ease) .34s both}
.hero__chip   {animation:rise .8s var(--ease) .78s both}

/* ── Tracé du schéma (élément signature) ── */
.trace{
  stroke-dasharray:var(--len,600);
  stroke-dashoffset:var(--len,600);
  animation:trace 1.5s var(--ease) .7s forwards;
}
.pop{opacity:0;animation:fade-in .6s var(--ease) forwards}
.pop--1{animation-delay:1.25s}
.pop--2{animation-delay:1.4s}
.pop--3{animation-delay:1.55s}

/* ── Utilitaire de survol ── */
.lift{transition:transform var(--t-base) var(--ease),box-shadow var(--t-base) var(--ease-soft)}
.lift:hover{transform:translateY(-3px);box-shadow:var(--sh-soft)}

/* ── Respect de prefers-reduced-motion ── */
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  .reveal,.reveal-fade{opacity:1;transform:none}
  .hero__title .ln>span,.hero__lede,.hero__ctas,
  .hero__stats,.hero__visual,.hero__chip{animation:none;opacity:1;transform:none}
  .mark::after{animation:none;transform:scaleX(1)}
  .trace{stroke-dashoffset:0;animation:none}
  .pop{opacity:1;animation:none}
  .ticker__track{animation:none}
}
