/* Empêche tout débordement horizontal (y compris pendant les anims) */
html, body {
    max-width: 100%;
    overflow-x: clip; /* plus strict que hidden, ne réserve pas de zone scrollable */
}

/* Clipper tout ce qui anime/translate (AOS, Swiper, modales, hero, nav…) */
nav, section, footer, .hero-bg, .swiper, .modal, .mobile-menu {
    overflow-x: clip;
}

/* Évite que les ombres/transform en cours fassent grandir la paint box */
[data-aos] {
    contain: layout paint; /* isole la mise en page + peinture */
    will-change: transform, opacity;
}

/* Stabilise la place de la scrollbar verticale pour éviter les micro-sauts */
:root {
    scrollbar-gutter: stable;
}

/* Images toujours bornées */
img, picture, video, canvas {
    max-width: 100%;
    height: auto;
}

/* Swiper full-height sans élargir */
.swiper, .swiper-wrapper, .swiper-slide {
    min-width: 0; /* important pour éviter des élargissements */
}

/* Off-canvas menu: s'assurer que rien ne dépasse pendant le slide */
.mobile-menu {
    transform: translateX(-100%);
    transition: transform .3s ease-in-out;
    will-change: transform;
}
.mobile-menu.open { transform: translateX(0); }
