/* PME'Pulse — fusée en papier montée en stop motion (généré par _outils/build_fusee.py) */
.rocket-stage { position: relative; }
.rocket-stage * { animation-duration: 13.0s; animation-iteration-count: infinite; animation-timing-function: steps(1, end); }
.rk { position: absolute; left: 50%; top: 3%; height: 128%; aspect-ratio: 350 / 979; translate: -50% 0; z-index: 3; }
.rk-craft { position: absolute; inset: 0; animation-name: rk-fly; }
.rk-piece { position: absolute; inset: 0; opacity: 0; }
.rk-piece img { width: 100%; height: 100%; display: block; filter: drop-shadow(3px 4px 0 rgba(14, 14, 16, .16)); }
.rk-flame { position: absolute; left: 18.5%; top: 52.4%; width: 56%; opacity: 0; transform-origin: 50% 0; animation-name: rk-flame; }
.rk-flame img { width: 100%; display: block; }
.rk-clac {
  position: absolute; z-index: 6; opacity: 0;
  padding: 6px 12px; border-radius: 12px;
  background: #fff; border: 3px solid var(--pp-ink); box-shadow: 4px 4px 0 var(--pp-ink);
  font: 900 italic 19px/1 var(--pp-font); letter-spacing: -.02em; color: var(--pp-ink); white-space: nowrap;
}
.rk-clac:nth-of-type(odd) { rotate: -7deg; }
.rk-clac:nth-of-type(even) { rotate: 6deg; background: var(--pp-yellow); }
.rk-deco { position: absolute; z-index: 2; opacity: 0; }
.rk-deco.s1 { width: 46px; left: 14%; top: 64%; animation-name: rk-pop1; }
.rk-deco.s2 { width: 40px; right: 12%; top: 70%; animation-name: rk-pop2; }
.rk-deco.s3 { width: 34px; right: 20%; top: 6%; animation-name: rk-pop3; }
.rk-deco.d1 { width: 26px; left: 22%; top: 12%; animation-name: rk-pop2; }
.rk-count {
  position: absolute; right: 4%; top: 30%; z-index: 7; opacity: 0;
  min-width: 64px; padding: 10px 14px; border-radius: 16px; text-align: center;
  background: var(--pp-ink); color: var(--pp-yellow);
  font: 900 34px/1 var(--pp-font); box-shadow: 5px 5px 0 var(--pp-orange);
}
.rk-count.go { font-size: 22px; background: var(--pp-orange); color: #fff; box-shadow: 5px 5px 0 var(--pp-ink); right: 0; }
.rk-smoke { position: absolute; z-index: 4; top: 70%; opacity: 0; width: 70px; aspect-ratio: 1; border-radius: 50%; background: #fff; border: 3px solid var(--pp-ink); }
.rk-smoke.p1 { left: 30%; animation-name: rk-smoke1; }
.rk-smoke.p2 { left: 50%; width: 86px; animation-name: rk-smoke2; }
.rk-smoke.p3 { left: 20%; width: 54px; animation-name: rk-smoke3; }
.rk-smoke.p4 { left: 60%; width: 60px; animation-name: rk-smoke1; animation-delay: -.2s; }
.rk-smoke.p5 { left: 40%; width: 48px; animation-name: rk-smoke3; animation-delay: -.3s; }

.rk-p-moteur { animation-name: rk-moteur; }
@keyframes rk-moteur { 0%, 1.538% { opacity: 0; transform: translate(-280px, 40px) rotate(-22deg) scale(1.0); } 2.308% { opacity: 1; transform: translate(-280px, 40px) rotate(-22deg) scale(1.0); } 3.077% { transform: translate(-154px, 22px) rotate(-12deg) scale(1.00); } 3.846% { transform: translate(-56px, 8px) rotate(-4deg) scale(1.00); } 4.615% { transform: translate(8px, -1px) scale(1.05); } 5.385%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b1 { left:2%;top:50%; animation-name: rk-b1; }
@keyframes rk-b1 { 0%, 3.846% { opacity: 0; transform: scale(.4); } 4.615% { opacity: 1; transform: scale(1.25); } 5.385%, 6.923% { opacity: 1; transform: none; } 7.692%, 100% { opacity: 0; } }
.rk-p-nuit { animation-name: rk-nuit; }
@keyframes rk-nuit { 0%, 6.923% { opacity: 0; transform: translate(280px, 30px) rotate(18deg) scale(1.0); } 7.692% { opacity: 1; transform: translate(280px, 30px) rotate(18deg) scale(1.0); } 8.462% { transform: translate(154px, 16px) rotate(10deg) scale(1.00); } 9.231% { transform: translate(56px, 6px) rotate(4deg) scale(1.00); } 10.000% { transform: translate(-8px, -1px) scale(1.05); } 10.769%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b2 { right:2%;top:44%; animation-name: rk-b2; }
@keyframes rk-b2 { 0%, 9.231% { opacity: 0; transform: scale(.4); } 10.000% { opacity: 1; transform: scale(1.25); } 10.769%, 12.308% { opacity: 1; transform: none; } 13.077%, 100% { opacity: 0; } }
.rk-p-bande { animation-name: rk-bande; }
@keyframes rk-bande { 0%, 12.308% { opacity: 0; transform: translate(-260px, -20px) rotate(-12deg) scale(1.0); } 13.077% { opacity: 1; transform: translate(-260px, -20px) rotate(-12deg) scale(1.0); } 13.846% { transform: translate(-143px, -11px) rotate(-7deg) scale(1.00); } 14.615% { transform: translate(-52px, -4px) rotate(-2deg) scale(1.00); } 15.385% { transform: translate(8px, 1px) scale(1.05); } 16.154%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b3 { left:4%;top:36%; animation-name: rk-b3; }
@keyframes rk-b3 { 0%, 14.615% { opacity: 0; transform: scale(.4); } 15.385% { opacity: 1; transform: scale(1.25); } 16.154%, 17.692% { opacity: 1; transform: none; } 18.462%, 100% { opacity: 0; } }
.rk-p-corps { animation-name: rk-corps; }
@keyframes rk-corps { 0%, 17.692% { opacity: 0; transform: translate(0px, -340px) rotate(8deg) scale(1.0); } 18.462% { opacity: 1; transform: translate(0px, -340px) rotate(8deg) scale(1.0); } 19.231% { transform: translate(0px, -187px) rotate(4deg) scale(1.00); } 20.000% { transform: translate(0px, -68px) rotate(2deg) scale(1.00); } 20.769% { transform: translate(0px, 10px) scale(1.05); } 21.538%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b4 { right:4%;top:22%; animation-name: rk-b4; }
@keyframes rk-b4 { 0%, 20.000% { opacity: 0; transform: scale(.4); } 20.769% { opacity: 1; transform: scale(1.25); } 21.538%, 23.077% { opacity: 1; transform: none; } 23.846%, 100% { opacity: 0; } }
.rk-p-hublot { animation-name: rk-hublot; }
@keyframes rk-hublot { 0%, 23.077% { opacity: 0; transform: translate(230px, -210px) rotate(200deg) scale(2.4); } 23.846% { opacity: 1; transform: translate(230px, -210px) rotate(200deg) scale(2.4); } 24.615% { transform: translate(127px, -116px) rotate(110deg) scale(1.70); } 25.385% { transform: translate(46px, -42px) rotate(40deg) scale(1.21); } 26.154% { transform: translate(-7px, 6px) scale(1.05); } 26.923%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b5 { left:8%;top:16%; animation-name: rk-b5; }
@keyframes rk-b5 { 0%, 25.385% { opacity: 0; transform: scale(.4); } 26.154% { opacity: 1; transform: scale(1.25); } 26.923%, 28.462% { opacity: 1; transform: none; } 29.231%, 100% { opacity: 0; } }
.rk-p-haut { animation-name: rk-haut; }
@keyframes rk-haut { 0%, 28.462% { opacity: 0; transform: translate(200px, -270px) rotate(25deg) scale(1.0); } 29.231% { opacity: 1; transform: translate(200px, -270px) rotate(25deg) scale(1.0); } 30.000% { transform: translate(110px, -148px) rotate(14deg) scale(1.00); } 30.769% { transform: translate(40px, -54px) rotate(5deg) scale(1.00); } 31.538% { transform: translate(-6px, 8px) scale(1.05); } 32.308%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b6 { right:8%;top:8%; animation-name: rk-b6; }
@keyframes rk-b6 { 0%, 30.769% { opacity: 0; transform: scale(.4); } 31.538% { opacity: 1; transform: scale(1.25); } 32.308%, 33.846% { opacity: 1; transform: none; } 34.615%, 100% { opacity: 0; } }
.rk-p-nez { animation-name: rk-nez; }
@keyframes rk-nez { 0%, 33.846% { opacity: 0; transform: translate(0px, -380px) rotate(-30deg) scale(1.0); } 34.615% { opacity: 1; transform: translate(0px, -380px) rotate(-30deg) scale(1.0); } 35.385% { transform: translate(0px, -209px) rotate(-16deg) scale(1.00); } 36.154% { transform: translate(0px, -76px) rotate(-6deg) scale(1.00); } 36.923% { transform: translate(0px, 11px) scale(1.05); } 37.692%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b7 { left:12%;top:2%; animation-name: rk-b7; }
@keyframes rk-b7 { 0%, 36.154% { opacity: 0; transform: scale(.4); } 36.923% { opacity: 1; transform: scale(1.25); } 37.692%, 39.231% { opacity: 1; transform: none; } 40.000%, 100% { opacity: 0; } }
.rk-p-aileron-g { animation-name: rk-aileron-g; }
@keyframes rk-aileron-g { 0%, 39.231% { opacity: 0; transform: translate(-300px, 90px) rotate(-40deg) scale(1.0); } 40.000% { opacity: 1; transform: translate(-300px, 90px) rotate(-40deg) scale(1.0); } 40.769% { transform: translate(-165px, 50px) rotate(-22deg) scale(1.00); } 41.538% { transform: translate(-60px, 18px) rotate(-8deg) scale(1.00); } 42.308% { transform: translate(9px, -3px) scale(1.05); } 43.077%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b8 { left:0;top:58%; animation-name: rk-b8; }
@keyframes rk-b8 { 0%, 41.538% { opacity: 0; transform: scale(.4); } 42.308% { opacity: 1; transform: scale(1.25); } 43.077%, 44.615% { opacity: 1; transform: none; } 45.385%, 100% { opacity: 0; } }
.rk-p-aileron-d { animation-name: rk-aileron-d; }
@keyframes rk-aileron-d { 0%, 44.615% { opacity: 0; transform: translate(300px, 90px) rotate(40deg) scale(1.0); } 45.385% { opacity: 1; transform: translate(300px, 90px) rotate(40deg) scale(1.0); } 46.154% { transform: translate(165px, 50px) rotate(22deg) scale(1.00); } 46.923% { transform: translate(60px, 18px) rotate(8deg) scale(1.00); } 47.692% { transform: translate(-9px, -3px) scale(1.05); } 48.462%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; transform: none; } }
.rk-clac.b9 { right:0;top:56%; animation-name: rk-b9; }
@keyframes rk-b9 { 0%, 46.923% { opacity: 0; transform: scale(.4); } 47.692% { opacity: 1; transform: scale(1.25); } 48.462%, 50.000% { opacity: 1; transform: none; } 50.769%, 100% { opacity: 0; } }
.rk-clac.b10 { left:6%;top:70%; animation-name: rk-b10; }
@keyframes rk-b10 { 0%, 52.308% { opacity: 0; transform: scale(.4); } 53.077% { opacity: 1; transform: scale(1.25); } 53.846%, 55.385% { opacity: 1; transform: none; } 56.154%, 100% { opacity: 0; } }
@keyframes rk-pop1 { 0%, 54.615% { opacity: 0; transform: scale(0) rotate(-40deg); } 55.385% { opacity: 1; transform: scale(1.3) rotate(10deg); } 56.154%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; } }
@keyframes rk-pop2 { 0%, 56.154% { opacity: 0; transform: scale(0) rotate(40deg); } 56.923% { opacity: 1; transform: scale(1.3) rotate(-10deg); } 57.692%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; } }
@keyframes rk-pop3 { 0%, 57.692% { opacity: 0; transform: scale(0) rotate(0deg); } 58.462% { opacity: 1; transform: scale(1.3) rotate(0deg); } 59.231%, 96.154% { opacity: 1; transform: none; } 96.923%, 100% { opacity: 0; } }
.rk-count.n3 { animation-name: rk-n3; }
@keyframes rk-n3 { 0%, 63.846% { opacity: 0; transform: scale(.5); } 64.615% { opacity: 1; transform: scale(1.2) rotate(-3deg); } 65.385%, 66.154% { opacity: 1; transform: rotate(-3deg); } 66.923%, 100% { opacity: 0; } }
.rk-count.n2 { animation-name: rk-n2; }
@keyframes rk-n2 { 0%, 66.154% { opacity: 0; transform: scale(.5); } 66.923% { opacity: 1; transform: scale(1.2) rotate(-3deg); } 67.692%, 68.462% { opacity: 1; transform: rotate(-3deg); } 69.231%, 100% { opacity: 0; } }
.rk-count.n1 { animation-name: rk-n1; }
@keyframes rk-n1 { 0%, 68.462% { opacity: 0; transform: scale(.5); } 69.231% { opacity: 1; transform: scale(1.2) rotate(-3deg); } 70.000%, 70.769% { opacity: 1; transform: rotate(-3deg); } 71.538%, 100% { opacity: 0; } }
.rk-count.go { animation-name: rk-go; }
@keyframes rk-go { 0%, 70.769% { opacity: 0; transform: scale(.5); } 71.538% { opacity: 1; transform: scale(1.2) rotate(-3deg); } 72.308%, 76.923% { opacity: 1; transform: rotate(-3deg); } 77.692%, 100% { opacity: 0; } }
@keyframes rk-fly { 0%, 53.846% { transform: none; opacity: 1; } 55.385% { transform: rotate(-.8deg); } 56.923% { transform: rotate(.6deg); } 58.462% { transform: rotate(-.8deg); } 60.000% { transform: rotate(.6deg); } 61.538% { transform: rotate(-.8deg); } 63.077% { transform: rotate(.6deg); } 64.615% { transform: rotate(-.8deg); } 66.154% { transform: rotate(.6deg); } 67.692% { transform: rotate(-.8deg); } 69.231% { transform: rotate(.6deg); } 69.231% { transform: translateX(-4px) rotate(-0.5deg); } 70.000% { transform: translateX(4px) rotate(0.5deg); } 70.769% { transform: translateX(-4px) rotate(-0.5deg); } 71.538% { transform: translateX(4px) rotate(0.5deg); } 72.308% { transform: translateX(-4px) rotate(-0.5deg); } 73.077% { transform: translateX(4px) rotate(0.5deg); } 73.846% { transform: translateY(-8px) rotate(0.8deg); opacity: 1; } 74.615% { transform: translateY(-20px) rotate(-0.8deg); opacity: 1; } 75.385% { transform: translateY(-40px) rotate(0.8deg); opacity: 1; } 76.154% { transform: translateY(-70px) rotate(-0.8deg); opacity: 1; } 76.923% { transform: translateY(-115px) rotate(0.8deg); opacity: 1; } 77.692% { transform: translateY(-175px) rotate(-0.8deg); opacity: 1; } 78.462% { transform: translateY(-255px) rotate(0.8deg); opacity: 1; } 79.231% { transform: translateY(-360px) rotate(-0.8deg); opacity: 1; } 80.000% { transform: translateY(-500px) rotate(0.8deg); opacity: 1; } 80.769% { transform: translateY(-680px) rotate(-0.8deg); opacity: 1; } 81.538% { transform: translateY(-900px) rotate(0.8deg); opacity: 1; } 82.308% { transform: translateY(-1150px) rotate(-0.8deg); opacity: 1; } 83.077% { transform: translateY(-1450px) rotate(0.8deg); opacity: 1; } 83.846% { transform: translateY(-1800px) rotate(-0.8deg); opacity: 1; } 84.615%, 99.231% { transform: translateY(-1800px); opacity: 0; } 100% { transform: none; opacity: 0; } }
@keyframes rk-flame { 0%, 50.000% { opacity: 0; transform: translate(0, 160px) scale(.3); } 50.769% { opacity: 1; transform: translate(0, 160px) scale(.3); } 51.538% { transform: translate(0, 90px) scale(.6); } 52.308% { transform: translate(0, 30px) scale(.85); } 53.077% { transform: translate(0, -6px) scale(1.12); } 53.846% { opacity: 1; transform: scale(0.94, 0.96); } 55.385% { opacity: 1; transform: scale(1, 1.06); } 56.923% { opacity: 1; transform: scale(0.94, 0.96); } 58.462% { opacity: 1; transform: scale(1, 1.06); } 60.000% { opacity: 1; transform: scale(0.94, 0.96); } 61.538% { opacity: 1; transform: scale(1, 1.06); } 63.077% { opacity: 1; transform: scale(0.94, 0.96); } 64.615% { opacity: 1; transform: scale(1, 1.06); } 66.154% { opacity: 1; transform: scale(0.94, 0.96); } 67.692% { opacity: 1; transform: scale(1, 1.06); } 69.231% { opacity: 1; transform: scale(0.95, 1.1); } 70.000% { opacity: 1; transform: scale(1.15, 1.45); } 70.769% { opacity: 1; transform: scale(0.95, 1.1); } 71.538% { opacity: 1; transform: scale(1.15, 1.45); } 72.308% { opacity: 1; transform: scale(0.95, 1.1); } 73.077% { opacity: 1; transform: scale(1.15, 1.45); } 73.846% { opacity: 1; transform: scale(0.95, 1.1); } 74.615% { opacity: 1; transform: scale(1.15, 1.45); } 75.385% { opacity: 1; transform: scale(0.95, 1.1); } 76.154% { opacity: 1; transform: scale(1.15, 1.45); } 76.923% { opacity: 1; transform: scale(0.95, 1.1); } 77.692% { opacity: 1; transform: scale(1.15, 1.45); } 78.462% { opacity: 1; transform: scale(0.95, 1.1); } 79.231% { opacity: 1; transform: scale(1.15, 1.45); } 80.000% { opacity: 1; transform: scale(0.95, 1.1); } 80.769% { opacity: 1; transform: scale(1.15, 1.45); } 81.538% { opacity: 1; transform: scale(0.95, 1.1); } 82.308% { opacity: 1; transform: scale(1.15, 1.45); } 83.077% { opacity: 1; transform: scale(0.95, 1.1); } 83.846% { opacity: 1; transform: scale(1.15, 1.45); } 84.615%, 100% { opacity: 0; transform: scale(.3); } }
@keyframes rk-smoke1 { 0%, 73.077% { opacity: 0; transform: scale(0); } 73.846% { opacity: 1; transform: scale(.6); } 75.385% { transform: translate(-20px, -10px) scale(1); } 77.692% { transform: translate(-50px, -25px) scale(1.25); } 80.769% { opacity: .8; transform: translate(-80px, -40px) scale(1.4); } 83.846%, 100% { opacity: 0; transform: translate(-100px, -50px) scale(1.5); } }
@keyframes rk-smoke2 { 0%, 73.846% { opacity: 0; transform: scale(0); } 74.615% { opacity: 1; transform: scale(.6); } 76.154% { transform: translate(20px, -9px) scale(1); } 78.462% { transform: translate(50px, -23px) scale(1.25); } 81.538% { opacity: .8; transform: translate(80px, -37px) scale(1.4); } 84.615%, 100% { opacity: 0; transform: translate(100px, -46px) scale(1.5); } }
@keyframes rk-smoke3 { 0%, 74.615% { opacity: 0; transform: scale(0); } 75.385% { opacity: 1; transform: scale(.6); } 76.923% { transform: translate(-3px, -14px) scale(1); } 79.231% { transform: translate(-8px, -35px) scale(1.25); } 82.308% { opacity: .8; transform: translate(-13px, -56px) scale(1.4); } 85.385%, 100% { opacity: 0; transform: translate(-16px, -70px) scale(1.5); } }

@media (max-width: 640px) {
  .rk { height: 122%; top: 4%; }
  .rk-clac { font-size: 15px; padding: 5px 9px; }
  .rk-count { font-size: 26px; min-width: 52px; }
  .rk-count.go { font-size: 17px; }
  .rk-smoke { width: 52px; }
}
@media (prefers-reduced-motion: reduce) {
  .rocket-stage * { animation: none !important; }
  .rk-piece, .rk-deco { opacity: 1 !important; transform: none !important; }
}
/* Accueil : l'anneau décoratif passe sous le bord du hero pour ne pas toucher le texte */
.home:not(.svc-page) .shape--ring { bottom: -30px; left: 2%; }
