/* Illustrations de l’accueil : décors existants, animation ponctuelle. */
.agency-home .promo-box.home-launch { position: relative; isolation: isolate; overflow: hidden; background-image: none; }
.home-launch::before { content: ''; position: absolute; z-index: -1; inset: 0; background: url('../img/bg/home-launch-scenery.svg') right bottom / auto 307px no-repeat; }
.home-launch > .mx-auto { position: relative; z-index: 1; padding: 3rem 2rem; }
.home-rocket-stage { position: absolute; z-index: 0; left: 1rem; bottom: 0; width: 176px; height: 197px; pointer-events: none; }
.home-rocket-smoke, .home-rocket-flyer { position: absolute; inset: 0; display: block; background: center / 100% 100% no-repeat; }
.home-rocket-smoke { background-image: url('../img/bg/home-launch-cloud.svg'); transform-origin: center bottom; }
.home-rocket-flyer { background-image: url('../img/bg/home-rocket.svg'); transform-origin: 50% 68%; }
.home-launch.has-launched .home-rocket-stage > .home-rocket-flyer { opacity: 0; }
.home-launch.is-launching .home-rocket-smoke { animation: home-rocket-cloud 3.2s ease-out both; }
.home-launch .home-launch-replay { display: block; margin: 1.6rem auto 0; padding: .5rem 1rem; border: 0; background: transparent; color: #fff; font: 700 1.3rem/1.5 'Nunito', sans-serif; text-transform: none; text-decoration: underline; text-underline-offset: .3rem; cursor: pointer; }
.home-launch-replay:disabled { opacity: .75; cursor: default; }
.home-launch-replay[hidden] { display: none; }
.home-illustration-enter { animation: home-illustration-float 4s ease-in-out 1; }
.home-illustration-tilt { animation: home-illustration-sway 4s ease-in-out 1; }

@keyframes home-rocket-cloud { 0%,100% { transform: scale(1); opacity: 1; } 30% { transform: scale(1.08,1.03); opacity: .75; } 65% { transform: scale(1.13,1.02); opacity: .9; } }
@keyframes home-illustration-float { 0%,100% { transform: translateY(0); } 35% { transform: translateY(-9px); } 70% { transform: translateY(3px); } }
@keyframes home-illustration-sway { 0%,100% { transform: rotate(0); } 35% { transform: rotate(1.3deg); } 70% { transform: rotate(-.8deg); } }
@media (max-width: 767.98px) {
 .home-launch > .mx-auto { padding: 3rem 2rem 16rem; }
 .home-launch .mx-auto h2 { margin-bottom: 2rem !important; font-size: 2.8rem; }
 .home-rocket-stage { left: calc(50% - 65px); width: 130px; height: 146px; }
 .home-launch::before { background-position: right bottom; opacity: .45; }
}
@media (prefers-reduced-motion: reduce) {
 .home-launch .home-rocket-flyer, .home-launch .home-rocket-smoke, .home-illustration-enter, .home-illustration-tilt { animation: none !important; }
 .home-launch-replay { display: none !important; }
}

/* Engrenages indépendants : sens opposés et centres fixes. */
.home-gear-scene { width: 443px; max-width: 100%; }
.agency-home .slider-area .image-layer { min-width: 0; max-width: 100%; }
.home-gear-art { display: block; width: 100%; height: auto; }
.home-gear { transform-box: view-box; animation: home-gear-rotation 20s linear infinite; animation-play-state: paused; }
.home-gear-large { transform-origin: 284px 209px; }
.home-gear-small { transform-origin: 354px 299px; animation-duration: 16.667s; animation-direction: reverse; }
.home-gears-visible:not(.home-gears-paused) .home-gear { animation-play-state: running; }
.home-gears-toggle { display: block; margin: 1rem auto 0; padding: .6rem 1rem; border: 0; background: transparent; color: #4f5870; font: 600 1.1rem/1.5 'Nunito', sans-serif; text-transform: none; cursor: pointer; }
.home-gears-toggle:hover { color: #b62d23; }
.home-gears-toggle[hidden] { display: none; }
@keyframes home-gear-rotation { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) {
 .home-gear { animation: none !important; }
}
@media (max-width: 767.98px) {
 .home-gear-scene { width: calc(100vw - 4rem); max-width: 443px; }
}

/* Départ fumant et trajectoire au-dessus de la page, hors du bandeau. */
.home-rocket-flight { display: block; position: absolute; z-index: 10000; pointer-events: none; transform-origin: 50% 65%; will-change: transform; }
.home-rocket-flight .home-rocket-flyer { opacity: 1; }
.home-flight-exhaust { position: absolute; left: 45%; top: 67%; width: 10%; height: 30%; background: linear-gradient(#fff8c8, #ffcf5b 40%, #f89552 75%, transparent); border-radius: 40% 40% 50% 50%; transform-origin: center top; animation: home-engine-flame .12s ease-in-out infinite alternate; }
.home-rocket-flight.is-airborne .home-flight-exhaust { height: 40%; }
.home-smoke-puff { position: absolute; z-index: 2; top: 69%; left: 38%; width: 24%; aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle at 35% 30%, #fff 0 35%, #e6edf4 68%, #ccd8e3 100%); opacity: 0; pointer-events: none; animation: home-smoke-expand 2.6s ease-out both; }
@keyframes home-smoke-expand { 0% { opacity: 0; transform: translate(0,0) scale(.25); } 12% { opacity: .9; } 65% { opacity: .6; } 100% { opacity: 0; transform: translate(var(--puff-x),var(--puff-y)) scale(2.5); } }
@keyframes home-engine-flame { from { transform: scale(.85, .8); } to { transform: scale(1.05, 1.15); } }
@media (prefers-reduced-motion: reduce) {
 .home-rocket-flight, .home-smoke-puff { display: none; }
 .home-launch.has-launched .home-rocket-stage > .home-rocket-flyer { opacity: 1; }
}

/* Circulation des pointillés, indépendamment des pictogrammes. */
.home-process-art { display: inline-block; max-width: 100%; height: auto; vertical-align: middle; }
.home-process-dots { animation: home-process-circulate 6s linear infinite; animation-play-state: paused; }
.circle-box:nth-child(even) .home-process-ring { animation-direction: reverse; }
.home-process-arrow { animation-duration: 3s; }
.home-process-visible:not(.home-process-paused) .home-process-dots { animation-play-state: running; }
.home-process-toggle { margin-top: 2.5rem; }
@keyframes home-process-circulate { to { stroke-dashoffset: -104; } }
@media (max-width: 1199.98px) {
 .work-process .process-boxs .circle-box:last-child .home-process-art { width: 60%; }
}
@media (min-width: 768px) and (max-width: 991.98px) {
 .work-process .process-boxs .circle-box:last-child .home-process-art { width: auto; }
}
@media (prefers-reduced-motion: reduce) {
 .home-process-dots { animation: none !important; }
}

/* Éclairage local de l’ampoule : les autres éléments du dessin ne changent pas. */
.home-bulb-scene { display: inline-block; width: 549px; max-width: 100%; }
.home-bulb-art { position: relative; }
.home-bulb-art > img:first-child { display: block; width: 100%; height: auto; }
.home-bulb-bloom { position: absolute; left: 27%; top: 13%; width: 53%; aspect-ratio: 1; pointer-events: none; background: radial-gradient(ellipse, #fff9b5d9 0%, #ffe3448c 20%, #ffcd344d 38%, #ffbb1f18 55%, transparent 72%); opacity: 0; }
.home-bulb-art > .home-bulb-highlight { position: absolute; inset: 0; display: block; width: 100%; height: 100%; pointer-events: none; clip-path: polygon(47% 57%,47% 52%,44% 49%,43% 44%,43% 39%,45% 36%,49% 34%,54% 33%,59% 34%,62% 37%,64% 42%,63% 47%,61% 52%,60% 57%); filter: brightness(1.85) saturate(.8); opacity: 0; }
.home-bulb-rays { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; filter: drop-shadow(0 0 5px #ffce31) drop-shadow(0 0 10px #ffdb61); opacity: 0; }
.home-bulb-lit .home-bulb-bloom, .home-bulb-lit .home-bulb-highlight, .home-bulb-lit .home-bulb-rays { animation: home-bulb-glow 3.8s ease-in-out infinite; animation-play-state: paused; }
.home-bulb-visible.home-bulb-lit .home-bulb-bloom, .home-bulb-visible.home-bulb-lit .home-bulb-highlight, .home-bulb-visible.home-bulb-lit .home-bulb-rays { animation-play-state: running; }
@keyframes home-bulb-glow { 0%, 100% { opacity: .55; } 45%, 60% { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
 .home-bulb-bloom, .home-bulb-highlight, .home-bulb-rays { animation: none !important; }
 .home-bulb-lit .home-bulb-bloom, .home-bulb-lit .home-bulb-highlight, .home-bulb-lit .home-bulb-rays { opacity: .85; }
}

/* La flèche rejoint le centre de la cible une fois le visuel visible. */
.home-target-arrow { transform-origin: 179px 28px; }
.home-target-ready .home-target-arrow { opacity: 0; transform: translate(150px,-45px) rotate(-12deg); }
.home-target-ready.home-target-arrived .home-target-arrow { animation: home-arrow-arrive 1.15s cubic-bezier(.18,.65,.24,1) .4s both; }
.home-target-impact { opacity: 0; transform-origin: 179px 28px; }
.home-target-arrived .home-target-impact { animation: home-target-hit .7s ease-out 1.35s both; }
@keyframes home-arrow-arrive {
  0% { opacity: 0; transform: translate(150px,-45px) rotate(-12deg); }
  15% { opacity: 1; }
  78% { opacity: 1; transform: translate(-2px,0) rotate(0); }
  87% { transform: translate(1px,0) rotate(1.8deg); }
  100% { opacity: 1; transform: translate(0,0) rotate(0); }
}
@keyframes home-target-hit { from { opacity: .9; transform: scale(.5); } to { opacity: 0; transform: scale(3); } }
@media (prefers-reduced-motion: reduce) {
 .home-target-arrow { animation: none !important; transform: none !important; opacity: 1 !important; }
 .home-target-impact { animation: none !important; }
}
