/* ==========================================================
   PaaS vitrine v2 — Motion styles (transitions reveal)
   Toujours respecter prefers-reduced-motion
   ========================================================== */

[data-reveal]{
  opacity:0;
  transform:translateY(24px);
  transition:opacity var(--t-slow), transform var(--t-slow);
}
/* will-change posé seulement pendant l'anim de révélation (perf : pas de couche GPU dormante) */
[data-reveal].is-animating{will-change:opacity,transform;}
[data-reveal="up"]    {transform:translateY(24px)}
[data-reveal="down"]  {transform:translateY(-24px)}
[data-reveal="left"]  {transform:translateX(24px)}
[data-reveal="right"] {transform:translateX(-24px)}
[data-reveal="scale"] {transform:scale(0.95)}
[data-reveal="fade"]  {transform:none}

[data-reveal].is-revealed{
  opacity:1;
  transform:translate(0,0) scale(1);
}

/* Stagger groups: enfants apparaissent en cascade */
[data-reveal-group] > *{
  opacity:0;
  transform:translateY(20px);
  transition:opacity var(--t-slow), transform var(--t-slow);
}
[data-reveal-group].is-revealed > *{
  opacity:1;transform:none;
}
[data-reveal-group].is-revealed > *:nth-child(1){transition-delay:0ms}
[data-reveal-group].is-revealed > *:nth-child(2){transition-delay:80ms}
[data-reveal-group].is-revealed > *:nth-child(3){transition-delay:160ms}
[data-reveal-group].is-revealed > *:nth-child(4){transition-delay:240ms}
[data-reveal-group].is-revealed > *:nth-child(5){transition-delay:320ms}
[data-reveal-group].is-revealed > *:nth-child(6){transition-delay:400ms}
[data-reveal-group].is-revealed > *:nth-child(7){transition-delay:480ms}
[data-reveal-group].is-revealed > *:nth-child(8){transition-delay:560ms}

/* Rotation lente (badges live, scan rings) */
@keyframes rotate-slow{
  from{transform:rotate(0)}
  to{transform:rotate(360deg)}
}
.spin-slow{animation:rotate-slow 30s linear infinite}
.spin-slower{animation:rotate-slow 60s linear infinite}

/* Float (cartes flottantes hero) */
@keyframes float-y{
  0%,100%{transform:translateY(0)}
  50%{transform:translateY(-8px)}
}
.float{animation:float-y 6s ease-in-out infinite}

/* Aurora vivante — dérive lente du mesh ambiant (fond premium) */
@keyframes mesh-drift{
  0%  {transform:translate3d(0,0,0) scale(1)}
  50% {transform:translate3d(2%, -1.5%, 0) scale(1.06)}
  100%{transform:translate3d(-1.5%, 1.5%, 0) scale(1.02)}
}
.bg-stack .aurora{animation:mesh-drift 22s ease-in-out infinite alternate}

/* Shimmer / sweep beam */
@keyframes shimmer{
  0%{background-position:-200% 0}
  100%{background-position:200% 0}
}
.shimmer-text{
  background:linear-gradient(110deg, var(--c-text) 0%, var(--c-cyan) 50%, var(--c-text) 100%);
  background-size:200% 100%;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  animation:shimmer 4s linear infinite;
}

@media (prefers-reduced-motion: reduce){
  .spin-slow,.spin-slower,.float,.shimmer-text,.bg-stack .aurora{
    animation:none !important;
  }
  [data-reveal],[data-reveal-group] > *{
    opacity:1 !important;transform:none !important;transition:none !important;
  }
  /* Lot 2 : neutraliser pulsations/blink/scan infinis (repos statique lisible) */
  .card-scan .scan-live,.how-panel-live,.dot-live,
  .pill-live::before,.term-cursor,.scan-anim{
    animation:none !important;
  }
  .card-scan .scan-live,.how-panel-live,.dot-live,.pill-live::before{
    opacity:1 !important;transform:none !important;
  }
  .term-cursor{opacity:1 !important;}
  .scan-anim{transform:scaleX(1) !important;}
}
