/* Proposition 6 — « l'équipe, en mouvement ».
   Se charge APRÈS soi.css et theme-neon.css, uniquement sur /propositions/6/ :
   les propositions 1 à 5 ne changent pas. Tout ce qui bouge s'arrête avec
   « réduire les animations » (voir tout en bas). */

@property --ang{syntax:"<angle>";inherits:false;initial-value:0deg}

/* ── fil de progression, tout en haut ── */
.progression{position:fixed;left:0;top:0;z-index:120;width:100%;height:2px;pointer-events:none;transform-origin:0 50%;transform:scaleX(var(--p,0));
  background:linear-gradient(90deg,#27B8E6,#2F6BFF 55%,#A855F7);box-shadow:0 0 12px rgba(47,107,255,.7)}

/* ── entrée des héros, au chargement ── */
.intro > *{opacity:0;transform:translateY(18px);animation:entre 1.1s var(--ease) forwards}
.intro > :nth-child(1){animation-delay:.05s}.intro > :nth-child(2){animation-delay:.15s}.intro > :nth-child(3){animation-delay:.45s}
.intro > :nth-child(4){animation-delay:.6s}.intro > :nth-child(5){animation-delay:.72s}.intro > :nth-child(6){animation-delay:.84s}
.intro h1{opacity:1;transform:none;animation:none}
.intro h1 .ligne{display:block;overflow:hidden;padding:.02em .06em .1em;margin:0 -.06em -.08em}
.intro h1 .ligne > span{display:inline-block;transform:translateY(110%);animation:monte 1.15s var(--ease) forwards}
.intro h1 .ligne + .ligne > span{animation-delay:.14s}
@keyframes entre{to{opacity:1;transform:none}}
@keyframes monte{to{transform:none}}

/* ── les titres s'éclairent en entrant ── */
h2.mega.up{filter:blur(10px);transform:translateY(34px) scale(.98);transition:opacity 1.1s var(--ease),transform 1.1s var(--ease),filter 1.1s var(--ease)}
h2.mega.up.in{filter:none;transform:none}
.lum{background-size:220% 100%;background-position:0 50%}
.up.in .lum,.intro .lum{animation:balaye 2.6s var(--ease) .25s both}
@keyframes balaye{from{background-position:100% 50%}to{background-position:0 50%}}
.lum{background-image:linear-gradient(100deg,#1B3FD6 0%,#2F6BFF 30%,#27B8E6 48%,#9FD8FF 55%,#2F6BFF 70%,#1B3FD6 100%)}

/* ── bouton néon : un reflet qui passe ── */
.btn-neon{position:relative;overflow:hidden}
.btn-neon::after{content:"";position:absolute;top:0;bottom:0;left:-60%;width:40%;transform:skewX(-20deg);pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.55),transparent);animation:reflet 5.5s ease-in-out 2s infinite}
@keyframes reflet{0%,72%{left:-60%}100%{left:130%}}

/* ── projecteur qui suit la souris sur les cartes ── */
.spot{position:absolute;inset:0;z-index:0;pointer-events:none;opacity:0;transition:opacity .4s;border-radius:inherit;
  background:radial-gradient(420px circle at var(--mx,50%) var(--my,50%),color-mix(in srgb,var(--c,#2F6BFF) 16%,transparent),transparent 62%)}
.a-spot:hover > .spot{opacity:1}
.a-spot > :not(.spot):not(img):not(.tag){position:relative;z-index:1}

/* ── cartes d'équipe : légère inclinaison 3D ── */
.team .agent,.team .agent:hover,.team .agent.up,.team .agent.up.in{transform:perspective(1100px) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg)) translateY(var(--ty,0px))}
.team .agent{transition:transform .5s var(--ease),box-shadow .5s,border-color .5s,opacity 1s var(--ease)}
.team .agent.up{opacity:0;--ty:30px}
.team .agent.up.in{opacity:1;--ty:0px}
.team .agent:hover,.team .agent.up.in:hover{--ty:-6px}
.agent > img{animation:respire 7s ease-in-out infinite}
.agent:nth-child(2) > img{animation-delay:-2s}.agent:nth-child(3) > img{animation-delay:-4s}
.later .agent:nth-child(1) > img{animation-delay:-1s}.later .agent:nth-child(2) > img{animation-delay:-3s}.later .agent:nth-child(3) > img{animation-delay:-5s}
@keyframes respire{50%{transform:scale(1.025) translateY(-4px)}}
.agent:hover > img{animation-play-state:paused}

/* ══ ACCUEIL — héros « l'équipe » ══ */
.ht{position:relative;isolation:isolate;overflow:hidden;padding:clamp(24px,4vh,52px) 0 clamp(40px,5vw,72px)}
.ht::before{content:"";position:absolute;left:50%;top:-30%;width:min(1400px,130vw);height:900px;transform:translateX(-50%);z-index:-1;
  background:radial-gradient(closest-side,rgba(47,107,255,.14),rgba(168,85,247,.06) 50%,rgba(45,213,220,.04) 64%,transparent 74%);animation:halo 12s ease-in-out infinite alternate}
@keyframes halo{to{transform:translateX(-50%) scale(1.08) rotate(4deg)}}
.ht h1{font-size:clamp(2.3rem,min(4.6vw,7.4vh),4.3rem);letter-spacing:-.05em;margin-top:14px}
.ht .lead{max-width:68ch;font-size:clamp(1rem,1.35vw,1.14rem);margin-top:16px}
.ht .acts{margin-top:24px}
.ht .hint{margin-top:14px}
.ht .lead b{color:var(--white);font-weight:600}
.equipe-scene{position:relative;margin-top:clamp(26px,3.4vh,40px);opacity:0;transform:translateY(40px) scale(.97);animation:entre 1.4s var(--ease) .75s forwards}
.equipe-scene .cadre{position:relative;border-radius:34px;overflow:hidden;aspect-ratio:21/9;box-shadow:var(--sh3);border:1px solid var(--line)}
.equipe-scene .cadre > img,.equipe-scene .cadre > video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 30%}
.equipe-scene .cadre > img,.equipe-scene .cadre > video{animation:lent 26s ease-out both}
.equipe-scene .cadre > video{opacity:0;transition:opacity 1.2s ease}
.equipe-scene .cadre > video.joue{opacity:1}
.equipe-scene .cadre::after{content:"";position:absolute;left:10%;right:10%;bottom:0;height:2px;background:linear-gradient(90deg,transparent,#22C55E,#FF4FA3,#2F6BFF,#A855F7,#F59E0B,#3B82F6,transparent);box-shadow:0 0 18px rgba(47,107,255,.8)}
.equipe-scene .balaye{position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.22) 50%,transparent 60%);
  background-size:250% 100%;animation:lumiere 9s ease-in-out 2.2s infinite}
@keyframes lumiere{0%{background-position:130% 0}45%,100%{background-position:-30% 0}}
.etiq{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,0);display:flex;align-items:center;gap:8px;white-space:nowrap;
  padding:7px 13px 7px 9px;border-radius:999px;background:rgba(255,255,255,.93);border:1px solid rgba(11,18,32,.06);
  box-shadow:0 10px 30px -12px rgba(11,18,40,.35),0 0 0 1px color-mix(in srgb,var(--c) 22%,transparent);
  font-size:.8rem;color:var(--white);opacity:0;animation:pose .9s var(--ease) forwards,flotte 5s ease-in-out infinite;animation-delay:var(--d),calc(var(--d) + .9s)}
.etiq i{width:9px;height:9px;border-radius:50%;background:var(--c);box-shadow:0 0 10px var(--c);flex:none}
.etiq b{font-weight:650}
.etiq span{color:var(--g-60)}
.etiq:hover{box-shadow:0 14px 34px -12px var(--c),0 0 0 1.5px var(--c)}
@keyframes pose{from{opacity:0;transform:translate(-50%,14px) scale(.9)}to{opacity:1;transform:translate(-50%,0)}}
@keyframes flotte{50%{translate:0 -5px}}
.legende{display:none}
.equipe-note{margin-top:12px;text-align:right;font-size:.7rem;color:var(--g-45)}
@media (max-width:900px){
  .etiq span{display:none}
}
@media (max-width:640px){
  .equipe-scene .cadre{aspect-ratio:2/1;border-radius:22px}
  .equipe-scene .cadre > img,.equipe-scene .cadre > video{object-position:50% 20%}
  .etiq{display:none}
  .legende{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:14px}
  .legende span{display:inline-flex;align-items:center;gap:7px;padding:6px 11px;border-radius:999px;background:#fff;box-shadow:var(--sh2);font-size:.78rem;font-weight:600}
  .legende i{width:8px;height:8px;border-radius:50%;background:var(--c);box-shadow:0 0 8px var(--c)}
}

/* ══ ACCUEIL — « ils travaillent ensemble » ══ */
.ensemble{position:relative;isolation:isolate;margin-top:clamp(52px,6vw,84px);display:grid;grid-template-columns:1.62fr 1fr;gap:16px;align-items:stretch}
.ensemble .cadre{position:relative;border-radius:30px;overflow:hidden;aspect-ratio:16/9;box-shadow:var(--sh3);border:1px solid var(--line)}
.ensemble .cadre img{width:100%;height:100%;object-fit:cover;transform:scale(1.06);transition:transform 2.4s var(--ease)}
.ensemble.in .cadre img{transform:scale(1)}
.fil-equipe{position:relative;display:flex;flex-direction:column;padding:18px 16px 12px;border-radius:30px;background:#fff;border:1px solid var(--line);box-shadow:var(--sh3)}
.fil-equipe .tete{display:flex;align-items:center;gap:10px;padding:0 4px 12px;border-bottom:1px solid var(--line)}
.fil-equipe .tete b{font-size:.92rem;flex:1}
.fil-equipe ol{list-style:none;margin:0;padding:10px 0 0;display:flex;flex-direction:column;gap:8px;flex:1;min-height:300px;overflow:hidden;position:relative;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 34px);mask-image:linear-gradient(180deg,transparent 0,#000 34px);justify-content:flex-end}
.fil-equipe li{display:grid;grid-template-columns:36px 1fr;gap:10px;align-items:start;padding:10px 12px;border-radius:16px;background:#F6F8FC;
  border-left:3px solid var(--c);animation:arrive .7s var(--ease) both}
.fil-equipe li img{width:36px;height:36px;border-radius:50%;object-fit:cover;object-position:50% 14%;box-shadow:0 0 0 2px #fff,0 0 0 3.5px var(--c)}
.fil-equipe li .m{font:600 .6rem var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--c)}
.fil-equipe li .m em{font-style:normal;color:var(--g-45);margin-left:6px}
.fil-equipe li p{margin:2px 0 0;font-size:.84rem;line-height:1.4;color:var(--g-72)}
.fil-equipe li p b{color:var(--white);font-weight:600}
.fil-equipe li.sort{animation:sort .5s var(--ease) forwards}
@keyframes arrive{from{opacity:0;transform:translateY(18px) scale(.97)}to{opacity:1;transform:none}}
@keyframes sort{to{opacity:0;transform:translateY(-10px);margin-top:-72px}}
@media (max-width:980px){
  .ensemble{grid-template-columns:1fr}
  .fil-equipe ol{min-height:0;height:330px}
}
.relais{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:22px}
.relais div{padding:18px;border-radius:18px;background:#fff;box-shadow:var(--sh2);font-size:.88rem;color:var(--g-60);line-height:1.5}
.relais b{display:block;margin-bottom:4px;font-size:.95rem;color:var(--white)}
@media (max-width:760px){.relais{grid-template-columns:1fr}}

.citation{max-width:860px;margin:clamp(56px,7vw,90px) auto 0;text-align:center}
.citation p{font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.55;letter-spacing:-.01em;color:var(--white)}
.citation cite{display:flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;font-style:normal;font-size:.86rem;color:var(--g-60)}
.citation cite span{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font:700 .78rem var(--sans);color:#fff;background:linear-gradient(135deg,#2F6BFF,#A855F7)}

/* ══ PAGE ZURI — héros vivant ══ */
.cine-bg video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:80% 40%;opacity:0;transition:opacity 1.2s ease}
.cine-bg video.joue{opacity:1}
.cine-bg img,.cine-bg video{animation:lent 22s ease-out both}
@media (max-width:760px){.cine.gauche .cine-bg video{object-position:88% 30%}}
.toasts{list-style:none;margin:0;padding:0;position:absolute;left:max(53%,calc(var(--gut) + 660px));bottom:clamp(36px,9vh,96px);z-index:3;width:290px;height:170px;display:flex;flex-direction:column;justify-content:flex-end;gap:8px;pointer-events:none}
.toast{display:flex;align-items:center;gap:11px;padding:10px 14px 10px 10px;border-radius:16px;background:rgba(255,255,255,.9);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border:1px solid rgba(11,18,32,.06);box-shadow:0 16px 40px -18px rgba(11,18,40,.45);
  animation:arrive .6s var(--ease) both}
.toast .ic{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;font-size:.95rem;background:rgba(47,107,255,.1)}
.toast b{display:block;font-size:.82rem;font-weight:650;color:var(--white)}
.toast span{display:block;font-size:.72rem;color:var(--g-60)}
.toast.sort{animation:sort .45s var(--ease) forwards}
@media (max-width:1200px){.toasts{display:none}}

/* ══ PAGE ZURI — la courbe des appels (remplace la photo du standard) ══ */
.courbe{position:relative;border-radius:28px;background:#fff;box-shadow:var(--sh3);border:1px solid var(--line);padding:clamp(18px,2.4vw,28px)}
.courbe .ent{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.courbe .ent b{font-size:.95rem}
.courbe .ent span{display:block;font-size:.76rem;color:var(--g-60)}
.bascule{display:inline-flex;padding:4px;border-radius:999px;background:#EEF2F8}
.bascule button{padding:7px 14px;border-radius:999px;font-size:.78rem;font-weight:600;color:var(--g-60);transition:background .4s,color .4s,box-shadow .4s}
.bascule button.on{background:#fff;color:var(--white);box-shadow:0 2px 10px -2px rgba(11,18,40,.18)}
.courbe svg{width:100%;height:auto;margin-top:14px;overflow:visible}
.courbe .trait{fill:none;stroke:#0B1220;stroke-width:2.2;stroke-linecap:round;stroke-dasharray:1200;stroke-dashoffset:1200}
.courbe.in .trait{animation:trace 2.2s var(--ease) .2s forwards}
@keyframes trace{to{stroke-dashoffset:0}}
.courbe .sous{fill:rgba(11,18,32,.04);opacity:0;transition:opacity 1s .8s}
.courbe.in .sous{opacity:1}
.courbe .cap{stroke:#8A93A6;stroke-width:1.4;stroke-dasharray:5 6}
.courbe .perdu{fill:rgba(244,63,94,.22);opacity:0;transition:fill .9s var(--ease),opacity .8s}
.courbe.in .perdu{opacity:1;transition-delay:0s,1.9s}
.courbe.zuri .perdu{fill:rgba(47,107,255,.3)}
.courbe .axe{font:500 11px var(--mono);fill:#8A93A6}
.courbe .lbl{font:600 12px var(--sans);opacity:0;transition:opacity .6s}
.courbe .lbl-cap{fill:#5A6479}
.courbe .lbl-perdu{fill:#E11D48}
.courbe .lbl-zuri{fill:#2F6BFF}
.courbe.in .lbl-cap{opacity:1;transition-delay:1.4s}
.courbe.in:not(.zuri) .lbl-perdu{opacity:1;transition-delay:.4s}
.courbe.zuri .lbl-zuri{opacity:1}
.courbe .pic-pt{fill:#fff;stroke:#0B1220;stroke-width:2;opacity:0;transform-box:fill-box;transform-origin:center;transition:opacity .4s,transform .4s var(--ease)}
.courbe.in .pic-pt{opacity:1;transition-delay:2.2s}
.courbe.zuri .pic-pt{stroke:#2F6BFF}
.courbe .pied{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px;font-size:.76rem;color:var(--g-60)}
.courbe .pied i{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}

/* ══ PAGE ZURI — le téléphone du patient (remplace la photo du soir) ══ */
.scene-tel{position:relative;display:grid;place-items:center;padding:clamp(20px,4vw,48px) 0}
.scene-tel::before{content:"";position:absolute;width:min(520px,100%);aspect-ratio:1;border-radius:50%;z-index:-1;
  background:radial-gradient(closest-side,rgba(47,107,255,.2),rgba(39,184,230,.08) 60%,transparent 72%);animation:halo2 6s ease-in-out infinite alternate}
@keyframes halo2{to{transform:scale(1.1)}}
.tel{position:relative;width:min(300px,78vw);aspect-ratio:9/19;border-radius:48px;padding:11px;background:#0B1220;
  box-shadow:0 0 0 1.5px #2a3448,0 0 0 3px rgba(47,107,255,.35),0 50px 100px -30px rgba(11,18,40,.6),0 0 60px -10px rgba(47,107,255,.35)}
.tel::before{content:"";position:absolute;left:50%;top:20px;width:92px;height:26px;transform:translateX(-50%);border-radius:20px;background:#000;z-index:3}
.ecran{position:relative;height:100%;border-radius:38px;overflow:hidden;background:linear-gradient(180deg,#0E1830,#0B1220 60%);color:#fff}
.ecran .vue{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;padding:64px 20px 26px;transition:opacity .7s var(--ease),transform .7s var(--ease)}
.ecran .vue.cachee{opacity:0;transform:scale(.96);pointer-events:none}
.ecran .qui{font-size:.74rem;color:rgba(255,255,255,.6);letter-spacing:.02em}
.ecran .nom{font-size:1.35rem;font-weight:600;margin-top:4px;letter-spacing:-.02em}
.ecran .chrono{font:500 .9rem var(--mono);color:rgba(255,255,255,.7);margin-top:6px;font-variant-numeric:tabular-nums}
.ecran .rond{position:relative;width:118px;height:118px;margin-top:34px}
.ecran .rond img{position:relative;z-index:1;width:100%;height:100%;border-radius:50%;object-fit:cover;object-position:50% 14%;box-shadow:0 0 0 3px #2F6BFF,0 0 30px rgba(47,107,255,.7)}
.ecran .rond i{position:absolute;inset:0;border-radius:50%;border:1.5px solid rgba(47,107,255,.7);animation:onde 2.4s ease-out infinite}
.ecran .rond i:nth-child(2){animation-delay:.8s}.ecran .rond i:nth-child(3){animation-delay:1.6s}
@keyframes onde{from{transform:scale(1);opacity:.9}to{transform:scale(1.9);opacity:0}}
.ecran .ia{margin-top:14px;font:600 .62rem var(--mono);letter-spacing:.12em;color:#8FB0FF}
.ecran .ondes{display:flex;align-items:center;gap:3px;height:34px;margin-top:22px}
.ecran .ondes i{width:3px;height:6px;border-radius:3px;background:#5B8CFF;animation:barre 1.1s ease-in-out infinite}
.ecran .ondes i:nth-child(2n){animation-delay:.15s}.ecran .ondes i:nth-child(3n){animation-delay:.3s}.ecran .ondes i:nth-child(5n){animation-delay:.45s}
@keyframes barre{50%{height:30px}}
.ecran .touches{margin-top:auto;display:flex;gap:26px}
.ecran .touches span{width:52px;height:52px;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.12);font-size:1.1rem}
.ecran .touches span.rouge{background:#EF4444}
.ecran .sms-vue{justify-content:flex-start;align-items:stretch;background:#F6F8FC;color:#0B1220;padding-top:58px}
.ecran .sms-tete{text-align:center;font-size:.72rem;color:#8A93A6;padding-bottom:12px;border-bottom:1px solid rgba(11,18,32,.07)}
.ecran .sms-tete b{display:block;font-size:.9rem;color:#0B1220;margin-top:6px}
.ecran .bulle-sms{margin-top:18px;align-self:flex-start;max-width:90%;padding:11px 13px;border-radius:18px 18px 18px 6px;background:#fff;box-shadow:0 6px 20px -10px rgba(11,18,40,.4);
  font-size:.8rem;line-height:1.45;opacity:0;transform:translateY(12px)}
.ecran .sms-vue.on .bulle-sms{animation:arrive .7s var(--ease) .5s forwards}
.ecran .bulle-sms small{display:block;margin-top:6px;font:600 .58rem var(--mono);letter-spacing:.08em;color:#2F6BFF}
.ecran .agenda-ok{margin-top:10px;align-self:center;display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;background:rgba(22,163,74,.1);color:#15803d;
  font:600 .66rem var(--mono);letter-spacing:.06em;opacity:0}
.ecran .sms-vue.on .agenda-ok{animation:arrive .7s var(--ease) 1.6s forwards}
.ecran .rdv-carte{margin-top:14px;display:grid;grid-template-columns:auto 1fr;gap:4px 12px;align-items:center;padding:12px 14px;border-radius:16px;background:#fff;
  border-left:4px solid #2F6BFF;box-shadow:0 10px 26px -14px rgba(11,18,40,.45);opacity:0;transform:translateY(12px)}
.ecran .sms-vue.on .rdv-carte{animation:arrive .7s var(--ease) 2.5s forwards}
.ecran .rdv-carte .j{grid-row:span 2;text-align:center;padding-right:12px;border-right:1px solid rgba(11,18,32,.08)}
.ecran .rdv-carte .j small{display:block;font:600 .56rem var(--mono);letter-spacing:.1em;color:#EF4444}
.ecran .rdv-carte .j b{display:block;font-size:1.2rem;line-height:1.05;letter-spacing:-.03em}
.ecran .rdv-carte .h{font-weight:650;font-size:.84rem}
.ecran .rdv-carte .d{font-size:.72rem;color:#5A6479}

/* ══ PAGE ZURI — détails vivants ══ */
.tab-bar button::before{content:"";position:absolute;left:0;bottom:0;height:2px;width:100%;transform-origin:0 50%;transform:scaleX(0);background:var(--neon);box-shadow:0 0 10px var(--neon)}
.tabs.auto .tab-bar button.on::before{animation:remplit var(--duree,7s) linear forwards}
.tabs.auto.pause .tab-bar button.on::before{animation-play-state:paused}
@keyframes remplit{to{transform:scaleX(1)}}
.pane.on .pic img{animation:kb 8s ease-out both}
.pane.on .body > *{animation:entre .8s var(--ease) both}
.pane.on .body > :nth-child(2){animation-delay:.08s}.pane.on .body > :nth-child(3){animation-delay:.16s}.pane.on .body > :nth-child(4){animation-delay:.24s}.pane.on .body > :nth-child(5){animation-delay:.32s}
.pane .body > *{opacity:0;transform:translateY(12px)}
.pane.on .body > *{opacity:1}
@keyframes kb{from{transform:scale(1.08)}to{transform:scale(1)}}

.win-wrap{perspective:1800px}
.win-wrap .fenetre{transform:rotateX(calc((1 - var(--t,1)) * 16deg)) scale(calc(.9 + var(--t,1) * .1));transform-origin:50% 100%;will-change:transform}
.puces{position:absolute;inset:0;pointer-events:none;z-index:2}
.puce{position:absolute;display:flex;align-items:center;gap:8px;padding:9px 14px;border-radius:14px;background:#fff;box-shadow:0 18px 40px -16px rgba(11,18,40,.4);
  border:1px solid var(--line);font-size:.8rem;white-space:nowrap;animation:flotte 6s ease-in-out infinite}
.puce b{font-size:1.05rem;letter-spacing:-.02em}
.puce i{width:8px;height:8px;border-radius:50%;background:var(--c,#2F6BFF);box-shadow:0 0 10px var(--c,#2F6BFF)}
.puce.p1{left:30%;top:24%}.puce.p2{right:-2%;top:64%;animation-delay:-2s}.puce.p3{left:-2%;bottom:-3%;animation-delay:-4s}
@media (max-width:900px){.puces{display:none}}

.steps.trace-ligne{position:relative}
.steps.trace-ligne::before{content:"";position:absolute;left:8%;right:8%;top:62px;height:1.5px;z-index:0;transform-origin:0 50%;transform:scaleX(0);
  background:linear-gradient(90deg,transparent,#2F6BFF 12%,#27B8E6 50%,#2F6BFF 88%,transparent);box-shadow:0 0 12px rgba(47,107,255,.7);transition:transform 1.8s var(--ease) .3s}
.steps.trace-ligne.in::before{transform:scaleX(1)}
.steps.trace-ligne .step{z-index:1}
@media (max-width:900px){.steps.trace-ligne::before{display:none}}

.tile.best::after{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.5px;pointer-events:none;z-index:2;
  background:conic-gradient(from var(--ang),transparent 0 62%,#27B8E6 76%,#2F6BFF 84%,#A855F7 90%,transparent 97%);
  -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0);
  animation:tourneAng 5s linear infinite}
@keyframes tourneAng{to{--ang:360deg}}

.calc .b.res .v{animation:pouls 2.8s ease-in-out infinite}
@keyframes pouls{50%{text-shadow:0 0 60px rgba(47,107,255,.6);transform:scale(1.04)}}
.calc .op{animation:pouls2 2.8s ease-in-out infinite}
@keyframes pouls2{50%{color:#2F6BFF}}

.demo-box .pic img{animation:respire 7s ease-in-out infinite}
.law .card.up,.checks > .up,.stats > .up,.relais > .up,.voix > .up{transition-delay:calc(var(--i,0) * 110ms)}

/* ── réduire les animations : tout s'arrête, tout reste lisible ── */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;animation-delay:0s !important;transition-delay:0s !important}
  .intro > *,.intro h1 .ligne > span,.equipe-scene,.etiq{opacity:1;transform:none}
  h2.mega.up{filter:none}
  .courbe .trait{stroke-dashoffset:0}
  .cine-bg video,.toasts,.progression,.btn-neon::after,.equipe-scene .balaye{display:none}
  .win-wrap .fenetre{transform:none}
}
