/* Motion institutionnel de l'accueil : apparitions sobres, compteurs,
   registre de blocs. Tout est désactivé si l'utilisateur réduit les animations. */
:root{--m-ease:cubic-bezier(.2,.7,.2,1);--m-dur:.8s}

/* Apparitions au défilement (uniquement si le JS est actif) */
.js-motion [data-reveal]{opacity:0;transform:translateY(18px);transition:opacity var(--m-dur) var(--m-ease),transform var(--m-dur) var(--m-ease);transition-delay:var(--d,0s)}
.js-motion [data-reveal="fade"]{transform:none}
.js-motion [data-reveal="right"]{transform:translateX(24px)}
.js-motion [data-reveal].is-in{opacity:1;transform:none}

/* Barres de progression : remplissage à l'apparition */
.js-motion .v2-mission-progress i,.js-motion .v2-progress span{width:0!important;transition:width 1.6s var(--m-ease) .2s}
.js-motion .is-filled .v2-mission-progress i,.js-motion .is-filled.v2-progress span,.js-motion .is-filled .v2-progress span{width:var(--w,27.4%)!important}

/* Parcours : les étapes s'enchaînent comme des blocs liés */
.js-motion .v2-journey-grid article::after{opacity:0;transform:scale(.6);transition:opacity .4s ease,transform .5s var(--m-ease);transition-delay:calc(var(--d,0s) + .45s)}
.js-motion .v2-journey-grid article.is-in::after{opacity:1;transform:none}
.v2-journey-grid article{transition:box-shadow .3s ease,border-color .3s ease,transform .3s var(--m-ease)}
.v2-journey-grid article:hover{transform:translateY(-3px);border-color:#cfd4cc;box-shadow:0 18px 38px rgba(17,38,45,.09)}
.v2-step-number{transition:background .3s ease,color .3s ease,border-color .3s ease}
.v2-journey-grid article:hover .v2-step-number{background:#f7931a;border-color:#f7931a;color:#1d1205}

/* Registre de la mission : 100 blocs de 1 000 000 sats */
.cb-ledger{margin:4px 0 0}
.cb-ledger-grid{display:grid;grid-template-columns:repeat(20,1fr);gap:4px}
.cb-ledger-grid i{position:relative;aspect-ratio:1;border-radius:2px;background:#eef1f0;overflow:hidden}
.cb-ledger-grid i::after{content:"";position:absolute;inset:0;transform:scaleY(var(--f,0));transform-origin:bottom;background:linear-gradient(180deg,#14a08e,#0c8172);border-radius:inherit}
.js-motion .cb-ledger-grid i::after{transform:scaleY(0);transition:transform .45s var(--m-ease);transition-delay:calc(var(--k) * 22ms + .3s)}
.js-motion .cb-ledger.is-in .cb-ledger-grid i::after{transform:scaleY(var(--f,0))}
.cb-ledger-grid i.is-partial::after{background:linear-gradient(180deg,#f7a73a,#f7931a)}
.cb-ledger-legend{display:flex;justify-content:space-between;gap:12px;margin-top:10px;font-size:10.5px;color:#859397}
.cb-ledger-legend span{display:inline-flex;align-items:center;gap:6px}
.cb-ledger-legend span::before{content:"";width:8px;height:8px;border-radius:2px;background:#0c8172}

/* Chiffres : largeur stable pendant le comptage */
[data-count],#quoteSats{font-variant-numeric:tabular-nums}

/* Boutons : la flèche avance au survol */
.v2-btn span,.v2-text-link span,.v2-journey-link span,.v2-link-light span{display:inline-block;transition:transform .25s var(--m-ease)}
.v2-btn:hover span,.v2-text-link:hover span,.v2-journey-link:hover span,.v2-link-light:hover span{transform:translateX(3px)}

/* Indicateur « taux disponible » : battement discret, comme un nœud réseau actif */
.v2-secure i{animation:cb-beat 2.8s ease-out infinite}
@keyframes cb-beat{0%{box-shadow:0 0 0 0 rgba(33,175,145,.45)}70%,100%{box-shadow:0 0 0 7px rgba(33,175,145,0)}}

/* Confirmation du montant simulé */
#quoteSats.is-ticking{color:#0a7266;transition:color .3s ease}

@media (prefers-reduced-motion:reduce){
  .js-motion [data-reveal]{opacity:1;transform:none;transition:none}
  .js-motion .v2-mission-progress i,.js-motion .v2-progress span{width:var(--w,27.4%)!important;transition:none}
  .js-motion .cb-ledger-grid i::after{transform:scaleY(var(--f,0));transition:none}
  .js-motion .v2-journey-grid article::after{opacity:1;transform:none;transition:none}
  .v2-secure i{animation:none}
  .v2-journey-grid article:hover{transform:none}
}
.cb-ledger-legend em{font-style:normal}
/* Carte Mission en mode lancement */
.v2-mission-card.is-launch .v2-mission-top b,.v2-mission-card.is-launch .v2-progress,.v2-mission-card.is-launch .v2-mission-total,.v2-mission-card.is-launch .v2-mission-stats>div:first-child{display:none}
.v2-mission-launch{display:flex;flex-direction:column;gap:6px;margin:14px 0 18px;padding:14px 16px;border-radius:10px;background:#fbf3e6;border:1px solid #f3d6a8}
.v2-mission-launch b{font:700 18px 'Petrona',Georgia,serif;color:#13262d}
.v2-mission-launch span{font-size:13.5px;line-height:1.5;color:#5a4a2f}
.v2-mission-launch a{font-weight:700;font-size:13.5px;color:#0c8172;text-decoration:none}
.v2-mission-launch[hidden]{display:none}
.v2-mission-card.is-launch .v2-mission-stats{grid-template-columns:1fr 1fr}
.v2-proof-icon svg{display:block}

/* ===== Motion institutionnel : le parcours se raconte ===== */
.jrm-ready .v2-journey-head .v2-section-kicker{position:relative;padding-left:0;transition:padding .7s cubic-bezier(.2,.7,.2,1)}
.jrm-ready .v2-journey-head .v2-section-kicker::before{content:"";position:absolute;left:0;top:50%;width:0;height:2px;background:#f7931a;transition:width .7s cubic-bezier(.2,.7,.2,1)}
.jrm-ready.is-play .v2-journey-head .v2-section-kicker{padding-left:36px}
.jrm-ready.is-play .v2-journey-head .v2-section-kicker::before{width:24px}
.jrm-ready .v2-journey-head h2 .ln{display:block;overflow:hidden}
.jrm-ready .v2-journey-head h2 .ln>span{display:block;transform:translateY(105%);transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.jrm-ready .v2-journey-head h2 .ln+.ln>span{transition-delay:.12s}
.jrm-ready.is-play .v2-journey-head h2 .ln>span{transform:none}
.jrm-ready .v2-journey-head p,.jrm-ready .jr-foot{opacity:0;transform:translateY(12px);transition:opacity .8s ease .3s,transform .8s cubic-bezier(.2,.7,.2,1) .3s}
.jrm-ready.is-play .v2-journey-head p{opacity:1;transform:none}
.jrm-ready .jr-foot.is-on{opacity:1;transform:none}
/* Ligne de progression pilotée étape par étape */
.jrm .jr-track i{width:0;transform:none!important;transition:width .8s cubic-bezier(.65,0,.35,1)}
/* Pastilles : éteintes puis activées */
.jrm-ready .jr-node{background:#fff;color:#9aa6a8;box-shadow:0 0 0 6px #f8f6f0,inset 0 0 0 1.5px #d5dbd6;transition:background .45s ease,color .45s ease,box-shadow .45s ease}
.jrm-ready .jr-step.is-on .jr-node{background:#0c8172;color:#fff;box-shadow:0 0 0 6px #f8f6f0,inset 0 0 0 0 transparent}
.jrm-ready .jr-node::after{content:"";position:absolute;inset:-6px;border-radius:50%;border:2px solid #4f9d8f;opacity:0;transform:scale(.7)}
.jrm-ready .jr-step.is-on .jr-node::after{animation:jrmRing 1s cubic-bezier(.2,.7,.2,1)}
@keyframes jrmRing{0%{opacity:.9;transform:scale(.8)}100%{opacity:0;transform:scale(1.5)}}
.jrm-ready .jr-step.is-current .jr-node{background:#f7931a;color:#241303}
/* Cartes : arrivée rapide et lisible, puis mise en avant de l'étape en cours */
.jrm-ready .jr-card{opacity:0;transform:translateY(18px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1),box-shadow .4s ease,border-color .4s ease;transition-delay:var(--d,0s),var(--d,0s),0s,0s}
.jrm-ready.is-play .jr-card{opacity:1;transform:none}
.jrm-ready .jr-step.is-current .jr-card{border-color:#9fd8cf;box-shadow:0 18px 40px rgba(12,129,114,.12)}
/* 01 : les champs se valident un à un */
.jrm-ready .s1 .jr-ok{transform:scale(0);transition:transform .45s cubic-bezier(.3,1.6,.5,1)}
.jrm-ready .s1 .jr-row:nth-of-type(2) .jr-ok{transition-delay:.35s}
.jrm-ready .s1.is-on .jr-ok{transform:none}
.jrm-ready .s1 .jr-row:last-child b{opacity:0;transition:opacity .5s ease .7s}
.jrm-ready .s1.is-on .jr-row:last-child b{opacity:1}
/* 02 : compteur de sats + compte à rebours réel */
.jr-timer b{font:inherit;font-variant-numeric:tabular-nums}
/* 03 : statut de la commande qui avance */
.jrm-ready .s3 .jr-dot{background:#d5dbd6;transition:background .35s ease}
.jrm-ready .s3 .jr-row.is-done .jr-dot{background:#0c8172}
.jrm-ready .s3 .jr-row.is-live .jr-dot{background:#f7931a;box-shadow:0 0 0 4px rgba(247,147,26,.18);animation:jrPulse 1.6s ease-in-out infinite}
.jrm-ready .s3 .jr-row .jr-ok,.jrm-ready .s3 .jr-row .jr-pending{opacity:0;transform:scale(.6);transition:opacity .3s ease,transform .4s cubic-bezier(.3,1.6,.5,1)}
.jrm-ready .s3 .jr-row.is-done .jr-ok,.jrm-ready .s3 .jr-row.is-live .jr-pending{opacity:1;transform:none}
.jrm-ready .s3 .jr-row.is-done .jr-pending{display:none}
.jr-row .jr-ok+.jr-pending,.jr-pending+.jr-ok{margin-left:0}
/* 04 : la barre se remplit, les sats arrivent */
.jrm-ready .s4 .jr-bar i{width:0;transition:width 1.6s cubic-bezier(.2,.7,.2,1)}
.jrm-ready .s4.is-on .jr-bar i{width:33%}
.jr-toast{display:flex;align-items:center;gap:8px;margin:-2px 0 8px;padding:7px 10px;border-radius:8px;background:#dff5ef;color:#0a6d61;font-weight:700;font-size:11.5px;opacity:0;transform:translateY(-6px);transition:opacity .5s ease,transform .5s cubic-bezier(.2,.7,.2,1)}
.jr-toast-ic{display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#f7931a;color:#fff;font-size:11px}
.jr-toast b{font-variant-numeric:tabular-nums}
.jr-toast{max-height:0;margin:0;padding-top:0;padding-bottom:0;overflow:hidden;transition:opacity .5s ease,transform .5s cubic-bezier(.2,.7,.2,1),max-height .5s ease,padding .5s ease,margin .5s ease}
.jr-toast.is-on{opacity:1;transform:none;max-height:44px;padding-top:7px;padding-bottom:7px;margin:-2px 0 8px}
.jr-preview em{position:relative}
/* Mobile : les liaisons verticales se tracent aussi */
@media(max-width:640px){
  .jrm-ready .jr-step:not(:last-child)::after{transform:scaleY(0);transform-origin:top;transition:transform .8s cubic-bezier(.65,0,.35,1)}
  .jrm-ready .jr-step.is-linked::after{transform:none}
}
@media(prefers-reduced-motion:reduce){.jrm-ready *,.jrm-ready *::before,.jrm-ready *::after{transition:none!important;animation:none!important}}
