/* Premium Motion — états de départ des animations.
   Ils ne s'appliquent que sous .fx-js (JavaScript actif, animations autorisées) :
   sans JS ou en « réduire les animations », tout reste visible. */

/* --- Apparitions --------------------------------------------------------- */
.fx-js:not(.fx-failsafe) .fx-reveal { opacity: 0; transform: translateY(32px); }
.fx-js:not(.fx-failsafe) .fx-reveal.fx-reveal--down { transform: translateY(-32px); }
.fx-js:not(.fx-failsafe) .fx-reveal.fx-reveal--left { transform: translateX(40px); }
.fx-js:not(.fx-failsafe) .fx-reveal.fx-reveal--right { transform: translateX(-40px); }
.fx-js:not(.fx-failsafe) .fx-reveal.fx-reveal--zoom { transform: scale(0.92); }

.fx-js:not(.fx-failsafe) .fx-stagger > .elementor-element,
.fx-js:not(.fx-failsafe) .fx-stagger > .e-con-inner > .elementor-element,
.fx-js:not(.fx-failsafe) .fx-stagger:not(.elementor-element) > * { opacity: 0; transform: translateY(24px); }

.fx-js:not(.fx-failsafe) .fx-image-reveal img { clip-path: inset(100% 0% 0% 0%); transform: scale(1.25); }
.fx-image-reveal .elementor-widget-container,
.fx-image-reveal { overflow: hidden; }

/* --- Texte ---------------------------------------------------------------- */
.fx-js:not(.fx-failsafe) .fx-text:not(.fx-split) { opacity: 0; }
.fx-w { display: inline-block; overflow: hidden; vertical-align: bottom; padding-bottom: 0.08em; margin-bottom: -0.08em; }
.fx-wi { display: inline-block; will-change: transform; }
.fx-js:not(.fx-failsafe) .fx-text .fx-wi { transform: translateY(110%); }

.fx-scroll-words .fx-sw { transition: opacity 0.15s linear; }
.fx-counter, .fx-counter * { font-variant-numeric: tabular-nums; }

/* --- Interactions --------------------------------------------------------- */
.fx-tilt { transform-style: preserve-3d; will-change: transform; }
.fx-hover-lift { transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.45s cubic-bezier(0.16, 1, 0.3, 1); }
.fx-hover-lift:hover { transform: translateY(-6px); box-shadow: 0 24px 50px -20px rgba(0, 0, 0, 0.35); }
.fx-hover-zoom, .fx-hover-zoom .elementor-widget-container { overflow: hidden; }
.fx-hover-zoom img { transition: transform 0.8s cubic-bezier(0.16, 1, 0.3, 1); }
.fx-hover-zoom:hover img { transform: scale(1.06); }

/* --- Mouvement ------------------------------------------------------------ */
.fx-marquee { overflow: hidden !important; flex-wrap: nowrap !important; }
.fx-marquee-track { display: flex; flex-wrap: nowrap; flex: 0 0 auto !important; width: max-content; will-change: transform; }
.fx-marquee-track > * { flex: 0 0 auto !important; width: auto !important; }
.fx-marquee--fade { -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent); mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent); }

.fx-parallax-host { overflow: hidden; }

.fx-smart-header { position: sticky !important; top: 0; z-index: 999; transition: transform 0.45s cubic-bezier(0.25, 1, 0.5, 1), background-color 0.3s, box-shadow 0.3s; }
.fx-smart-header.fx-header--hidden { transform: translateY(-110%); }
.fx-smart-header.fx-header--scrolled { box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08); }
body.admin-bar .fx-smart-header { top: 32px; }

/* Liens d'ancre (sans défilement doux) : la section n'arrive pas sous l'en-tête collant */
html:has(.fx-smart-header) [id] { scroll-margin-top: 90px; }

.fx-progress { position: fixed; inset: 0 0 auto 0; height: 3px; transform-origin: 0 50%; transform: scaleX(0); z-index: 100000; pointer-events: none; }

