/* Animations d'apparition et d'ambiance (inspirées de trendtrack.io). Rien si « réduire les animations ». */
@media (prefers-reduced-motion:no-preference){
  .fx .fx-h{opacity:0;filter:blur(14px);transform:translateY(18px);transition:opacity .9s var(--ease),filter .9s var(--ease),transform .9s var(--ease)}
  .fx .fx-h.fx-in{opacity:1;filter:none;transform:none}
  .fx .hero .w>.proofpill,.fx .hero .w>.lbl,.fx .hero h1,.fx .hero .lede,.fx .hero .minis,.fx .hero .actions,.fx .hero .fine{animation:fx-up 1s var(--ease) both}
  .fx .hero h1{animation-delay:.08s}.fx .hero .lede{animation-delay:.2s}.fx .hero .minis{animation-delay:.28s}.fx .hero .actions{animation-delay:.36s}.fx .hero .fine{animation-delay:.44s}
  @keyframes fx-up{from{opacity:0;filter:blur(12px);transform:translateY(16px)}to{opacity:1;filter:none;transform:none}}
  .cta{position:relative;isolation:isolate;overflow:hidden}
  .cta::before{content:"";position:absolute;z-index:-1;top:-20%;bottom:-20%;left:-60%;width:45%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.38),transparent);transform:skewX(-20deg);animation:fx-shine 5.5s ease-in-out infinite}
  @keyframes fx-shine{0%,62%{left:-60%}82%,100%{left:130%}}
  .cta .chip svg{animation:fx-nudge 2.8s ease-in-out infinite}
  @keyframes fx-nudge{0%,64%,100%{transform:none}74%{transform:translateX(3px)}84%{transform:translateX(-1px)}}
  .hero::before{animation:fx-breathe 7s ease-in-out infinite}
  @keyframes fx-breathe{50%{opacity:.7}}
  .fx #demo{transform-origin:50% 0;will-change:transform}
}
