/* AI Force One — « Séquence de décollage ». Couche d'animation posée sur styles.css (référence inchangée).
   Tout est désactivé sous prefers-reduced-motion. Les états cachés n'existent que si motion.js a posé html.motion. */
:root{--ease-out:cubic-bezier(.16,1,.3,1);--ease-snap:cubic-bezier(.34,1.56,.64,1)}

/* Trajectoire de lecture : barre de progression fixe */
.flight-path{position:fixed;top:0;left:0;right:0;height:4px;z-index:40;pointer-events:none;background:transparent}
.flight-path span{display:block;height:100%;background:var(--bright);border-right:2px solid var(--ink);box-shadow:0 1px 0 var(--ink);transform-origin:0 50%;transform:scaleX(0)}

/* Panneau des départs (split-flap) */
.flap-char{display:inline-block;min-width:.1ch;text-align:center;overflow:hidden;vertical-align:bottom}
.flapping .flap-char{animation:flap .09s steps(2) infinite}
@keyframes flap{50%{transform:scaleY(.82);opacity:.8}}

/* Flèches qui décollent */
.button span[aria-hidden],.header-cta span[aria-hidden],.corner{display:inline-block}
.button:hover span[aria-hidden],.header-cta:hover span[aria-hidden]{animation:takeoff .55s var(--ease-out)}
.benefit-grid article:hover .corner{animation:takeoff .55s var(--ease-out)}
@keyframes takeoff{0%{transform:none}45%{transform:translate(14px,-14px);opacity:0}46%{transform:translate(-10px,10px);opacity:0}100%{transform:none;opacity:1}}

/* Cartes : légère prise d'altitude */
.benefit-grid article{transition:transform .25s var(--ease-out),box-shadow .25s var(--ease-out)}
.benefit-grid article:hover{transform:translate(-3px,-5px);box-shadow:8px 10px 0 var(--ink)}

