.fx-actif .fx{opacity:0;transform:translateY(34px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.2,1);transition-delay:var(--fx-delai,0s)}
.fx-actif .fx.gauche{transform:translateX(-60px)}
.fx-actif .fx.droite{transform:translateX(60px)}
.fx-actif .fx.vu{opacity:1;transform:none}
.fx-actif .outil .barre.fx::after{transform:scaleX(0);transform-origin:left center;transition:transform .9s cubic-bezier(.6,.1,.2,1) .35s}
.fx-actif .outil .barre.fx.vu::after{transform:scaleX(1)}
@keyframes loop-respire{from{transform:scale(1.06)}to{transform:scale(1)}}
.hero .photo,.hero-i img,.hero-o .hero-i img{animation:loop-respire 9s ease-out both}
.btn,.cta,.btn.contour{transition:transform .2s ease,box-shadow .2s ease,filter .15s}
.btn:hover,.cta:hover{transform:translateY(-2px);box-shadow:0 8px 18px rgba(45,13,26,.18)}
.bandeau,.porte-c img,.po .img img,.osez .photo,.humains img,.reseau-coach img,.pousser-porter img{transition:transform .8s cubic-bezier(.2,.7,.2,1)}
.porte-c:hover img,.po:hover .img img{transform:scale(1.03)}
.porte-c,.po{overflow:hidden}
.secteur,.paire,.famille,.garanties > div{transition:transform .25s ease,box-shadow .25s ease}
.secteur:hover,.paire:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(45,13,26,.12)}
.famille:hover{transform:scale(1.05)}
.garanties > div:hover{transform:translateY(-3px)}
@keyframes loop-pop{0%{transform:scale(.6);opacity:0}70%{transform:scale(1.08);opacity:1}100%{transform:scale(1)}}
.fx-actif .chiffres .vu b{animation:loop-pop .6s ease-out both;animation-delay:var(--fx-delai,0s)}
@keyframes scene-tour{from{transform:rotate(-360deg)}to{transform:rotate(0)}}
.scene-joue .haut .symbole{animation:scene-tour 1.2s cubic-bezier(.5,0,.2,1) .4s both}
@keyframes ry-defile{to{background-position:32px 0}}
@keyframes ry-bati{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes ry-monte{from{transform:scaleY(0)}to{transform:scaleY(1)}}
@keyframes ry-allume{0%,100%{transform:rotate(45deg) scale(1)}50%{transform:rotate(45deg) scale(1.25)}}
.scene-pret .piste .barre,.ry-pistes.scene-pret .relais{opacity:0}
.scene-joue .piste .bande-g{animation:ry-defile 1.6s linear infinite}
.scene-joue .piste .los{animation:ry-allume 2.4s ease-in-out infinite}
.scene-joue .piste .los:nth-child(2){animation-delay:.6s}.scene-joue .piste .los:nth-child(3){animation-delay:1.2s}.scene-joue .piste .los:nth-child(4){animation-delay:1.8s}
.scene-joue .piste .barre{opacity:1;transform-origin:left center;animation:ry-bati 1s cubic-bezier(.3,.7,.2,1) .3s both}
.scene-joue .piste .barre + .barre{animation-delay:1.6s}
.ry-pistes.scene-joue .relais{opacity:1;transform-origin:bottom center;animation:ry-monte .6s ease-out 1.3s both}
.ry-pistes.scene-joue .relais + .relais{animation-delay:2.6s}
@keyframes pyr-monte{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
@keyframes pyr-lueur{0%,30%,100%{filter:none}15%{filter:brightness(1.06)}}
@keyframes pyr-fleche{0%,100%{transform:translateY(0)}50%{transform:translateY(6px)}}
@keyframes pyr-pop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
.pyr-carte.scene-pret .niv,.pyr-carte.scene-pret .puce,.pyr-carte.scene-pret .fl-bas,.pyr-carte.scene-pret .leg{opacity:0}
.pyr-carte.scene-joue .niv{animation:pyr-monte .6s cubic-bezier(.2,.7,.2,1) both,pyr-lueur 4s ease-in-out 2s infinite}
.pyr-carte.scene-joue .n1{animation-delay:.1s,2s}.pyr-carte.scene-joue .n2{animation-delay:.45s,2.3s}
.pyr-carte.scene-joue .n3{animation-delay:.8s,2.6s}.pyr-carte.scene-joue .n4{animation-delay:1.15s,2.9s}
.pyr-carte.scene-joue .fl-bas{opacity:1;animation:pyr-fleche 1.4s ease-in-out 1.6s infinite}
.pyr-carte.scene-joue .puce{animation:pyr-pop .45s cubic-bezier(.3,1.4,.5,1) both}
.pyr-carte.scene-joue .puce:nth-child(1){animation-delay:1.7s}.pyr-carte.scene-joue .puce:nth-child(2){animation-delay:1.9s}.pyr-carte.scene-joue .puce:nth-child(3){animation-delay:2.1s}
.pyr-carte.scene-joue .leg{animation:pyr-monte .5s ease-out 2.3s both}
@media (prefers-reduced-motion: reduce){
  .fx-actif .fx{opacity:1!important;transform:none!important;transition:none!important}
  .fx-actif .outil .barre.fx::after{transform:none!important;transition:none!important}
  .hero .photo,.hero-i img,img[src*="04-ballons"],.fx-actif .chiffres .vu b,.change img,.change .symbole,.ry-pistes *,.pyr-carte *{animation:none!important;opacity:1!important}
  .btn:hover,.cta:hover,.secteur:hover,.paire:hover,.famille:hover,.garanties > div:hover,.porte-c:hover img,.po:hover .img img{transform:none!important}
}
.appel .tete.avec-magie,.appel-f .tete.avec-magie{flex-direction:column;gap:14px}
.demande .tete.avec-magie{display:flex;margin-bottom:20px}
.magie{position:relative;width:92px;aspect-ratio:759/737}
.magie svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.magie .arc{stroke-dasharray:1;stroke-dashoffset:1}
.magie i{position:absolute;top:var(--by);left:calc(46% - var(--bw)/2);width:var(--bw);height:7%;background:var(--bc);border-radius:2px;box-shadow:0 2px 0 rgba(0,0,0,.25)}
.magie .bag{position:absolute;left:-34%;top:-22%;width:44%;opacity:0;transform-origin:10% 90%}
.magie .poussiere{position:absolute;left:44%;top:46%}
.magie .poussiere b{position:absolute;width:9px;height:9px;background:#E9D9A8;clip-path:polygon(50% 0,62% 38%,100% 50%,62% 62%,50% 100%,38% 62%,0 50%,38% 38%);opacity:0}
.joue .magie .bag{animation:bag 1.3s ease forwards}
@keyframes bag{0%{opacity:0;transform:rotate(-40deg) translate(-20px,10px)}25%{opacity:1}55%{transform:rotate(18deg)}75%{transform:rotate(-6deg)}100%{opacity:0;transform:rotate(0) translate(10px,-6px)}}
.joue .magie .poussiere b{animation:pouss .9s ease-out .65s forwards}
@keyframes pouss{0%{opacity:1;transform:scale(.4)}100%{opacity:0;transform:translate(var(--px),var(--py)) scale(1.4) rotate(120deg)}}
.joue .magie .arc{animation:trace 1.1s ease-in-out .8s forwards}
@keyframes trace{to{stroke-dashoffset:0}}
.joue .magie i{animation:envol .75s cubic-bezier(.5,-.3,.4,1.3) var(--t) forwards,pulse 3.2s ease-in-out calc(4.4s + var(--p)) infinite}
@keyframes envol{to{left:calc(var(--x) - var(--dd)/2);top:calc(var(--y) - var(--dh)/2);width:var(--dd);height:var(--dh);border-radius:50%;background:var(--pc);box-shadow:none}}
@keyframes pulse{0%,70%,100%{transform:scale(1)}80%{transform:scale(1.35)}}
.tourj .bloc.chute,.tourj .toi.chute{animation:chute .5s ease-in var(--cd,0s) forwards;pointer-events:none}
@keyframes chute{to{transform:translateY(130px) rotate(calc(var(--r,0deg) + 24deg));opacity:0}}
.tourj.choix{animation:none}
.tourj.choix .bloc,.tourj.choix .toi{display:none}
.tourj .bp-carte{position:relative;width:min(100%,430px);background:var(--c,#A22A41);color:#fff;border-radius:8px;padding:34px 30px 28px;text-align:left;transform:rotate(-1.5deg);box-shadow:0 10px 0 rgba(45,13,26,.2),0 24px 40px -12px rgba(45,13,26,.45);animation:bpIn .6s cubic-bezier(.3,1.5,.5,1)}
.tourj .bp-carte[hidden]{display:none}
@keyframes bpIn{from{opacity:0;transform:translateY(-70px) rotate(5deg) scale(.9)}to{opacity:1;transform:rotate(-1.5deg)}}
.bp-carte.part{animation:part .6s ease-in forwards}
.bp-k{font-size:14px;letter-spacing:.14em;text-transform:uppercase;font-weight:600;margin:0 0 8px;opacity:.9}
.bp-ch{display:inline-block;background:#F6F2EB;color:#2D0D1A;font-weight:600;font-size:17px;line-height:1.2;padding:8px 14px;border-radius:4px;margin:0 0 16px;transform:rotate(2deg);box-shadow:0 5px 0 rgba(45,13,26,.2)}
.bp-carte h2{font-family:var(--serif,'DM Serif Display',Georgia,serif);font-weight:400;font-size:clamp(28px,3vw,38px);line-height:1.1;margin:0 0 12px;color:inherit}
.bp-carte h2 em{font-style:italic;text-decoration:underline;text-decoration-color:#2D0D1A;text-decoration-thickness:4px;text-underline-offset:6px}
.bp-d{margin:0 0 22px;font-size:15px}
.bp-btns{display:flex;flex-wrap:wrap;gap:12px 20px;align-items:center}
.bp-oui{display:inline-block;background:#F6F2EB;color:#2D0D1A;font-weight:600;padding:14px 24px;border-radius:3px;letter-spacing:.04em;text-transform:uppercase;font-size:15px;text-decoration:none;box-shadow:0 5px 0 rgba(45,13,26,.25);transition:transform .2s}
.bp-oui:hover,.bp-oui:focus-visible{transform:translateY(-3px) rotate(-1deg);outline:none}
.bp-plus{background:none;border:0;font:inherit;font-size:15px;color:inherit;text-decoration:underline;text-underline-offset:4px;cursor:pointer;padding:8px 4px}
.bp-carte.pale{color:#2D0D1A}.bp-carte.pale h2 em{text-decoration-color:#A22A41}.bp-carte.pale .bp-ch{background:#2D0D1A;color:#F6F2EB}.bp-carte.pale .bp-oui{background:#2D0D1A;color:#F6F2EB}
@media(prefers-reduced-motion:reduce){.tourj .bp-carte{animation:none}}