/* --- Menu mobile (☰) : en-tête avec fx-mobile-menu + widget de liens fx-nav ---------------- */
.fx-burger { display: none; position: relative; width: 44px; height: 44px; margin-inline-start: 6px; padding: 0; border: 0; background: transparent; color: inherit; cursor: pointer; flex: 0 0 auto; }
.fx-burger span { position: absolute; top: 50%; margin-top: -1px; left: 11px; right: 11px; height: 2px; border-radius: 2px; background: currentColor; transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1); }
.fx-burger span:first-child { transform: translateY(-4px); }
.fx-burger span:last-child { transform: translateY(4px); }
.fx-burger[aria-expanded="true"] span:first-child { transform: rotate(45deg); }
.fx-burger[aria-expanded="true"] span:last-child { transform: rotate(-45deg); }
.fx-burger:focus-visible { outline: 2px solid currentColor; outline-offset: 2px; border-radius: 8px; }

.fx-menu-panel { position: fixed; inset: 0; z-index: 9998; display: flex; flex-direction: column; align-items: flex-start; gap: 6px; padding: 120px 28px 40px; overflow-y: auto; visibility: hidden; opacity: 0; clip-path: inset(0 0 100% 0); transition: opacity 0.3s, clip-path 0.6s cubic-bezier(0.76, 0, 0.24, 1), visibility 0s 0.6s; }
.fx-menu-panel.is-open { visibility: visible; opacity: 1; clip-path: inset(0 0 0 0); transition: opacity 0.3s, clip-path 0.6s cubic-bezier(0.76, 0, 0.24, 1), visibility 0s; }
.fx-menu-link { display: block; padding: 8px 0; color: inherit !important; text-decoration: none !important; font-size: clamp(32px, 9vw, 48px); line-height: 1.25; opacity: 0; transform: translateY(24px); transition: opacity 0.5s, transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); }
.fx-menu-panel .fx-menu-close { display: inline-block; position: fixed; margin: 0; }
.fx-menu-panel .fx-menu-cta { text-decoration: none !important; margin-top: 28px; opacity: 0; transform: translateY(24px); transition: opacity 0.5s, transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); }
.fx-menu-panel.is-open .fx-menu-link,
.fx-menu-panel.is-open .fx-menu-cta { opacity: 1; transform: none; transition-delay: calc(0.15s + var(--i, 0) * 0.06s); }
html.fx-menu-open { overflow: hidden; }
html.fx-menu-open .fx-smart-header { transform: none !important; }

@media (max-width: 1024px) {
	.fx-has-burger .fx-burger { display: inline-block; }
	.fx-has-burger > .elementor-widget-button,
	.fx-has-burger > .e-con-inner > .elementor-widget-button { margin-inline-start: auto; }
}
@media (max-width: 767px) {
	/* sur téléphone, le bouton d'action passe dans le panneau du menu */
	.fx-has-burger .elementor-widget-button { display: none; }
}
@media (prefers-reduced-motion: reduce) {
	.fx-menu-panel, .fx-menu-panel.is-open, .fx-menu-link, .fx-menu-panel .fx-menu-cta, .fx-burger span { transition: none !important; }
}

/* --- Arabe : conteneur de premier niveau avec fx-rtl (lecture de droite à gauche) ---------- */
.fx-rtl { direction: rtl; }
.fx-rtl .fx-w { padding-bottom: 0.2em; margin-bottom: -0.2em; }

/* Lenis (défilement doux) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }

/* Effet en échec : l'élément s'affiche normalement */
.fx-off, .fx-off * { opacity: 1 !important; transform: none !important; clip-path: none !important; }

/* Respect de « réduire les animations » */
@media (prefers-reduced-motion: reduce) {
	.fx-float, .fx-marquee-track { animation: none !important; transform: none !important; }
}