/* Balise « DÉCOUVRIR » : feu anticollision */
.hero-foot span:last-child::before{content:"";display:inline-block;width:8px;height:8px;margin-right:9px;border-radius:50%;background:var(--bright);vertical-align:1px;animation:beacon 1.6s infinite}
@keyframes beacon{0%,60%,100%{opacity:.25}5%,15%{opacity:1;box-shadow:0 0 0 4px #ffe56555}}

@media (prefers-reduced-motion:no-preference){
  /* Ambiance du hero : orbite lente, radar, turbulences légères */
  .orbital-outer{animation:spin 70s linear infinite}
  .orbital-inner{overflow:hidden}
  .orbital-inner::after{content:"";position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#ffe56500 0 280deg,#ffe56533 330deg,#ffe56599 359deg,#ffe56500 360deg);animation:spin 4.5s linear infinite}
  .tag-ai{animation:turbulence 6s ease-in-out infinite}
  .tag-collective{animation:turbulence 7s ease-in-out -2.5s infinite}
  .orbit-tick{animation:blink 2.4s ease-in-out infinite}.t2{animation-delay:.6s}.t3{animation-delay:1.2s}.t4{animation-delay:1.8s}
  .closing-orbit{animation:breathe 9s ease-in-out infinite}
  .tiny-ring{animation:blink 2s ease-in-out infinite}

  /* Radar du panneau des cercles */
  .circle-visual::before,.circle-visual::after{content:"";position:absolute;width:110px;height:110px;border:2px solid var(--bright);border-radius:50%;opacity:0;animation:ping 3.6s var(--ease-out) infinite}
  .circle-visual::after{animation-delay:1.8s}

  /* Séquence d'ouverture (html.motion posé par JS) */
  html.motion .flight-strip{animation:drop .6s var(--ease-out) both}
  html.motion .hero .eyebrow{animation:rise .7s var(--ease-out) .15s both}
  html.motion .hero h1{animation:rise .9s var(--ease-out) .25s both}
  html.motion .hero-lead{animation:rise .8s var(--ease-out) .45s both}
  html.motion .hero-actions{animation:rise .8s var(--ease-out) .6s both}
  html.motion .hero-art>.orbital{animation:power-on .9s var(--ease-out) both}
  html.motion .hero-art>.orbital-outer{animation:power-on .9s var(--ease-out) .3s both,spin 70s linear 1.2s infinite}
  html.motion .hero-art>.orbital-mid{animation-delay:.45s}
  html.motion .hero-art>.orbital-inner{animation-delay:.6s}
  html.motion .orbit-core{animation:touchdown .8s var(--ease-snap) .75s both}
  html.motion .hero-art>.orbital-tag,html.motion .orbit-label{opacity:0;transition:opacity .5s ease-out 1.2s}
  html.motion.ready .hero-art>.orbital-tag,html.motion.ready .orbit-label{opacity:1}
  html.motion .hero-foot{animation:rise .6s var(--ease-out) .9s both}

  /* Embarquement au défilement */
  html.motion [data-reveal]{opacity:0;transform:translateY(34px);transition:opacity .8s var(--ease-out),transform .8s var(--ease-out);transition-delay:var(--d,0s)}
  html.motion [data-reveal].is-in{opacity:1;transform:none}
  html.motion .founder-stamp[data-reveal]{transform:scale(1.6) rotate(-12deg)}
  html.motion .founder-stamp[data-reveal].is-in{transform:rotate(-3deg);transition-timing-function:var(--ease-snap)}

  /* Feux de piste de la formule */
  html.motion .formula>*{opacity:.18;transition:opacity .25s ease-out,transform .35s var(--ease-snap);transition-delay:var(--d,0s)}
  html.motion .formula.is-in>*{opacity:1}
  html.motion .formula.is-in>strong{animation:landing-light .5s var(--ease-snap) var(--d) both}

  /* Dialogue : la carte d'embarquement glisse */
  dialog[open]{animation:boarding .45s var(--ease-out)}
  dialog[open]::backdrop{animation:fade .3s ease-out}
}

@keyframes spin{to{transform:rotate(360deg)}}
@keyframes turbulence{0%,100%{transform:rotate(11deg) translate(0,0)}33%{transform:rotate(9.5deg) translate(2px,-5px)}66%{transform:rotate(12deg) translate(-2px,3px)}}
@keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@keyframes ping{0%{transform:scale(1);opacity:.9}100%{transform:scale(4.3);opacity:0}}
@keyframes drop{from{transform:translateY(-100%);opacity:0}}
@keyframes rise{from{transform:translateY(28px);opacity:0}}
@keyframes power-on{from{transform:scale(.55);opacity:0}}
@keyframes touchdown{0%{transform:translateY(-60px) scale(.4);opacity:0;box-shadow:0 0 0 var(--ink)}100%{transform:none;opacity:1}}
@keyframes landing-light{0%{transform:scale(.8)}60%{transform:scale(1.12);box-shadow:0 0 0 6px #ffe56566}100%{transform:none}}
@keyframes boarding{from{transform:translateY(40px) rotate(-1.5deg);opacity:0}}
@keyframes fade{from{opacity:0}}

@media (prefers-reduced-motion:reduce){
  .flight-path,.hero-foot span:last-child::before{display:none}
  .button:hover span[aria-hidden],.header-cta:hover span[aria-hidden],.benefit-grid article:hover .corner{animation:none}
  .benefit-grid article:hover{transform:none}
}
html.motion .eq-cell{opacity:0;transform:translateY(18px);transition:opacity .45s,transform .45s cubic-bezier(.2,1.4,.4,1)}html.motion .eq-cell.on{opacity:1;transform:none}
html.motion .orb-ai{transform-origin:200px 200px;animation:spin 9s linear infinite}html.motion .orb-ai-chip{transform-box:fill-box;transform-origin:center;animation:spin 9s linear infinite reverse}
html.motion .orb-peer line{opacity:0;stroke-dashoffset:40;transition:opacity .4s,stroke-dashoffset .6s ease-out}html.motion .orb-peer.on line{opacity:.7;stroke-dashoffset:0}
html.motion .orb-peer circle{transform-box:fill-box;transform-origin:center;transform:scale(0);transition:transform .45s cubic-bezier(.2,1.6,.4,1)}html.motion .orb-peer.on circle{transform:scale(1)}
html.motion .orb-core-g{transform-box:fill-box;transform-origin:center}html.motion .orb-core-g.pop{animation:orb-pop .5s cubic-bezier(.2,1.6,.4,1)}@keyframes orb-pop{40%{transform:scale(1.12)}}
