/* Superposition passante: tous les boutons et menus du site restent cliquables. */
.cm-amb-flyby{position:fixed;inset:0;z-index:50;pointer-events:none;overflow:hidden;contain:layout style;}
.cm-amb-flyby [hidden]{display:none!important}
.cm-amb-flyby__bats,.cm-amb-flyby__ghost{position:absolute;left:-35vw;top:clamp(95px,16vh,210px);pointer-events:none;will-change:transform,opacity;opacity:0}
.cm-amb-flyby__bats{width:clamp(130px,22vw,280px);height:auto;filter:drop-shadow(0 4px 4px rgba(17,8,33,.23))}
.cm-amb-flyby__ghost{width:clamp(65px,10vw,135px);top:clamp(140px,32vh,400px);filter:drop-shadow(0 0 14px rgba(237,222,255,.36))}
.cm-amb-flyby__bats svg,.cm-amb-flyby__ghost svg{width:100%;height:auto;display:block}
.cm-amb-flyby__bats.is-flying{animation:cm-bat-cross 9s ease-in-out 1 forwards}
.cm-amb-flyby__ghost.is-flying{animation:cm-ghost-cross 12s ease-in-out 1 forwards}
@keyframes cm-bat-cross{0%{transform:translate3d(-20vw,5vh,0) scale(.8);opacity:0}9%{opacity:.92}28%{transform:translate3d(24vw,0vh,0) rotate(-7deg)}56%{transform:translate3d(60vw,5vh,0) rotate(8deg)}90%{opacity:.85}100%{transform:translate3d(148vw,-12vh,0) scale(1.1);opacity:0}}
@keyframes cm-ghost-cross{0%{transform:translate3d(-20vw,2vh,0);opacity:0}14%{opacity:.77}35%{transform:translate3d(43vw,-7vh,0) rotate(-4deg)}65%{transform:translate3d(98vw,3vh,0) rotate(4deg)}88%{opacity:.65}100%{transform:translate3d(154vw,-7vh,0);opacity:0}}
@media(max-width:600px){.cm-amb-flyby__bats{width:118px}.cm-amb-flyby__ghost{width:66px}}
@media(prefers-reduced-motion:reduce){.cm-amb-flyby{display:none!important}}


/* V3.1 - ailes articulees: un battement independant pour chaque chauve-souris.
   Les animations ne tournent que pendant la traversee, et respectent reduced-motion. */
.cm-amb-flyby__bats {width:clamp(185px,25vw,345px);}
.cm-amb-flyby__bats .cm-cartoon-bat__wing {
 transform-box:fill-box;
 will-change:transform;
}
.cm-amb-flyby__bats .cm-cartoon-bat__wing--left {transform-origin:98% 48%;}
.cm-amb-flyby__bats .cm-cartoon-bat__wing--right {transform-origin:2% 48%;}
.cm-amb-flyby__bats.is-flying .cm-cartoon-bat__wing--left {
 animation:cm-v31-bat-left-flap .52s ease-in-out infinite alternate;
}
.cm-amb-flyby__bats.is-flying .cm-cartoon-bat__wing--right {
 animation:cm-v31-bat-right-flap .52s ease-in-out infinite alternate;
}
.cm-amb-flyby__bats.is-flying .cm-cartoon-bat--middle .cm-cartoon-bat__wing{
 animation-duration:.63s;
 animation-delay:-.16s;
}
.cm-amb-flyby__bats.is-flying .cm-cartoon-bat--little .cm-cartoon-bat__wing{
 animation-duration:.46s;
 animation-delay:-.27s;
}
@keyframes cm-v31-bat-left-flap {
 from {transform:rotate(-16deg) scaleY(1.08);}
 to {transform:rotate(28deg) scaleY(.36);}
}
@keyframes cm-v31-bat-right-flap {
 from {transform:rotate(16deg) scaleY(1.08);}
 to {transform:rotate(-28deg) scaleY(.36);}
}
.cm-amb-flyby__ghost.is-flying .cm-cartoon-ghost__float{
 transform-box:fill-box;
 transform-origin:50% 48%;
 animation:cm-v31-ghost-float 3.1s ease-in-out infinite alternate;
}
@keyframes cm-v31-ghost-float {
 from {transform:rotate(-3deg) translateY(2px);}
 to {transform:rotate(3deg) translateY(-5px);}
}
@media(max-width:600px){.cm-amb-flyby__bats{width:154px}}
@media(prefers-reduced-motion:reduce){
 .cm-amb-flyby__bats.is-flying .cm-cartoon-bat__wing,
 .cm-amb-flyby__ghost.is-flying .cm-cartoon-ghost__float{animation:none!important}
}
